Embedded HandbookПриложения
Все разделы › VII. Документация и её язык
STM32F103, STM32F407, STM32F401 · уровень справочник · 9 мин чтения
Открыть в интерактивном справочнике

39а. Официальные документы: что и где взять

Раздел 39 объяснял, как читать документацию. Этот — какую именно и откуда. Все документы бесплатны и лежат в открытом доступе; ссылки ведут на страницы производителей, а не на копии. Номер документа (RM0008, DS5319…) — главный ключ: по нему документ находится поиском на сайте даже когда адрес страницы поменялся.

Каждая ссылка проверена на то, что открывается, — скриптом или, где сайт не пускает скрипты, браузером; дата проверки в подписи раздела.

Как это называется в документации

Оригинал Перевод
datasheet (DS) даташит: выводы, электрические параметры, корпуса
reference manual (RM) справочное руководство: регистры и работа блоков
programming manual (PM) руководство по программированию ядра
errata sheet (ES) перечень аппаратных ошибок кристалла
application note (AN) заметка по применению: как решать типовую задачу
user manual (UM) руководство пользователя платы или инструмента
technical reference manual (TRM) техническое руководство по ядру
architecture reference manual (ARM) описание архитектуры
generic user guide общее руководство по ядру для программиста

39а.1 Четыре документа на каждый камень

Для любого STM32 нужны ровно четыре, и искать их проще всего со страницы конкретного кристалла — вкладка Documentation:

STM32F103 (BluePill) STM32F407 (Discovery) STM32F401 (Nucleo)
страница камня stm32f103c8 stm32f407vg stm32f401re
даташит DS5319 DS8626 DS9716
справочное руководство RM0008 RM0090 RM0368
руководство по ядру PM0056 (Cortex‑M3) PM0214 (Cortex‑M4) PM0214
перечень ошибок ES096 ES0182 ES0222

ES096 — перечень ошибок для F103x8/xB средней плотности, то есть для BluePill; у F103xC/xD/xE высокой плотности он свой — ES0340.

Четыре документа на каждый камень: даташит и перечень ошибок — свои, справочное руководство — одно на подсемейство, руководство по ядру — одно на ядро

Что в каком искать — по разделам справочника:

Вопрос Документ Разделы
какой вывод что умеет, альтернативные функции даташит, таблица Pin definitions 8, E
предельные токи, частоты, точность АЦП даташит, Electrical characteristics 14, 15, 10
любой регистр, любой бит справочное руководство 6–22, A, A2
дерево тактов с рисунком справочное руководство, глава RCC 6
таблица векторов, приоритеты, NVIC справочное руководство, Interrupts; руководство по ядру 7
инструкции, PRIMASK/BASEPRI, отказы руководство по ядру PM 1, 28, 35
«должно работать, но не работает» перечень ошибок 36

⚠️ Перечень ошибок читают до разводки платы, а не после. У F103 в нём, например, ограничения на ремап I²C и регистры DBGMCU, недоступные программе без отладчика (раздел 2а.4); у F407 — известные особенности I²C и SDIO. А то, что USB и CAN у F103 не работают одновременно, — не ошибка: у них общие 512 байт памяти буферов, это написано в справочном руководстве. Прибор, который «не работает без причины», нередко попадает ровно в один из пунктов.

Справочное руководство одно на подсемейство: RM0008 покрывает F101–F107, RM0090 — F405/F407/F415/F417 и F427/F429/F437/F439, RM0368 — F401. Даташит — на конкретный кристалл и корпус.


39а.2 Заметки по применению

Заметки — самое недооценённое, что есть у производителя: там разобраны именно те задачи, о которые спотыкаются. Ищутся по номеру на сайте или со страницы камня, вкладка Documentation → Application notes.

Номер О чём Раздел
AN2606 встроенный загрузчик: какие интерфейсы, какой протокол 11
AN3155 протокол загрузчика по UART 11, 16
AN2834 как получить от АЦП заявленную точность 14
AN4073 точность АЦП на F2/F4 14
AN4031 DMA на F2/F4: потоки, FIFO, приоритеты 9
AN4013 таймеры: обзор всех режимов 13
AN4776 «поваренная книга» таймеров: примеры схем 13
AN4899 настройка GPIO и аппаратные ограничения 8
AN4838 защита памяти, MPU 11
AN3364 миграция и различия между сериями 2
AN2867 выбор кварца и его обвязки 6
AN4879 USB: аппаратные требования, разводка 20
AN3154 загрузчик по CAN 19
AN4989 отладка на STM32: SWO, точки, типовые ошибки 21, 35

39а.3 Платы

Плата Документ Что внутри
Nucleo‑64 UM1724 схема, перемычки, разъёмы Arduino/Morpho, HSE через ST‑Link
Discovery F407 UM1472 схема, светодиоды, акселерометр, аудио, USB OTG
ST‑Link UM1075 отладчик: режимы, обновление прошивки
BluePill нет официального документа схема гуляет по сети; распиновка — приложение E

