按键中断
轮询模式
- 原理:按键开发电路(工作模式:上拉模式)
- 配置按键管脚为输入模式
- 生成代码
- 修改main.c中的main()函数中while循环代码
if(GPIO_PIN_RESET == HAL_GPIO_ReadPin(KEY1_GPIO_Port,KEY1_Pin))
{
blink_led(RedLed,500);
}
运行程序后发现:按下KEY1蓝色亮 再按红色亮;在轮询模式中while()循环里不能做其他事情,否则如果CPU正在执行其他代码的话,可能会错过事件,因此不用轮询而用中断。
中断模式
- 配置管脚为中断模式
- 配置管脚优先级
- 生成代码
- 修改main.c函数,将main()函数中while()循环的代码删掉;
- 在gpio.c文件中添加中断服务处理程序,当灯按下时按键闪烁一次
运行测试,按下KEY1时蓝色灯亮;按下KEY2时红色灯亮;按下KEY3时绿色灯亮