Реализация задержки с использованием таймеров в STM32 - PullRequest
0 голосов
/ 25 декабря 2018

Проще говоря, я хочу реализовать функцию задержки, используя таймеры stm32, как в микроконтроллерах AVR «Нормальный режим».Кто-нибудь может помочь?Я просто не могу найти это в таблице данных stm32!Он поддерживает только ШИМ, захват входа, сравнение выходов и выход в одноимпульсном режиме!NB: я забыл упомянуть, что я использую микроконтроллер stm32F401

1 Ответ

0 голосов
/ 26 декабря 2018

Для этого у вас есть специальный таймер, называемый SysTick.Установите переполнение каждые 1 мс.В его обработчике

static volatile uint32_t counter;

void SysTick_Handler(void)
{
    counter++;
}

inline uint32_t __attribute__((always_inline)) GetCounter(void)
{
    return counter;
}

void Dealy(uint32_t ms)
{
  uint32_t tickstart = GetCounter();

  while((GetCounter() - tickstart) < ms);
}
...