Как измерить время, прошедшее с помощью STM32, используя STAL HAL (STM32F4) - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть STM32F407ZG, и я использую TIM3 для измерения времени, которое потребовалось моему TFT_Draw для поддержания постоянной скорости рефреса 60fps sh.

мой прескалер установлен на 3000, а внутренние часы 168 МГц, мой APB2 оказался 84 МГц. Если я прав, каждый тик равен 1000/28000 миллисекундам. Я использую CubeMX для генерации файла инициализации, поэтому единственный код, который у меня есть:

uint16_t elapsed, lastElapse;
HAL_TIM_Base_Start(&htim3);

  while (1)

  {
    /* USER CODE END WHILE */

/* USER CODE BEGIN 3 */

        for(i = 0; i < 200; i++) {
            lastElapse = __HAL_TIM_GET_COUNTER(&htim3);
            TFT_DrawFillRect(10,10,300+i,50, Purple);
            TFT_DrawFillRect(10,10,300+i,50, White);
            elapsed = __HAL_TIM_GET_COUNTER(&htim3);
            while((elapsed - lastElapse) < 460) {
                elapsed = __HAL_TIM_GET_COUNTER(&htim3);
            }
        }

Her, Фиолетовый - мой цвет фона, я пытаюсь сделать простую анимацию, чтобы увидеть, работает ли она и абсолютно ли она c. Между тем, если я изменю время с меньшего, чем на большее, чем экран, обновляется случайным образом (без каких-либо временных ограничений)

Библиотека TFT прекрасно работает без таймера, поэтому это не проблема для моего экрана.

Я новичок, поэтому будьте добры и внимательны! Спасибо

...