在上一篇章中,我们旨在验证程序的实用性,借助LED(即引脚输出)作为测试媒介。LED与按钮的验证,实质上是对GPIO输入输出功能的实践探索。此开发板在按键与LED控制方面颇为丰富,因此我们选用了三个LED作为输出展示,同时配置了三个用户按键作为输入源,并采用中断机制来实现其功能。接下来,我们的核心关注点在于:如何设计原理图中的硬件配置、如何编写初始化代码、以及在软件层面如何实现预期功能。遵循这一流程,我们将稳步迈向基本目标功能的实现。
这里需要注意按键按下的时候对应引脚是低电平的,没有进行外部上拉操作,我们需要再配置的时候实现内部上拉,三个按键的操作模式相同的;
结合上图就清晰了,绿灯对应的PB9,红灯对应PB11,蓝灯对应的是PB15,控制模式是相同的都是通过高电平电量。
为了控制的一致性需要根据原理图给与对应的初始电平状态,关闭对应的是低电平。
接下来就是软件上的功能实现了,主要的内容就是需要我们重写外部中断的回调函数了,中断中可以看到已经处理:
在main.c中重写回调函数,回调函数一般都是弱定义的,根据具体的触发方式进行,本次是通过下降沿触发:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == B1_Pin)
{
HAL_GPIO_TogglePin(LED_BLUE_GPIO_Port, LED_BLUE_Pin);
}
else if(GPIO_Pin == B2_Pin)
{
HAL_GPIO_TogglePin(LED_GREEN_GPIO_Port, LED_GREEN_Pin);
}
else if(GPIO_Pin == B3_Pin)
{
HAL_GPIO_TogglePin(LED_RED_GPIO_Port, LED_RED_Pin);
}
}
本次实现的功能就是通过外部中断采集的按键进行LED的外部翻转,每个按键控制一个LED,效果如下:
作者: 无言的朝圣, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-4014618.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
文章评论(0条评论)
登录后参与讨论