

Освоение STM32
Пошаговое руководство по самой полной платформе ARM Cortex-M, использующей бесплатную и мощную среду разработки на основе Eclipse и GCC
Кармин Новиелло
Данная книга продается на http://leanpub.com/mastering-stm32
Данная версия была опубликована 17.08.2018
Книга переведена на русский язык Дмитрием Карасёвым. Перевод от 03.03.2021
Это книга Leanpub. Leanpub расширяет возможности авторов и издателей в процессе Lean Publishing. Lean Publishing – это процесс публикации находящейся в разработке электронной книги с использованием простых инструментов и множества итераций по получению обратной связи от читателя, осуществляющийся до тех пор, пока не появится готовая книга, и набор оборотов после ее написания.
© 2015 – 2018 Carmine Noviello
Напишите твит об этой книге!
Пожалуйста, помогите Кармину Новиелло, распространяя информацию об этой книге в
Twitter!
Предлагаемый хештег для данной книги #MasteringSTM32.
Чтобы узнать, что другие люди говорят о книге, нажмите на эту ссылку, чтобы найти представленный хештег в Twitter:
#MasteringSTM32
| Предисловие ...................................................................................................................................... | i |
| Почему я написал книгу?................................................................................................ | i |
| Для кого эта книга?........................................................................................................... | ii |
| Как использовать эту книгу?........................................................................................ | iv |
| Как организована книга?............................................................................................... | iv |
| Об авторе ............................................................................................................................................ | viii |
| Ошибки и предложения ................................................................................................................ | ix |
| Поддержка книги.............................................................................................................................. | ix |
| Как помочь автору............................................................................................................................ | ix |
| Отказ от авторского права .............................................................................................................. | x |
| Благодарность за участие ............................................................................................................... | x |
| Перевод .................................................................................................................................................. | x |
| Благодарности ................................................................................................................................ | xi |
| I | Введение ................................................................................................... |
| 1 | |
| 1. Введение в ассортимент микроконтроллеров STM32............................................... | 2 | |||
|
| 1.1. | Введение в процессоры на базе ARM.......................................................................... | 2 | |
|
|
| 1.1.1. Cortex и процессоры на базе Cortex-M ....................................................... | 4 | |
|
|
| 1.1.1.1. | Регистры ядра.................................................................................... | 5 |
|
|
| 1.1.1.2. | Карта памяти ..................................................................................... | 6 |
|
|
| 1.1.1.3. | Технология битовых лент (bit-banding) ................................... | 8 |
|
|
| 1.1.1.4. | Thumb-2 и выравнивание памяти .......................................... | 11 |
|
|
| 1.1.1.5. | Конвейер .......................................................................................... | 13 |
|
|
| 1.1.1.6. | Обработка прерываний и исключений................................ | 15 |
|
|
| 1.1.1.7. | Системный таймер SysTick........................................................ | 17 |
|
|
| 1.1.1.8. | Режимы питания .......................................................................... | 17 |
|
|
| 1.1.1.9. | CMSIS................................................................................................. | 19 |
|
|
| 1.1.1.10. | Внедренные функции Cortex-M в ассортименте STM32 20 | |
|
| 1.2. | Введение в микроконтроллеры STM32.................................................................... | 21 | |
1.2.1.Преимущества ассортимента STM32…. ................................................... 21
|
| 1.2.2. | ….И его недостатки.......................................................................................... | 22 |
| 1.3. | Краткий обзор подсемейств STM32 .......................................................................... | 24 | |
|
| 1.3.1. | Серия F0............................................................................................................... | 27 |
|
| 1.3.2. | Серия F1............................................................................................................... | 28 |
|
| 1.3.3. | Серия F2............................................................................................................... | 29 |
|
| 1.3.4. | Серия F3............................................................................................................... | 30 |
|
| 1.3.5. | Серия F4............................................................................................................... | 32 |
|
| 1.3.6. | Серия F7............................................................................................................... | 33 |
|
| 1.3.7. | Серия H7.............................................................................................................. | 34 |
| ОГЛАВЛЕНИЕ |
|
|
|
|
| 1.3.8. | Серия L0 .............................................................................................................. | 35 |
|
| 1.3.9. | Серия L1 .............................................................................................................. | 36 |
|
| 1.3.10. | Серия L4 .............................................................................................................. | 37 |
|
| 1.3.11. | Серия L4+............................................................................................................ | 38 |
|
| 1.3.12. | Серия STM32WB............................................................................................... | 40 |
|
| 1.3.13. | Как правильно выбрать для себя микроконтроллер? ........................ | 42 |
| 1.4. | Отладочная плата Nucleo .............................................................................................. | 45 | |
| 2. Установка инструментария ............................................................................................. | 50 | ||
| 2.1. | Почему выбирают Eclipse/GCC в качестве инструментария для STM32..... | 51 | |
|
| 2.1.1. | Два слова о Eclipse…........................................................................................ | 52 |
|
| 2.1.2. | … и о GCC ........................................................................................................... | 53 |
| 2.2. | Windows – Установка инструментария ................................................................... | 54 | |
|
| 2.2.1. | Windows – Установка Eclipse ....................................................................... | 54 |
|
| 2.2.2. | Windows – Установка плагинов Eclipse ................................................... | 56 |
|
| 2.2.3. | Windows – Установка GCC ARM Embedded ............................................ | 59 |
|
| 2.2.4. | Windows – Установка инструментов сборки......................................... | 61 |
|
| 2.2.5. | Windows – Установка OpenOCD................................................................. | 61 |
|
| 2.2.6. | Windows – Установка инструментов ST и драйверов........................ | 62 |
|
|
| 2.2.6.1. Windows – Обновление микропрограммного |
|
|
|
| обеспечения ST-LINK................................................................... | 62 |
| 2.3. | Linux – Установка инструментария .......................................................................... | 63 | |
|
| 2.3.1. | Linux – Установка библиотек среды выполнения i386 на 64- |
|
|
|
| разрядную ОС Ubuntu .................................................................................... | 63 |
|
| 2.3.2. | Linux – Установка Java.................................................................................... | 64 |
|
| 2.3.3. | Linux – Установка Eclipse .............................................................................. | 64 |
|
| 2.3.4. | Linux – Установка плагинов Eclipse .......................................................... | 65 |
|
| 2.3.5. | Linux – Установка GCC ARM Embedded ................................................... | 70 |
|
| 2.3.6. | Linux – Установка драйверов Nucleo......................................................... | 70 |
2.3.6.1.Linux – Обновление микропрограммного обеспечения
|
| ST-LINK ............................................................................................. | 70 |
|
| 2.3.7. Linux – Установка OpenOCD ........................................................................ | 71 |
|
| 2.3.8. Linux – Установка инструментов ST......................................................... | 73 |
| 2.4. | Mac – Установка инструментария ............................................................................. | 75 |
|
| 2.4.1. Mac – Установка Eclipse ................................................................................. | 75 |
|
| 2.4.2. Mac – Установка плагинов Eclipse ............................................................. | 77 |
|
| 2.4.3. Mac – Установка GCC ARM Embedded ...................................................... | 81 |
|
| 2.4.4. Mac – Установка драйверов Nucleo ........................................................... | 81 |
2.4.4.1.Mac – Обновление микропрограммного обеспечения ST-
|
| LINK.................................................................................................... | 81 |
|
| 2.4.5. Mac – Установка OpenOCD........................................................................... | 82 |
|
| 2.4.6. Mac – Установка инструментов ST............................................................ | 84 |
| 3. Hello, Nucleo! ........................................................................................................................ | 86 | |
| 3.1. | Прикоснитесь к Eclipse IDE .......................................................................................... | 87 |
| 3.2. | Создание проекта ............................................................................................................ | 90 |
| 3.3. | Подключение Nucleo к ПК ............................................................................................ | 96 |
3.4.Перепрограммирование Nucleo с использованием STM32CubeProgrammer
|
| ................................................................................................................................................ | 97 |
| 3.5. | Изучение сгенерированного кода............................................................................. | 98 |
| ОГЛАВЛЕНИЕ |
|
|
|
|
| 4. Инструмент STM32CubeMX .......................................................................................... | 100 | |||
| 4.1. | Введение в инструмент CubeMX ............................................................................. | 100 | ||
|
| 4.1.1. | Представление Pinout................................................................................... | 103 | |
|
|
| 4.1.1.1. | Представление Chip ................................................................... | 104 |
|
|
| 4.1.1.2. | IP tree pane ..................................................................................... | 105 |
|
| 4.1.2. | Представление Clock Configuration ......................................................... | 107 | |
|
| 4.1.3. | Представление Configuration..................................................................... | 108 | |
|
| 4.1.4. Представление Power Consumption Calculator..................................... | 108 | ||
| 4.2. | Генерация проекта......................................................................................................... | 109 | ||
|
| 4.2.1. Генерация проекта Си при помощи CubeMX..................................... | 109 | ||
|
|
| 4.2.1.1. | Изучение сгенерированного кода ........................................ | 111 |
|
| 4.2.2. | Создание проекта Eclipse............................................................................ | 113 | |
4.2.3.Ручное импортирование сгенерированных файлов в проект
| Eclipse ................................................................................................................. | 115 |
4.2.4.Автоматический импорт файлов, созданных с помощью CubeMX,
|
|
| в проект Eclipse ............................................................................................... | 120 |
| 4.3. | Изучение сгенерированного кода приложения ................................................ | 121 | |
|
| 4.3.1. Добавим что-нибудь полезное в микропрограмму ......................... | 126 | |
| 4.4. | Загрузка исходного кода примеров книги.......................................................... | 127 | |
| 5. Введение в отладку........................................................................................................... | 130 | ||
| 5.1. | Начало работы с OpenOCD......................................................................................... | 130 | |
|
| 5.1.1. | Запуск OpenOCD............................................................................................ | 132 |
|
|
| 5.1.1.1. Запуск OpenOCD на Windows ................................................ | 132 |
|
|
| 5.1.1.2. Запуск OpenOCD на Linux и на MacOS X........................... | 133 |
|
| 5.1.2. Подключение к OpenOCD Telnet Console.............................................. | 135 | |
|
| 5.1.3. | Настройка Eclipse........................................................................................... | 136 |
|
| 5.1.4. | Отладка в Eclipse ............................................................................................ | 142 |
| 5.2. | Полухостинг ARM.......................................................................................................... | 146 | |
|
| 5.2.1. Включение полухостинга в новом проекте......................................... | 147 | |
|
|
| 5.2.1.1. Использование полухостинга со Стандартной |
|
|
|
| библиотекой Си........................................................................... | 149 |
|
| 5.2.2. Включение полуохостинга в существующем проекте .................... | 152 | |
|
| 5.2.3. | Недостатки полухостинга .......................................................................... | 152 |
|
| 5.2.4. | Как работает полухостинг .......................................................................... | 153 |
| II | Погружение в HAL ................................................................... | 157 | ||
| 6. | Управление GPIO .............................................................................................................. | 158 | ||
|
| 6.1. | Отображение периферийных устройств STM32 и дескрипторы HAL........ | 158 | |
|
| 6.2. | Конфигурация GPIO ..................................................................................................... | 163 | |
|
|
| 6.2.1. | Режимы работы GPIO................................................................................... | 165 |
|
|
| 6.2.2. Режим альтернативной функции GPIO ................................................ | 167 | |
|
|
| 6.2.3. | Понятие скорости GPIO ............................................................................... | 168 |
|
| 6.3. | Управление GPIO ........................................................................................................... | 172 | |
|
| 6.4. | Деинициализация GPIO.............................................................................................. | 172 | |
| 7. | Обработка прерываний ................................................................................................... | 174 | ||
|
| 7.1. | Контроллер NVIC ........................................................................................................... | 174 | |
|
|
| 7.1.1. Таблица векторов в STM32 ......................................................................... | 175 | |
| ОГЛАВЛЕНИЕ |
|
|
|
| 7.2. | Разрешение прерываний............................................................................................ | 179 | |
|
| 7.2.1. Линии запроса внешних прерываний и контроллер NVIC.......... | 180 | |
|
| 7.2.2. Разрешение прерываний в CubeMX....................................................... | 184 | |
| 7.3. | Жизненный цикл прерываний................................................................................ | 185 | |
| 7.4. | Уровни приоритета прерываний ............................................................................ | 189 | |
|
| 7.4.1. | Cortex-M0/0+ .................................................................................................... | 189 |
|
| 7.4.2. | Cortex-M3/4/7................................................................................................... | 193 |
|
| 7.4.3. Установка уровня прерываний в CubeMX............................................ | 200 | |
| 7.5. | Реентерабельность прерываний............................................................................... | 201 | |
7.6.Разовое маскирование всех прерываний или на приоритетной основе.. 202
| 8. Универсальные асинхронные последовательные средства связи .................... | 205 | ||
| 8.1. | Введение в UART и USART......................................................................................... | 205 | |
| 8.2. | Инициализация UART................................................................................................. | 209 | |
|
| 8.2.1. Конфигурация UART с использованием CubeMX............................. | 216 | |
| 8.3. | UART-связь в режиме опроса ...................................................................................... | 216 | |
|
| 8.3.1. Установка консоли последовательного порта в Windows .............. | 220 | |
|
| 8.3.2. Установка консоли последовательного порта в Linux и MacOS X222 | ||
| 8.4. | UART-связь в режиме прерываний............................................................................ | 223 | |
|
| 8.4.1. | Прерывания, относящиеся к UART ......................................................... | 224 |
| 8.5. | Обработка ошибок......................................................................................................... | 231 | |
| 8.6. | Перенаправление ввода-вывода............................................................................... | 232 | |
| 9. Управление DMA............................................................................................................... | 236 | ||
| 9.1. | Введение в DMA............................................................................................................. | 237 | |
|
| 9.1.1. Необходимость DMA и роль внутренних шин .................................. | 237 | |
|
| 9.1.2. | Контроллер DMA ........................................................................................... | 240 |
|
|
| 9.1.2.1. Реализация DMA в микроконтроллерах F0/F1/F3/L1..... | 241 |
|
|
| 9.1.2.2. Реализация DMA в микроконтроллерах F2/F4/F7........... | 244 |
|
|
| 9.1.2.3. Реализация DMA в микроконтроллерах L0/L4 ................ | 247 |
| 9.2. | Модуль HAL_DMA ............................................................................................................... | 248 | |
|
| 9.2.1. DMA_HandleTypeDef в HAL для F0/F1/F3/L0/L1/L4................................... | 249 | |
|
| 9.2.2. DMA_HandleTypeDef в HAL для F2/F4/F7..................................................... | 251 | |
|
| 9.2.3. DMA_HandleTypeDef в HAL для L0/L4 .......................................................... | 255 | |
|
| 9.2.4. Как выполнять передачи в режиме опроса ......................................... | 255 | |
|
| 9.2.5. Как выполнять передачи в режиме прерываний.............................. | 257 | |
|
| 9.2.6. Как выполнять передачи типа периферия-в-периферию................... | 259 | |
|
| 9.2.7. Использование модуля HAL_UART для передачи в режиме DMA .. | 260 | |
|
| 9.2.8. Разнообразные функции модулей HAL_DMA и HAL_DMA_Ex ................ | 263 | |
| 9.3. | Использование CubeMX для конфигурации запросов к DMA ..................... | 264 | |
| 9.4. | Правильное выделение памяти буферам DMA.................................................. | 264 | |
9.5.Пример из практики: анализ производительности передачи типа
|
| память-в-память модулем DMA............................................................................. | 265 |
| 10. Схема тактирования ........................................................................................................ | 271 | |
| 10.1. | Распределение тактового сигнала........................................................................... | 271 |
|
| 10.1.1. Обзор схемы тактирования STM32 ......................................................... | 273 |
|
| 10.1.1.1. Многочастотный внутренний RC-генератор в семействах | |
|
| STM32L ............................................................................................ | 276 |
|
| 10.1.2. Конфигурирование схемы тактирования с помощью CubeMX... | 278 |
| ОГЛАВЛЕНИЕ |
|
|
|
|
| 10.1.3. Варианты источников тактового сигнала в платах Nucleo............ | 280 | |
|
|
| 10.1.3.1. Подача тактового сигнала от высокочастотного |
|
|
|
| генератора...................................................................................... | 280 |
|
|
| 10.1.3.2. Подача тактового сигнала от 32кГц генератора............... | 281 |
| 10.2. | Обзор модуля HAL_RCC................................................................................................... | 282 | |
|
| 10.2.1. Вычисление тактовой частоты во время выполнения .................... | 284 | |
|
| 10.2.2. | Разрешение Выхода синхронизации ......................................................... | 285 |
|
| 10.2.3. Разрешение Системы защиты тактирования................................... | 285 | |
| 10.3. | Калибровка HSI-генератора........................................................................................ | 286 | |
| 11. Таймеры ............................................................................................................................... |
| 288 | |
| 11.1. | Введение в таймеры ..................................................................................................... | 288 | |
|
| 11.1.1. Категории таймеров в микроконтроллере STM32 ............................ | 289 | |
|
| 11.1.2. Доступность таймеров в ассортименте STM32................................... | 291 | |
| 11.2. | Базовые таймеры........................................................................................................... | 293 | |
|
| 11.2.1. Использование таймеров в режиме прерываний ................................ | 296 | |
|
|
| 11.2.1.1. Генерация временного отсчета в таймерах расширенного | |
|
|
| управления...................................................................................... | 299 |
|
| 11.2.2. Использование таймеров в режиме опроса........................................... | 299 | |
|
| 11.2.3. Использование таймеров в режиме DMA.............................................. | 300 | |
|
| 11.2.4. | Остановка таймера........................................................................................ | 302 |
|
| 11.2.5. Использование CubeMX для конфигурации базового таймера .... | 302 | |
| 11.3. | Таймеры общего назначения.................................................................................... | 303 | |
|
| 11.3.1. Генератор временного отсчета с внешними источниками |
| |
|
|
| тактового сигнала.......................................................................................... | 303 |
|
|
| 11.3.1.1. Режим внешнего тактирования 2......................................... | 305 |
|
|
| 11.3.1.2. Режим внешнего тактирования 1......................................... | 309 |
|
|
| 11.3.1.3. Использование CubeMX для конфигурации источника | |
|
|
| тактового сигнала таймера общего назначения ................ | 313 |
|
| 11.3.2. Режимы синхронизации ведущего/ведомого таймеров................ | 315 | |
|
|
| 11.3.2.1. Разрешение прерываний, относящихся к триггерной |
|
|
|
| цепи ................................................................................................. | 320 |
|
|
| 11.3.2.2. Использование CubeMX для конфигурации |
|
|
|
| синхронизации ведущего/ведомого устройств.............. | 320 |
|
| 11.3.3. Программная генерация связанных с таймером событий ............ | 321 | |
|
| 11.3.4. | Режимы отсчета ............................................................................................. | 323 |
|
| 11.3.5. Режим захвата входного сигнала ............................................................ | 324 | |
|
|
| 11.3.5.1. Использование CubeMX для конфигурации режима |
|
|
|
| захвата входного сигнала ........................................................ | 330 |
|
| 11.3.6. Режим сравнения выходного сигнала................................................... | 331 | |
|
|
| 11.3.6.1. Использование CubeMX для конфигурации режима |
|
|
|
| сравнения выходного сигнала............................................... | 336 |
|
| 11.3.7. | Генерация широтно-импульсного сигнала......................................... | 336 |
|
|
| 11.3.7.1. Генерация синусоидального сигнала при помощи ШИМ | |
|
|
| ............................................................................................................ | 340 |
|
|
| 11.3.7.2. Использование CubeMX для конфигурации режима |
|
|
|
| ШИМ................................................................................................ | 345 |
|
| 11.3.8. | Одноимпульсный режим........................................................................... | 345 |
ОГЛАВЛЕНИЕ
|
| 11.3.8.1. | Использование CubeMX для конфигурации |
|
|
|
| одноимпульсного режима ...................................................... | 347 |
| 11.3.9. | Режим энкодера ............................................................................................. | 348 | |
|
| 11.3.9.1. | Использование CubeMX для конфигурации режима |
|
|
|
| энкодера........................................................................................... | 353 |
| 11.3.10. | Другие функции, доступные в таймерах общего назначения и |
| |
|
| расширенного управления............................................................................. | 353 | |
|
| 11.3.10.1. Режим датчика Холла ............................................................... | 354 | |
|
| 11.3.10.2. Комбинированный режим трехфазной ШИМ и другие | ||
|
|
| функции управления двигателем........................................ | 354 |
11.3.10.3.Вход сброса таймера и блокировка регистров таймера355
11.3.10.4.Предварительная загрузка регистра автоперезагрузки355
| 11.3.11. Отладка и таймеры ....................................................................................... | 356 |
| 11.4. Системный таймер SysTick ........................................................................................ | 357 |
11.4.1.Использование другого таймера в качестве источника системного
| временного отсчета....................................................................................... | 358 |
11.5.Пример из практики: как точно измерить микросекунды с помощью
|
| микроконтроллеров STM32........................................................................................ | 359 |
| 12. Аналого-цифровое преобразование............................................................................ | 365 | |
| 12.1. | Введение в АЦП последовательного приближения ......................................... | 365 |
| 12.2. | Модуль HAL_ADC ............................................................................................................... | 370 |
|
| 12.2.1. Режимы преобразования............................................................................ | 372 |
12.2.1.1.Режим однократного преобразования одного канала.. 373
12.2.1.2.Режим сканирования с однократным преобразованием
|
|
| ............................................................................................................ | 373 |
|
| 12.2.1.3. Режим непрерывного преобразования одного канала. 374 | ||
|
| 12.2.1.4. | Режим сканирования с непрерывным преобразованием | |
|
|
| ............................................................................................................ | 374 |
|
| 12.2.1.5. Режим преобразования инжектированных каналов..... | 375 | |
|
| 12.2.1.6. | Парный режим............................................................................. | 375 |
| 12.2.2. | Выбор канала................................................................................................... | 376 | |
| 12.2.3. | Разрядность АЦП и скорость преобразования.................................... | 377 | |
| 12.2.4. | Аналого-цифровые преобразования в режиме опроса ................... | 377 | |
| 12.2.5. | Аналого-цифровые преобразования в режиме прерываний ....... | 381 | |
| 12.2.6. | Аналого-цифровые преобразования в режиме DMA....................... | 382 | |
|
| 12.2.6.1. | Многократное преобразование одного канала в режиме | |
|
|
| DMA ................................................................................................. | 386 |
|
| 12.2.6.2. | Многократные и не непрерывные преобразования в |
|
|
|
| режиме DMA................................................................................. | 386 |
|
| 12.2.6.3. Непрерывные преобразования в режиме DMA .............. | 386 | |
| 12.2.7. | Обработка ошибок......................................................................................... | 386 | |
| 12.2.8. | Преобразования, управляемые таймером............................................ | 387 | |
| 12.2.9. | Преобразования, управляемые внешними событиями.................. | 390 | |
| 12.2.10. Калибровка АЦП............................................................................................. | 390 | ||
| 12.3. Использование CubeMX для конфигурации АЦП............................................. | 391 | ||
| 13. Цифро-аналоговое преобразование ............................................................................ | 393 | ||
| 13.1. Введение в периферийное устройство ЦАП........................................................ | 393 | ||
| 13.2. Модуль HAL_DAC | ............................................................................................................... | 396 | |
| ОГЛАВЛЕНИЕ |
|
|
|
|
|
| 13.2.1. | Управление ЦАП вручную ......................................................................... | 397 | |
|
| 13.2.2. Управление ЦАП в режиме DMA с использованием таймера ..... | 399 | ||
|
| 13.2.3. | Генерация треугольного сигнала............................................................. | 402 | |
|
| 13.2.4. | Генерация шумового сигнала................................................................... | 404 | |
| 14. I2C ........................................................................................................................................... |
|
|
| 405 |
| 14.1. | Введение в спецификацию I²C ................................................................................. | 405 | ||
|
| 14.1.1. | Протокол I²C..................................................................................................... | 407 | |
|
|
| 14.1.1.1. | START- и STOP-условия ........................................................... | 408 |
|
|
| 14.1.1.2. | Формат байта ................................................................................ | 408 |
|
|
| 14.1.1.3. | Кадр адреса.................................................................................... | 409 |
|
|
| 14.1.1.4. Биты «Подтверждено» (ACK) и «Не подтверждено» |
| |
|
|
|
| (NACK)............................................................................................. | 409 |
|
|
| 14.1.1.5. | Кадры данных.............................................................................. | 410 |
|
|
| 14.1.1.6. | Комбинированные транзакции ............................................ | 411 |
|
|
| 14.1.1.7. | Удержание синхросигнала...................................................... | 412 |
14.1.2.Наличие периферийных устройств I²C в микроконтроллерах
|
| STM32 ................................................................................................................. |
| 412 |
| 14.2. | Модуль HAL_I2C ............................................................................................................... |
| 413 |
|
| 14.2.1. Использование периферийного устройства I²C в режиме ведущего | ||
|
| .............................................................................................................................. |
| 417 |
|
| 14.2.1.1. | Операции I/O MEM..................................................................... | 425 |
|
| 14.2.1.2. | Комбинированные транзакции ............................................ | 426 |
|
| 14.2.1.3. Замечание о конфигурации тактирования в семействах | ||
|
|
| STM32F0/L0/L4 .............................................................................. | 428 |
14.2.2.Использование периферийного устройства I²C в режиме ведомого
.............................................................................................................................. 428
14.3.Использование CubeMX для конфигурации периферийного устройства
|
| I²C......................................................................................................................................... | 434 |
| 15. SPI ........................................................................................................................................... |
| 436 |
| 15.1. | Введение в спецификацию SPI................................................................................. | 436 |
|
| 15.1.1. Полярность и фаза тактового сигнала ................................................... | 438 |
|
| 15.1.2. Управление сигналом Slave Select........................................................... | 440 |
|
| 15.1.3. Режим TI периферийного устройства SPI ............................................. | 440 |
|
| 15.1.4. Наличие периферийных устройств SPI в микроконтроллерах |
|
|
| STM32 ................................................................................................................. | 440 |
| 15.2. | Модуль HAL_SPI ............................................................................................................... | 442 |
|
| 15.2.1. Обмен сообщениями с использованием периферийного |
|
|
| устройства SPI ................................................................................................. | 444 |
|
| 15.2.2. Максимальная частота передачи, достижимая при использовании | |
|
| CubeHAL............................................................................................................ | 446 |
15.3.Использование CubeMX для конфигурации периферийного устройства
| SPI ........................................................................................................................................ | 446 |
| 16. Циклический контроль избыточности ...................................................................... | 447 |
| 16.1. Введение в расчет CRC................................................................................................. | 448 |
| 16.1.1. Расчет CRC в микроконтроллерах STM32F1/F2/F4/L1....................... | 450 |
| 16.1.2. Периферийное устройство CRC в микроконтроллерах |
|
| STM32F0/F3/F7/L0/L4...................................................................................... | 452 |
| ОГЛАВЛЕНИЕ |
|
|
|
| 16.2. | Модуль HAL_CRC ............................................................................................................... | 453 | |
| 17. Независимый и оконный сторожевые таймеры .................................................... | 456 | ||
| 17.1. | Независимый сторожевой таймер.......................................................................... | 456 | |
|
| 17.1.1. | Использование CubeHAL для программирования таймера IWDG | |
|
|
| .............................................................................................................................. | 457 |
| 17.2. Системный оконный сторожевой таймер ........................................................... | 458 | ||
|
| 17.2.1. | Использование CubeHAL для программирования таймера WWDG | |
|
|
| .............................................................................................................................. | 460 |
17.3.Отслеживание системного сброса, вызванного сторожевым таймером .. 461
| 17.4. | Заморозка сторожевых таймеров во время сеанса отладки .......................... | 462 | ||
| 17.5. | Выбор сторожевого таймера, подходящего для вашего приложения ....... | 462 | ||
| 18. Часы реального времени ................................................................................................ | 463 | |||
| 18.1. | Введение в периферийное устройство RTC ........................................................ | 463 | ||
| 18.2. | Модуль HAL_RTC | ............................................................................................................... | 465 | |
|
| 18.2.1. | Установка ...............................и получение текущей даты/времени | 466 | |
|
| 18.2.1.1. | Правильный .....................способ чтения значений даты/времени | 468 | |
|
| 18.2.2. | Конфигурирование ...........................................................будильников | 469 | |
|
| 18.2.3. | Блок периодического .......................................................пробуждения | 471 | |
|
| 18.2.4. | Генерация временной отметки и обнаружение |
| |
|
|
| несанкционированного ..............................................................доступа | 473 | |
|
| 18.2.5. | Калибровка .............................................................................................RTC | 474 | |
|
|
| 18.2.5.1. ............................................................. | Грубая калибровка RTC | 474 |
|
|
| 18.2.5.2. ............................................................ | Тонкая калибровка RTC | 475 |
|
|
| 18.2.5.3. ......................Обнаружение опорного тактового сигнала | 476 | |
| 18.3. | Использование .............................................................................резервной SRAM | 477 | ||
| III | Дополнительные темы........................................................ | 478 | ||
| 19. | Управление питанием | .................................................................................................... | 479 | |
|
| 19.1. Управление питанием в микроконтроллерах на базе Cortex-M.................. | 479 | ||
|
| 19.2. Как микроконтроллеры Cortex-M управляют рабочим и спящим режимами | |||
|
| .............................................................................................................................................. |
|
| 481 |
|
| 19.2.1. Переход ...................................................в/выход из спящих режимов | 483 | ||
|
|
| 19.2.1.1. .................................................«Спящий режим по выходу» | 486 | |
|
| 19.2.2. Спящие .............режимы в микроконтроллерах на базе Cortex-M | 486 | ||
|
| 19.3. Управление питанием ....................................в микроконтроллерах STM32F | 487 | ||
|
| 19.3.1. | Источники ......................................................................................питания | 487 | |
|
| 19.3.2. | Режимы ...........................................................................................питания | 488 | |
|
|
| 19.3.2.1. ............................................................................ | Рабочий режим | 489 |
|
|
|
| 19.3.2.1.1. Динамическое изменение напряжения в |
|
|
|
| ..................... | микроконтроллерах STM32F4/F7 | 490 |
|
|
|
| 19.3.2.1.2. Режим высоко - / малоинтенсивной работы в | |
|
|
| ..................... | микроконтроллерах STM32F4/F7 | 490 |
|
|
| 19.3.2.2. ............................................................................ | Спящий режим | 491 |
|
|
| 19.3.2.3. ........................................................................... | Режим останова | 492 |
|
|
| 19.3.2.4. ........................................................................ | Режим ожидания | 493 |
|
|
| 19.3.2.5. Пример работы в режимах пониженного |
| |
|
|
| ..................................................................... | энергопотребления | 493 |
| ОГЛАВЛЕНИЕ |
|
|
|
| 19.3.3. Важное предупреждение о микроконтроллерах STM32F1............. | 497 | ||
| 19.4. Управление питанием в микроконтроллерах STM32L.................................... | 499 | ||
| 19.4.1. | Источники питания...................................................................................... | 499 | |
| 19.4.2. | Режимы питания ........................................................................................... | 500 | |
|
| 19.4.2.1. | Рабочие режимы ......................................................................... | 501 |
|
| 19.4.2.2. | Спящие режимы ......................................................................... | 503 |
|
|
| 19.4.2.2.1. Режим пакетного сбора данных ...................... | 504 |
|
| 19.4.2.3. | Режимы останова........................................................................ | 504 |
|
| 19.4.2.4. | Режимы ожидания ..................................................................... | 505 |
|
| 19.4.2.5. | Режим выключенного состояния.......................................... | 506 |
| 19.4.3. | Переходы между режимами питания ................................................... | 506 | |
19.4.4.Периферийные устройства с пониженным энергопотреблением
|
| .............................................................................................................................. |
| 507 |
|
| 19.4.4.1. | LPUART ........................................................................................... | 507 |
|
| 19.4.4.2. | LPTIM............................................................................................... | 508 |
| 19.5. | Инспекторы источников питания........................................................................... | 508 | |
| 19.6. | Отладка в режимах пониженного энергопотребления................................... | 509 | |
| 19.7. | Использование калькулятора энергопотребления CubeMX.......................... | 510 | |
19.8.Пример из практики: использование сторожевых таймеров в режимах
|
| пониженного энергопотребления........................................................................... | 511 | |
| 20. Организация памяти........................................................................................................ | 512 | ||
| 20.1. | Модель организации памяти в STM32 .................................................................. | 512 | |
|
| 20.1.1. Основы процессов компиляции и компоновки ................................ | 514 | |
| 20.2. | Действительно минимальное приложение STM32 .......................................... | 517 | |
|
| 20.2.1. | Исследование бинарного ELF-файла...................................................... | 521 |
|
| 20.2.2. Инициализация секций .data и .bss ..................................................... | 523 | |
|
|
| 20.2.2.1. Пара слов о секции COMMON ....................................................... | 529 |
|
| 20.2.3. | Секция .rodata ................................................................................................ | 530 |
|
| 20.2.4. Области Стека и Кучи.................................................................................. | 532 | |
|
| 20.2.5. Проверка размера Кучи и Стека на этапе компиляции ................. | 535 | |
|
| 20.2.6. Различия с файлами скриптов инструментария............................... | 536 | |
| 20.3. | Как использовать CCM-память................................................................................. | 537 | |
|
| 20.3.1. | Перемещение таблицы векторов в CCM-память............................... | 539 |
20.4.Как использовать модуль MPU в микроконтроллерах STM32 на базе
|
| Cortex-M0+/3/4/7 ............................................................................................................. | 543 | |
|
| 20.4.1. Программирование MPU с использованием CubeHAL................... | 546 | |
| 21. Управление Flash-памятью............................................................................................ | 550 | ||
| 21.1. | Введение во Flash-память STM32 ............................................................................. | 550 | |
| 21.2. | Модуль HAL_FLASH ........................................................................................................... | 554 | |
|
| 21.2.1. | Разблокировка Flash-памяти ..................................................................... | 554 |
|
| 21.2.2. | Стирание Flash-памяти ............................................................................... | 554 |
|
| 21.2.3. | Программирование Flash-памяти ........................................................... | 556 |
|
| 21.2.4. Доступ к чтению Flash-памяти во время программирования и |
| |
|
|
| стирания............................................................................................................ | 557 |
| 21.3. | Байты конфигурации................................................................................................... | 558 | |
|
| 21.3.1. Защита от чтения Flash-памяти ............................................................... | 560 | |
| 21.4. | Дополнительные памяти OTP и EEPROM ............................................................ | 561 | |
| 21.5. | Задержка чтения Flash-памяти и ускоритель ART™ Accelerator ................. | 563 | |
ОГЛАВЛЕНИЕ
| 21.5.1. Роль TCM-памятей в микроконтроллерах STM32F7......................... | 565 |
21.5.1.1.Как обратиться к Flash-памяти через интерфейс TCM . 571
21.5.1.2.Использование CubeMX для конфигурации интерфейса
|
|
| Flash-памяти ................................................................................. | 572 |
| 22. Процесс начальной загрузки......................................................................................... | 574 | ||
| 22.1. | Единая система памяти Cortex-M и процесс начальной загрузки............. | 574 | |
|
| 22.1.1. | Программное физическое перераспределение памяти ....................... | 576 |
|
| 22.1.2. | Перемещение таблицы векторов............................................................. | 576 |
22.1.3.Запуск микропрограммы из SRAM с помощью инструментария
| GNU MCU Eclipse............................................................................................ | 578 |
| 22.2. Встроенный загрузчик ................................................................................................ | 579 |
22.2.1.Запуск загрузчика из встроенного программного обеспечения 582
22.2.2.Последовательность начальной загрузки в инструментарии GNU
|
|
| MCU Eclipse ...................................................................................................... | 583 | |
| 22.3. | Разработка пользовательского загрузчика .......................................................... | 587 | ||
|
| 22.3.1. | Перемещение таблицы векторов в микроконтроллерах STM32F0 | ||
|
|
| .............................................................................................................................. |
| 597 |
|
| 22.3.2. Как использовать инструмент flasher.py ............................................ | 599 | ||
| 23. Запуск FreeRTOS................................................................................................................ |
| 601 | ||
| 23.1. | Введение в концепции, лежащие в основе ОСРВ.............................................. | 602 | ||
| 23.2. | Введение во FreeRTOS и в оболочку CMSIS-RTOS............................................ | 609 | ||
|
| 23.2.1. Структура файлов с исходным кодом FreeRTOS ............................... | 609 | ||
|
|
| 23.2.1.1. Как импортировать FreeRTOS вручную ............................. | 610 | |
|
|
| 23.2.1.2. Как импортировать FreeRTOS с использованием CubeMX | ||
|
|
|
| и CubeMXImporter....................................................................... | 612 |
|
|
| 23.2.1.3. Как разрешить поддержку FPU в ядрах Cortex-M4F и |
| |
|
|
|
| Cortex-M7 ....................................................................................... | 613 |
| 23.3. | Управление потоками.................................................................................................. | 613 | ||
|
| 23.3.1. | Состояния потоков........................................................................................ | 616 | |
|
| 23.3.2. Приоритеты потоков и алгоритмы планирования .......................... | 617 | ||
|
| 23.3.3. Добровольное освобождение от управления ...................................... | 620 | ||
|
| 23.3.4. | Холостой поток idle ....................................................................................... | 620 | |
| 23.4. | Выделение памяти и управление ею..................................................................... | 622 | ||
|
| 23.4.1. Модель динамического выделения памяти........................................ | 622 | ||
|
|
| 23.4.1.1. | heap_1.c ........................................................................................... | 623 |
|
|
| 23.4.1.2. | heap_2.c ........................................................................................... | 624 |
|
|
| 23.4.1.3. | heap_3.c ........................................................................................... | 624 |
|
|
| 23.4.1.4. | heap_4.c ........................................................................................... | 624 |
|
|
| 23.4.1.5. | heap_5.c ........................................................................................... | 625 |
|
|
| 23.4.1.6. Как использовать malloc() и связанные с ней функции | ||
|
|
|
| Си с FreeRTOS............................................................................... | 625 |
|
|
| 23.4.1.7. | Определение кучи FreeRTOS.................................................. | 626 |
|
| 23.4.2. Модель статического выделения памяти ............................................. | 626 | ||
|
|
| 23.4.2.1. Выделение памяти потоку idle при использовании |
| |
|
|
|
| модели статического выделения памяти .......................... | 627 |
|
| 23.4.3. | Пулы памяти ................................................................................................... | 627 | |
|
| 23.4.4. | Обнаружение переполнения стека ......................................................... | 629 | |
| 23.5. | Примитивы синхронизации..................................................................................... | 631 | ||
| ОГЛАВЛЕНИЕ |
|
|
|
|
|
| 23.5.1. | Очереди сообщений ..................................................................................... | 631 | |
|
| 23.5.2. | Cемафоры ......................................................................................................... | 635 | |
|
| 23.5.3. | Сигналы потоков ........................................................................................... | 638 | |
| 23.6. | Управление ресурсами и взаимное исключение .............................................. | 638 | ||
|
| 23.6.1. | Мьютексы.......................................................................................................... | 639 | |
|
|
| 23.6.1.1. | Проблема инверсии приоритетов ........................................ | 640 |
|
|
| 23.6.1.2. | Рекурсивные мьютексы............................................................ | 641 |
|
| 23.6.2. | Критические секции..................................................................................... | 641 | |
|
| 23.6.3. Обработка прерываний совместно с ОСРВ .......................................... | 642 | ||
|
|
| 23.6.3.1. Приоритеты прерываний и API-функций FreeRTOS .... | 643 | |
| 23.7. | Программные таймеры ............................................................................................... | 644 | ||
|
| 23.7.1. Как FreeRTOS управляет таймерами ...................................................... | 646 | ||
| 23.8. | Пример из практики: Управление энергосбережением с ОСРВ.................. | 646 | ||
|
| 23.8.1. Перехват холостого потока idle ................................................................. | 647 | ||
|
| 23.8.2. Бестиковый режим во FreeRTOS .............................................................. | 648 | ||
|
|
| 23.8.2.1. Схема для бестикового режима.............................................. | 650 | |
|
|
| 23.8.2.2. Пользовательский алгоритм бестикового режима ......... | 653 | |
| 23.9. | Возможности отладки.................................................................................................. | 661 | ||
|
| 23.9.1. | Макрос configASSERT() ................................................................................. | 661 | |
23.9.2.Статистика среды выполнения и информация о состоянии
|
|
| потоков | .............................................................................................................. | 662 | |
| 23.10. | Альтернативы Fre .............................................................................................eRTOS | 665 | |||
|
| 23.10.1. ChibiOS | ............................................................................................................ |
| 665 | |
|
| 23.10.2. ОС Contiki ......................................................................................................... | 666 | |||
|
| 23.10.3. OpenRTOS ......................................................................................................... | 666 | |||
| 24. Продвинутые методы .....................................................................................отладки | 667 | ||||
| 24.1. | Введение в исключения ...........................................................отказов Cortex-M | 668 | |||
|
| 24.1.1. | Последовательность перехода в исключения Cortex-M и |
| ||
|
|
| Соглашение ......................................................................ARM о вызовах | 669 | ||
|
|
| 24.1.1.1. | Как инструментарий GNU MCU Eclipse обрабатывает |
| |
|
|
|
| .................................................................. | исключения отказов | 674 |
|
|
| 24.1.1.2. | Как интерпретировать содержимое регистра LR при |
| |
|
|
|
| ............................................................ | переходе в исключение | 675 |
|
| 24.1.2. | Исключения ............................................................отказов и их анализ | 676 | ||
|
|
| 24.1.2.1. | .......................................... | Исключение Memory Management | 677 |
|
|
| 24.1.2.2. | ................................................................ | Исключение Bus Fault | 678 |
|
|
| 24.1.2.3. | ............................................................ | Исключение Usage Fault | 679 |
|
|
| 24.1.2.4. | .............................................................. | Исключение Hard Fault | 680 |
|
|
| 24.1.2.5. ...Разрешение дополнительных обработчиков отказов | 681 | ||
|
|
| 24.1.2.6. ....Анализ отказов в процессорах на базе Cortex-M0/0+ | 681 | ||
| 24.2. | Продвинутые возможности ....................................................отладки в Eclipse | 681 | |||
|
| 24.2.1. | Представление .........................................................................Expressions | 681 | ||
|
| 24.2.1.1. | Мониторы .........................................................................................памяти | 683 | ||
|
| 24.2.2. | Точки наблюдения........................................................................................ | 683 | ||
|
| 24.2.3. | Режим Instruction ..............................................................Stepping Mode | 684 | ||
|
| 24.2.4. | Keil Packs ..................................и представление Peripheral Registers | 685 | ||
|
| 24.2.5. | Представление ....................................................................Core Registers | 688 | ||
| 24.3. | Средства отладки ..................................................................................от CubeHAL | 688 | |||
| ОГЛАВЛЕНИЕ |
|
|
|
| |
|
| 24.4. | Внешние отладчики..................................................................................................... | 689 | ||
|
|
| 24.4.1. | Использование SEGGER J-Link для отладчика ST-LINK .................. | 691 | |
|
|
| 24.4.2. | Использование интерфейса ITM и трассировка SWV...................... | 694 | |
|
| 24.5. | STM Studio......................................................................................................................... |
| 695 | |
|
| 24.6. | Одновременная отладка двух плат Nucleo........................................................... | 697 | ||
| 25. | Файловая система FAT .................................................................................................... |
| 699 | ||
|
| 25.1. | Введение в библиотеку FatFs..................................................................................... | 699 | ||
|
|
| 25.1.1. | Использование CubeMX для включения в ваши проекты |
| |
|
|
|
| библиотеки FatFs............................................................................................ | 702 | |
|
|
|
| 25.1.1.1. API-интерфейс Generic Disk Interface..................................... | 703 | |
|
|
|
| 25.1.1.2. Реализация драйвера доступа к SD-картам по SPI......... | 704 | |
|
|
| 25.1.2. | Наиболее важные структуры и функции FatFs .................................. | 705 | |
|
|
|
| 25.1.2.1. | Монтирование файловой системы ...................................... | 705 |
|
|
|
| 25.1.2.2. | Открытие файлов........................................................................ | 705 |
|
|
|
| 25.1.2.3. Чтение и запись файла............................................................. | 706 | |
|
|
|
| 25.1.2.4. Создание и открытие каталога.............................................. | 707 | |
|
|
| 25.1.3. | Как сконфигурировать библиотеку FatFs ............................................. | 710 | |
| 26. | Разработка IoT-приложений ......................................................................................... | 712 | |||
|
| 26.1. | Решения, предлагаемые ST для разработки IoT-приложений..................... | 713 | ||
|
| 26.2. | Ethernet контроллер W5500 ........................................................................................ | 716 | ||
|
|
| 26.2.1. | Как использовать шилд W5500 и модуль ioLibrary_Driver .......... | 719 | |
|
|
|
| 26.2.1.1. | Конфигурирование интерфейса SPI .................................... | 720 |
|
|
|
| 26.2.1.2. Настройка буферов сокетов и сетевого интерфейса...... | 722 | |
|
|
| 26.2.2. | API-интерфейсы сокетов............................................................................. | 723 | |
|
|
|
| 26.2.2.1. Управление сокетами в режиме TCP................................... | 725 | |
|
|
|
| 26.2.2.2. Управление сокетами в режиме UDP.................................. | 726 | |
|
|
| 26.2.3. | Перенаправление ввода-вывода на сокет TCP/IP .............................. | 726 | |
|
|
| 26.2.4. | Настройка HTTP-сервера ............................................................................ | 728 | |
|
|
|
| 26.2.4.1. | Веб-осциллограф......................................................................... | 731 |
| 27. Начало работы над новым проектом......................................................................... | 743 | ||||
|
| 27.1. | Проектирование оборудования................................................................................ | 743 | ||
|
|
| 27.1.1. | Послойная разводка печатной платы .................................................... | 744 | |
|
|
| 27.1.2. | Корпус микроконтроллера......................................................................... | 745 | |
|
|
| 27.1.3. | Развязка выводов питания......................................................................... | 746 | |
|
|
| 27.1.4. | Тактирование.................................................................................................. | 747 | |
|
|
| 27.1.5. | Фильтрация вывода сброса RESET........................................................... | 749 | |
|
|
| 27.1.6. | Отладочный порт .......................................................................................... | 749 | |
|
|
| 27.1.7. | Режим начальной загрузки ....................................................................... | 751 | |
|
|
| 27.1.8. | Обратите внимание на совместимость с выводами… ..................... | 751 | |
|
|
| 27.1.9. | …и на выбор подходящей периферии .................................................. | 752 | |
|
|
| 27.1.10. Роль CubeMX на этапе проектирования платы.................................. | 753 | ||
|
|
| 27.1.11. Стратегии разводки платы ........................................................................ | 755 | ||
|
| 27.2. | Разработка программного обеспечения................................................................ | 756 | ||
|
| 27.2.1. | Генерация бинарного образа для производства ................................................ | 757 | ||
| Приложение ............................................................................................... | 760 |
| ОГЛАВЛЕНИЕ |
|
| A. Прочие функции HAL и особенности STM32.......................................................... | 761 |
| Принудительный сброс микроконтроллера из микропрограммы ............................ | 761 |
| 96-битный уникальный идентификатор ЦПУ STM32...................................................... | 761 |
| B. Руководство по поиску и устранению неисправностей ...................................... | 763 |
| Проблемы с установкой GNU MCU Eclipse ........................................................................... | 763 |
| Проблемы, связанные с Eclipse ................................................................................................. | 764 |
| Eclipse не может найти компилятор....................................................................... | 764 |
| Eclipse постоянно прерывается при выполнении каждой инструкции во | |
| время сеанса отладки ................................................................................... | 765 |
| Пошаговая отладка очень медленная .................................................................... | 765 |
| Микропрограмма работает только в режиме отладки .................................... | 766 |
| Проблемы, связанные с STM32 ................................................................................................. | 766 |
| Микроконтроллер не загружается корректно..................................................... | 766 |
| Невозможно загрузить микропрограмму или отладить микроконтроллер | |
| .............................................................................................................................. | 768 |
| C. Схема выводов Nucleo ..................................................................................................... | 769 |
| Nucleo-F446RE .................................................................................................................................. | 770 |
| Разъемы, совместимые с Arduino............................................................................ | 770 |
| Morpho-разъемы ............................................................................................................ | 770 |
| Nucleo-F411RE .................................................................................................................................. | 771 |
| Разъемы, совместимые с Arduino............................................................................ | 771 |
| Morpho-разъемы ............................................................................................................ | 771 |
| Nucleo-F410RB .................................................................................................................................. | 772 |
| Разъемы, совместимые с Arduino............................................................................ | 772 |
| Morpho-разъемы ............................................................................................................ | 772 |
| Nucleo-F401RE .................................................................................................................................. | 773 |
| Разъемы, совместимые с Arduino............................................................................ | 773 |
| Morpho-разъемы ............................................................................................................ | 773 |
| Nucleo-F334R8................................................................................................................................... | 774 |
| Разъемы, совместимые с Arduino............................................................................ | 774 |
| Morpho-разъемы ............................................................................................................ | 774 |
| Nucleo-F303RE .................................................................................................................................. | 775 |
| Разъемы, совместимые с Arduino............................................................................ | 775 |
| Morpho-разъемы ............................................................................................................ | 775 |
| Nucleo-F302R8................................................................................................................................... | 776 |
| Разъемы, совместимые с Arduino............................................................................ | 776 |
| Morpho-разъемы ............................................................................................................ | 776 |
| Nucleo-F103RB .................................................................................................................................. | 777 |
| Разъемы, совместимые с Arduino............................................................................ | 777 |
| Morpho-разъемы ............................................................................................................ | 777 |
| Nucleo-F091RC.................................................................................................................................. | 778 |
| Разъемы, совместимые с Arduino............................................................................ | 778 |
| Morpho-разъемы ............................................................................................................ | 778 |
| Nucleo-F072RB .................................................................................................................................. | 779 |
| Разъемы, совместимые с Arduino............................................................................ | 779 |
| Morpho-разъемы ............................................................................................................ | 779 |
| Nucleo-F070RB .................................................................................................................................. | 780 |
| Разъемы, совместимые с Arduino............................................................................ | 780 |
| ОГЛАВЛЕНИЕ |
| |
|
| Morpho-разъемы ............................................................................................................ | 780 |
|
| Nucleo-F030R8................................................................................................................................... | 781 |
|
| Разъемы, совместимые с Arduino............................................................................ | 781 |
|
| Morpho-разъемы ............................................................................................................ | 781 |
|
| Nucleo-L476RG ................................................................................................................................. | 782 |
|
| Разъемы, совместимые с Arduino............................................................................ | 782 |
|
| Morpho-разъемы ............................................................................................................ | 782 |
|
| Nucleo-L152RE .................................................................................................................................. | 783 |
|
| Разъемы, совместимые с Arduino............................................................................ | 783 |
|
| Morpho-разъемы ............................................................................................................ | 783 |
|
| Nucleo-L073R8 .................................................................................................................................. | 784 |
|
| Разъемы, совместимые с Arduino............................................................................ | 784 |
|
| Morpho-разъемы ............................................................................................................ | 784 |
|
| Nucleo-L053R8 .................................................................................................................................. | 785 |
|
| Разъемы, совместимые с Arduino............................................................................ | 785 |
|
| Morpho-разъемы ............................................................................................................ | 785 |
| D. | Корпусы STM32.................................................................................................................. | 786 |
|
| LFBGA .............................................................................................................................................. | 786 |
|
| LQFP .............................................................................................................................................. | 786 |
|
| TFBGA .............................................................................................................................................. | 787 |
|
| TSSOP .............................................................................................................................................. | 787 |
|
| UFQFPN .............................................................................................................................................. | 787 |
|
| UFBGA .............................................................................................................................................. | 787 |
|
| VFQFP .............................................................................................................................................. | 787 |
|
| WLCSP .............................................................................................................................................. | 787 |
| E. | Изменения книги .............................................................................................................. | 789 |
|
| Выпуск 0.1 – Октябрь 2015 .......................................................................................................... | 789 |
|
| Выпуск 0.2 – 28 октября 2015...................................................................................................... | 789 |
|
| Выпуск 0.2.1 – 31 октября 2015................................................................................... | 789 |
|
| Выпуск 0.2.2 – 1 ноября 2015 ...................................................................................... | 789 |
|
| Выпуск 0.3 – 12 ноября 2015........................................................................................................ | 790 |
|
| Выпуск 0.4 – 4 декабря 2015........................................................................................................ | 790 |
|
| Выпуск 0.5 – 19 декабря 2015...................................................................................................... | 790 |
|
| Выпуск 0.6 – 18 января 2016........................................................................................................ | 790 |
|
| Выпуск 0.6.1 – 20 января 2016 .................................................................................... | 790 |
|
| Выпуск 0.6.2 – 30 января 2016 .................................................................................... | 790 |
|
| Выпуск 0.7 – 8 февраля 2016 ....................................................................................................... | 791 |
|
| Выпуск 0.8 – 18 февраля 2016..................................................................................................... | 791 |
|
| Выпуск 0.8.1 – 23 февраля 2016.................................................................................. | 791 |
|
| Выпуск 0.9 – 27 марта 2016.......................................................................................................... | 791 |
|
| Выпуск 0.9.1 – 28 марта 2016 ...................................................................................... | 792 |
|
| Выпуск 0.10 – 26 апреля 2016 ..................................................................................................... | 792 |
|
| Выпуск 0.11 – 27 мая 2016............................................................................................................ | 792 |
|
| Выпуск 0.11.1 – 3 июня 2016 ....................................................................................... | 793 |
|
| Выпуск 0.11.2 – 24 июня 2016..................................................................................... | 793 |
|
| Выпуск 0.12 – 4 июля 2016........................................................................................................... | 793 |
|
| Выпуск 0.13 – 18 июля 2016......................................................................................................... | 793 |
|
| Выпуск 0.14 – 12 августа 2016..................................................................................................... | 793 |
| ОГЛАВЛЕНИЕ |
|
|
|
|
| Выпуск 0.15 – 13 | сентября 2016.................................................................................................. | 793 | ||
| Выпуск 0.16 – 3 | октября 2016...................................................................................................... | 794 | ||
| Выпуск 0.17 – 24 | октября 2016.................................................................................................... | 794 | ||
| Выпуск 0.18 – 15 | ноября 2016 ..................................................................................................... | 794 | ||
| Выпуск 0.19 – 29 | ноября 2016 ..................................................................................................... | 795 | ||
| Выпуск 0.20 – 28 | декабря 2016.................................................................................................... | 795 | ||
| Выпуск 0.21 – 29 | января 2017...................................................................................................... | 795 | ||
| Выпуск 0.22 – 2 | мая 2017.............................................................................................................. | 795 | ||
| Выпуск 0.23 – 20 | июля 2017......................................................................................................... | 795 | ||
| Выпуск 0.24 | – 11 | декабря 2017.................................................................................................... | 796 | |
| Выпуск 0.25 | – 3 | января 2018........................................................................................................ | 796 | |
| Выпуск 0.26 | – 7 | мая 2018.............................................................................................................. | 796 | |

Нет комментариевНе стесняйтесь поделиться с нами вашим ценным мнением.
Текст