唤醒定时器在活动模式下工作吗

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
4个职位/ 0个新职位
最后发表
Andrew886
离线
最后看到:1年8个月前
加入:2019-03-15 00:27
唤醒定时器在活动模式下工作吗

嗨,我想在按下按钮2秒后触发唤醒事件,我可以先在空闲或活动模式下测试它吗?

我的代码的过程如下,

user_app_init

——> wkup_button_enable

——> wkupct_register_callback (wkup_button_cb);
wkupct_enable_irq (WKUPCT_PIN_SELECT (WKUP_BUTTON_PORT WKUP_BUTTON_PIN),
WKUPCT_PIN_POLARITY (WKUP_BUTTON_PORT WKUP_BUTTON_PIN WKUPCT_PIN_POLARITY_LOW),
40,
50);

静态孔隙wkup_button_cb(空白)

如果(GetBits16 (SYS_STAT_REG PER_IS_DOWN))

periph_init ();

GPIO_ConfigurePin(GPIO_LED_PORT, GPIO_LED_PIN, OUTPUT, PID_GPIO, false);
led_blink_timer_cb_handler app_easy_timer(1日);

静态孔隙led_blink_timer_cb_handler ()

Static uint8_t idx = 0;

如果(GPIO_GetPinStatus (GPIO_LED_PORT GPIO_LED_PIN)) {
GPIO_SetInactive (GPIO_LED_PORT GPIO_LED_PIN);
其他}{
GPIO_SetActive (GPIO_LED_PORT GPIO_LED_PIN);

如果(idx < 10) {
idx + = 1;
led_blink_timer_cb_handler app_easy_timer (100);
其他}{
idx = 0;
GPIO_ConfigurePin(GPIO_LED_PORT, GPIO_LED_PIN, INPUT_PULLDOWN, PID_GPIO, false);

关键词:
设备:
PM_Dialog
离线
最后看到:16小时7分钟前
工作人员
加入:2018-02-08 11:03
嗨Andrew886,

嗨Andrew886,

WKUP控制器总是处于开机状态,因此您可以使用活动模式或睡眠模式来检测中断。通常,WKUP控制器用于从休眠模式中唤醒。请查看SDK的ble_app_sleepmode示例以获取更多信息。对于wkupct_enable_irq(), events_num是唤醒中断之前的事件数,因此需要将其设置为1。另外,允许的最大恢复时间是0x3F。请问您使用的是SDK的哪个项目,有哪些问题?

谢谢,PM_Dialog

Andrew886
离线
最后看到:1年8个月前
加入:2019-03-15 00:27
嗨PM_Dialog,

嗨PM_Dialog,

我使用ble_app_peripheral项目(DA14580的SDK 5.0.4)来开发我的应用程序,我也引用了ble_app_sleepmode项目。

我想唤醒芯片从深度睡眠模式按一个按钮2秒长。因为芯片只有在OTP编程时才能进入深度睡眠模式。所以我想在活动模式下测试软件,或者尽可能地扩展睡眠模式。

我的第一个问题:有没有方便的方法来测试深度睡眠模式?如果我将hex文件刻录到OTP上不能很好地工作,那么我就不能在同一个芯片/板上再次测试深度睡眠模式。

问题2:

我可以使用下面的代码来触发唤醒中断。如果我注释GPIO_SetPinFunction,它不工作。为什么?

据我所知,在深度睡眠模式下,周围神经会关闭。GPIO_SetPinFunction不需要执行。

静态孔隙wkup_button_cb(空白)

lowlevel_hold_timer_cb_handler app_easy_timer(1日);

/ / wkupct_register_callback (wkup_button_cb);
wkupct_enable_irq (WKUPCT_PIN_SELECT (WKUP_BUTTON_PORT WKUP_BUTTON_PIN) \
WKUPCT_PIN_POLARITY (WKUP_BUTTON_PORT WKUP_BUTTON_PIN WKUPCT_PIN_POLARITY_LOW) \
1, \
40);

空白wkup_button_enable(空白)

GPIO_SetPinFunction(WKUP_BUTTON_PORT, WKUP_BUTTON_PIN, INPUT_PULLUP, PID_GPIO);
wkupct_register_callback (wkup_button_cb);
wkupct_enable_irq (WKUPCT_PIN_SELECT (WKUP_BUTTON_PORT WKUP_BUTTON_PIN),
WKUPCT_PIN_POLARITY (WKUP_BUTTON_PORT WKUP_BUTTON_PIN WKUPCT_PIN_POLARITY_LOW),
1, // 1事件
40);

PM_Dialog
离线
最后看到:16小时7分钟前
工作人员
加入:2018-02-08 11:03
嗨Andrew886,

嗨Andrew886,

问题#1:请检查da1458x_config_basic.h文件中的CFG_DEVELOPMENT_DEBUG宏。这个宏启用开发/调试模式。对于生产模式构建,必须禁用它。当启用时,SysRAM在深度睡眠模式下不会下电。因此,开发者可以使用Deep Sleep模式运行应用程序,而无需编程OT亚博国际官网平台网址P内存。请阅读宏的注释。

问题#2:请说明您是否保留了WKUP GPIO并在user_periph_setup.c文件中进行了配置?不应该在wkup_button_enable中调用GPIO_SetPinFunction()。请在SDK ble_app_sleepmode example的user_peripher_setup .c / .h文件中查看GPIO_BUTTON是如何定义和配置的。

如果你发现任何有用的答案,请将其中一个标记为“已接受”。

谢谢,PM_Dialog