Web семинар STM32CubeMX• «Hello World», создание и конфигурация...
Transcript of Web семинар STM32CubeMX• «Hello World», создание и конфигурация...
![Page 1: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/1.jpg)
Web – семинар STM32CubeMX
10 ноября
Попов Роман (Компэл)
Александр Квашин (ST)
![Page 2: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/2.jpg)
• Введение
• Ядро Cortex-M7, архитектура STM32F7
• Обзор семейства STM32F7
• Бесплатные среды разработки
• Графический генератор кода STM32CubeMX
• Примеры:
• «Hello World», создание и конфигурация проекта
• USB. Виртуальный COM – порт (CDC)
• Ethernet. Web-Server
• Ответы на вопросы
• Розыгрыш призов
Программа 2
![Page 3: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/3.jpg)
Ядро
ARM CORTEX-M7
3
DSP
![Page 4: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/4.jpg)
Ядро Cortex-M4 • Архитектура ARMv7E-M
• Гарвардская архитектура, конвейер 3 - уровня
• Поддержка деления, инструкций SIMD
• Модуль защиты памяти (MPU)
• Модуль плавающей точки (FPU)
• Включен во все STM32 на ядрах ARM Cortex-M4
4
12-тактов задержки ISR
![Page 5: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/5.jpg)
• Архитектура ARMv7E-M
• Гарвардская архитектура, конвейер 6 - уровней
• Супер скалярная архитектура!
• Поддержка деления, инструкций SIMD
• Модуль защиты памяти (MPU)
• Модуль плавающей точки (FPU)
• Включен во все STM32 на ядрах ARM Cortex-M4 и Cortex-M7
Ядро Cortex-M7 5
На один шаг ближе к DSP На один шаг ближе к процессорам
реального времени
Выполнение операций загрузки/выгрузки
параллельно с арифметическими операциями
Прямой доступ ядра к 2 областям оперативной
памяти
Операции ветвления без задержек Кеш память для внешней памяти ( шина AXI-M)
12-тактов задержки ISR
![Page 6: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/6.jpg)
Cortex-M7 → параллельное выполнение 6
1
Fetch Decode Issue Prefetch
DATA PROCESSING UNIT
(+ FPU)
LOAD/STORE
UNIT
PREFETCH
UNIT
#1 DECODE #2 DECODE
64-бит за 1 такт
Load/Store 1
Load/Store 2
ALU 1 (Main)
ALU 2
MAC (32b x 32b + 64b)
FPU
2 3 4
32-бит
32-бит
Execute
BTAC 64-entry
X 64 bits
BRANCH
(2x 32b)
Память данных
NVIC
DPU
![Page 7: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/7.jpg)
Операции математики и load/store
• Cortex-M4
• Единичные операции load/store занимают 2 такта
• N последовательных операций load/store занимают N+1 тактов
• Cortex-M7
• Операции load/store выполняются параллельно
• с арифметическими
• Доступ к памяти без задержек!
7
Работа компилятора!
Выборка Декодиро
вание
Результат
#1 DECODE #2 DECODE
Load/Store 1
Load/Store 2
ALU 1 (Main)
ALU 2
32-бит (2x 32b)
32-бит
Выполнение
Группировка команд
Параллельное
выполнение команд
![Page 8: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/8.jpg)
Архитектура STM32F7
8
DSP
![Page 9: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/9.jpg)
DMA1 DMA2 ETH
DMA
USB
HS
DMA L1-Cache
4KB I/D
AXI to Multi-
AHB
LCD-
TFT
DMA
Chrom-
ART
SRAM
240 KB
SRAM
16 KB
AHB1
Peripheral
AHB2
Peripheral
FMC
QuadSPI
ITCM RAM
16 KB
DTCM RAM
64 KB
AX
IM
AH
BS
ITC
M
DT
CM
APB1
Peripheral
APB2
Peripheral
FLASH
1MB
AH
BP
DM
A_M
EM
1
DM
A_M
EM
2
DM
A_P
1
DM
A_P
2
ART
Шина ITCM
Шина DTCM
Шина AXIM
Шина AHBS
Гибкая архитектура STM32F7x6 9
64-b
it
Bu
sM
atr
ix 32-бит матрица шин
Cortex-M7
Выполнение кода возможно из:
Flash ITCM с ART Accelerator
или
Flash AXI с L1-cache
или
Внешняя память с L1-cache
![Page 10: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/10.jpg)
Архитектура ядра 10
DATA PROCESSING
UNIT
(+ FPU)
NVIC
LOAD/STORE
UNIT
STORE
BUFFER
BUS INTERFACE
UNIT
MPU
AXI-M
AHBS
for DMAs
AHBP (периферия)
Прерывания
TIGHTLY COUPLED MEMORY UNIT SQ
ARM® Cortex®-M7
ITCM DTCM
DEBUG ETM/ITM trace
Отладка
AHBD
PREFETCH
UNIT
AXI to Multi-AHB
Внешняя память Внутренняя память
I-Cache D-Cache
ART
FLASH
64-бит
64-бит
256-бит
![Page 11: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/11.jpg)
Резюме
1. Супер скалярная архитектура
→ 2 инструкции за 1 такт
2. Ветвление за 1 такт
3. Система кэш менеджмента для
работы с медленной памятью
4. Развитая архитектура для
работы с большими объемами
данных
11
1000 CoreMark
![Page 12: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/12.jpg)
Семейство STM32F7
![Page 13: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/13.jpg)
Портфолио семейства STM32 13
09/12/2015 Presentation Title
75 93 106 177 245 398 608 1000 273 CoreMark
![Page 14: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/14.jpg)
14 Портфолио STM32F7 (1/2) 3/7
Co
rte
x®
-M7
– 2
16
MH
z
Acceleration
• ART Accelerator™
• L1 cache: 4K+4K data
and instruction cache
• Chrom-ART
Accelerator™
• Single Precision FPU
Connectivity
• 2 x USB2.0 OTG FS/HS
• SDIO
• USART, UART, SPI, I²C
• 2 x CAN
• HDMI-CEC
Audio
• I²S + audio PLL
• 2 x SAI
• 2 x 12-bit DAC
• SPDIF-RX
Others
• 16 and 32-bit timers
• 3 x 12-bit ADC
(2.4Msps)
• Low voltage 1.7 to 3.6V
• 85°C and 105°C range
Product
line
FCPU
(MHz)
FLASH
(bytes)
RAM
(KB)
Quad -
SPI
Ethernet
I/F
IEEE
1588
Camera
I/F FMC
TFT
controller
Hardware
Crypto /
hash
STM32F756 216 512 K
to 1 M
320K (incl.64K
DTCM) + 16K
ITCM + 4K
backup
STM32F746 216 512 K
to 1 M
320K (incl.64K
DTCM) + 16K
ITCM + 4K
backup
STM32F745 216 512 K
to 1 M
320K (incl.64K
DTCM) + 16K
ITCM + 4K
backup
![Page 15: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/15.jpg)
Портфолио STM32 F7 (2/2) 15
LQFP100 LQFP144
WLCSP143
LQFP176
UFBGA176 LQFP208 TFBGA216
512 K
1 M
Размер FLASH
(байт)
STM32F746VG STM32F746ZG STM32F746IG STM32F746BG STM32F746NG
STM32F746VE STM32F746ZE STM32F746IE STM32F746BE STM32F746NE
STM32F756VG STM32F756ZG STM32F756IG STM32F756BG STM32F756NG
STM32F756VE STM32F756ZE STM32F756IE STM32F756BE STM32F756NE
С крипто/hash сопроцессором
Количество
ножек
Без крипто/hash сопроцессора
![Page 16: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/16.jpg)
Отладочные платы 16
STM32746G-EVAL
STM32756G-EVAL
STM32F746G-DISCO
• 216 МГц STM32F756NGH6 или STM32F746NGH6
• SAI аудио ЦАП, стерео audio jack, микрофон
• SDRAM 8Mx32 SDRAM, 1Mx16 бит SRAM, 8Mx16
бит NOR FLASH и 512 Mбит QuadSPI NOR FLASH
• Цветной 5.7’ 640 x 480 TFT LCD сенсорный экран
• Ethernet EEE-802.3-2002
• USB OTG HS/FS, разъем micro-AB
• CAN 2.0A/B
• Модуль камеры
• 216 МГц STM32F746NGH6, 1 Mб Flash, 340 Kб RAM
• Цветной 4.3’ 480x272 LCD-TFT сенсорный экран
• 128-Mбит Quad-SPI Flash, 128-Mбит SDRAM
• Ethernet IEEE-802.3-2002
• USB OTG HS/FS, разъем micro-AB
• SAI аудио кодек, стерео выход
• Два МЭМС микрофона
• Модуль камеры
• Поддержка VCP, MS и отладочного порта
![Page 17: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/17.jpg)
Среды разработки, ПО
![Page 18: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/18.jpg)
ПО для разработки
• Генерация готового кода и проекта.
Возможность фокусировки на
собственном приложении
• Свойства:
• HAL
• RTOS, USB, TCP/IP, файловая
система, графическая библиотека
• Использование максимальных
возможностей STM32 с
минимальной избыточностью
кода. Простые функции с прямым
доступом к регистрам.
STM32CubeMX:
Совместимость
STM32Snippets:
Оптимизация
Hardware Abstraction Layer API
HAL
ST boards
TCP/IP FAT
File
System
Graphics USB
Host &
Device
Библиотеки, стеки, ОС
RTOS
Приложение
18
![Page 19: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/19.jpg)
Мастер портов в/в
Мастер
тактирования
Wizard периферии и ПО
Мастер
энергопотребления
STM32CubeMX 19
![Page 20: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/20.jpg)
Бесплатные среды IDE для разработки
![Page 21: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/21.jpg)
Среда разработки
System Workbench for STM32
![Page 22: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/22.jpg)
STM32 Community
• Среда основана на бесплатных кодах
• Графическая оболочка – Eclipse
• Компилятор – GCC
22
![Page 23: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/23.jpg)
Основные моменты
• Поддерживаемый функционал:
• Аппаратная отладка на ST-LINK
• Мастер создания проектов с HAL или SPL
• Совместимость с STM32CubeMX
• Поддержка
• Компания AC6 является партнером ST
• Техническая поддержка осуществляется через
форум http://www.openstm32.org/forum7
23
![Page 24: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/24.jpg)
Установка среды разработки
• Воможны 2 варианта установки
• Из дистрибутива
• Путем установки плагина к уже установленному
ранее Eclipse
24
![Page 25: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/25.jpg)
Генератор кода STM32CubeMX
![Page 26: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/26.jpg)
Философия CubeMX
• STM32CubeMX – это конфигуратор, который позволяет удобное
управлениями драйверами и всеми библиотеками кода от ST и
партнеров для микроконтллеров STM32
• Программа бесплатная
• Драйвера и другой код - бесплатные
• На выходе STM32CubeMX выдает проект, который можно открыть в
среде программированя
• Исходные файлы
• В среде программирования можно добавлять свой код и иметь
возможность изменять проект в STM32 CubeMX.
26
![Page 27: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/27.jpg)
Установка STM32CubeMX • Скачиваем STM32CubeMX
• http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1533/P
F259242?s_searchtype=partnumber
• STM32CubeMX треубет для своей работы java
• Если пакет java не установлен, то установите его под свою версию
Windows (32/64 бит)
• После чего можно вручную заказать пакеты драйверов под то или
иное подсемейство STM32
• STM32CubeL0
• STM32CubeL1
• STM32CubeF0
• STM32CubeF1
• STM32CubeF2
• STM32CubeF3
• STM32CubeF4
27
![Page 28: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/28.jpg)
Установка STM32CubeMX • Установите STM32CubeMX
• Запустите STM32CubeMX
28
Репозиторий
CubeMX Project
Для генерации
проекта нужно
сконфигурировать
репозиторий STM32CubeMX
генерирует
проект
![Page 29: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/29.jpg)
Настройка STM32CubeMX
• В случае, если вы вручную скачали пакеты, то их можно добавить в
репозиторий:
• MENU>Help>Updater Settings…
• Можете видеть и менять папку репозитория
• По умолчанию C:/User/Acc_name/STM32Cube/Repository/
• Лучше избегать кириллических символов в пути к репозиторию,
в идеале – его лучше разместить в корневой директории
• Можно загрузить репозиторий автоматически
29
CubeMX
repository
Путь к
репозиторию
![Page 30: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/30.jpg)
Настройка STM32CubeMX
• Как выглядит репозиторий в файловой системе компьютера
• Для автоматической загрузки:
• MENU>Help>Install New Libraries
• Выбираете нужный пакет
• Нажимаете кнопку Install Now
30
Пример того,
как выглядит
репозиторий Автоматическая загрузка
в STM32CubeMX
![Page 31: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/31.jpg)
Настройка STM32CubeMX
Для ручной установки войдите:
• MENU>Help>Install New Libraries
• Нажмите кнопку “From Local…”
• Выберите скаченный zip
\HAL\STM32Cube_FW_F7_V1.0.0.zip
31
![Page 32: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/32.jpg)
Возможности STM32CubeMX • CubeMX выдает проектные файлы под следующие среды
разработки:
• Keil
• IAR
• Atollic
• System Workbench (БЕСПЛАТНЫЙ)
• Для работы с отладочными платами потребуется так же драйвер
ST-Link
• STSW-LINK003 driver for Win XP/Vista/7
• STSW-LINK006 driver for Win 8
• Для установки требуется иметь Права администратора
32
![Page 33: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/33.jpg)
STM32CubeMX: Выбор микроконтроллера 33
• Фильтрация по:
• Cерии
• Семейству
• Типу корпуса
• Перифериии
• и т. д.
![Page 34: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/34.jpg)
STM32CubeMX: Конфигуратор выводов 34
• Конфигурирование
портов в/в
• Автоматический
перенос функций
портов (ремап)
• Автоматическая
привязка
периферии к
библиотекам
(FatFS, LWIP, …)
![Page 35: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/35.jpg)
STM32CubeMX: Настройка периферии 35
• Цветовые подсказки:
• Если пункт затенен, то
следует выбрать
соответствующую
периферию
• Зеленый цвет –
периферийный модуль
доступен без ограничений
• Желтый цвет –
периферийный модуль с
ограниченным
функционалом
• Красный цвет –
периферийный модуль не
доступен в данной
конфигурации
микроконтроллера
Серый
Нужно включить
периферию
Зеленый
периферия
активна
Желтый:
функционал
ограничен
Красный:
функционал не
доступен
![Page 36: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/36.jpg)
STM32CubeMX: Распределение выводов 36
Выводы периферийных модулей автоматически
переходят на неиспользуемые выводы в случае
«пересечений»
1. Выбираем
I2C1
2. Назначение
выводов I2C1
3. Выбираем
SWD
4. Конфликт выводов I2C1
и SWD. Вывод I2C1_SDA
перемещен на
альтернативную позицию
![Page 37: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/37.jpg)
STM32CubeMX: Распределение выводов 37
Можно отключить автоматическое
распределение периферии по выводам:
Установив данный
параметр
STM32CubeMX не
сможет
распределять
выводы на
альтернативные
I2C1 не может быть
переназначен на новые
выводы, поэтому модуль
SWD/JTAG невозможно
использовать
![Page 38: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/38.jpg)
STM32CubeMX: Конфигурация выводов 38
• Выводы периферии можно переназначать на другие вручную
• Нажимаете Ctrl + Click мышкой на выводе и перетягиваете на другой пин
(Ctrl не отпускайте)
1. Ctrl + Click
мышкой на вывод
2. Подсвечивается
альтернативная
позиция
3. Перемещаем
вывод на новую
позицию
![Page 39: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/39.jpg)
STM32CubeMX: Настройка тактирования 39
• Автоматический расчет частот • Подсветка ошибок • Визуальный конфигуратор
![Page 40: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/40.jpg)
STM32CubeMX: Конфигурация периферии 40
• Настройка периферии в
графическом режиме
• Подсветка ошибок:
+ Не сконфигурировано
ⱱ Сконфигурировано
x Ошибка в
конфигурировании
![Page 41: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/41.jpg)
STM32CubeMX: Конфигурация периферии
и библиотек 41
• Параметры привязаны к
системным настройкам
из документации
• Прерывания
• GPIO
• DMA
![Page 42: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/42.jpg)
STM32CubeMX: Конфигурация периферии
и библиотек 42
• Активация и управление
прерываниями NVIC
• Управление параметрами GPIO
• Управление DMA
• Конфигурация запросов в
DMA
• Рабочие параметры ПО
(адрес буфера, …) не
задаются
![Page 43: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/43.jpg)
STM32CubeMX: Настройка NVIC 43
• Управление всеми
прерываниями
• Работает сотировка
• Работает поиск
![Page 44: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/44.jpg)
STM32CubeMX: Настройка DMA 44
• Настраиваются все DMA
каналы в одном месте
• Сортировка по каналам
• Установка параметров
обмена по DMA
![Page 45: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/45.jpg)
STM32CubeMX: Панель настройки GPIO 45
• Большинство параметров
по умолчанию
устанавливаются в
правильное состояние
• Можно настроить время
нарастания фронтов
• Моржно изменять
параметры объединяя
пины группами
![Page 46: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/46.jpg)
STM32CubeMX: Генерация кода 46
• Генерация всех файлов в Си
• Автоматическая подстройка под
среды разработки (IDE)
• Пользовательский код может
быть добавлен в специальные
вставки и не пропадет при
повторной регенерации проекта
• Все библиотеки копируются в
папку проекта (опционально)
![Page 47: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/47.jpg)
STM32CubeMX: обновление библиотек 47
• Help -> Updater settings
• Можно устанавливать нахождение репозитория с
библиотеками
• Обновлять можно вручную и автоматически
• Поддерживает выход через прокси
• Help -> Install new libraries : управление
библиотеками
• Отметить мышкой нужные библиотеки
• Библиотеки бдут автоматом подкачаны и разархивированы
![Page 48: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/48.jpg)
STM32CubeMX: Настройки проекта 48
• Project -> Settings
• Задаем имя проекта и
расположение
• Папка с именем проекта будет
создана автоматически.
• Следует выбрать среду(Keil, IAR,
Atollic, SW4STM32)
• Можно выбрать определенную
версию библиотек...
![Page 49: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/49.jpg)
STM32CubeMX: генератор кода 49
• Опции генератора кода
• Копировать всю библиотеку или только
необходимое. Работать через репозиторий
• Сделать инициализацию в одном файле
stm32fYxx_hal_msp.c или для каждого модуля
создать свой файл
• Сохранять или не сохранять пользовательский
код
• Удалять или не удалять более не нужные файлы
проекта
• Неиспользуемые выводы переводить в
аналоговый режим(если SWD/JTAG не
активирован, эта опция отключит его)
• Включить «full assert» в проекте и код будет сам
себя тестировать на предмет некорректного
использования HAL
![Page 50: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/50.jpg)
STM32CubeMX: Настройка проекта 50
Копирование всех библиотек в проект
Project Driver
Folder CubeMX
repository
Копирование всех
драйверов из
репозитория
STM32CubeMX
Файлы охраняются в папке
Ваша_Папка_Проекта/Drivers/STM32XXXX_HAL_Driver folder
В проект подключаются только
используемые файлы
![Page 51: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/51.jpg)
STM32CubeMX: Настройка проекта 51
Копирование толко необходимых библиотек в проект
Project Driver
Folder
CubeMX
repository
Файлы только для
выбранной периферии
STM32CubeMX Сохраняются по пути
Ваша_Папка_Проекта/Drivers/STM32XXXX_HAL_Driver
![Page 52: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/52.jpg)
STM32CubeMX: Настройка проекта 52
Нет копирования файлов. Только ссылка в репозиторий
Ссылка
В файлах проекта нет папки с
драйверами
Папка
драйверов в
проекте
STM32CubeMX
репозиторий
![Page 53: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/53.jpg)
STM32CubeMX: Калькулятор потребления 53
• Настройка карты
потребления
контроллера
• Выбор батареи
• Создание графика
потребления
• Среднее потребление
• Средняя
производительность
ядра
• Время жизни от батареи
![Page 54: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/54.jpg)
STM32CubeMX: Документация 54
Документ Описание
UM1718: STM32CubeMX for STM32
configuration and initialization C code
generation
Описание как использовать
STM32CubeMX
RN0094: STM32CubeMX release 4.11.0 Все изменения в версиях
библиотек
![Page 55: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/55.jpg)
«Hello World»
Порты ввода - вывода
![Page 56: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/56.jpg)
STM32F7 DISCOVERY 56
Разъем Arduino UNO
Встроенный ST-LINK
V2-1
Микроконтроллер STM32F7
Электропитание через
USB или внешний
источник напряжения
USB FS
Ethernet 100
![Page 57: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/57.jpg)
Конфигурация GPIO
• Настраиваем тактирование
• Конфигурируем порт в/в
• Генерируем код
• Добавляем функцию HAL_Delay() и
HAL_GPIO_Toggle()
• Наблюдаем за миганием светодиода
57
![Page 58: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/58.jpg)
Настройка GPIO
• Создаем проект в STM32CubeMX
• Menu -> File -> New Project
• Выбираем контроллер STM32F746NGH6
• Конфигурируем порт GPIOI, вывод 1 (PI1)
58
![Page 59: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/59.jpg)
Настройка GPIO
• Включаем отладочный порт SWD/JTAG:
• Можно это сделать в дереве настройки портов в/в TAB -> Pinout ->SYS
• На отладочной плате выведен только SWD
• Если SWD/JTAG не активировать и выбрать Set all free pins as analog
(MENU -> Project -> Settings -> TAB -> Code Generator), процесс отладки
станет недоступен
59
![Page 60: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/60.jpg)
Конфигурация тактирования
• Открываем вкладку Clock Configuration
• На поле HCLK вводим желаемую частоту и мастер настраивает все
блоки (PLL, делители) автоматически
60
![Page 61: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/61.jpg)
Настройка GPIO • Заходим в закладку GPIO Configuration
TAB -> Configuration -> System -> GPIO
61
![Page 62: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/62.jpg)
Настройка GPIO
• GPIO(Pin) Configuration
• Выбираем Push Pull mode
• No pull-up или pull-down
• Скорость HIGH обычно важна в
режиме работы порта SPI,
USART
• Нажимаем OK
62
![Page 63: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/63.jpg)
Настройка GPIO • Максимальная скорость порта (maximum output speed)
• Влияет на наклон фронта при переключении порта из одного состояния в
другое
• Более высокая скорость GPIO увеличивает EMI и увеличивает
потребление STM32
• Поэтому не следует всем портам назначать максимальную скорость.
Т. е. мигание светодиодом с частотой 1Гц – это низкая скорость, но SPI на
45 МГц должен работать на максимальной скорости
63
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
GPIO output LOW speed GPIO output MEDIUM speed
GPIO output HIGH speed GPIO output FAST speed
![Page 64: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/64.jpg)
• Menu -> Project -> Settings…
• Назовите проект
• Выберите SW4STM32
• Нажмите «OK»
• Генерируем код
• Menu -> Project -> Generate Code
64 Генерация кода проекта
![Page 65: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/65.jpg)
Открываем System Workbench for STM32
• Открываем SW4STM32 (System workbench for STM32)
• Выбираем workspace path
• Удобнее всего генерировать код STM32CubeMX в ту же
папку, с которой работает программа
65
![Page 66: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/66.jpg)
Первый запуск Eclipse 66
• Закройте начальное приглашение
• После этого Project Explorer и Code Browser
появятся на экране
![Page 67: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/67.jpg)
Импорт проекта 67
• Menu -> File -> Import…
• Select Existing Project into
Workspace
• Next
![Page 68: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/68.jpg)
Пишем свой код в Eclipse Modify 68
• Сейчас проект из STM32CubeMX находится
в System Workbench
• Добавляем мигание светодиодом в main()
/* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ HAL_GPIO_TogglePin(GPIOI,GPIO_PIN_1); HAL_Delay(500); } /* USER CODE END 3 */
![Page 69: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/69.jpg)
Конфигурируем проект Eclipse 69
• Правой кнопкой мыши Project -> Properties
• Или нажимаем ALT+ENTER
![Page 70: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/70.jpg)
Свойства проекта в Eclipse 70
• В ветке “C/C++ Build”
• Выбираем “Settings”
• Настройки проекта как в Keil, IAR…
(включая оптимизацию и т д)
![Page 71: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/71.jpg)
Подготавливаем Eclipse Debug 71
• Открываем “Run/Debug
settings”
• Click “New…”
![Page 72: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/72.jpg)
Подготавливаем Eclipse Debug 72
• Выбираем “Ac6 STM32 Debugging”
• Нажимаем “OK”
![Page 73: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/73.jpg)
Подготавливаем Eclipse Debug 73
• Выбираем закладку Main
• Здесь можно выбрать ELF файл
• После этого мы может отлаживать
код, активировав отладку по F11
или через меню
![Page 74: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/74.jpg)
Eclipse Run Вebug 74
• Отлаживаем!
• Остановить Debug можно нажав на
красный квадрат
• Переключатель между режимами
«С» и «Debug»
![Page 75: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/75.jpg)
Конфигурация SPI
• Чтобы понять как исполдьзовать HAL для работы с
периферией так же активируем SPI
• Возвращаемся в CubeMX
• В классиеский режим Full Duplex
75
![Page 76: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/76.jpg)
Конфигурация SPI
• Конфигурируем
основные
параметры
76
![Page 77: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/77.jpg)
Конфигурация SPI
• Конфигурируем прерывания
• Активируем SPI прерывание
77
![Page 78: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/78.jpg)
Конфигурация SPI
• Конфигурируем DMA каналы
78
![Page 79: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/79.jpg)
Генерируем проект
• Меню Project Generate Code
• В System Workbench
• Правой кнопкой мыши по проекту
и выбираем “Refresh”
• Компилируем Ctrl + B
• Запускаем отладку
79
![Page 80: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/80.jpg)
Использование HAL
• Каждое прерывание, которые выбрано
создается в среде. И в каждом прерывании –
обработчик:
• Писать свой код в перрываниях не следует
• Достаточно пользоваться CallBack функциями
HAL
80
![Page 81: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/81.jpg)
Использование HAL
• Находим необходимую функцию в файле драйвера:
• И копируем в свой проект необходимый call back
81
![Page 82: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/82.jpg)
USB. Виртуальный COM-порт (CDC)
![Page 83: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/83.jpg)
Цели работы
• Необходимо создать приложение «Эхо»
• При подключении к USB-FSПК плата должна
обнаруживатьс как виртуальный ком-порт (CDC VCP)
• Изучить как подключиться к драйверу CDC из
приложения
83
![Page 84: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/84.jpg)
Что нам необходимо
• Потребуется установить любую программу-терминал
• Putty, kitty, hyper terminal или подобную
• CDC драйвер встроен в Windows, но, возможно
потребуется доустановить inf файл
• inf файл – в установщике STSW-STM32102 на st.com
• Потребуется micro-USB кабель
84
![Page 85: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/85.jpg)
Создаем проект?
• Мы будем использовать предыдущий проект
• Просто будем его донастраивать в STM32CubeMX и обновлять
в SW4STM32 (F5)
85
![Page 86: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/86.jpg)
Активируем USB FS
• В дереве Pinout открываем ветку USB_OTG_FS
• Выбираем режим Device_Only
• В закладке MiddleWares
• Активируем CDC VCP драйвер
86
![Page 87: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/87.jpg)
Конфигурируем тактирование
• Конфигурация тактирвоания
• Заходим в pinout
• Открываем ветку RCC («Reset and Clock Control»)
• Выводы на корпусе PH0 и PH1 должны окраситься в зеленый цвет
87
![Page 88: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/88.jpg)
Конфигурируем тактирование
• По умолчанию кварцевый резонатор на 25 МГц – как и на плате
Discovery
• Далее так же в HCLK вводим желаемую частоту и мастер делает
остальное
88
![Page 89: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/89.jpg)
Конфигурируем USB
• В закладке Configuration выбираем Connectivity USB_FS
• Выключаем VBUS sensing
• Нажимаем “OK”
89
![Page 90: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/90.jpg)
Генерируем проект
• МенюProjectGenerate Code
• В System Workbench
• Нажимаем правой кнопкой мыши по проекту
и выбираем “Refresh”
• Компилируем Ctrl+B
• Запускаем отладку
90
![Page 91: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/91.jpg)
Отладчик Eclipse
• Запускаем приложение
• Подключаем кабель micro-USB
• В ближний разъем к ST-LINK (USB
FS)
• Открываем диспетчер устройств
Windows
• В списке COM портов должен
появиться новый порт
91
![Page 92: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/92.jpg)
Добавляем нужный код
• Перезапускаем прием новых пакетов каждый раз при приеме
• Для этого открываем файл usb_cdc_if.c и редактируем функцию
CDC_Receive_FS
92
void CDC_Receive_FS (uint8_t* Buf, uint32_t *Len) { /* USER CODE BEGIN 6 */ USBD_CDC_ReceivePacket(hUsbDevice_0); return (USBD_OK);
/* USER CODE END 6 */ } … uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) { uint8_t result = USBD_OK; /* USER CODE BEGIN 7 */ USBD_CDC_SetTxBuffer(hUsbDevice_0, Buf, Len); result = USBD_CDC_TransmitPacket(hUsbDevice_0); /* USER CODE END 7 */ return result; }
![Page 93: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/93.jpg)
Добавляем нужный код 93
void CDC_Receive_FS (uint8_t* Buf, uint32_t *Len) { /* USER CODE BEGIN 6 */ USBD_CDC_CDC_Transmit_FS(Buf, *Len); ReceivePacket(hUsbDevice_0); return (USBD_OK);
/* USER CODE END 6 */ } … uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) { uint8_t result = USBD_OK; /* USER CODE BEGIN 7 */ USBD_CDC_SetTxBuffer(hUsbDevice_0, Buf, Len); result = USBD_CDC_TransmitPacket(hUsbDevice_0); /* USER CODE END 7 */ return result; }
• Сделаем приложение - эхо
• Продолжаем редактировать usb_cdc_if.c, добавляем функцию
USBD_CDC_CDC_Transmit_FS
![Page 94: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/94.jpg)
Проверка работоспособности
• Открываем терминальную программу
• Подключаемся к Виртуальному COM порту
• И передаем любой текст, на экране должно
появиться эхо этого текста
94
![Page 95: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/95.jpg)
Ethernet. Web-Server (lwIP)
![Page 96: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/96.jpg)
Цели проекта
• Ведь в репозитории находится пример lwIP/http – не проще
ли его взять за основу?:
• К сожалению пример не основан на STM32CubeMX
• Не понятно как сделать проект в STM32CubeMX
• В примере из репозитория простой HTTP сервер.
Зачастую HTTP во встраиваемых приложениях редко
актуален
96
![Page 97: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/97.jpg)
Возможности lwIP
• lwIP - популярный TCP/IP стек для микроконтроллеров:
• Оптимизирован под маленькие FLASH/RAM
• Оптимизирован под малую производительность контроллера
• Поддерживает RTOS
• В исходных кодах
• Бесплатный!
• Специальный API, опциональный Berkeley-like socket API
• Дополнения: HTTP, SNTP, SSL
97
![Page 98: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/98.jpg)
Основы lwIP/TCP 98
• FreeRTOS и lwIP
• Использовать или не использовать FreeRTOS?
• Что такое socket?
• Сколько сокетов может существовать на одном
соединении TCP?
• Несколько уровней доступа (API):
• Сокеты
• Netconn
• Буферизация
![Page 99: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/99.jpg)
Проект в STM32CubeMX 99
• Продолжаем редактировать наш
проект
• В периферийной ветке
• Активировать Eth в режим RMII
• В MiddleWares
• Активировать FreeRTOS
• Активировать lwIP
• Переходим в Clock configuration
![Page 100: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/100.jpg)
Конфигурируем тактирование
• Никаких изменений здесь делать не трубется, переходим в
Configuration
100
![Page 101: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/101.jpg)
Конфигурация Ethernet 101
• Конфигурируем Connectivity ETH
• Установить PHY адрес 0
• Активируем прерывание в NVIC
![Page 102: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/102.jpg)
Конфигурируем lwIP 102
• В поле Configuration Middlewares
нажимаем кнопку LWIP
• Будем подклчюать F7-DISCO напрямую
в Ethуктуе порт ПК. Но ПК не раздает IP
адреса, потому выключаем сервис
DHCP
• Устанавливаем вручную IP 192.168.0.10
• И subnet mask 255.255.255.0
![Page 103: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/103.jpg)
Конфигурация
FreeRTOS 103
• Увеличить кучу (heap) ОС
• Потому что lwIP будет использовать
кучу RTOS
• Создадим «задачу» для ETH
![Page 104: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/104.jpg)
Генерируем проект 104
• Генерируем проект
• В Eclipse обновляем проект
![Page 105: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/105.jpg)
Добавляем код 105
void StartTaskEth(void const * argument)
{
/* USER CODE BEGIN StartTaskEth */
struct netconn *conn, *newconn;
err_t err, accept_err;
/* Create a new TCP connection handle */
conn = netconn_new(NETCONN_TCP);
if (conn!= NULL)
{
/* Bind to port 80 (HTTP) with default IP address */
err = netconn_bind(conn, NULL, 80);
if (err == ERR_OK)
{
/* Put the connection into LISTEN state */
netconn_listen(conn);
• В нашу задачу ETH добавляем
код работы с TCP
• Файл freertos.c
• Очистить содержимое задачи и
добавить свое между
• /* USER CODE BEGIN
StartTaskEth */
• /* USER CODE END
StartTaskEth */
![Page 106: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/106.jpg)
Добавляем код 106
/* accept any icoming connection */
accept_err = netconn_accept(conn, &newconn);
if(accept_err == ERR_OK)
{
/* serve connection */
while (1)
{
netconn_write(newconn, (const unsigned
char*)("test\r\n"), (size_t)6, NETCONN_COPY);
vTaskDelay(1000);
}
}
}
}
/* USER CODE END StartTaskEth */
}
• Не забываем
подключить хидеры в
freertos.c
/* USER CODE BEGIN Includes */
#include "stm32f7xx_hal.h"
#include "lwip/opt.h"
#include "lwip/arch.h"
#include "lwip/api.h"
/* USER CODE END Includes */
![Page 107: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/107.jpg)
Тестирование 107
• Соедините плату с
компьютером проводом
Ethernet
• Запустите приложение
• Откройте установки
проводного сетевого
соединения:
• Введдите IP 192.168.0.1
• Нажмите ОК и немного
подождите (порядка минуты)
![Page 108: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/108.jpg)
Настраиваем терминал 108
• Открываем HyperTerminal (или любую
другую программу)
• Создаем новое соединение
• Выбераем TCP/IP (вместо COM порта)
• Задаем IP адрес
• 192.168.0.10
• 80
• OK
![Page 109: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/109.jpg)
Приложение ЭХО 109
• Создать такое приложение очень просто –
используем функцию приема:
• struct *inbuf;
• netconn_recv(conn, &inbuf);
![Page 110: Web семинар STM32CubeMX• «Hello World», создание и конфигурация проекта • USB. Виртуальный COM – порт (CDC) • Ethernet.](https://reader033.fdocuments.us/reader033/viewer/2022051809/601348f469d8ea7b601956fe/html5/thumbnails/110.jpg)
Спасибо за внимание!