В который раз о портах совмещенных с JTAG. STM32

Не работает PB3 на stm32f103? Тогда мы идём к вам. Расскажу как не наступить на эти грабли.

У меня была одна из заметок про подобную тему, но то был контроллер Миландр. На этот раз его собрат от компании STMicroelectronics - stm32f103rc. Необходимо было задетвовать ножки порта PB3, PB4 и PB5 - на них висит SPI1, с помощью которого планировалось управлять переферийной микросхемой.

Библиотека для работы с дисплеем 1602

Библиотека для работы с двухстрочным 16 символьным дисплеем.

Моя реализация библиотеки для дисплея 16х2 под управлением HD44780.

Описывать протокол и особенности управления, пайки и настройки не буду.

Краткие возможности:

  • управление отображением курсора;
  • вкл/выкл дисплея;
  • вывод текста в любое место;
  • поддержка специальных символов \n и \t;
  • вывод числа с преобразованием его в строку;
  • и др.

Подключаем энкодер с помощью таймера

Описание процесса работы с энкодером с помощью таймера в режиме захвата для микроконтроллеров STM32

Cover Image

На этот раз рассмотрим подключение к микроконтроллеру STM32F205 (на остальных аналогично) энкодер.

Есть несколько вариантов считывания информации с энкодера. Но так как микроконтроллер у нас имеет таймеры работающие в режиме захвата и способные обрабатывать сигналы с энкодера, будем пользоваться именно ими.

Подключение выполним к выводам 6 и 7 порта A (это входы/выходы таймера TIM3) вот по схеме на рисунке выше.

Настраиваем и генерируем ШИМ.

Генерируем ШИМ на микроконтроллере STM32F100 для полумостового преобразователя напряжения.

Cover Image
Широтно-импульсная модуляция (ШИМ, англ. pulse-width modulation (PWM)) — процесс управления мощностью, подводимой к нагрузке, путём изменения скважности импульсов, при постоянной частоте

В микроконтроллерах stm ШИМ можно генерировать несколькими способами. Один из них программный - подача нуля и единицы на логический вывод в нужное время, и аппаратный - используя один из таймеров контроллера.

В данной заметке рассмотрим второй способ.

Список команд ядра cortex-m3

Список команд ядра ARM Cortex-m3

Арифметические операции

**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

Защита прошивки от считывания.

Небольшой туториал по защите прошивки микроконтроллера stm32 от считывания

Cover Image

Для защиты прошивки можно применять несколько способов:

  • установка битов соответствующих регистров
  • и совсем варварский способ - оторвать ноги JTAG :)

Я предпочитаю исключительно первый способ.