简述:
基于官方提供例程进行修改后测试,
在P1_7管脚上触发产生一个下降沿后,演示板上的D2会亮,
却发现当CPU完全进入休眠后,演示板上的D2也会熄灭。
理论上管脚会保持休眠前的状态,但是现在的实际情况是不对的。
以上效果是因为配置存在问题而导致的么,请指教。
详情:
使用UM-B-047-DA1468x获得Started_4_1中的第八章你的第一个DA1468x应用 - 的Blinky的例程,
并按照步骤成功添加了闪烁发光二极管D2的程序。
正是由于在实际开发中遇到了问题,
需要测试管脚在休眠后是否能够继续保持管脚状态,现做出如下修改:
如图1所示,设置休眠模式,如下所述:
pm_set_wakeup_mode(真);
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)
静态无效prvTemplateTask(void *的pvParameters)
{
OS_TICK_TIME xNextWakeTime;
静态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);
为(;;)
{
OS_TASK_NOTIFY_WAIT(task_h,OS_TASK_NOTIFY_ALL_BITS,&task_notify_val,OS_TASK_NOTIFY_FOREVER);
如果(task_notify_val&(1 << 0))
{
test_counter ++;
如果(test_counter%2){
hw_gpio_set_active(HW_GPIO_PORT_1,HW_GPIO_PIN_5);
}
否则{
hw_gpio_set_inactive(HW_GPIO_PORT_1,HW_GPIO_PIN_5);
}
}
}
}
静态无效hw_extint_wkup_cb(无效)
{
hw_wkup_reset_interrupt();
OS_TASK_NOTIFY_FROM_ISR(task_h,(1 << 0),OS_NOTIFY_SET_BITS);
}
附录:
根据数据表修订版2.1 15月-2016中P147所描述,
32.4状态保持在睡觉小节的内容,
在进入调试模式下,发现确实调用了sys_power_mgr.c中的apply_wfi函数中的如下部分:
如果(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();
}
嗨userYR,
请参考这个帖子
HTTPS://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl ...
你好,我也遇到了一样的疑惑,请问您解决了吗?
你好,我也遇到了一样的疑惑,请问您解决了吗?
可以参考本论坛的另外一个类似帖子:HTTPS://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl ...