STM32F030F4P6的待机唤醒应用问题

hello_mcu 2020-05-26 05:41:54
使用STM32F030F4P6芯片做了一个传感器,使用LORA无线方式将传感器采集的数据发送出去。考虑到功耗,使用了Standby待机模式。
现在是可以进入待机模式,使用RTC唤醒,数据也能发送出来。
现在想让整个传感器初始上电后先进入休眠,然后在RTC唤醒后,再发送数据;但是现在只要上电就直接发送数据,然后才进入休眠。
通过查看PWR->CSR寄存器,看到RM手册中说SBF和WUF位是可以用来判断是否从待机模式中醒来的,但是程序这么做了不起作用,还是上电就发送数据。
请各位大佬给看看可能因为什么导致的。
int main(void)
{
/* MCU Configuration--------------------------------------------------------*/

HAL_Init();


/* Configure the system clock */

SystemClock_Config();

MX_GPIO_Init();

MX_RTC_Init();

RTC_AlarmConfig();
/* USER CODE BEGIN SysInit */

if (__HAL_PWR_GET_FLAG(PWR_FLAG_SB) != RESET ) //在此判断SBF标志位,若为1,则表明是被唤醒过
//if(__HAL_PWR_GET_FLAG(PWR_FLAG_WU)!= RESET)
{
__HAL_RCC_GPIOA_CLK_ENABLE();
MX_SPI1_Init();
Lora_init();
//HAL_Delay(10000);
Read_Ds18b20();
Lora_SendTemp1();
}
__HAL_RCC_PWR_CLK_ENABLE();

if (__HAL_PWR_GET_FLAG(PWR_FLAG_SB) != RESET)
{
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB);
}

HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1);

if (__HAL_PWR_GET_FLAG(PWR_FLAG_WU) != RESET)
HAL_PWR_EnterSTANDBYMode();
while (1)
{


}
}

图片中红框部分,我看字面翻译就是说这2个标志位,一个是用来说明曾进入待机模式;另一个是曾被唤醒过,通过判断这个,认为设备进入过待机模式,那么就可以发送数据;若没进入过,那就先进入待机,不发数据。
...全文
488 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
woshi_ziyu 2020-05-29
  • 打赏
  • 举报
回复
可以自己加个标志位,表示刚上电,还未发数
子弹飞舞 2020-05-27
  • 打赏
  • 举报
回复
怎么没人回复呢

27,373

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