Вступить в клуб →
сложнаявопросПрошивка: память, загрузчик и надёжность

Счётчик аварийных перезагрузок всегда показывает ноль

Чтобы собирать статистику сбоев без записи во flash, завели глобальную переменную:

uint32_t crash_count;

void HardFault_Handler(void) {
    crash_count++;
    NVIC_SystemReset();
}

Питание не пропадает, RAM при программном сбросе физически сохраняется. Но после каждой перезагрузки crash_count равен нулю. Почему и как исправить?

  • Startup обнуляет .bss; нужна секция без инициализации
  • NVIC_SystemReset физически стирает всю RAM
  • Переменной не хватает квалификатора volatile
  • В HardFault запрещено изменять глобальные данные

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела