Программирование микроконтроллеров
STM32
Аннотация
В книге рассмотрено программирование микроконтроллера STM32 компании STMicroelectronics (www.st.com). Книга состоит из 4 глав.
В главе 1 рассмотрены программные и аппаратные средства, используемые для программирования и последующего тестирования микроконтроллеров STM32. Описывается среда программирования STM32CubeIDE, предназначенная для создания программного кода, и библиотека HAL, предназначенная для взаимодействия программного кода с аппаратным обеспечением. Приводится обзор отладочных плат, используемых для тестирования программ.
В главе 2 рассмотрено использование программного пакета Proteus для моделирования работы созданных программ.
Глава 3 полностью посвящена детальному разбору учебного проекта “Сигнал SOS”. Рассмотрены следующие стадии создания проекта: запуск среды программирования, настройка периферийных устройств, создание кода программы, графическое отображение сигнала, отображение буквенной информации, визуализация графика сигнала в STM32CubeMonitor.
В главе 4 рассмотрены примеры программирования STM32, которые включают в себя создание программы и её тестирование на отладочной плате NUCLEO-F411RE. Загрузка программы в микроконтроллер осуществляется с помощью программатора ST-LINK/V2, встроенного в отладочную плату.
Каждая глава заканчивается контрольными вопросами и заданиями.
Оглавление
Введение _ 4
Глава 1. Программные и аппаратные средства программирования микроконтроллеров STM32 _ 14
1.1. Архитектура микроконтроллера STM32 _ 14
1.2. Среда разработки STM32CubeIDE _ 18
1.2.1. Общие сведения _ 18
1.2.2. Информационный центр _ 21
1.2.3. Концепция Perspective в STM32CubeIDE _ 22
1.2.4. Настройки конфигурации STM32CubeIDE _ 25
1.2.5. Рабочие пространства и проекты _ 26
1.3. Функции библиотеки HAL для работы с портами ввода-вывода _ 28
1.4. Отладочные платы для микроконтроллеров STM32 _ 35
1.5. Создание проекта в STM32CubeIDE и моделирование его работы на отладочной плате _ 41
Контрольные вопросы и задания _ 56
Глава 2. Моделирование электрических схем с микроконтроллерами STM32 в Proteus _ 58
2.1. Комплект программ Proteus Design Suite _ 58
2.2. Создание проекта в STM32CubeIDE и моделирование его работы в Proteus _ 65
2.3. Примеры программирования STM32 с моделированием в Proteus _ 78
2.3.1. Подключение к STM32 семисегментного индикатора _ 78
2.3.2. Подключение кнопки _ 84
Контрольные вопросы и задания _ 86
Глава 3. Учебный проект “Сигнал SOS”, пошаговая реализация _ 89
3.1. Формирование проекта в STM32CubeIDE _ 89
3.2. Настройка периферийных устройств _ 92
3.3. Создание кода программы _ 96
3.4. Графическое отображение сигнала SOS при моделировании _ 97
3.5. Отображение буквенной информации _ 104
3.6. Визуализация графика сигнала в STM32CubeMonitor _ 105
Контрольные вопросы и задания _ 116
Глава 4. Примеры программирования микроконтроллера STM32 _ 117
4.1. Передача и прием данных через UART/USART _ 117
4.1.1. Передача данных из микроконтроллера в компьютер _ 117
4.1.2. Передача данных из компьютера в микроконтроллер _ 125
4.2. Таймеры _ 129
4.3. Широтно-импульсная модуляция (ШИМ) _ 138
4.4. Аналого-цифровое преобразование (АЦП) _ 145
4.4.1. Подключение к STM32 потенциометра _ 145
4.4.2. Подключение к STM32 термистора _ 155
4.4.3. Подключение к STM32 датчика освещенности _ 159
4.4.4. Подключение к STM32 температурного датчика LM35 _ 163
Контрольные вопросы и задания _ 169
Приложения _ 171
Приложение 1. Таблица ASCII _ 171
Приложение 2. Список сокращений _ 172
Приложение 3. Расшифровка терминов _ 174
Литература _ 185
Введение
Микроконтроллеры STM32 разрабатывает и производит компания STMicroelectronics (www.st.com). Компания STMicroelectronics (ST) была создана в 1987 году при слиянии двух микроэлектронных компаний: итальянской Società Generale Semiconduttori (SGS) Microelettronica и французской Thomson Semiconducteurs. Штаб-квартира компании находится в Женеве. STMicroelectronics имеет всемирную сеть дизайн центров и заводов: микросхемы разрабатываются в странах Европы, в США, Индии, северных странах Африки. Производство кристаллов осуществляется в Италии, Франции, Сингапуре. Тестирование и доводка микроконтроллеров до товарных образцов производится в Китае, Малайзии, Мальте, Марокко. В настоящее время компания STMicroelectronics является ведущим поставщиком электроники в Европе.
Микроконтроллеры STM32 основаны на 32-битных ядрах архитектуры ARM (Advanced RISC Machine) с сокращённым набором команд: Cortex-M0, Cortex-M0+, Cortex-M3, Cortex-M4, Cortex-M7 и др. STMicroelectronics имеет лицензию на процессорные ядра ARM от компании-разработчика процессорных ядер – ARM Holdings. Компания ST добавляет к процессорному ядру память и различные периферийные устройства и создает собственную окончательную конфигурацию микроконтроллера, выполненную в виде единого кристалла, поэтому микроконтроллеры иногда называют однокристальными ЭВМ. Распространенными периферийными устройствами, входящими в состав микроконтроллера, являются интерфейсы USB 2.0 OTG, CAN, SPI, I2C, UART/USART, 16-разрядные и 32-разрядные таймеры, аналого-цифровые преобразователи (АЦП), цифро-аналоговые преобразователи (ЦАП) и др.
Семейство микроконтроллеров STM32 состоит из четырех групп:
– High Performance (высокопроизводительные),
– Mainstream (широкого применения),
– Ultra-low power (сверхнизкого потребления),
– Wireless (беспроводные).
![](https://simpleprogramming.ru/wp-content/uploads/2024/01/ris_1-289x300.png)
Обозначение микроконтроллеров STM32. Серии микроконтроллеров, входящие в одну группу, основаны, преимущественно, на едином процессорном ядре ARM Cortex-M. В таблице 1 указаны серии микроконтроллеров и соответствующие им ядра ARM Cortex-M.
Рассмотрим, что означают буквы и цифры в названии микроконтроллера на примере микроконтроллера M32F103CBT6:
– STM32 – семейство 32-разрядных микроконтроллеров STM;
– F1 – указывает на принадлежность к группе (F1 – группа микроконтроллеров широкого применения);
– 03 – подгруппа в группе F1;
– C – указывает на число выводов;
– B – указывает на объем Flash памяти;
– T – указывает на тип корпуса;
– 6 – указывает на температурный диапазон применения.
Принадлежность микроконтроллеров к определенной группе указана в таблице 2.
Расшифровка обозначений числа выводов микроконтроллера приведена в таблице 3.
Расшифровка обозначений размера Flash памяти приведена в таблице 4:Расшифровка обозначений типа корпуса приведена в таблице 5:
Корпуса микроконтроллеров отличаются большим разнообразием и не исчерпываются вариантами, указанными в таблице 5. Тип корпуса зависит от материала корпуса, расположения контактов, количества контактов, расстояния между контактами, варианта монтажа на плату. Внешний вид некоторых типов корпусов представлен на рис. 2
![](https://simpleprogramming.ru/wp-content/uploads/2024/01/ris_7-300x187.png)
Обозначения температурного диапазона применения микроконтроллеров:
6 – от -40 до +85ºC
7 – от -40 до +105ºC
Глава 1. Программные и аппаратные средства программирования микроконтроллеров STM32
1.1. Архитектура микроконтроллера STM32
Внутренне каждый микроконтроллер STM32 состоит из ядра ARM Cortex-M, статической оперативной памяти, Flash-памяти и различных периферийных устройств.
– Ядро ARM Cortex-M состоит из центрального процессора (CPU) и дополнительных модулей. Систему команд и архитектуру для ядер ARM Cortex-M, как отмечалось ранее, разрабатывает компания ARM Holdings, которая однако не производит и не продает процессорные устройства, а только лицензирует архитектуру процессора для производителей микроконтроллеров. Поэтому ядро Cortex-M считается интеллектуальной собственностью ARM Holdings. Существует множество компаний, которые разрабатывают, производят и продают микроконтроллеры на базе архитектуры ARM Cortex-M. Компания STMicroelectronics является одной из них, и в настоящее время – это единственный производитель, продающий полный ассортимент микроконтроллеров на базе ARM Cortex-M.
– Flash-память — тип электрически перепрограммируемой памяти EEPROM (Electrically Erasable Programmable Read-Only Memory). Эта память является энергонезависимой и сохраняет данные после отключения питания.
– Периферийные устройства — аппаратные узлы микроконтроллера, через которые процессор управляет внешними устройствами, подключенными к микроконтроллеру. Это порты ввода-вывода, аналого-цифровые преобразователи (АЦП и ЦАП), ШИМ-генераторы, таймеры/счётчики, интерфейсы USB, CAN, SPI, I2C, UART/USART и др.
Отдельные блоки микроконтроллера объединяются в единую систему с помощью шинной архитектуры, которая, например, для микроконтроллера модели STM32F0 имеет вид, показанный на рис. 1.1. (Показана упрощенная “крупноузловая” схема [1]).
![](https://simpleprogramming.ru/wp-content/uploads/2024/01/ris_8-300x198.png)
– Шина DMA соединяет контроллер DMA с шинной матрицей.
– Продвинутые высокопроизводительные шины AHB1 и AHB2 (Advanced High-performance Bus) обеспечивают доступ портов ввода/вывода и периферийных устройств к шинной матрице.
– Шинная матрица (BusMatrix) объединяет две ведущие шины (системную шину и шину DMA) и четыре ведомые: интерфейс Flash-памяти, SRAM, шина AHB2, шина AHB1 с мостом AHB-APB (APB – Advanced Peripheral Bus). Шинная матрица управляет доступом устройств памяти и периферийных устройств к ядру и контроллеру DMA. Управление (арбитраж) производится по алгоритму циклического перебора Round Robin.
![](https://simpleprogramming.ru/wp-content/uploads/2024/01/ris_9-219x300.png)
Примечание. Для макетирования в данной книге будет использоваться отладочная плата NUCLEO-F411RE, поэтому в дальнейшем будем часто ссылаться на эту плату и на одноименный микроконтроллер этой платы – STM32F411RE.
Из рис. 1.2 можно видеть, что для STM32F411RE существуют три основные шины: AHB, APB1, APB2. Для каждой шины (выделено овалами) указана максимальная частота. Периферийные устройства получают тактовый сигнал от шины, ее частота задает скорость работы подключенных к данной шине устройств. Частоту работы шины можно настраивать. После сигнала сброса микроконтроллера вся периферия находится в отключенном состоянии и на нее не подается тактовый сигнал. Это сделано с целью снижения энергопотребления всего микроконтроллера. Перед началом работы с любым периферийным устройством необходимо разрешить подачу на него тактового сигнала.
В микроконтроллерах STM32 присутствует несколько генераторов тактового сигнала:
– High-speed internal (HSI) RC oscillator. Это RC-генератор на 8 МГц. По умолчанию микроконтроллер тактируется от этого генератора. Его минус — плохая стабильность генерируемой частоты.
– High-speed external (HSE). Этот генератор является альтернативой HSI. Для его работы нужен внешний кварцевый резонатор на частоту 4-16 МГц. Его главным преимуществом в сравнении с HSI является стабильность генерируемой частоты. В отладочной плате NUCLEO_F411RE тактовая частота подается на микроконтроллер от внешнего кварцевого резонатора частотой 8 МГц, размещенного на программаторе.
– Low-speed external (LSE). Этот генератор требует внешнего кварцевого резонатора на 32768 Гц. LSE используется только для тактирования встроенных часов реального времени RTC, с помощью которых можно вести отсчет текущего времени.
– Low-speed internal (LSI) RC oscillator. Это встроенный RC-генератор на 40 КГц. Он не отличается особой точностью и используется для сторожевого таймера, который перезапускает систему в случае её зависания.
Частота, полученная от генераторов тактового сигнала, преобразуется (уменьшается или увеличивается) с помощью делителей (Prescaler) и умножителей частоты PLL (Phase-Locked Loop – генератор со схемой подстройки частоты).
При ручной настройке частоты выполняем следующие действия:
– Определяемся с каким генератором будем работать (HSI или HSE) и с какой частотой.
– Если HSE, то выбираем внешний кварц.
– Определяем каким путем пойдет тактовый сигнал, через какие мультиплексоры/делители/умножители.
– По блок-диаграмме из даташита определяем, к какой шине подключено периферийное устройство и, следовательно, какая частота будет на периферийном устройстве.
В среде разработки STM32CubeIDE настройка частоты осуществляется на вкладке Clock Configuration.
Стоимость учебного пособия – 490 руб.