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 — следствие совета, данного для другого камня или другой версии библиотеки.
39а.9 Итоги
- На каждый камень — четыре документа: даташит, справочное руководство, руководство по ядру и перечень ошибок (39а.1). Перечень ошибок читают до разводки платы.
- Искать надёжнее по номеру документа: адреса страниц меняются, номера — нет (39а.8).
- Ссылки даны через страницы продуктов, а не прямыми адресами файлов.
Дальше: раздел 39б «Errata на практике: как читать список ошибок кристалла и обходить их» — перечень ошибок в руках: ревизия кристалла, сводная таблица и обходы в коде.