HAL库点LED灯

文章目录

  • 一、创建CubeMX项目
    • 操作步骤
      • 1.STM32CubeMX创建工程
      • 2.选择芯片
      • 3.Pinout & Configuration配置
      • 4.Clock Configuration配置
      • 5.Project Manager配置
  • 二、实验
    • (一)LED流水灯
      • 1.Keil修改代码
      • 2.实验现象
      • 3.keil波形仿真
    • (二)2只LED灯的周期性闪烁
      • 1.Keil修改代码
      • 2.实验现象
      • 3.波形仿真
    • (三)中断控制流水灯
      • 1.步骤
      • 2.keil代码部分
      • 3.实验现象
      • 4.keil波形仿真
  • 三、总结

一、创建CubeMX项目

操作步骤

1.STM32CubeMX创建工程

打开STM32CubeMX,新建工程。
在这里插入图片描述

2.选择芯片

在这里插入图片描述

3.Pinout & Configuration配置

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.Clock Configuration配置

在这里插入图片描述

5.Project Manager配置

在这里插入图片描述
注意保存文件的路径不能含有中文字符。

在这里插入图片描述

在这里插入图片描述
至此,接下来会进入keil,并自动创建keil的代码。

二、实验

(一)LED流水灯

重做上一个LED流水灯作业

1.Keil修改代码

在main()函数的while(1)循环里修改代码

在这里插入图片描述

直接编译,下载。

2.实验现象

20240520_001

3.keil波形仿真

在这里插入图片描述
在这里插入图片描述

(二)2只LED灯的周期性闪烁

用GPIO端口完成2只LED灯的周期闪烁。

1.Keil修改代码

在main()函数的while(1)循环里修改代码

代码:

	HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);HAL_Delay(250); //延时0.25sHAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);HAL_Delay(250); //延时0.25s

在这里插入图片描述

2.实验现象

20240524_001

3.波形仿真

在这里插入图片描述

(三)中断控制流水灯

接上,再用GPIO端某一管脚接2个开关(用杜邦线模拟代替)。采用中断模式编程,当2分开关接高电平时,对应的两个LED灯停止工作(即停止周期性闪烁),接低电平时,恢复工作。(参考教材图6-12)

思路:用PB1作为开关,杜邦线一端接入PB1,另一端接入

1.步骤

①将PB0和PB1设置为外部中断源,PA8和PA9作为输出端口用来接小灯。
在这里插入图片描述

②设置中断源PB0和PB1为上升沿触发,默认为下拉输入。
在这里插入图片描述

③设置PA8、PA9输出口的速度为high。

在这里插入图片描述

④开启中断。在这里插入图片描述

⑤查看有关中断函数
在这里插入图片描述
在这里插入图片描述

2.keil代码部分

①重写弱函数

 HAL_GPIO_EXTI_Callback(GPIO_Pin){if(GPIO_Pin == GPIO_PIN_0|GPIO_PIN_1){HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOA,GPIO_PIN_9,GPIO_PIN_SET);	}
}

②main()中的while(1)循环

  while (1){HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_8);HAL_Delay(250); //延时0.25sHAL_GPIO_TogglePin(GPIOA,GPIO_PIN_9);HAL_Delay(250); //延时0.25s}

3.实验现象

20240524——002

4.keil波形仿真

在这里插入图片描述

三、总结

中断是STM32学习的一个重点,也是一个难点。要深刻理解中断标志位、明白中断开始和结束的条件,这几个关键点,才更有助于我们学习中断。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/14551.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

变量命名的艺术:让你的代码更具可读性

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:为何变量命名如此重要? 二、变量命名的基本规则 1. 避免数…

卷爆短剧出海:五大关键,由AIGC重构

短剧高温下,谈谈AIGC的助攻路线。 短剧,一个席卷全球的高温赛道。 以往只是踏着霸总题材,如今,内容循着精品化、IP化的自然发展风向,给内容、制作、平台等产业全链都带来新机,也让短剧消费走向文化深处&am…

Docker仅需3步搭建免费私有化的AI搜索引擎-FreeAskInternet!

简介 FreeAskInternet 是一个完全免费、私有且本地运行的搜索引擎,并使用 LLM 生成答案,无需 GPU。用户可以提出问题,系统会进行多引擎搜索,并将搜索结果合并到ChatGPT3.5 LLM中,并根据搜索结果生成答案。 什么是 Fr…

重学java 39.多线程 — 线程安全

逐渐成为一个情绪稳定且安静成长的人 ——24.5.24 线程安全 什么时候发生? 当多个线程访问同一个资源时,导致了数据有问题,出现并发问题,数据不能及时更新,导致数据发生错误,出现线程安全问题 多线程安全问…

纹理映射技术在AI去衣中的艺术与科技融合

引言: 在数字图像处理的世界里,AI去衣技术正逐步揭开其神秘的面纱。这门技术结合了深度学习的智能算法与图形学的先进手段,以实现对图像中衣物的智能识别与处理。在这一过程中,纹理映射技术发挥着至关重要的作用。本篇博客将深入探…

