STM32 HAL库开发入门:GPIO控制LED与按键
创作时间:
作者:
@小白创作中心
STM32 HAL库开发入门:GPIO控制LED与按键
引用
CSDN
1.
https://blog.csdn.net/qq_45217381/article/details/145584685
本文将介绍如何使用STM32 HAL库进行GPIO开发。通过本教程,你将学习到如何使用STM32 CubeIDE配置工程、设置时钟和GPIO,以及编写控制LED和按键的程序。本教程适合有一定嵌入式开发基础的读者。
开发环境
- STM32 CubeIDE
- Proteus 8 Professional(可选)
目标
实现按键控制LED的功能。
一、新建工程
打开STM32 CubeIDE,选择“文件”->“新建”->“STM32 Project”,选择芯片型号STM32F103C6T6A,配置好工程名称后点击完成。
二、配置时钟
在“System Core”中找到“RCC”,配置HSE时钟。将主频设置为72MHz,按下“Enter”键会自动配置好全部内容。
三、配置GPIO
3.1 LED引脚配置
LED引脚为PC13,配置成输出模式。在左侧配置好初始电平、输出速度,可以自定义一个引脚标签。
3.2 按键引脚配置
按键需要配置成输入模式,配置按键引脚为上拉输入模式,按键引脚选择PB7。
四、其他配置
为了增加代码的可读性,配置自动生成代码时生成单独的.c和.h文件。如果需要Debug,还需要进行相应的配置。
五、代码
5.1 生成代码
完成上述配置后,点击“项目”->“Generate Code”自动生成代码。
5.2 配置生成.hex文件
点击“项目”->“属性”,配置生成.hex文件。
5.3 LED状态翻转
编写LED状态翻转的代码:
while (1)
{
HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
HAL_Delay(500);
}
5.4 按键控制LED
编写按键检测程序,在检测到按键按下时翻转LED状态:
while (1)
{
// 按键按下
if (HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin) == 0)
{
// 延时消抖
HAL_Delay(10);
if (HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin) == 0)
{
// 松手检测
while (!HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin));
// 翻转LED状态
HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
}
}
}
六、下载程序
使用“STM32 ST-LINK Utility”工具下载程序到开发板。先连接板子,然后选择.hex文件并点击“start”进行烧录。
热门推荐
如何使用万年历查询生辰八字
从哪吒到仙侠游戏:飞升概念的文化重构与创新
给树“穿毛衣”冬季“火出圈”!大树需要“穿毛衣”吗?
《越女剑》当中,为什么阿青的武功被吹的那么神?
秦洪看盘|动量资金加仓意愿强,助力A股构建强势格局
0-12月宝宝作息全攻略:吃奶、睡觉、辅食安排指南
产品经理如何写出差计划
坚持四个原则,使文章布局合理清晰
狗狗“离家出走”?民警:找到了!
五款可能不引人注目的左轮手枪
拔罐,罐印深浅并非指体内毒素,但也有说法!
财务报表如何体现企业的资本投资回报率?
公司财务状况对股价的影响及财务分析方法详解
印尼人口风土人情:交织的文化与多元化社会
小米电视黑屏但有声音?多种原因及解决方案详解
《红楼梦》第七十二回:王熙凤羞说病,来旺妇霸成亲
扶苏简史:他才是秦二世的最佳人选
“爹味”太重的男人,真的很不讨喜
重整程序中债的概括清偿基本原则
苹果高管:iPhone 16e 的C1基带芯片只是"开始"
15部高分国产刑侦剧推荐:从《白夜追凶》到《法医秦明》
Excel如何解决实际问题:从数据管理到决策支持
“没苦硬吃”的职场人,到底在感动谁?
用Matlab深入理解瑞利衰落信道的统计特性
雷特综合征是怎么回事
如何确定高效沟通的具体目的?
急用居住证怎么办最快速处理
中山市交通运输局局长:深中通道通车在即,中山将实现“海陆空铁”全方位交通融合
数学与艺术:探索数学在艺术创作和表现中的应用和美学价值
办公室鱼缸最合适的摆放位置