Mientras estaba leyendo los controladores HAL de STM32 para los temporizadores, encontré esta macro:
#define __HAL_TIM_DISABLE(__HANDLE__) \
do { \
if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0U) \
{ \
(__HANDLE__)->Instance->CR1 &= ~(TIM_CR1_CEN); \
} \
} while(0)
Como la parte while siempre es incorrecta, básicamente no debería haber ningún bucle, y el do-while me parece redundante. Pero ya que lo distribuyen en la HAL de esta manera, ¿supongo que hay algún punto? ¿Alguien puede señalar cuál?