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