Схемы плат — в тех же руководствах, последними страницами: именно оттуда берётся, что светодиод Nucleo на PA5, а кнопка Discovery — на PA0 с подтяжкой вниз (приложение E).


39а.4 Ядро Cortex‑M

Документы ARM — про то, что одинаково у всех производителей: набор инструкций, NVIC, SysTick, отказы, режимы.

Документ Что это Раздел
Cortex‑M3 Devices Generic User Guide ядро глазами программиста: регистры, исключения, инструкции 1, 7, 35
Cortex‑M4 Devices Generic User Guide то же для M4, плюс FPU и DSP 1, 24
Cortex‑M3 Technical Reference Manual устройство ядра: конвейер, шины, тайминги 1, 23
Cortex‑M4 Technical Reference Manual то же для M4 1
ARMv7‑M Architecture Reference Manual архитектура целиком: кодировка инструкций, модель памяти 3а, 30

Для повседневной работы хватает первого; в архитектурное руководство заглядывают за точным поведением инструкций — например, LDREX/STREX или барьеров (приложение B).


39а.5 CMSIS и библиотеки ST

Что Где Раздел
CMSIS-Core: документация arm-software.github.io/CMSIS_5 5, B
CMSIS: исходники github.com/ARM-software/CMSIS_5 5
заголовки устройств F1 github.com/STMicroelectronics/cmsis_device_f1 A
заголовки устройств F4 github.com/STMicroelectronics/cmsis_device_f4 A2
HAL и LL для F1 github.com/STMicroelectronics/stm32f1xx_hal_driver 5, C
HAL и LL для F4 github.com/STMicroelectronics/stm32f4xx_hal_driver 5, C
STM32CubeF1 целиком: примеры, промежуточное ПО github.com/STMicroelectronics/STM32CubeF1 4, 5
STM32CubeF4 целиком github.com/STMicroelectronics/STM32CubeF4 4, 5
описание HAL/LL F1 UM1850 5, C
описание HAL/LL F4 UM1725 5, C
CubeMX: конфигуратор st.com/stm32cubemx 4
CubeIDE: среда st.com/stm32cubeide 4

Исходники на GitHub — самый быстрый способ узнать, что делает функция HAL на самом деле: открыть stm32f4xx_hal_uart.c и прочитать. Часто это короче, чем найти нужное место в руководстве.


39а.6 FreeRTOS

Что Где Раздел
сайт и документация ядра freertos.org 23–34
исходники ядра github.com/FreeRTOS/FreeRTOS-Kernel 24
книга «Mastering the FreeRTOS Real Time Kernel» github.com/FreeRTOS/FreeRTOS-Kernel-Book 23–34
CMSIS-FreeRTOS: пак для Keil github.com/ARM-software/CMSIS-FreeRTOS 24
CMSIS-RTOS2: обёртка arm-software.github.io/CMSIS_5/RTOS2 24

Книга по ядру — официальная и бесплатная, в исходниках на GitHub; именно из неё формулировки про «задачи разного приоритета не делят время» и «FromISR не ждут» (разделы 26, 28) — там они даны с рисунками.


39а.7 Инструменты

Что Где Раздел
Keil MDK: документация developer.arm.com/keil 4
Arm Compiler 6: справочник developer.arm.com/documentation/100748 3, 4
Arm Compiler: ассемблер и компоновщик developer.arm.com/documentation/100069 11
GNU Arm Embedded: компилятор developer.arm.com/gnu-toolchain 4
OpenOCD: открытый отладчик openocd.org 4
STM32CubeProgrammer: прошивка st.com/stm32cubeprog 4, 11
FatFS: файловая система elm-chan.org/fsw/ff 42

39а.8 Как искать

По номеру документа. На сайте ST поиск по RM0008 даёт документ первой строкой. Это надёжнее любой ссылки: адреса страниц ST меняются раз в несколько лет, номера — никогда.

Со страницы камня. Вкладка Documentation на странице кристалла — все относящиеся к нему документы, включая заметки и перечень ошибок. Если не знаете номера, идти сюда.

Версия имеет значение. У справочных руководств до двух десятков ревизий; перечень ошибок обновляется чаще. Смотреть дату на титуле и при странностях — свежую ревизию.

Исходники вместо документа. Заголовок stm32f4xx.h и hal_*.c на GitHub отвечают на вопрос «что делает эта функция» быстрее, чем руководство. Приложения A, A2 и C собраны именно оттуда.

Что не искать. Форумы и переводы — только после первоисточника. Половина «граблей» из раздела 36 — следствие совета, данного для другого камня или другой версии библиотеки.

Как искать документ: номер известен — поиск по номеру, нет — страница камня и вкладка Documentation, затем дата ревизии; исходники — в обход документа, форумы — последними


39а.9 Итоги


Дальше: раздел 39б «Errata на практике: как читать список ошибок кристалла и обходить их» — перечень ошибок в руках: ревизия кристалла, сводная таблица и обходы в коде.

Открыть в интерактивном справочнике