Статья ориентирована на одного моего товарища, вполне перспективного программиста, надеюсь она ему поможет. Если вы не он, закройте страницу тоже можете читать.
Основные вопросы этой заметки:
- как начать разрабатывать ПО для
stm32
в Keil
;
- что для этого необходимо.
Начать необходимо со второго вопроса. Необходимый минимум это среда программирования (Keil
), программатор и отладочная плата. Можно конечно и в симуляторе запускать программу, но это не так инетресно, так что плата и программатор нужны. Где брать писать не буду, не моя это забота.
У меня была одна из заметок про подобную тему, но то был контроллер Миландр. На этот раз его собрат от компании STMicroelectronics - stm32f103rc
. Необходимо было задетвовать ножки порта PB3
, PB4
и PB5
- на них висит SPI1
, с помощью которого планировалось управлять переферийной микросхемой.
Моя реализация библиотеки для дисплея 16х2
под управлением HD44780
.
Описывать протокол и особенности управления, пайки и настройки не буду.
Краткие возможности:
- управление отображением курсора;
- вкл/выкл дисплея;
- вывод текста в любое место;
- поддержка специальных символов
\n
и \t
;
- вывод числа с преобразованием его в строку;
- и др.
На этот раз рассмотрим подключение к микроконтроллеру STM32F205
(на остальных аналогично) энкодер.
Есть несколько вариантов считывания информации с энкодера. Но так как микроконтроллер у нас имеет таймеры работающие в режиме захвата и способные обрабатывать сигналы с энкодера, будем пользоваться именно ими.
Подключение выполним к выводам 6 и 7 порта A (это входы/выходы таймера TIM3
) вот по схеме на рисунке выше.
Широтно-импульсная модуляция (ШИМ, англ. pulse-width modulation (PWM)) — процесс управления мощностью, подводимой к нагрузке, путём изменения скважности импульсов, при постоянной частоте
В микроконтроллерах stm ШИМ можно генерировать несколькими способами. Один из них программный - подача нуля и единицы на логический вывод в нужное время, и аппаратный - используя один из таймеров контроллера.
В данной заметке рассмотрим второй способ.
Арифметические операции
Операция |
Пример |
Описание |
|
|
ADD |
ADD R0, R1, Operand2 ADD R0, R1, 12bit const. |
Сложение R0 = R1 + R2 |
N, Z, C, V |
S |
ADC |
ADC R0, R1, R2 ADC R0, R1, 8bit const |
Сложение с учётом переноса R0 = R1 + R2 + C |
N, Z, C, V |
S |
ADDW |
ADD R0, R1, 12bit const. |
Сложение с 12bit константой |
N, Z, C, V |
|
SUB |
SUB R0, R1, R2 SUB R0, R1, 12bit const. |
Вычитание R0 = R1 - R2 |
N, Z, C, V |
S |
SBC |
SBC R0, R1, R2 SBC R0, R1, 8bit const. |
Вычитание с учётом переноса R0 = R1 - R2 - C |
N, Z, C, V |
S |
SUBW |
SUB R0, R1, 12bit const. |
Вычитание с 12bit константой |
N, Z, C, V |
|
RSB |
RSB R0, R1, R2 RSB R0, R1, 8bit const. RSB R0, R1, R2, ASR#23 |
Вычитание с противоположным порядком аргументов. R0 = R2 - R1 или R0 = 8bit const - R1 |
N, Z, C, V |
S |