| Форум РадиоКот 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/ |
|


