Решено написать эту маленькую заметку, ибо уже несколько раз мне задавали вопрос, что это и зачем. Помню и сам не знал этого, хотя вполне себе мог писать простенькие программы.
Что такое указатели и как их готовить вы наверное уже в курсе, если нет, то быстренько объясню.
Указатель - это переменная, которая содержит в себе адрес другой переменной, на которую указывает. Если проводить грубую аналогию с файловой системой в Windows, то указатель - это ярлык, а файл на который он указывает - переменная, размышляя дальше можно сказать что функция - это программа на компьютере, а ярлык для запуска программы - указатель на функцию.
Объявляются указатели следующим образом:
uint16_t *pointer_ui16 = &variable;
void *pointer_Void
char *str = "Строка";
О полезности операционных систем реального времени можно говорить часами, ровно как и о их вреде. Но раз уж читаете эту запись, значит RTOS
вам действительно нужна.
Здесь не будет описания как пользоваться FreeRTOS
. Всё что будет затронуто - это запуск на микроконтроллере 1986ВЕ92У
(К1986ВЕ92QI
) фирмы Миландр. В принципе данный гайд аналогичен для 91, 93 и 94 чипа.
Если разобраться, и разложить всё по пунктам, то можно привести всю задачу к нескольким простым шагам:
- скачиваем
FreeRTOS
и распаковываем;
- создаем проект в
Keil
(я использую версию 5);
- подключаем операционную систему;
- настраиваем и пользуемся.
Данная статья носит характер небольшой заметки, а не учебного пособия.
Одной из особенностей микроконтроллеров Миландр серии 9х (точно знаю о 92, 93 с которыми работаю), на мой взгляд, это не совсем продуманная организации управления портами ввода вывода, а именно отсутствие привычных для пользователей stm32 регистров BRR и BSRR, которые позволяют атомарно устанавливать и сбрасывать их состояние. Соответственно необходимо выполнять команды чтение-модификация-запись, что в принципе приемлемо, но...
На этот раз рассмотрим подключение к микроконтроллеру STM32F205
(на остальных аналогично) энкодер.
Есть несколько вариантов считывания информации с энкодера. Но так как микроконтроллер у нас имеет таймеры работающие в режиме захвата и способные обрабатывать сигналы с энкодера, будем пользоваться именно ими.
Подключение выполним к выводам 6 и 7 порта A (это входы/выходы таймера TIM3
) вот по схеме на рисунке выше.
Широтно-импульсная модуляция (ШИМ, англ. pulse-width modulation (PWM)) — процесс управления мощностью, подводимой к нагрузке, путём изменения скважности импульсов, при постоянной частоте
В микроконтроллерах stm ШИМ можно генерировать несколькими способами. Один из них программный - подача нуля и единицы на логический вывод в нужное время, и аппаратный - используя один из таймеров контроллера.
В данной заметке рассмотрим второй способ.