Например TDA7294

Форум РадиоКот :: Просмотр темы - Stm32 freeRTOS Hal_delay + ошибки во времени
Форум РадиоКот
https://radiokot.ru/forum/

Stm32 freeRTOS Hal_delay + ошибки во времени
https://radiokot.ru/forum/viewtopic.php?f=59&t=188727
Страница 1 из 1

Автор:  Cheeseman [ Ср июн 14, 2023 13:30:50 ]
Заголовок сообщения:  Stm32 freeRTOS Hal_delay + ошибки во времени

Всем привет, сел делать проект на stm32h743. Шаблон проекта сгенерил кубом. В кубе включил только RTOS и тактирование. Создал простенькую задачу мигания светодиодом с частотой 2Гц. В итоге светодиод горит дольше, чем нужно (1.240с. против 0.5с.). Также бонусом получил такую фигню, что Hal_delay до запуска шедулера не работает. Гугл говорит тип до запуска шедулера заблокированы все прерывания, а hal delay необходимо прерывание, которое возникает для инкремента тика. Но задержки мне будут нужны для инициализации. В прошлом проекте как-то решил сей вопрос, в этом завис. В чем может быть проблема?

Добавлено after 2 hours 45 minutes 30 seconds:
Все, разобрался, на макетке кварца не было -_-. Отсюда все пошло.

Автор:  tonyk [ Чт июн 15, 2023 06:28:48 ]
Заголовок сообщения:  Re: Stm32 freeRTOS Hal_delay + ошибки во времени

Cheeseman писал(а):
Но задержки мне будут нужны для инициализации.

А Куб перед компиляцией натыканной в нём конфигурации вообще-то предупреждает, что не хорошо использовать для тиков SysClock или предлагает задействовать какой-нибудь другой таймер. И даже предупреждает, что использовать некоторые его функции в случае использования систика не получится.

Думайте сами, пишите сами, а то уже даже предупреждения Куба не в состоянии прочитать и понять.

Автор:  Cheeseman [ Чт июн 15, 2023 10:49:00 ]
Заголовок сообщения:  Re: Stm32 freeRTOS Hal_delay + ошибки во времени

Хм, а кто-то говорил, что я sysClock использую? Как бы предупреждение это видел. Непонятно, откуда вы эту инфу взяли.

Автор:  tonyk [ Пт июн 16, 2023 06:21:56 ]
Заголовок сообщения:  Re: Stm32 freeRTOS Hal_delay + ошибки во времени

Cheeseman писал(а):
Непонятно, откуда вы эту инфу взяли.

Оттуда, что HAL_delay() не работает.

Настройка и запуск таймера, чей обработчик инкрементирует счётчик для HAL_delay(), должна быть _до_ первого вызова функций HAL. Нужно просто найти строки с настройками и перенести их в нужное место. И всех делов-то.

Кстати, после настройки периферии, драйверам которой нужен этот HAL_delay(), можно переключить работу с этим счётчика на RTOS, а таймер освободить для более полезных дел. Для этого нужно дописать пару строк в ядро RTOS.

Я ХАЛ не использую, но в паре проектов использовал драйвер USB из ХАЛ, а он без этих задержек не настраивается, поэтому пришлось делать такой финт, чтобы раз в миллисекунду вызывать HAL_IncTick().

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/