变量命名的艺术:从蛇形到驼峰

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、蛇形命名法的魅力 二、类名和模块名的特殊规则 三、驼峰命名法的魅力与挑战 四、保持…

【kubernetes】探索k8s集群中kubectl的陈述式资源管理

目录 一、k8s集群资源管理方式分类 1.1陈述式资源管理方式:增删查比较方便,但是改非常不方便 1.2声明式资源管理方式:yaml文件管理 二、陈述式资源管理方法 2.1查看版本信息 2.2查看资源对象简写 2.3配置kubectl自动补全 2.4node节点…

初始Java篇(JavaSE基础语法)—— 内部类

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏:JavaSE 目录 内部类的概念 内部类的种类 使用举例: 1. 静态内部类: 2. 实例内部类 3. 局部内部类 4. 匿名内部…

1分钟带你搞定Pandas DataFrame运算

1. DataFrame之间的运算 在运算中自动对齐不同索引的数据 如果索引不对应,则补NaN DataFrame没有广播机制 导包 # 导包import numpy as npimport pandas as pd 创建 DataFrame df1 不同人员的各科目成绩,月考一 # 创建DataFrame二维数组df1 pd.Da…

想要修改Excel表格内容,怎么移除编辑权限?

在使用Excel进行数据处理和管理时,我们经常会遇到需要保护工作表以防止误操作的情况。有时可能碰到“被保护单元格不支持此功能”的提示,本文将详细介绍这个问题的解决方案,帮助你取消单元格保护,使用所需的功能。 一、取消单元格…

【Unitydemo制作】音游制作—排行榜逻辑Json存储

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:就业…

GQL 来了!ISO/IEC 正式发布 GQL 数据库国际标准!

历时四年筹备,超过20个国家的标准和技术专家参与制定,ISO/IEC GQL (图查询语言)标准于2024年4月12日正式发布! 作为国际标准化组织(ISO)继 1987年 发布SQL后,唯一发布的数据库查询语…

瑞米派Ubuntu系统移植指南-米尔RemiPi

1.概述 Linux系统平台上有许多开源的系统构建框架,这些框架方便了开发者进行嵌入式系统的构建和定制化开发,目前比较常见的有Buildroot, Yocto, OpenEmbedded等等。 同时更多的传统的桌面系统也加入到嵌入式环境体系中,如Ubuntu&#xff0c…

Marin说PCB之POC电路layout设计仿真案例---03

今天天中午午休的时候,我刚要打开手机的准备刷抖音看无忧传媒的学生们的“学习资料”的时候,看到CSDN -APP上有提醒,一看原来是一位道友发的一个问题: 本来小编最近由于刚刚从国外回来,手上的项目都已经结束了&#xf…

Matlab:音频处理

用Matlab绘制一段音频信号在时域上的波形图,然后用低通滤波器滤掉噪音并再次绘制 1、导入音频文件 filename X:\1.mp3; % 替换为你的音频文件路径 [x, Fs] audioread(filename); 2、获取音频信号长度 len length(x); 3、计算时间轴 t (0:len-1) / Fs; 4、…

小程序properties默认值定义及父子组件的传值

因经常写vue,很久没写小程序,容易串频道,现记录一下小程序的组件用法、监听传入值及父子传值方式 首先小程序中传值是没有:(冒号)的,其次properties中定义默认值不需要写default 1.自定义组件中,首先json…

踩坑——纪实

开发踩坑纪实 1 npm安装1.1 查看当前的npm镜像设置1.2 清空缓存1.3 修改镜像1.4 查看修改结果1.5 重新安装vue 2 VScode——NPM脚本窗口找不到3 springboot项目中updateById()失效4 前端跨域4.1 后端加个配置类4.2 CrossOrigin注解 5 路由出口6 springdoc openapi3 swagger3文件…

C语言函数递归

文章目录 一、递归1.递归的概念2.递归的思想3.递归的限制条件 二、递归的一些典型例子1.求一个数的阶乘2.顺序打印一个整数的每一位3.汉诺塔4.青蛙跳台阶5斐波那契数列递归和迭代的对比 一、递归 1.递归的概念 递归是学习C语言函数绕不开的一个话题,那什么是递归呢…

PyTorch中Tensor简介

PyTorch中所有的操作都是基于Tensor(张量)的,因此理解张量的含义并能够自由创建张量是十分必要的。 张量是PyTorch中最基本的操作对象。我们可以用数学中的概念来辅助理解一下张量,如图5-1所示。 标量(Scalar&#x…

c#数据库的增删改查

** 安装数据库包 ** 在使用 SQLite 数据库时,你需要安装适当的 NuGet 包来提供与 SQLite 的集成。 1.打开 Visual Studio 中的你的项目 2.在顶部菜单栏中选择 “项目” -> “管理 NuGet 包” 3.在 NuGet 管理器中搜索 “System.Data.SQLite” 4.找到适合你项目…