如果使用复位引脚运行它,则可以使用“__HAL_RCC_GET_FLAG()”函数
您可以看到设置了“RCC_FLAG_PINRST”。
然而,当使用“HAL_NVIC_SystemReset()”执行时,“RCC_FLAG_SFTRST”和“RCC_FLAG_PINRST”被设置。
我的期望是只应设置“RCC_FLAG_SFTRST”。
是什么原因?
而“__HAL_RCC_GET_FLAG(RCC_FLAG_LPWRRST)”根本不起作用。
//我的代码
无效主要()
{
如果(真== __HAL_PWR_GET_FLAG(PWR_FLAG_WUF2))
{
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WUF2);
debug("唤醒引脚 2rn");
}
如果(真== __HAL_PWR_GET_FLAG(PWR_FLAG_SB))
{
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB);
debug("待机rn");
}
如果(真== __HAL_PWR_GET_FLAG(PWR_FLAG_WUF))
{
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WUF);
debug("所有唤醒引脚rn");
}
如果(真== __HAL_RCC_GET_FLAG(RCC_FLAG_PWRRST))
debug("上电复位rn");
如果(真== __HAL_RCC_GET_FLAG(RCC_FLAG_PINRST))
调试(“密码重置rn”);
如果(真== __HAL_RCC_GET_FLAG(RCC_FLAG_SFTRST))
debug("软件重置rn");
如果(真== __HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST))
debug("看门狗复位rn");
如果(真== __HAL_RCC_GET_FLAG(RCC_FLAG_LPWRRST))
调试(“低功耗复位rn”);
__HAL_RCC_CLEAR_RESET_FLAGS();
而(1)
{
如果(GPIO_PIN_RESET == HAL_GPIO_ReadPin(BTN1_GPIO_Port,BTN1_Pin))
{
HAL_NVIC_SystemReset();
}
如果(GPIO_PIN_RESET == HAL_GPIO_ReadPin(BTN2_GPIO_Port,BTN2_Pin))
{
HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN2_HIGH);
HAL_RTCEx_SetWakeUp
timer_IT(&hrtc, 9, RTC_WAKEUPCLOCK_CK_SPRE_16BITS);
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WUF2|PWR_FLAG_SB);
HAL_PWR_EnterSTANDBYMode();
}
}
}
0