嗨,对话
在我们的开发中,我们使用了键盘扫描模块和用于捕获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
}
但它仍然无法解决问题。应该为这个问题做些什么。或者我们可以区分触发唤醒中断的引脚吗?
⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
星期四,2017-09-14 12:34
#1
GPIO唤醒活动冲突
设备:
古兴,
您植入的行为是预期的设计。
也许您需要读取GPIOS在计算GPIO下降沿之前从单个GPIO或密钥矩阵生成的Tirgger是否返回。
嗨,mh.
这可能不会让键盘扫描模块触发唤醒中断吗?
古兴,
我相信AD_KEYBOARD_SCANNER.c中需要修改唤醒中断。请尝试将第243行至253发表评论,以查看它是否适用于您的要求。
嗨,mc.
评论后仍然发生在上面提到的代码后,并且在设备进入扩展睡眠模式后,keyscan模块无法正常工作。