Всё-таки нашел время для изучения, и даже перевел на эту библиотеку текущий проект. Выявил несколько замечаний в коде бибилиотеки и немного модернизировал.
Если интересно, как запустить этот модуль, использовать и расширить функционал - заметка для вас.
По сути данная статья будет являть некоторой адаптацией официального мануала расположенного здесь (RTOS Stream Buffers )
Вот что пишут о них:
Потоковые буферы позволяют передавать поток байтов из подпрограммы обработки прерываний в задачу или из одной задачи в другую. Поток байтов может иметь произвольную длину и не обязательно иметь начало или конец. Любое количество байтов может быть записано за один раз, и любое количество байтов может быть прочитано за один раз. Данные передаются путем копирования - данные копируются в буфер отправителем и из буфера считываются.
В отличие от большинства других коммуникационных примитивов FreeRTOS, потоковые буферы оптимизированы для сценариев с одним устройством записи для одного читателя, таких как передача данных из подпрограммы обработки прерываний в задачу или из одного ядра микроконтроллера в другое на двухъядерном ЦП.
Не думаю, сто стоит рассказывать о функциях printf
и scanf
. Раз читаете эту заметку, то в курсе зачем они, знаете плюсы, и возможно минусы. Обсуждение и того и другого можно расписать на целую статью, я лишь хочу показать как их завести в прошивке для микроконтроллера.
Объектом испытания будет выступать микроконтроллер фирмы STMicroelectronics
STM32F205RGT6
. Почему не ванильный f103
? Всё просто, отладку с ним переделал под 205
чип, да и разрабатываемое устройство базируется на 205
чипе. Хотя это на самом деле и не важно, реализация полностью кросплатформенная.
Постановка задачи следующая: нужно принять по uart
некоторое количество пакетов, линия может быть зашумлена и в паузах могут появлятся фантомные байты (которые передатчик не передавал), отделить пакеты от мусора и выполнить какие-то действия, скорость соединения не большая, допустим 115200
.
Статья будет являться небольшой демонтрацией для работы с FreeRTOS
и тем кольцевым буфером, о котором я однажды писал. А uart
здесь каким боком? А таким, что данная заметка будет еще и небольшим туториалом для одного хорошего человека.
Погнали...