STM32 Переключение в корпусе - PullRequest
0 голосов
/ 16 марта 2020

Я встроил переключатель состояния в моем программном обеспечении C ++ на микроконтроллере STM32. В основном это работает так:

appRun(){
    switch(theState){
     case STATE_1:
      function1(&theState);
     break;
     case STATE_2:
      function2(&theState);
     break;
    }
}

Каждая функция может изменять состояние, если достигается определенное условие. Это работает отлично, пока 27-й случай не будет достигнут. Когда поражен 27-й корпус, микроконтроллер реагирует странно. При входе в режим STOP2 (когда процессор остановлен, но Ram сохраняется) контроллер не выходит из режима STOP2. Когда режим STOP2 закомментирован и заменен на

while(buttonNotPressed());

, проблема не возникает. Важным открытием стало то, что не имеет значения, какой код находится внутри корпуса 27-го коммутатора. Если оставить пустым, много кода или только одну строку, он всегда действует одинаково.

Это не проблема Fla sh Размер хранилища или использование ОЗУ, поскольку только 50% Fla sh и 10% оперативной памяти используется. Устройство debbuger не показывает никаких серьезных сбоев или других сообщений об ошибках во время работы.

...