Pull to refresh

Comments 7

Очень бодро.

А с какой периферией это тестировалось? Гоняли ли именно этот код, из поста, в реальных условиях, долгосрочно?

Тестировалось с помощью "программ-заглушек", запущенных на ПК. Гонялся именно код из поста. Тестирование проводил на граничных значения и оставлял на ночь тестироваться.

Вот по STM32 не хватает мануалов подобно этому. Спасибо!

Извините, но статья похожа на сокращенный вариант вот этого туториала, там и примеры под разные платы. Мне кажется, что rtos тут немного лишняя, тяжёлая уж больно. Очереди я бы заменил на кольцевые буферы, например, реализация в LUFA позволяет одновременную запись и чтение, а обрабатывал принятое в бесконечном цикле через КА или фланговый автомат
Кстати, не подскажете, как можно реализовать на half без all или прямого обращения к регистрам? Не пойму, как разрешать прерывание по idle

Есть мнение что предложенное решение в статье далеко от оптимального.

функции osMessageQueuePut и osMessageQueueGet копируют данные из очереди в локальную память, а это копирование явно лишнее и очень расточительно по отношению к памяти. на вашем месте я бы воспользовался Memory Pool и передавал между тасками через очереди только указатели на области памяти, избегая копирования всего сообщения.

Блин опять этот богомерзкий куб

Не в обиду автору, но учится надо без этих библиотек, даже при условии что LL гораздо лучше сделан чем HAL и SPL, кучу нижнего белья пропускаете

Тем более выкинуть их суперулиту при обучении, в программировании она как ни странно пригождается быстро и без ошибок настроить тот же freertos

Спасибо за наводку с UART idle, пожалуй это самый оптимальный способ получения данных при заранее не известной длины сообщения. Построил приём в цикличном режиме dma, работает идеально👍

Sign up to leave a comment.

Articles