Π Π°Π±ΠΎΡ‚Π° с ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ сСмСйства STM32 ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ слоТной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, особСнно Ссли Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ ΠΎΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Π΅ΠΌΡƒΡŽ элСктронику. Π—Π΄Π΅ΡΡŒ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ STM32CubeMX β€” графичСский инструмСнт ΠΎΡ‚ STMicroelectronics, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… устройств, Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ с распиновкой ΠΏΠ»Π°Ρ‚. Но ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот инструмСнт, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок ΠΈ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ?

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ STM32CubeMX ΠΎΡ‚ установки Π΄ΠΎ Ρ‚ΠΎΠ½ΠΊΠΎΠΉ настройки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ подходящий ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΡŽ (ΠΎΡ‚ GPIO Π΄ΠΎ USB), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² популярныС срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ β€” Keil, IAR ΠΈΠ»ΠΈ STM32CubeIDE. ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΠΌ скрытым настройкам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π΄ΠΊΠΎ ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ часы ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ STM32CubeMX ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½?

STM32CubeMX β€” это Π½Π΅ просто ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°, Π° ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ графичСский ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ нСсколько ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡:

  • πŸ”§ Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Π°Ρ настройка ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΈ: вмСсто Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ написания рСгистровых настроСк Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌ интСрфСйсом, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π½ΠΎΠΆΠΊΡƒ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ UART, SPI, ADC ΠΈΠ»ΠΈ GPIO Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ ΠΏΠ°Ρ€ΠΎΠΉ ΠΊΠ»ΠΈΠΊΠΎΠ².
  • πŸ“‘ АвтоматичСская гСнСрация ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°: инструмСнт создаёт Ρ„Π°ΠΉΠ»Ρ‹ main.c, stm32fxxx_hal_conf.h ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, ΡƒΠΆΠ΅ настроСнныС ΠΏΠΎΠ΄ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ Ρ‡ΠΈΠΏ ΠΈ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΡŽ.
  • πŸ”„ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° всСх сСмСйств STM32: ΠΎΡ‚ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚Π½Ρ‹Ρ… STM32F0 Π΄ΠΎ ΠΌΠΎΡ‰Π½Ρ‹Ρ… STM32H7 с ядрами Cortex-M7.
  • πŸ› οΈ Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с популярными IDE: экспорт ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π² Keil MDK, IAR Embedded Workbench, STM32CubeIDE, Π° Ρ‚Π°ΠΊΠΆΠ΅ гСнСрация Makefile для Ρ€ΡƒΡ‡Π½ΠΎΠΉ сборки.

Π“Π»Π°Π²Π½ΠΎΠ΅ прСимущСство STM32CubeMX ΠΏΠ΅Ρ€Π΅Π΄ Ρ€ΡƒΡ‡Π½ΠΎΠΉ настройкой β€” минимизация ошибок. НапримСр, ΠΏΡ€ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ тактирования систСма автоматичСски провСряСт ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ частот ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Ρ‹Π±ΠΎΡ€ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ Ρ€Π°Π·ΠΎΠ³Π½Π°Ρ‚ΡŒ STM32F103 Π΄ΠΎ 100 ΠœΠ“Ρ† ΠΏΡ€ΠΈ ΠΏΠΈΡ‚Π°Π½ΠΈΠΈ 3.3Π’). Однако инструмСнт Π½Π΅ Π»ΠΈΡˆΡ‘Π½ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠ°ΠΌΠ½Π΅ΠΉ: нСвСрная настройка Clock Configuration ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ устройства, Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΈΠ½ΠΎΠ² β€” ΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°ΠΌ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΈ.

πŸ“Š Какой IDE Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ для STM32?
  • STM32CubeIDE
  • Keil MDK
  • IAR Embedded Workbench
  • PlatformIO
  • Другая

Установка ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ запуск STM32CubeMX

ΠŸΠ΅Ρ€Π΅Π΄ установкой ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ваш ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ соотвСтствуСт ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ трСбованиям:

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ трСбованияРСкомСндуСмыС
ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСмаWindows 7/10/11, Linux, macOSWindows 10/11 (64-bit)
ΠžΠ—Π£2 Π“Π‘4 Π“Π‘ ΠΈ Π±ΠΎΠ»Π΅Π΅
Π‘Π²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ мСсто Π½Π° дискС500 ΠœΠ‘1 Π“Π‘ (с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для всСх сСмСйств)
JavaJRE 8 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅OpenJDK 11+

Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ STM32CubeMX с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта STMicroelectronics (Ρ€Π°Π·Π΄Π΅Π» Tools & Software β†’ Development Tools β†’ STM32CubeMX). УстановитС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, слСдуя мастСру установки. ПослС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ запуска:

  1. ΠŸΡ€ΠΈΠΌΠΈΡ‚Π΅ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½ΠΎΠ΅ соглашСниС.
  2. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ для хранСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ это C:\Users\<Имя>\STM32Cube\Repository).
  3. ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ для сСмСйств ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· Help β†’ Manage embedded software packages.
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ ΠΏΠΎΠ΄ Linux, запускайтС STM32CubeMX Ρ‡Π΅Ρ€Π΅Π· скрипт SetupSTM32CubeMX-<вСрсия>.linux с ΠΏΡ€Π°Π²Π°ΠΌΠΈ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (sudo). Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с доступом ΠΊ USB-ΠΏΠΎΡ€Ρ‚Π°ΠΌ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°ΠΌΠΈ.

