简述:
基于官方提供例程进行修改后测试,
在P1_7管脚上触发产生一个下降沿后,Demo板上的D2会亮,
却发现当cpu完全进入休眠后,Demo板上的D2也会熄灭。
理论上管脚会保持休眠前的状态,但是现在的实际情况是不对的。
以上效果是因为配置存在问题而导致的么,请指教。
详情:
使用UM-B-047-DA1468x Getting Started_4_1中的第八章Your First DA1468x Application – Blinky的例程,
并按照步骤成功添加了闪烁LED D2的程序。
正是由于在实际开发中遇到了问题,
需要测试管脚在休眠后是否能够继续保持管脚状态,现做出如下修改:
1、设置休眠模式,如下所述:
pm_set_wakeup_mode(true);
pm_set_sleep_mode(pm_mode_extended_sleep);
2、检测外部中断,此处使用的检测到P1_7有下降沿出现则唤醒设备,如下所述:
#define CFG_WKUP_DEBOUNCE_TIME (32)
#define CFG_WKUP_COUNTER_THR (1)
#define CFG_WKUP_ISR_PRIORITY (1)
static void prvTemplateTask( void *pvParameters )
{
OS_TICK_TIME xNextWakeTime;
static uint32_t test_counter=0;
uint32_t task_notify_val;
hw_gpio_configure_pin_power(HW_GPIO_PORT_1, HW_GPIO_PIN_7, HW_GPIO_POWER_V33);
hw_gpio_set_pin_function(HW_GPIO_PORT_1, HW_GPIO_PIN_7, HW_GPIO_MODE_INPUT_PULLUP, HW_GPIO_FUNC_GPIO);
hw_wkup_init(NULL);
hw_wkup_set_debounce_time(CFG_WKUP_DEBOUNCE_TIME);
hw_wkup_set_counter_threshold(CFG_WKUP_COUNTER_THR);
hw_wkup_register_interrupt(hw_extint_wkup_cb, CFG_WKUP_ISR_PRIORITY);
hw_wkup_set_pin_state(HW_GPIO_PORT_1, HW_GPIO_PIN_7, true);
hw_wkup_set_pin_trigger(HW_GPIO_PORT_1, HW_GPIO_PIN_7, HW_WKUP_PIN_STATE_LOW);
for ( ;; )
{
OS_TASK_NOTIFY_WAIT(task_h, OS_TASK_NOTIFY_ALL_BITS, &task_notify_val, OS_TASK_NOTIFY_FOREVER);
if (task_notify_val & (1 << 0))
{
test_counter++;
if (test_counter % 2) {
hw_gpio_set_active(HW_GPIO_PORT_1, HW_GPIO_PIN_5 );
}
else {
hw_gpio_set_inactive(HW_GPIO_PORT_1, HW_GPIO_PIN_5 );
}
}
}
}
静态孔隙hw_extint_wkup_cb(void)
{
hw_wkup_reset_interrupt ();
OS_TASK_NOTIFY_FROM_ISR(task_h, (1 << 0), OS_NOTIFY_SET_BITS);
}
附录:
根据Datasheet Revision 2.1 15-July-2016中P147所描述,
32.4 STATE RETENTION WHILE SLEEPING小节的内容,
在进入调试模式下,发现确实调用了sys_power_mgr.c中的apply_wfi函数中的如下部分:
if (dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A) {
hw_cpm_activate_pad_latches();
hw_cpm_power_down_periph_pd();
hw_cpm_wait_per_power_down();
}
Hi userYR,
Please refer to this post
https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl...
你好,我也遇到了一样的疑惑,请问您解决了吗?
你好,我也遇到了一样的疑惑,请问您解决了吗?
可以参考本论坛的另外一个类似帖子:https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl...