Долго разбирался, отчего перестают срабатывать прерывания таймеров. Могли работать какое-то время, а потом все. Отваливался и Systick, и все остальные - Tim2, 3, 6 разом. Другие прерывания при этом продолжали работать. Проверял конфигурацию Systick - счетчик декрементируется, прерывание разрешено.
Оказалось, в одной из веток кода в обработчике Tim2 стояла задержка 10мс (работающая по Systick), что больше периода срабатывания этого таймера. Я хорошо знаю заповедь о минимизации времени работы в прерываниях, но думал что если к очередному срабатыванию не выйти из обработчика, максимум что потеряешь - это очередной вызов обработчика. Почему же прекращают вызываться все обработчики таймеров?
мк ST32L151
|