Π’Ρ‹Π±ΠΎΡ€ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ΠΈ базовая конфигурация

ΠŸΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (File β†’ New Project) вас встрСтит ΠΎΠΊΠ½ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡ΠΈΠΏΡ‹ ΠΏΠΎ нСскольким критСриям:

  • πŸ” БСмСйство: STM32F0, STM32F1, STM32F4, STM32H7 ΠΈ Π΄Ρ€.
  • πŸ“¦ ΠšΠΎΡ€ΠΏΡƒΡ: LQFP-48, BGA-176, WLCSP-36.
  • πŸ”Œ ΠŸΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΡ: Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ USB, Ethernet, CAN, ADC с Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒΡŽ 12/16 Π±ΠΈΡ‚.
  • πŸ’‘ ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ: ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° DSP, FPU, TrustZone.

ПослС Π²Ρ‹Π±ΠΎΡ€Π° Ρ‡ΠΈΠΏΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, STM32F407G-DISC1 для ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ‹ Discovery) откроСтся Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Π—Π΄Π΅ΡΡŒ Π²Π°ΠΆΠ½ΠΎ:

  1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Pinout & Configuration Π½Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΈ (красныС Π²ΠΎΡΠΊΠ»ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π½Π°ΠΊΠΈ Ρƒ ΠΏΠΈΠ½ΠΎΠ²).
  2. ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Clock Configuration (Ρ‚Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) β€” это ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ для ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ UART, SPI ΠΈ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ².
  3. ΠΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Middleware (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, FreeRTOS ΠΈΠ»ΠΈ FatFS).

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ тактирования: ΠΈΠ·Π±Π΅Π³Π°Π΅ΠΌ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок

ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ настройка Clock Configuration β€” ΠΎΠ΄Π½Π° ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ STM32. НапримСр, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Ρ‚Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ STM32F103 ΠΎΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° HSI (8 ΠœΠ“Ρ†) с коэффициСнтом умноТСния x9 (72 ΠœΠ“Ρ†) ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ сбоям, Ссли Π½Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ PLL ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. Рассмотрим ΠΏΠΎΡˆΠ°Π³ΠΎΠ²ΡƒΡŽ настройку для STM32F407:

  1. Π’ΠΊΠ»Π°Π΄ΠΊΠ° Clock Configuration β†’ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ источник Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠ³ΠΎ сигнала: HSE (8 ΠœΠ“Ρ†) (внСшний ΠΊΠ²Π°Ρ€Ρ†) ΠΈΠ»ΠΈ HSI (16 ΠœΠ“Ρ†) (Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ).
  2. НастройтС PLL:
    PLL Source: HSE
    

    PLLM (Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ): 8 (для HSE 8 ΠœΠ“Ρ† β†’ 1 ΠœΠ“Ρ†)

    PLLN (ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒ): 336 (β†’ 336 ΠœΠ“Ρ†)

    PLLP (Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ для систСмной ΡˆΠΈΠ½Ρ‹): 2 (β†’ 168 ΠœΠ“Ρ†)

  3. УстановитС Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ для шин: AHB Prescaler: /1 (168 ΠœΠ“Ρ†), APB1 Prescaler: /4 (42 ΠœΠ“Ρ†), APB2 Prescaler: /2 (84 ΠœΠ“Ρ†).

ПослС примСнСния настроСк STM32CubeMX ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Ссли Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ частоты ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‡ΠΈΠΏΠ°. НапримСр, для STM32F4 максимальная частота AHB β€” 168 ΠœΠ“Ρ†, Π° APB1 β€” 42 ΠœΠ“Ρ†.

πŸ’‘

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ внСшний ΠΊΠ²Π°Ρ€Ρ† (HSE), ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° ΠΏΠ»Π°Ρ‚Π΅ установлСны ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ кондСнсаторы Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ 12–22 ΠΏΠ€). Π˜Ρ… отсутствиС ΠΈΠ»ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠΈΠ½Π°Π» ΠΏΡ€ΠΈΠ²Π΅Π΄ΡƒΡ‚ ΠΊ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠ³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

