STM32—按键输入控制LED灯的亮灭
任务描述
要求通过按钮控制LED灯的亮灭。
原理图(Proteus)
软件设计(STM32CubeIDE)
需要插入的代码如下:
if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_1)==0)//判断按钮是否按下
{
HAL_Delay(20);//软件消抖
if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_1)==0)//再次判断按钮是否按下
{
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_0);//输出电平翻转
while(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_1)==0) ;//阻塞
HAL_Delay(20);//软件消抖
}
}
具体操作过程可参考:
https://blog.csdn.net/weixin_47664463/article/details/123773767?spm=1001.2014.3001.5501
拓展
任务描述
通过两只按钮控制一个LED的亮灭,要求两个按钮一个采用上拉输入模式,另一个采用下拉输入模式。
原理图(Proteus)
软件设计(STM32CubeIDE)
if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_1)==0)//判断按钮0是否按下
{
HAL_Delay(20);//软件消抖
if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_1)==0)//再次判断按钮0是否按下
{
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_0);//输出电平翻转
while(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_1)==0) ;//阻塞
HAL_Delay(20);//软件消抖
}
}
else if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_2)==0)//判断按钮1是否按下
{
HAL_Delay(20);//软件消抖
if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_2)==1)//再次判断按钮1是否按下
{
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_0);//输出电平翻转
while(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_2)==1) ;//阻塞
HAL_Delay(20);//软件消抖
}
}