记一次按键中断的bug
- 人工智能
- 2025-09-12 12:00:02

一次使用mk800E的芯片做开发,增加一个5V_dev 的IO中断。
配置如下:
初始化如下:
gpio_det_init(GPIO_DETHandler);
以下为我的配置:检查了下配置似乎没有毛病 void gpio_det_init(GPIO_IRQ_HANDLER_T irq_handler) { #if !RESPON_FLAG // 5V_DET --- // gpio_det_irq_callback = irq_handler; gpio_pin_set_dir(DET_5V, GPIO_DIR_IN, 0); io_pull_set(DET_5V, IO_PULL_DOWN, IO_PULL_UP_NONE); gpio_enable_irq(DET_5V, GPIO_IRQ_TYPE_RISING_EDGE, gpio_det_irq_callback); power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)DET_5V, POWER_WAKEUP_LEVEL_HIGH); #endif } // 5V_DET ---默认下拉输入 // gpio_det_init(GPIO_DETHandler); static void GPIO_DETHandler(enum IO_PIN_T pin) { LOG_INFO(TRACE_MODULE_APP, "GPIO_IRQ\n"); if(pin == DET_5V) { app_button_event_set(APP_CHARGE_EVT); } }但接入5v充电的时候,发现一直触发该中断,无法停下来。
一开始怀疑中断flag 没有清除,检查过后发现是清除了的。
后面问了原厂才知道:
从power down唤醒后,GPIO中断行为要重新配置,参考board.c的restore power down函数。
然后做了配置,问题解决。
总结:有时候需要弄懂一些代码的意思还是需要多看,积累经验。
记一次按键中断的bug由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“记一次按键中断的bug”