malong9527 发表于 2020-7-7 19:17:38

NUCLEO-L476RG开发板初学者探索入门尝试(三)按键控制灯亮灭

通过按键控制小灯LD2亮灭,每按键一次,小灯状态发生一次变化。
配置按键,设置为下降沿触发,并且开启外部中断,设置优先级(设置优先级是为了和库函数中延时区分开,否则会干扰),如图:

通过配置和原理图可知,按键按下,PC13检测到低电平。通过gpio.c/gpio.h和main.c文件可以找到相关代码语句,在begin和end之间添加如下代码:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin==GPIO_PIN_13)
{
HAL_Delay(100);
if(HAL_GPIO_ReadPin(B1_GPIO_Port, B1_Pin)==GPIO_PIN_RESET)
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);
}
}
其中加入延时Delay是为了防抖。
原代码如图所示:

修改完成后编译并下载。

通过按下按键观察开发板小灯顺序亮灭。
完成!!!!!!!

李康1202 发表于 2020-7-9 09:25:16

顶一下

malong9527 发表于 2020-7-9 10:46:40

likang1202 发表于 2020-7-9 09:25
顶一下

nice,多交流;P
页: [1]
查看完整版本: NUCLEO-L476RG开发板初学者探索入门尝试(三)按键控制灯亮灭