GPIO唤醒活动冲突

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
5个帖子/ 0新
最后一篇
古祥
离线
最后一次露面:1天11小时前
加入:2017-05-12 04:18
GPIO唤醒活动冲突

嗨,对话
在我们的开发中,我们使用了键盘扫描模块和用于捕获Failling Edge Counts的GPIO引脚。
键盘扫描模块配置了“ad_kbscn_init()”函数,
虽然GPIO引脚如下配置:
{
hw_gpio_set_pin_function(hw_gpio_port_1,hw_gpio_pin_7,hw_gpio_mode_input_pullup,
hw_gpio_func_gpio);
hw_wkup_init(null);
hw_wkup_set_debounce_time(0);
hw_wkup_set_counter_threshold(1);
hw_wkup_set_pin_trigger(hw_gpio_port_1,hw_gpio_pin_7,hw_wkup_pin_state_low);
hw_wkup_register_interrupt(wkup_handler,configlary_max_syscall_interrupt_priority);
}
和唤醒中断功能是:
void wkup_handler(void)
{
hw_wkup_reset_interrupt();
enter_wkup_cnt ++;
}
键盘扫描模块和GPIO捕获Failling Edge可以单独使用。但是如果我们按下矩阵键时GPIO正在捕获Failling Edge时,变量“Enter_Wkup_cnt”将比常用大。似乎按下了键也将触发唤醒中断并执行“Enter_Wkup_cnt ++”;。
在启动GPIO Failling边缘捕获之前,我添加了代码以禁用矩阵键PIN唤醒功能:
{
hw_wkup_set_pin_state(hw_gpio_port_4,hw_gpio_pin_4,false); //列引脚1
hw_wkup_set_pin_state(hw_gpio_port_4,hw_gpio_pin_5,false); //列引脚2
hw_wkup_set_pin_state(hw_gpio_port_4,hw_gpio_pin_6,false); //行引脚1
hw_wkup_set_pin_state(hw_gpio_port_4,hw_gpio_pin_7,false); //行引脚2
}
但它仍然无法解决问题。应该为这个问题做些什么。或者我们可以区分触发唤醒中断的引脚吗?

设备:
mh_dialog(未经验证)
古兴,

古兴,

您植入的行为是预期的设计。

也许您需要读取GPIOS在计算GPIO下降沿之前从单个GPIO或密钥矩阵生成的Tirgger是否返回。

古祥
离线
最后一次露面:1天11小时前
加入:2017-05-12 04:18
嗨,mh.

嗨,mh.
这可能不会让键盘扫描模块触发唤醒中断吗?

mh_dialog(未经验证)
古兴,

古兴,

我相信AD_KEYBOARD_SCANNER.c中需要修改唤醒中断。请尝试将第243行至253发表评论,以查看它是否适用于您的要求。

古祥
离线
最后一次露面:1天11小时前
加入:2017-05-12 04:18
嗨,mc.

嗨,mc.
评论后仍然发生在上面提到的代码后,并且在设备进入扩展睡眠模式后,keyscan模块无法正常工作。