我们在实现了GPIO的输出控制后实际上就是LED的控制接下来我们看一看GPIO的输入这个相对来说也是比较简单的。板子上目前有的可用按键实际上只有一个蓝色按键是咱们用户可以用的按键另一个是复位按键接下来看一下用户按键的原理图位置按键默认是接地的按下后状态是高电平按键的采集一般有两种方式一个是扫描定时进行GPIO的状态采集一种就是通过外部中断的方式也就是GPIO的状态发生变化后后去一次本次通过外部中断的方式进行按键采集对应的引脚是PC13,。接下来咱们对之前的GPIO初始化工程进行增加按键的操作打开STM32CubeMX的工程找到PC13引脚设置为外部中断模式按下时接到高电平所以选择上升沿出发比较合适注意开启对应的外部中断。接下来我们到程序里看一下由于我们开启了外部中断对于中断的处理都是通过回调函数来进行的在stm32l5xx_it.c中可以看到PC13对应的外部中断为EXTI13_IRQHandler(void)里面的处理是调用HAL_GPIO_EXTI_IRQHandler(KEY_Pin);然后就是对应的上升和下降的处理这里我们是处理的上升沿对应的是HAL_GPIO_EXTI_Rising_Callback我们需要重写处理程序复制pvoid HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)/pp{/pp if(GPIO_Pin GPIO_PIN_13)/pp {/* KEY *//pp HAL_GPIO_TogglePin(LED_GREEN_GPIO_Port, LED_GREEN_Pin);/pp HAL_GPIO_TogglePin(LED_RED_GPIO_Port, LED_RED_Pin);/pp }/pp}/p在这里我们将上面的blink出发条件改为了按键一次翻转一次效果如下---------------------作者Bymyself链接https://bbs.21ic.com/icview-3438160-1-1.html来源21ic.com此文章已获得原创/原创奖标签著作权归21ic所有任何人未经允许禁止转载。