STM32 неправильно работает логическое выражение

STM32 контроллер болтается в функции HAL_Delay();

Переопределил функцию с использованием отдельного таймера Сначала проверка была вида while (HAL_DELAY_COUNTER){} переделал на if HAL_DELAY_COUNTER. Такой код исправно досчитывает до 0 и продолжает висеть - как будто условие не выполнено. Оптимизация отключена, HAL_DELAY_COUNTER имеет модификатор volatile

void HAL_Delay(uint32_t Delay)
{
    HAL_DELAY_COUNTER = Delay;
    HAL_TIM_Base_Start_IT(&htim4);
    HAL_DELAY_TASK:
    if (HAL_DELAY_COUNTER > 0){ goto HAL_DELAY_TASK; }
}

Что может быть причиной такого поведения. Контроллер stm32h750, но я это уже где то видел, возможно не смог понять как прошло. Попробовал сделать условие if (HAL_DELAY_COUNTER > 1) считает до 0 и не выходит, то есть условие не срабатывает.


Ответы (0 шт):