-2

我正在我的 bl072z lora 板上测试低功耗模式,我调用低功耗模式功能,当我从这种状态唤醒时(在计时器设置为 20 秒后),LED 闪烁,一切正常,但如果我打印一条消息使用 PRINTF 代替闪烁导致知道板是否唤醒我从未进入低功耗模式,只是在终端中看到 PRINTF 消息,为什么我不能使用 PRINTF 和低功耗功能?

//does not works

while(1)
{

LPM_EnterLowPower( );
PRINTF("woke up\n\r");

}

//works

while(1)
{

LPM_EnterLowPower( );
BSP_LED_Toggle(LED_GREEN);

}

//works

while(1)
{

LPM_EnterLowPower( );
PRINTF("woke up\n\r");
HAL_Delay(500); //works with this delay but i don't know why

}

//low power function:
void LPM_EnterLowPower(void)
{
 HAL_PWR_EnterSTOPMode ( PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI );
}

我使用“唤醒”消息知道我是否退出睡眠模式,我调用低功耗功能,20 秒后我希望在终端中看到“唤醒”一次,然后再次进入睡眠并重复该过程,一切正常,但不能打印消息,在终端我只能看到(无限期):

woke up
woke up
woke up
woke up
4

1 回答 1

1

一旦PRINTF("woke up"\n\r);被调用,你就调用LPM_EnterLowPower();
在调用低功耗函数之前无法显示“woke up”消息,因为两者之间没有延迟,所以除非是第一次,否则永远不会进入低功耗模式。

于 2019-08-18T18:30:19.803 回答