NUCLEO_STM32L4R5ZI 学习日记 新手按键点灯 CubeMx hal库
新手学习日记 NUCLEO_STM32L4R5ZI (cubemx hal库)
利用按键中断控制板载LED灯闪烁。 代码功能:默认状态下蓝色LED灯缓慢闪烁,按键按下后,LED灯快速闪烁三次
CUBEMX创建工程
创建工程 选择板卡(这里使用默认配置,就是弹出的对画框选择OK,这里没有截到图) 默认配置GPIO里面已经设置好了,这里不用管了 我们看一下原理图,可以看出PC13按键引脚被电阻下拉,按键按下时会检测到一个上升沿信号,由于已经被外部下拉,所以不用设置GPIO上下拉即可,而且按键已经有了外部去抖(电容);PB7引脚高电平时点亮LED。 可以看到默认配置这里PC13已经设置了外部中断检测上升沿,PB7也设置好了,也不用改 设置中断抢占优先级为6(刚开始我设置的是1,烧进去后没反应,不知道为啥) 时钟树就用默认的,接着配置ProjectManager,创建工程名,选择工程存放的文件夹和使用的编译器 这个要选上 生成工程
找到并打开选的工程文件夹 在main函数里编写代码
核心代码
while里面是初始状态,LED缓慢闪烁,间隔1秒。
while (1)
{
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_7);
HAL_Delay(1000);
}
中断回调函数,当检到按键中断时执行HAL_GPIO_EXTI_Callback函数,LED闪烁三次。
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_PIN)
{ if(GPIO_PIN == GPIO_PIN_13)
{ for(int i=0;i<6;i++)
{
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_7);
HAL_Delay(200);
}
}
}
实物照片
实物动图
如有问题还望指正,谢谢!
|