喜欢0次
//#define KEY1 3 // 按键连接到GPIO引脚3
//#define LED1 1 // LED连接到GPIO引脚1
int main(void) {
// 配置LED GPIO
GPIO_REG(GPIO_INPUT_EN) &= ~(0x1 << LED1); // 关闭LED GPIO的输入使能
GPIO_REG(GPIO_OUTPUT_EN) |= (0x1 << LED1); // 打开LED GPIO的输出使能
GPIO_REG(GPIO_OUTPUT_VAL) &= ~(0x1 << LED1); // 初始化为关闭状态
printf(“LED GPIO configured.\n”);
// 配置按键GPIO
GPIO_REG(GPIO_OUTPUT_EN) &= ~(0x1 << KEY1); // 关闭按键GPIO的输出使能
GPIO_REG(GPIO_PULLUP_EN) |= (0x1 << KEY1); // 打开按键GPIO的输入上拉
GPIO_REG(GPIO_INPUT_EN) |= (0x1 << KEY1); // 打开按键GPIO的输入使能
printf("Button GPIO configured.\n");
uint8_t led_state = 0; // LED当前状态,0表示关闭,1表示打开
uint8_t last_button_state = 1; // 上一次按键状态,初始化为未按下(高电平)
while (1) {
// 读取按键状态
uint8_t button_state = (GPIO_REG(GPIO_INPUT_VAL) & (0x1 << KEY1)) == 0 ? 0 : 1;
// 检测按键的下降沿(从未按下到按下的过渡)
if (button_state == 0 && last_button_state == 1) {
// 切换LED状态
led_state = !led_state;
if (led_state) {
GPIO_REG(GPIO_OUTPUT_VAL) |= (0x1 << LED1); // 点亮LED
printf("LED ON\n");
} else {
GPIO_REG(GPIO_OUTPUT_VAL) &= ~(0x1 << LED1); // 熄灭LED
printf("LED OFF\n");
}
}
// 更新上一次按键状态
last_button_state = button_state;
}
return 0;
}