LED和按钮验证输入输出实际上就是GPIO的输入输出的功能实现,这里我们使用两个LED作为输出,一个用户按键作为输入(通过我不中断的方式实现)。我们需要考虑的内容主要是原理图中的硬件配置是怎样的,初始化代码如何实现,软件上面需要如何编写,接下来我们就是通过这样的流程实现基本基本的目标功能。
一、硬件原理
先看一下原理图方面:
按键:
这里需要注意按键按下的时候对应引脚是低电平的,R34并没有焊接,也就是没有进行外部上拉操作,我们需要再配置的时候实现内部上拉;
LED:
两个LED的控制分别通过两个不同的引脚实现的控制,控制的电平还不同,这里我们要注意一下。
二、STM32CubeMX配置
接下来我们看一下对应引脚的配置。
按键需要配置为外部中断模式:
同时需要配置为下降沿触发,内部上拉,开启对应的中断:
LED需要配置为输出模式:
为了控制的一致性需要根据原理图给与对应的初始电平状态。
三、软件设计
接下来就是软件上的功能实现了,主要的内容就是需要我们重写外部中断的回调函数了,中断中可以看到已经处理:
在main.c中重写回调函数,回调函数一般都是弱定义的,根据具体的触发方式进行,本次是通过下降沿触发:
void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_13)
{
HAL_GPIO_TogglePin(LD1_GPIO_PORT, LD1_Pin);
HAL_GPIO_TogglePin(LD2_GPIO_PORT, LD2_PIN);
}
}
四、效果展示
本次实现的功能就是通过外部中断采集的按键进行两个LED的外部翻转,效果如下:
|