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”进行烧录。
热门推荐
拜占庭帝国的中兴之主:阿历克塞一世·科穆宁
FastAPI系列 4 -路由管理APIRouter
玫瑰花语每种颜色代表什么?如何根据颜色选择合适的玫瑰花?
什么叫清仓?清仓的时机如何判断?
无限流:包罗万象的文学流派
一份报告读懂跨国公司与中国
半夜手麻到醒白天不麻
春钓鲤鱼爆护秘籍:掌握这些技巧,新手也能连杆上大鲤鱼!
张爱玲晚年悲凉:为生活所迫频频搬家,死时甚至没有衣物遮蔽
虾仁超限量用保水剂有危害!过度包冰涉嫌掺假!专家解读
健身房停业“跑路”、职业打假人知假买假、网购买到“病猫”……法院这么判!
飞机通程和经停和中转有什么区别
蓝莓生长环境条件是什么?在什么环境下种植最好?
肾前性肾衰竭尿素氮肌酐比值高的原因
春日养生妙方:晒背晒头,阳气“狂飙”
攀枝花:东北人的第二故乡,养老宜居的天堂
年收入20万能否买得起奔驰C级?购车与养车成本全解析
胡姓寓意好的名字大全
家庭与糖尿病:第十二个联合国糖尿病日特别科普
什么是园林植物整形修剪,作用什么,具体方法是什么?(附修剪案例)
脑梗需要做磁共振吗
手机耳机一边没声音怎么办?15个实用解决方案帮你轻松应对
如何根据家庭需求挑选高效实用的扫地机器人?
适合客厅的墙布
向日葵的象征意义
有机行业动态
洗手台堵住怎么办?快速解决浴室堵塞问题的实用技巧
明星代言人「塌房」,企业品牌该怎么办?
基于事件驱动的测试框架ETS与OpenHarmony兼容性测评
插混、油混、增程的工作原理分别是怎样的?