问题:
- 按照我的电路图设计 和代码,理论上只有 按下按键这个动作才会触发LED灯 亮or灭 翻转。但是按几次,就出现不符合预期的地方:按下再松开,LED等先亮再灭,或者先灭再亮,总之是两次触发反转。是我的按键 或者 面包版 质量问题吗?
- 想问下我的电路图、代码,有什么可以改进的吗?
我的电路图,大概如图所示:

我的代码:
#define LED GET_PIN(C, 0)
#define BUTTON GET_PIN(C, 1)
void trigger(void *param) {
if (rt_pin_read(LED)) {
rt_pin_write(LED, PIN_LOW);
} else {
rt_pin_write(LED, PIN_HIGH);
}
}
int main(void)
{
// Set led
rt_pin_mode(LED, PIN_MODE_OUTPUT);
rt_pin_write(LED, PIN_LOW); // 灌电流模式,低电平默认亮
// Set Button
rt_pin_mode(BUTTON, PIN_MODE_INPUT_PULLUP); // 1 default
rt_pin_attach_irq(BUTTON, PIN_IRQ_MODE_FALLING, trigger, RT_NULL); // 对应"按下"动作
rt_pin_irq_enable(BUTTON, RT_TRUE);
// rt_kprintf("current LED IO value: %d", rt_pin_read(LED));
}
多谢,写了个简单的消抖,发现知道我设置ELIMINATION_TIME_MS为200,才明显没有抖动😂