ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1295613 Топик полностью
petrd (27.03.2023 13:28, просмотров: 250) ответил VladislavS. на Всё нормально будет
Все правильно, надо добавить volatile, при прямом обращении все нормально, а если в таком применении, то без volatile не работает. 

В заголовках все регистры определены как __IO uint32_t, а __IO дефайнится как volatile.

RV_STATIC_INLINE uint32_t delta(uint32_t t0, uint32_t t1)
{
  return (t1-t0);
}

void _delay_us(uint32_t us)
{
  uint32_t t0 = *(uint32_t*)(&TIM5->CNT);
  while (delta(t0, *(uint32_t*)(&TIM5->CNT)) < us);
}