打印
[STM32L5]

【STM32L562 DK试用】3、GPIO的输入应用

[复制链接]
30|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
       我们在实现了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,我们需要重写处理程序:
<p>void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)</p><p>{</p><p>  if(GPIO_Pin == GPIO_PIN_13)</p><p>  {/* KEY */</p><p>    HAL_GPIO_TogglePin(LED_GREEN_GPIO_Port, LED_GREEN_Pin);</p><p>    HAL_GPIO_TogglePin(LED_RED_GPIO_Port, LED_RED_Pin);</p><p>  }</p><p>}</p>

       在这里我们将上面的blink出发条件改为了按键一次翻转一次,效果如下:

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

208

帖子

0

粉丝