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