你好,
我正在开发一个应用程序,它的大部分时间驻留在扩展睡眠模式。我指的是代理记者的例子。我有以下几个问题。
1.我想唤醒我的系统,当按钮被按下和释放。是可能的吗?2.我可以根据我的应用程序状态控制唤醒按钮吗?意味着我想停止检测按钮唤醒中断一旦中断产生。1秒后,我想再次启用按钮唤醒中断。
嗨Ankit,
选项:
1)当按钮被wkupct_enable_irq(uint32_t sel_pins, uint32_t pol_pins, uint16_t)按下或释放时,可以唤醒系统
Events_num, uint16_t deb_time)函数通过定义极性(高或低)根据您的实现计划。
2)如果你没有通过调用wkupct_enable_irq()来调用中断的启用,你可以在中断发生后停止检测按钮。
您可以在文档选项卡的“软件开发工具包”部分建议使用UM-B-51。
谢谢STS_Dialog。
我同意我可以唤醒按钮是按下或释放。
但我想从这两件事中清醒过来。意味着当按钮被按下时,我想被称为button_press_cb(),当按钮被释放时,我想被称为button_relase_cb()。
a.目前,我必须手动切换它们。意思是当我检测按钮按下,我正在配置唤醒irq按钮释放和相同时按钮被释放。如果有更好的解决办法,请建议我。b.关于停止检测,唤醒按钮,当我调用wkupct_enable_irq()是否适用。函数?
没有其他选项来触发唤醒定时器,这个过程由唤醒irq功能实现。它取决于极性的定义(高或低)。
2)如果你调用wkupct_enable_irq()使中断使按钮(唤醒计时器)生效,在其他情况下,如果你不调用上述函数,什么也不会发生。
谢谢,
STS_Dialog。
我现在很清楚(a)了。
让我们谈谈情形(b)。
我已经按下了唤醒按钮。在那个注册的回调函数被调用之后,我在其中做了一些处理。之后,如果我想继续接收那个按钮上的中断。我必须通过调用wkupct_enable_irq()函数再次启用irq吗?
是的,你必须再次调用wkupct_enable_irq()函数,否则当你再次按下按钮时,你将没有中断(唤醒时间,为整个过程启用中断)。正如你所看到的,你想要按下按钮多少次,使中断,所以你不得不调用上述功能。
每当按钮唤醒回调被调用时,我是否必须通过调用GPIO_ConfigurePin()函数在每个唤醒上配置按钮pin ?
不,定义引脚功能的配置只在设备唤醒时完成一次,通过外围init()函数,除了调用wkupct_enable_irq(),您不需要做任何其他事情来触发唤醒中断,就像我同事提到的。
由于MT_dialog
现在我面临着新的问题。
我观察到,在进入扩展睡眠模式后,有时按钮事件不会被检测到。按它2-3次后,它实际上检测按钮按下事件和唤醒回调正在被调用。当设备不在睡眠模式时,它可以正常工作。看门狗在其中发挥了作用吗?我已经启用了CFG_WDOG。
我已经检查了您的场景,它工作正常(进入扩展睡眠模式后),您可以检查wkupct_enable_irq()函数是否在按下按钮时被调用。也许你在条件中调用函数,结果是false,另一个选项是再次检查极性。
谢谢你!
嗨hantig,
请不要在现有的帖子中发布额外的问题。为新问题创建一个新线索。
要启动新线程,请转到https://support.dialog-semiconductor.com/forum,选择相关论坛类别,如“dialog-smartbond-bluetooth-low-energy- software”。在这里你可以看到一个按钮“新主题”。通过点击它,你可以开始新的线程。
嗨Ankit,
选项:
1)当按钮被wkupct_enable_irq(uint32_t sel_pins, uint32_t pol_pins, uint16_t)按下或释放时,可以唤醒系统
Events_num, uint16_t deb_time)函数通过定义极性(高或低)根据您的实现计划。
2)如果你没有通过调用wkupct_enable_irq()来调用中断的启用,你可以在中断发生后停止检测按钮。
您可以在文档选项卡的“软件开发工具包”部分建议使用UM-B-51。
谢谢STS_Dialog。
我同意我可以唤醒按钮是按下或释放。
但我想从这两件事中清醒过来。意味着当按钮被按下时,我想被称为button_press_cb(),当按钮被释放时,我想被称为button_relase_cb()。
a.目前,我必须手动切换它们。意思是当我检测按钮按下,我正在配置唤醒irq按钮释放和相同时按钮被释放。如果有更好的解决办法,请建议我。
b.关于停止检测,唤醒按钮,当我调用wkupct_enable_irq()是否适用。函数?
嗨Ankit,
没有其他选项来触发唤醒定时器,这个过程由唤醒irq功能实现。它取决于极性的定义(高或低)。
2)如果你调用wkupct_enable_irq()使中断使按钮(唤醒计时器)生效,在其他情况下,如果你不调用上述函数,什么也不会发生。
谢谢,
STS_Dialog。
我现在很清楚(a)了。
让我们谈谈情形(b)。
我已经按下了唤醒按钮。在那个注册的回调函数被调用之后,我在其中做了一些处理。之后,如果我想继续接收那个按钮上的中断。我必须通过调用wkupct_enable_irq()函数再次启用irq吗?
是的,你必须再次调用wkupct_enable_irq()函数,否则当你再次按下按钮时,你将没有中断(唤醒时间,为整个过程启用中断)。正如你所看到的,你想要按下按钮多少次,使中断,所以你不得不调用上述功能。
谢谢STS_Dialog。
你好,
每当按钮唤醒回调被调用时,我是否必须通过调用GPIO_ConfigurePin()函数在每个唤醒上配置按钮pin ?
嗨Ankit,
不,定义引脚功能的配置只在设备唤醒时完成一次,通过外围init()函数,除了调用wkupct_enable_irq(),您不需要做任何其他事情来触发唤醒中断,就像我同事提到的。
由于MT_dialog
现在我面临着新的问题。
我观察到,在进入扩展睡眠模式后,有时按钮事件不会被检测到。按它2-3次后,它实际上检测按钮按下事件和唤醒回调正在被调用。当设备不在睡眠模式时,它可以正常工作。看门狗在其中发挥了作用吗?我已经启用了CFG_WDOG。
嗨Ankit,
我已经检查了您的场景,它工作正常(进入扩展睡眠模式后),您可以检查wkupct_enable_irq()函数是否在按下按钮时被调用。也许你在条件中调用函数,结果是false,另一个选项是再次检查极性。
谢谢你!
STS_Dialog。
嗨hantig,
请不要在现有的帖子中发布额外的问题。为新问题创建一个新线索。
要启动新线程,请转到https://support.dialog-semiconductor.com/forum,选择相关论坛类别,如“dialog-smartbond-bluetooth-low-energy- software”。在这里你可以看到一个按钮“新主题”。通过点击它,你可以开始新的线程。