Настройка ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΈ: ΠΎΡ‚ GPIO Π΄ΠΎ USB

Рассмотрим ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ вострСбованных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ:

1. GPIO (General Purpose Input/Output)

  • πŸ”Œ ΠΠ°Π·Π½Π°Ρ‡ΡŒΡ‚Π΅ ΠΏΠΈΠ½ ΠΊΠ°ΠΊ Input, Output, Alternate Function ΠΈΠ»ΠΈ Analog.
  • πŸ”„ Для Output Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ€Π΅ΠΆΠΈΠΌ: Push-Pull (стандартный), Open-Drain (для ΡˆΠΈΠ½Ρ‹ I2C) ΠΈΠ»ΠΈ Pull-Up/Pull-Down.
  • ⚑ УстановитС ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ: Low, Medium, High ΠΈΠ»ΠΈ Very High (влияСт Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΡˆΡƒΠΌΠΎΠ²).

2. UART (Асинхронный ΠΏΡ€ΠΈΡ‘ΠΌΠΎΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚Ρ‡ΠΈΠΊ)

  • πŸ“‘ Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ€Π΅ΠΆΠΈΠΌ: Asynchronous, Synchronous ΠΈΠ»ΠΈ Single-Wire.
  • βš™οΈ НастройтС ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ (baud rate), количСство стоп-Π±ΠΈΡ‚ΠΎΠ² ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ чётности.
  • πŸ”„ АктивируйтС прСрывания ΠΏΠΎ ΠΏΡ€ΠΈΡ‘ΠΌΡƒ (RXNE) ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ (TC).

3. SPI (ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹ΠΉ интСрфСйс)

  • πŸ”„ Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ€Π΅ΠΆΠΈΠΌ: Master ΠΈΠ»ΠΈ Slave.
  • πŸ“ НастройтС Π΄Π»ΠΈΠ½Ρƒ слова (8 ΠΈΠ»ΠΈ 16 Π±ΠΈΡ‚), порядок Π±ΠΈΡ‚ (MSB First ΠΈΠ»ΠΈ LSB First).
  • ⚑ УстановитС Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΡƒΡŽ частоту (Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΠΉΡ‚Π΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½ΠΎΠ³ΠΎ устройства!).
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ настройкС SPI Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Master ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ частота SCK Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ для Π²Π΅Π΄ΠΎΠΌΠΎΠ³ΠΎ устройства. НапримСр, Π΄Π°Ρ‚Ρ‡ΠΈΠΊ MPU6050 ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ максимум 1 ΠœΠ“Ρ†, Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ 10 ΠœΠ“Ρ† ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ошибкам чтСния Π΄Π°Π½Π½Ρ‹Ρ….
Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΈ?

Π’ΠΊΠ»Π°Π΄ΠΊΠ° Pinout & Configuration ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ красныС Π²ΠΎΡΠΊΠ»ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π½Π°ΠΊΠΈ рядом с ΠΏΠΈΠ½Π°ΠΌΠΈ, Ссли:

- Один ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΠΈΠ½ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ ΠΏΠΎΠ΄ Π΄Π²Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, USART2_TX ΠΈ SPI1_MOSI).

- ΠŸΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ ΠΏΠΈΠ½ настроСн ΠΊΠ°ΠΊ GPIO.

- Π’Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ модуля ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, USART1 Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Ссли Π½Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½ USART1 Clock Π² Clock Configuration).

ГСнСрация ΠΊΠΎΠ΄Π° ΠΈ экспорт Π² IDE

ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Project β†’ Generate Code. Π—Π΄Π΅ΡΡŒ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅:

  • πŸ“ Toolchain/IDE: STM32CubeIDE, Keil MDK-ARM, IAR EWARM ΠΈΠ»ΠΈ Makefile.
  • πŸ”§ Generate Under Root: создаёт ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ (рСкомСндуСтся для избСТания ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹).
  • πŸ“ Copy only the necessary library files: ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, копируя Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Для STM32CubeIDE процСсс максимально прост: послС Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (.project) Ρ‡Π΅Ρ€Π΅Π· File β†’ Open Projects from File System. Π’ Keil ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ .uvprojx, Π° Π² IAR β€” .eww.

Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚:

  • πŸ“„ main.c β€” Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° с ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ HAL-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.
  • πŸ“„ stm32fxxx_hal_msp.c β€” конфигурация Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΈ (Ρ‚Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, GPIO).
  • πŸ“„ stm32fxxx_it.c β€” ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ.
πŸ’‘

ВсСгда провСряйтС Ρ„Π°ΠΉΠ» stm32fxxx_hal_conf.h послС Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°. Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, #define HAL_I2C_MODULE_DISABLED), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ ΠΈ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ.

