STM32F407霸天虎HAL库学习笔记——按键检测
时间:2022-12-28 23:00:00
STM32F407霸天虎HAL库学习笔记-按键检测
- 一、软件准备
- 二、硬件准备
- 三、CubeMX配置
- 四、keil编程
-
- main函数
- 五、实验效果
一、软件准备
可以看上一篇的软件准备
二、硬件准备
STM32F407霸天虎
DAP下载器
三、CubeMX配置
野火霸天虎使用的主控芯片是STM32F407ZGT6
RCC选择外部高速时钟
Debug要选择Serial Wire,否则只能烧录一次
当按键机械触点断开或关闭时,由于触点的弹性,按键开关不会立即稳定连接或突然断开。使用按钮时,会产生波纹信号(如下图所示),需要使用软件抖动处理滤波器,不方便输入检测。霸天虎开发板连接的按钮具有硬件抖动功能。见原理图。采用电容充放电延迟,消除波纹,简化软件处理。软件只需直接检测引脚的电平。
根据原理图,按钮1在PA0,按键2在PC13,当这些按钮没有按下时,GPIO 引脚的输入状态为低电平 (按键所在的电路不通,引脚接地),按键时,GPIO 引脚的输入状态为高电平 (按钮所在的电路导通,引脚接通电源)。只要检测引脚的输入电平,就可以判断按钮是否按下。
配置Key1,Key2的GPIO该模式为输入模式(浮空输入)
从原理图可以看出,开发板LED引脚在PF除此之外,还有一个6、7、8上PC3的蓝色LED灯,都为低电平点亮
这个实验只用红灯,只需要配置PF6就可以了
转向时钟树配置,STM32F407ZGT最大时钟频率为168MHz,开发板外部晶振为 25MHz,我们填入 25;通道选择 LSE;PLLM 选为/25;倍频系数; N 选择为 x336;系统时钟选择 PLLCLK;设置为系统时钟 168Mz;APB1 分频系数为/4 即 PCLK1 位42MHz;APB2 分频系数为/2 即 PCLK2 位 84MHz。
根据自己的项目名称命名,IDE选择MDK-ARM
配置完成后点击Generate Code,再点击OpenProject即可从keil打开软件中的项目
四、keil编程
由于我们的Debug用的是DAP,如图下选择Debug和下载配置
main函数
由于开发板按钮使用硬件抖动,不需要软件抖动,否则需要10ms软件消抖是左右延迟的。
/* USER CODE BEGIN WHILE */ while (1) {
/* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ /*等待KEY1按键按下*/ if(HAL_GPIO_ReadPin(KEY1_GPIO_Port,KEY1_Pin) == RESET) {
/*等待KEY1按键释放*/ while(HAL_GPIO_ReadPin(KEY1_GPIO_Port,KEY1_Pin) == RESET) {
/*灭灯*/ HAL_GPIO_WritePin(LED_R_GPIO_Port,LED_R_Pin,GPIO_PIN_RESET); } } /*等待KEY2按键按下*/ if(HAL_GPIO_ReadPin(KEY2_GPIO_Port,KEY2_Pin) == RESET) {
/*等待KEY2按键释放*/ while(HAL_GPIO_ReadPin(KEY2_GPIO_Port,KEY2_Pin) == RESET) {
/*亮灯*/ HAL_GPIO_WritePin(LED_R_GPIO_Port,LED_R_Pin,GPIO_PIN_SET);
}
}
}
/* USER CODE END 3 */
HAL_GPIO_WritePin函数作用是将写入指定的GPIO电平
HAL_GPIO_ReadPin的函数作用是读取GPIO的输入电平
五、实验效果
编译烧录后即可,板上效果:板上红灯默认开启,按下KEY1灭灯,按下KEY2亮灯。