21ic问答首页 - stm32f0系列进入睡眠模式的困惑
stm32f0系列进入睡眠模式的困惑
百川入海2020-10-29
使用STM32F030F4P6做产品,现在是可以进入待机模式,使用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个标志位,一个是用来说明曾进入待机模式;另一个是曾被唤醒过,通过判断这个,认为设备进入过待机模式,那么就可以发送数据;若没进入过,那就先进入待机,不发数据。
这2个我都尝试了,没起作用,请大家指点。
现在想让产品初始上电后先进入休眠,然后在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个标志位,一个是用来说明曾进入待机模式;另一个是曾被唤醒过,通过判断这个,认为设备进入过待机模式,那么就可以发送数据;若没进入过,那就先进入待机,不发数据。
这2个我都尝试了,没起作用,请大家指点。
赞0
评论
2020-10-31
赞0
评论
2020-10-31
赞0
评论
2020-10-31
赞0
那个SBF 会被上下电复位清零【PORPDR,退出standby mode];
WBF会被系统复位清零,系统复位包括上下电复位。
你稍微整理确认下。
评论
2020-10-30
赞0
评论
2020-10-30
赞0
评论
2020-10-30
您需要登录后才可以回复 登录 | 注册