МК STM32
... - семейство 32-разрядных МК производства STMicroelectronics
Разделены на серии, основанные на разных ядрах ARM

^ Обведённая зелёным - серия, которую мы будем подробно
рассматривать
МК внутри одной серии могут различаться охуеть да?
Различия внутри серии STM32F103xx:

Архитектура STM32F103xx

DMA - Direct Memory Access - доступ к памяти минуя проц
AHB - Advanced High-performance Bus
APB - Advanced Peripheral Bus
FLITF - FLash memory InTerFace // Боже блять какое убогое
сокращение
FSMC - Flexible Static Memory Controller
Основной прикол Advanced Bus - они быстрее
Архитектура STM32F103x8

Устройство матрицы
шин на примере STM32F4xx

Схема тактирования
STM32F103xx

Конфиг загрузки
Возможные области загрузки:
- Flash память - обычный
- Системная память - содержит загрузчик, через
который можно запрограммировать Flash память посредством интерфейса по
типу UART
- Оперативка - например при дебаге
Выбор области загрузки через выводы МК:

Порты в/в
Базвовая структура GPIO - General Purpose I/O

Средства разработки для
STM32
Драйверы:
- CMSIS - Common Microcontroller Software Interface Standard -
программный интерфейс для МК на базе ARM Cortex, выпущен самими ARM.
Даёт доступ ко всему через регистры
- HAL - Hardware Abstraction Layer - выпущен STM, высокоуровневый
программный интерфейс, абстрагирующий от внутренней организации МК.
Проще разрабатывать и портировать, менее эффективно, код объёмнее
- LL - Low-Layer drivers - выпущены STM, низкоуровневый интерфейс
некоторых устройств, позволяющий писать более оптимизированный код под
специфичные задачи
Сравнение исходного кода для UART:
