Добрый вечер.
Пытаюсь написать таймер для конечных автоматов и вот какая странность.
Настроил таймер на 1мс.
Прерывание от таймера простейшее:
Код:
extern uint32_t blinkMS;
void TIM14_IRQHandler(void)
{
HAL_TIM_IRQHandler(&htim14);
if( blinkMS > 0 )
blinkMS--;
}
Первый вариант мигалки, он работает:
Родил такое от безысходности, в приступе вдохновения
А вот второй, по смыслу такой же, не пашет. TogglePin вызывается только один раз и все, больше туда не заходит.
Зато, если его немного переиначить и сделать так:
То он начинает мигать, но очень хаотично, импульсы нестабильны и отличаются по длине в 1.5-2 раза.
Вопрос: что за фигня творится и как это победить?!
Фото первой и третьей мигалок прилагаю:

P.S. Вариант с запретом/разрешением прерывания ничего не менят.