ΠžΡ‚Π»Π°Π΄ΠΊΠ° ΠΈ оптимизация ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π”Π°ΠΆΠ΅ послС Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Π² STM32CubeMX ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Рассмотрим Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ сцСнарии ΠΈ ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

1. ΠœΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π½Π΅ запускаСтся

  • πŸ”‹ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅: STM32 Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ напряТСния (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ 3.3Π’ ΠΈΠ»ΠΈ 5Π’ Π² зависимости ΠΎΡ‚ ΠΌΠΎΠ΄Π΅Π»ΠΈ).
  • ⚑ Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ настроСно ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ (см. Ρ€Π°Π·Π΄Π΅Π» Π²Ρ‹ΡˆΠ΅).
  • πŸ”Œ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ соСдинСниС BOOT0 (Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π² 0 для запуска с Flash).

2. ΠŸΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΡ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

  • πŸ“‘ Для UART: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ TX/RX ΠΈ настройки скорости (baud rate).
  • πŸ”„ Для SPI: ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Π΅Π΄ΠΎΠΌΠΎΠ΅ устройство ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Π½Π½ΡƒΡŽ частоту ΠΈ Ρ€Π΅ΠΆΠΈΠΌ (CPOL/CPHA).
  • πŸ’‘ Для ADC: настройтС врСмя Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ (Sampling Time) β€” слишком ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ Π½Π΅Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ показаниям.

3. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π΅ компилируСтся

  • πŸ“‚ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡƒΡ‚ΠΈ ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ Π² настройках IDE (особСнно Ссли пСрСносили ΠΏΡ€ΠΎΠ΅ΠΊΡ‚).
  • πŸ”§ ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ STM32Cube Ρ‡Π΅Ρ€Π΅Π· Help β†’ Manage embedded software packages.
  • πŸ“ Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² main.c Π½Π΅Ρ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ…ΡΡ HAL_UART_MspInit).

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

  • πŸ› οΈ ST-Link (встроСнный Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚) ΠΈΠ»ΠΈ J-Link.
  • πŸ“Š printf Ρ‡Π΅Ρ€Π΅Π· UART (настройтС Retarget Π² Keil).
  • πŸ” Logic Analyzer для Π°Π½Π°Π»ΠΈΠ·Π° сигналов SPI/I2C.

FAQ: ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° частыС вопросы

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ STM32CubeMX для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ?

НСт, STM32CubeMX Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ сСмСйства STM32 ΠΎΡ‚ STMicroelectronics. Для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‡ΠΈΠΏΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, NXP ΠΈΠ»ΠΈ Microchip) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ инструмСнты: MCUXpresso Config Tools ΠΈΠ»ΠΈ MPLAB Code Configurator.

Как пСрСнСсти ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠ· STM32CubeMX Π² PlatformIO?

ЭкспортируйтС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Makefile, Π·Π°Ρ‚Π΅ΠΌ:

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² PlatformIO для вашСй ΠΏΠ»Π°Ρ‚Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, stm32f407g-disc1).
  2. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ сгСнСрированныС Ρ„Π°ΠΉΠ»Ρ‹ (Src/, Inc/, Drivers/) Π² ΠΏΠ°ΠΏΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  3. НастройтС platformio.ini, ΡƒΠΊΠ°Π·Π°Π² Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ stm32cube.
ΠŸΠΎΡ‡Π΅ΠΌΡƒ послС Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Π² Keil ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π΅ компилируСтся?

ЧастыС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹:

  • НС Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ памяти Π² Ρ‡ΠΈΠΏΠ΅ (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ .map-Ρ„Π°ΠΉΠ»).
  • ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ вСрсий Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ STM32CubeMX ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹).
  • ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Include Paths Π² настройках ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°).
Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ FreeRTOS Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‡Π΅Ρ€Π΅Π· STM32CubeMX?

АктивируйтС FreeRTOS Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Middleware:

  1. Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ Π²Π΅Ρ€ΡΠΈΡŽ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ послСднюю ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΡƒΡŽ).
  2. НастройтС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ядра: Ρ€Π°Π·ΠΌΠ΅Ρ€ стСка, ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹ Π·Π°Π΄Π°Ρ‡, Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹.
  3. Π’ Project Manager ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π³Π°Π»ΠΎΡ‡ΠΊΠ° Generate FreeRTOS Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π°.

ПослС Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Π² main.c появятся ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ создания Π·Π°Π΄Π°Ρ‡.

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ STM32CubeMX Π±Π΅Π· Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°?

Π”Π°! Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΠΎΠ΄ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ:

  • Для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ распиновки ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ².
  • Для расчёта тактирования ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ частот.
  • Для экспорта ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ .ioc, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅.