stm32按键控制led除了if else语句还可以用那些语句
时间: 2024-10-11 18:10:53 浏览: 34
if语句 、switch语句 、for循环、break、continue、while、do-while
5星 · 资源好评率100%
STM32开发中,除了传统的`if-else`语句外,还可以使用以下几种方式来控制LED和按键:
1. **switch-case** 结构:如果按键有预定义的几个状态,可以使用`switch`语句,根据按键输入的不同值对应点亮不同的LED。
```c
switch(key) {
case KEY_UP:
LED1 = !LED1;
break;
case KEY_DOWN:
LED2 = !LED2;
break;
// 其他键值对应LED操作...
default:
break;
}
```
2. **数组/枚举** 结合指针或索引:将按键和LED的状态分别存储在一个数组或枚举中,通过按键对应的索引直接修改对应的LED状态。
```c
enum KeyState {KEY_UP, KEY_DOWN, ...};
KeyState key_status[] = {LED1, LED2, ...};
key_status[key] = !key_status[key];
```
3. **函数指针/回调函数**:定义处理按键事件的函数,然后将这个函数作为参数传递给定时中断或者其他驱动事件处理程序,在按键触发时自动执行相应动作。
```c
void handle_key_event(KeyStatusFunc func, KeyStatus key)
{
if (func(key)) {
// 执行相应的LED操作
}
}
// 示例:LED1切换
void led1_handler(KeyStatus key)
{
LED1 = !LED1;
}
handle_key_event(led1_handler, key);
```
阅读全文