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 и не выходит, то есть условие не срабатывает.