通过按键KEY去控制LED灯
不停的去读取按键相应的GPIO口的电平状态
高电平(1) ---> 弹起
低电平(0) ---> 按下
根据GPIO引脚的电平状态,来判断按键的按下或弹起时,"通知" CPU,然后再去做相应的处理 ......
"轮询":轮流询问,但是轮询有一些缺陷:(1) 占用CPU
(2) 占用总线,Bus is always busy
(3) 轮询有一个时间差
外部中断的代码实现
首先查看原理图:
KEY0 ---> PA0 ---> EXTI0 ---> NVIC ---> CPU ---> EXTI0_IRQHandler
KEY1 ---> PE2 ---> EXTI2 ---> NVIC ---> CPU ...
KEY2 ---> PE3 ---> EXTI3 ...
KEY4 ---> PE4 ---> EXTI4 ...
根据 GPIO 外部中断的路线图来看,首先要做的是配置 GPIO 控制器:1)配置 GPIO 控制器为输入模式
a)使能 GPIO 分组时钟
RCC_AHB1P