前提概要:需要使用stm32的RTC备份寄存器BKP,利用的是RTC的BKP寄存器在待机模式下依旧保存寄存器内的数据的特性(此外,需要提前了解如何进入待机模式/开启RTC的备份寄存器BKP/开启独立看门狗模式)
思路图:
![](https://img-blog.csdnimg.cn/direct/fc9354c7ec524f9f9bcac0f17b3ada2a.png)
相关操作如下(需了解图中注释):
![](https://img-blog.csdnimg.cn/direct/46062f6ccac44e05a6d88669bb7e7a22.png)
宏定义:
//存放RTC的BKP寄存器的待机模式标志位与独立看门狗标志位
#define IWDG_RESET 0X55
#define STANDBY_RESET 0XAA
相关函数:
//开启看门狗
void IWDG_Open(void)
{
MX_IWDG_Init();
}
//系统复位
void Reset_soft(void)
{
__disable_irq();
HAL_NVIC_SystemReset();
__enable_irq();
}
//进入待机模式
void Reset_Go_StandBy(void)
{
HAL_GPIO_WritePin(KEY1_GPIO_Port,KEY1_Pin, GPIO_PIN_RESET);//PB0端口变低电平,准备好唤醒键初始电平
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);//清除 WKUP唤醒键