首页 > 编程知识 正文

旋钮开关 led灯,按键点亮led灯

时间:2023-05-05 13:34:04 阅读:216470 作者:3685

题目:

利用STM32CubeMX和lKeil5进行STM32应用开发,完成以下的功能。                                    【1】按下KEY1按键,切换LED1的开关状态。

【2】按下KEY2按键,松开后,切换LED2的开关状态。                                                          【3】按下KEY4按键,把点亮的LED灯全部关闭。

        按键机械触点断开、闭合时,由于触点的弹性作用,按键开关不会马上稳定接通或一下子断开, 使用按键时会产生如图中的带波纹信号,不会马上稳定地接通,在断开时也不会一下子断开,因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖, 需要用软件消抖处理滤波。 #include "main.h"#include "gpio.h"/* USER CODE BEGIN PTD */#define KEY1 HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_0) #define KEY2 HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_1) #define KEY4 HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_3) //按键读取宏定义void Key_Scan(){if(KEY1 == 0){ HAL_Delay(10);if(KEY1==0){HAL_GPIO_TogglePin(GPIOD,GPIO_PIN_3);while(KEY1==0);}}if(KEY2==0){HAL_Delay(10);if(KEY2==0){while(KEY2==0);//按键按下时等待,松开后动作HAL_GPIO_TogglePin(GPIOD,GPIO_PIN_4);}}if(KEY4==0){HAL_Delay(10);if(KEY4==0){HAL_GPIO_TogglePin(GPIOD,GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6);//可以同时反转多个引脚while(KEY4==0);}}}int main(void){ HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */Key_Scan();//调用 /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。