一、开发环境
硬件:正点原子探索者 V3 STM32F407 开发板
单片机:STM32F407ZGT6
Keil版本:5.32
STM32CubeMX版本:6.9.2
STM32Cube MCU Packges版本:STM32F4 V1.27.1
使用STM32F407的HAL库实现按键轮询读取按键值,点亮和熄灭PF9的LED灯的STM32CubeMX配置步骤和程序,通常需要遵循一系列步骤。下面我将详细解释这些步骤,帮助你一分钟内成为“点灯大师”。虽然轮询的方式容易理解和编写,但是存在CPU占用率高和实时性较差的问题。 下面一篇文章是通过按键中断的方式来(超简单1行代码-STM32F407的HAL实现按键中断方式点亮LED灯),完美地解决这两个问题。
PS:轮询方式点灯请看文章一分钟成为点灯大师(超简单4行代码-STM32F407的HAL库轮询方式实现LED每隔1秒闪烁)
定时器中断方式点灯请看文章
一分钟成为点灯大师(超简单8行代码-STM32F407的HAL库定时器方式实现LED每隔1秒闪烁)定
PWM实现LED渐变闪烁请看文章
一分钟成为点灯大师(超简单24行代码-STM32F407的HAL库PWM实现LED渐变闪烁
二、配置STM32CubeMX
- 启动STM32CubeMX,新建STM32CubeMX项目:
- 选择MCU:在软件中选择你的STM32型号-STM32F407ZGT6。
-
选择时钟源:
- 配置时钟:
- 使能Debug功能:Serial Wire
- HAL库时基选择:SysTick
- 配置LED引脚:当前硬件的LED灯的引脚是PF9:在Pinout & Configuration标签页中,找到LED连接的GPIO端口,并设置为输出模式,通常选择Push-Pull,GPIO output level选高电平。
- 按键配置:当前硬件的按键的引脚是PE2,设置成输入模式。
- 配置工程参数:在Project标签页中,配置项目名称和位置,选择工具链MDK-ARM。 10.生成代码:在Code Generator标签页中,配置工程外设文件与HAL库,勾选头文件.c和.h文件分开,然后点击Project > Generate Code生成代码。
三、代码实现与部署
-
增加代码:在main.c的 while(1)后面添加按键和灯的代码。
if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_2) == RESET)//读取按键是否为低电平,低电平即按下 { HAL_Delay(500);//用于消除物理按钮或开关的抖动,确保读取到的状态是稳定的。 HAL_GPIO_TogglePin(led_GPIO_Port, led_Pin);//用于切换LED的状态。如果LED原本是亮的,它会熄灭;如果原本是灭的,它会亮起。 }
- 编译代码:Keil编译生成的代码。
-
烧录程序:将编译好的程序用ST-LINK烧录到STM32微控制器中。
四、运行结果
观察结果:一旦程序烧录完成并运行,你应该能看到按下按键LED点亮,再按一下按键LED熄灭。如果一切正常,恭喜你,你现在已经是一个“点灯大师”了!
五、注意事项
1.确保你的开发环境和工具链已经正确安装和配置。
2.在STM32CubeMX中配置GPIO时,注意选择正确的引脚和模式。
3.在STM32CubeMX中配置按键时,注意选择正确地勾选。
4.在编写代码时,确保使用正确的GPIO端口和引脚宏定义。
5.LED没有按预期点亮,检查代码、连接和电源是否正确,按一下复位键。