Постановка задачи следующая: нужно принять по uart
некоторое количество пакетов, линия может быть зашумлена и в паузах могут появлятся фантомные байты (которые передатчик не передавал), отделить пакеты от мусора и выполнить какие-то действия, скорость соединения не большая, допустим 115200
.
Статья будет являться небольшой демонтрацией для работы с FreeRTOS
и тем кольцевым буфером, о котором я однажды писал. А uart
здесь каким боком? А таким, что данная заметка будет еще и небольшим туториалом для одного хорошего человека.
Погнали...
Вы также часто пользуетесь кейлом как и я? Программируете микроконтроллеры компании Миландр? Вы хотите легко и просто подключить и использовать в своём проекте FreeRTOS? Тогда эта маленькая заметка для вас.
План действий:
- создаём проект;
- выбираем используемые пакеты;
- конфигурируем операционку;
- запускаем и пользуемся.
В стране во всю силу идёт импортозамещение, компания Миландр выпускает довольно неплохие контроллеры, правда отладочные платы стоят не дёшево, да и не хватает порой в них необходимого функционала, а иногда он слишком большой. Но выход есть - изготовление своей отладки.
О полезности операционных систем реального времени можно говорить часами, ровно как и о их вреде. Но раз уж читаете эту запись, значит RTOS
вам действительно нужна.
Здесь не будет описания как пользоваться FreeRTOS
. Всё что будет затронуто - это запуск на микроконтроллере 1986ВЕ92У
(К1986ВЕ92QI
) фирмы Миландр. В принципе данный гайд аналогичен для 91, 93 и 94 чипа.
Если разобраться, и разложить всё по пунктам, то можно привести всю задачу к нескольким простым шагам:
- скачиваем
FreeRTOS
и распаковываем;
- создаем проект в
Keil
(я использую версию 5);
- подключаем операционную систему;
- настраиваем и пользуемся.
Данная статья носит характер небольшой заметки, а не учебного пособия.
Одной из особенностей микроконтроллеров Миландр серии 9х (точно знаю о 92, 93 с которыми работаю), на мой взгляд, это не совсем продуманная организации управления портами ввода вывода, а именно отсутствие привычных для пользователей stm32 регистров BRR и BSRR, которые позволяют атомарно устанавливать и сбрасывать их состояние. Соответственно необходимо выполнять команды чтение-модификация-запись, что в принципе приемлемо, но...