记一次按键中断的bug

 一次使用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函数。

然后做了配置,问题解决。

总结:有时候需要弄懂一些代码的意思还是需要多看,积累经验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值