CW32F030K8U7实现按键长按3秒lcd灯亮的代码
时间: 2024-03-13 19:43:38 浏览: 57
下面是CW32F030K8U7实现按键长按3秒后LCD灯亮的示例代码:
```
#include "CW32F030.h"
#define LONG_PRESS_TIME 3000 // 定义长按时间为3秒
int main(void)
{
uint32_t press_time = 0; // 记录按键按下的时间
int long_press_flag = 0; // 长按标志位,初始值为0
// 使能GPIO模块的时钟
SYSCTRL->AHBCLKEN |= SYSCTRL_AHBCLKEN_GPIO_EN_Msk;
// 配置PB0引脚为输入模式
GPIOB->MODE &= ~(GPIO_MODE_MODE0_Msk);
// 配置PA0引脚为输出模式
GPIOA->MODE |= GPIO_MODE_MODE0_0_Msk;
while (1)
{
// 判断PB0引脚是否被按下
if (!(GPIOB->DATA & GPIO_DATA_DATA0_Msk))
{
press_time++; // 增加按下时间
// 判断是否长按
if (press_time >= LONG_PRESS_TIME && !long_press_flag)
{
// 长按时间达到3秒且长按标志位为0,将长按标志位置为1
long_press_flag = 1;
GPIOA->DATA |= GPIO_DATA_DATA0_Msk; // 点亮LCD灯
}
}
else
{
// 按键松开,重置按下时间和长按标志位
press_time = 0;
long_press_flag = 0;
GPIOA->DATA &= ~GPIO_DATA_DATA0_Msk; // 熄灭LCD灯
}
}
}
```
代码中通过定义LONG_PRESS_TIME宏来表示长按时间为3秒。在循环中,不断检测PB0引脚状态,如果检测到按键被按下,则增加按下时间,如果按下时间达到3秒且长按标志位为0,则将长按标志位置为1,并点亮LCD灯。如果按键松开,则重置按下时间和长按标志位,并熄灭LCD灯。需要注意的是,这里没有进行按键消抖处理,实际应用中需要加上消抖处理。
阅读全文