Задать вопрос
@kriptonus

Почему сохраняется значение static переменной внутри функции после reset IWDG?

Добрый день,
STM32F030K6.
Есть некоторая функция, в которой объявлена cтатическая переменная bool. Функция отрабатывает и переводит МК в режим StandBy. После чего, через выдержку времени, контроллер сбрасывается по IWDG. Вроде бы, должен произойти сброс всех регистров и новая инициализация переменных, однако, этого не происходит. Значение переменной сохраняется после сброса в том состоянии, которое было до сброса. Пришлось принудительно устанавливать состояние флага.
int Servo_main()
{
	static bool flagStartResetted=false;
...
        if (false==IsConditionToPull()&&false==flagStartResetted) {
	      HAL_Delay(READY_TO_CLOSE_DELAY_MS);
	      if (false==IsConditionToPull()){
	      PrintMessage("Reset to close\n");
	      flagStartResetted = true;
	      }
         }
        if(true==IsConditionToPull()&&true==flagStartResetted) {
              flagStartResetted = false; /*без этого при пробуждении значение флага true, хотя true==IsConditionToPull()*/
	      PrintMessage("Condition to start pull\n");
...
     HAL_PWR_EnterSTANDBYMode();
}
  • Вопрос задан
  • 81 просмотр
Подписаться 1 Средний 4 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы