У меня есть 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 прекрасно работает без таймера, поэтому это не проблема для моего экрана.
Я новичок, поэтому будьте добры и внимательны! Спасибо