你好
我正在开发一个应用程序,它大部分时间处于延长睡眠模式。我指的是prox_reporter的例子。我有以下问题。
1.我想在按下和释放按钮时唤醒我的系统。可能吗?2.我可以根据我的应用程序状态控制唤醒按钮吗?意味着我想停止检测按钮唤醒中断一旦中断产生。1秒后,我想再次启用按钮唤醒中断。
嗨,安基特,
选项:
1) 当wkupct_enable_irq(uint32_t sel_引脚、uint32_t pol_引脚、uint16_引脚)按下或释放按钮时,您可以唤醒系统
事件数、uint16时间)通过根据实施计划定义极性(高或低)来起作用。
2) 如果不调用wkupct_enable_irq()来启用中断,则可以在中断发生后停止检测按钮。
您可以在“文档”选项卡的“软件开发工具包”部分中建议UM-B-51。
谢谢你的对话。
我同意我可以在按下或松开按钮时醒来。
但我想在这两件事上醒来。意思是当按下按钮时,我想被称为button_press_cb(),当松开按钮时,我想被称为button_relase_cb()。
A.目前,我必须手动在它们之间切换。意味着当我检测到按钮按下时,我正在为按钮释放配置唤醒irq,当按钮释放时也是如此。如果有更好的解决方案,请告诉我。B关于停止检测,唤醒按钮,是否在我调用wkupct_enable_irq()时适用。作用
1) 没有其他选项触发唤醒计时器,此过程由唤醒irq函数实现。这取决于极性的定义(高或低)。
2) 如果调用wkupct_enable_irq()将启用启用按钮(唤醒计时器)的中断,在其他情况下,如果不调用上述函数,则不会发生任何事情。
谢谢
STS_对话。
我现在明白了。
让我们谈谈情形(b)。
我已在按下按钮时启用唤醒功能。在调用注册的回调函数之后,我在其中做了一些处理。之后,如果我想继续接收该按钮上的中断。是否必须通过调用wkupct_enable_irq()函数再次启用irq?
是的,您必须再次调用wkupct_enable_irq()函数,否则当您再次按下按钮时,将不会有中断(唤醒时间使整个过程中断)。正如您所看到的,您需要多次按下启用中断的按钮,因此您必须调用上述函数。
每当调用按钮唤醒回调时,是否必须通过调用GPIO_ConfigurePin()函数在每次唤醒时配置按钮pin?
不,定义管脚功能的配置只在设备唤醒时执行一次,通过periph_init()函数,您不必为唤醒中断执行任何其他操作,以触发appart调用wkupct_enable_irq(),正如我的同事所述。
谢谢你的对话
现在我面临着新的问题。
我观察到,在进入扩展睡眠模式后,有时按钮事件不会被检测到。按它2-3次后,它实际上检测按钮按下事件和唤醒回调正在被调用。当设备不在睡眠模式时,它可以正常工作。看门狗在其中发挥了作用吗?我已经启用了CFG_WDOG。
我已经检查了您的场景,它工作正常(进入延长睡眠模式后),您可以检查按下按钮时是否调用了wkupct_enable_irq()函数。也许你在一个条件中调用这个函数,它是假的,另一个选择是再次检查极性。
非常感谢。
嗨,汉蒂格,
请不要在现有线程中发布其他问题。为新问题创建一个新线程。
要启动新线程,请转到https://support.dialog-semiconductor.com/forum,选择相关论坛类别,如“dialog smartbond bluetooth低能-软件”。在这里您可以看到一个按钮“新建主题”。通过点击它,你可以开始新的线程。
嗨,安基特,
选项:
1) 当wkupct_enable_irq(uint32_t sel_引脚、uint32_t pol_引脚、uint16_引脚)按下或释放按钮时,您可以唤醒系统
事件数、uint16时间)通过根据实施计划定义极性(高或低)来起作用。
2) 如果不调用wkupct_enable_irq()来启用中断,则可以在中断发生后停止检测按钮。
您可以在“文档”选项卡的“软件开发工具包”部分中建议UM-B-51。
谢谢你的对话。
我同意我可以在按下或松开按钮时醒来。
但我想在这两件事上醒来。意思是当按下按钮时,我想被称为button_press_cb(),当松开按钮时,我想被称为button_relase_cb()。
A.目前,我必须手动在它们之间切换。意味着当我检测到按钮按下时,我正在为按钮释放配置唤醒irq,当按钮释放时也是如此。如果有更好的解决方案,请告诉我。
B关于停止检测,唤醒按钮,是否在我调用wkupct_enable_irq()时适用。作用
嗨,安基特,
1) 没有其他选项触发唤醒计时器,此过程由唤醒irq函数实现。这取决于极性的定义(高或低)。
2) 如果调用wkupct_enable_irq()将启用启用按钮(唤醒计时器)的中断,在其他情况下,如果不调用上述函数,则不会发生任何事情。
谢谢
STS_对话。
我现在明白了。
让我们谈谈情形(b)。
我已在按下按钮时启用唤醒功能。在调用注册的回调函数之后,我在其中做了一些处理。之后,如果我想继续接收该按钮上的中断。是否必须通过调用wkupct_enable_irq()函数再次启用irq?
是的,您必须再次调用wkupct_enable_irq()函数,否则当您再次按下按钮时,将不会有中断(唤醒时间使整个过程中断)。正如您所看到的,您需要多次按下启用中断的按钮,因此您必须调用上述函数。
谢谢你的对话。
你好
每当调用按钮唤醒回调时,是否必须通过调用GPIO_ConfigurePin()函数在每次唤醒时配置按钮pin?
嗨,安基特,
不,定义管脚功能的配置只在设备唤醒时执行一次,通过periph_init()函数,您不必为唤醒中断执行任何其他操作,以触发appart调用wkupct_enable_irq(),正如我的同事所述。
谢谢你的对话
现在我面临着新的问题。
我观察到,在进入扩展睡眠模式后,有时按钮事件不会被检测到。按它2-3次后,它实际上检测按钮按下事件和唤醒回调正在被调用。当设备不在睡眠模式时,它可以正常工作。看门狗在其中发挥了作用吗?我已经启用了CFG_WDOG。
嗨,安基特,
我已经检查了您的场景,它工作正常(进入延长睡眠模式后),您可以检查按下按钮时是否调用了wkupct_enable_irq()函数。也许你在一个条件中调用这个函数,它是假的,另一个选择是再次检查极性。
非常感谢。
STS_对话。
嗨,汉蒂格,
请不要在现有线程中发布其他问题。为新问题创建一个新线程。
要启动新线程,请转到https://support.dialog-semiconductor.com/forum,选择相关论坛类别,如“dialog smartbond bluetooth低能-软件”。在这里您可以看到一个按钮“新建主题”。通过点击它,你可以开始新的线程。