你好,
简短描述:
根据修改测试的正式报价常规,
当P1_7引脚触发下降边缘后,演示板上的D2将会打开,
发现当cpu完全进入睡眠状态时,演示板D2会出去。
理论上引脚会保持休眠前的状态,但现在实际情况是错误的。
以上效果是由于配置问题造成的,请指正。
细节:
使用例程第八章您的第一个DA1468x应用程序- Blinky在UM-B-047-DA1468x Getting Started_4_1,
并按以下步骤成功添加LED闪烁D2程序。
需要测试的引脚在extended_sleep中可以继续保持引脚的状态,现在做以下更改:
1、设置休眠模式,如下所示:
pm_set_wakeup_mode(真正的);
pm_set_sleep_mode (pm_mode_extended_sleep);
2、检测外部中断,这里检测P1_7的下降沿会唤醒设备,如下:
#定义CFG_WKUP_DEBOUNCE_TIME (32)
#定义CFG_WKUP_COUNTER_THR (1)
#定义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(空);
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);
If (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 (void)
{
hw_wkup_reset_interrupt ();
OS_TASK_NOTIFY_FROM_ISR (task_h, (1 << 0), OS_NOTIFY_SET_BITS);
}
附录:
根据P147 in data Revision 2.1 15-July-2016,
章节内容休眠时的状态保留,
进入调试模式后,你会发现在下面一节中确实调用了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 ();
}
嗨useYR,
68x有能力在设备处于睡眠模式时保持引脚状态,但当唤醒(使用BLE启用固件)配置引脚的函数重新运行,所以引脚将默认为在peri_init()函数中指示的状态,因此,我们必须实现逻辑,在休眠前“记住”pin的状态,并根据休眠前的状态在peri_init()中配置它。在你的情况下,领导应该不到8秒(这是最大的时间,设备可以在睡眠)后,将去睡觉,醒来只会初始化针没有恢复的状态销由于没有代码periph_init()来指示。
由于MT_dialog
嗨MT_dialog,
谢谢你的帮助!
应用您提供的方法,通过为使用的引脚重新配置GPIO函数,在外围init()中。
当MPU处于睡眠状态时,引脚状态可以保持。
在我们的项目中,我们希望保留外设和gpio的所有设置,一旦它们被制作,而不是在每次MCU唤醒时的外围init()中。
这样,我们相信可以节省相当多的电池电量,因为我们的项目是关于一个可穿戴设备,电池是一个关键的问题。
所以能否提供一个有这个功能的SDK给我们?
嗨userYR,
请查看你的其他帖子https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl..。.
由于MT_dialog