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

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
4个帖子/ 0新
最后一篇
Andrew886.
离线
最后一次露面:2年2个月前
加入: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);

静态void wkup_button_cb(void)
{
if(getBits16(sys_stat_reg,per_is_down))
{
periph_init();
}

gpio_configurepin(gpio_led_port,gpio_led_pin,输出,pid_gpio,false);
app_easy_timer(1,LED_BLINK_TIMER_CB_HANDLER);
}

静态void LED_BLINK_TIMER_CB_HANDLER()
{
静态UINT8_T IDX = 0;

if(gpio_getpinstatus(gpio_led_port,gpio_led_pin)){
gpio_setinactive(gpio_led_port,gpio_led_pin);
}别的{
gpio_setactive(gpio_led_port,gpio_led_pin);
}

if(idx <10){
IDX + = 1;
app_easy_timer(100,LED_BLINK_TIMER_CB_HANDLER);
}别的{
Idx = 0;
gpio_configurepin(gpio_led_port,gpio_led_pin,input_pulldown,pid_gpio,false);
}

}

关键词:
设备:
PM_DIALOG.
离线
最后一次露面:3天6小时前
职员
加入:2018-02-08 11:03
嗨Andrew886,

嗨Andrew886,

WKUP控制器始终打开,因此您可以使用活动或睡眠模式以检测中断。通常,WKUP控制器一直在使用从睡眠模式唤醒。请检查SDK的BLE_APP_SLEEPMODE示例以获取更多信息。关于wkupct_enable_irq()events_num是唤醒中断之前的事件数,所以您需要将其设置为1.此外,允许的最大逐个衰变时间为0x3f。您能否让我知道您使用的SDK的哪个项目是您的问题?

谢谢,PM_DIALOG.

Andrew886.
离线
最后一次露面:2年2个月前
加入:2019-03-15 00:27
嗨pm_dialog,

嗨pm_dialog,

我使用BLE_APP_PERITELAL项目(DA14580的SDK 5.0.4)开发我的应用程序,我也引用BLE_APP_SLEEPMODE项目。

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

我的第一个问题:是否有方便的方法测试深睡眠模式?如果将十六进制文件刻录到OTP并无法正常工作,那么我不能再次在同一芯片/板上测试深度睡眠模式。

第2问题:

我可以使用以下代码来触发唤醒时段。如果我评论gpio_setpinfunction,它就不起作用。为什么?

据我所知,在深度睡眠模式下,Periphral是掉电的。gpio_setpinfunction不需要执行。

静态void wkup_button_cb(void)
{
app_easy_timer(1,lowlevel_hold_timer_cb_handler);

// 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);
}

void wkup_button_enable(void)
{
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.
离线
最后一次露面:3天6小时前
职员
加入:2018-02-08 11:03
嗨Andrew886,

嗨Andrew886,

问题#1:请检查da1458x_config_basic.h文件中的cfg_development_debug宏。此宏支持开发/调试模式。对于生产模式,必须禁用它。启用后,SYSRAM不会在深度睡眠模式下断电。因此,允许开发人员使用深度睡眠模式运行应用程序而无需编程OTP内存。雷竞技安卓下载请阅读宏的评论。

问题#2:您是否可以在user_periph_setup.c文件中保留和配置的wkup gpio,说明您是否拥有WKUP GPIO?您不应调用WKUP_BUTTON_ENABLE中的GPIO_SETPINFUNCTION()。请检查GPIO_Button如何在SDK的BLE_APP_SLEEPMODE示例的BLE_PERIPH_SETUP.c / .h文件中定义和配置。

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

谢谢,PM_DIALOG.