Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° встраиваСмых систСм Π½Π° Π±Π°Π·Π΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² STM32 Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ знания Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ARM Cortex-M, Π½ΠΎ ΠΈ владСния спСциализированными инструмСнтами. STM32 CubeIDE β€” ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ интСгрированная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΡ‚ STMicroelectronics, которая ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Π² сСбС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° STM32CubeMX, компилятор GCC, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ GDB ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ инструмСнты Π°Π½Π°Π»ΠΈΠ·Π°. Π­Ρ‚Π° IDE стала стандартом Π΄Π΅-Ρ„Π°ΠΊΡ‚ΠΎ для профСссионалов, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… с сСмСйством STM32, благодаря Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ возмоТностями Ρ‡ΠΈΠΏΠΎΠ² ΠΈ ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ HAL/LL.

Однако ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с трудностями ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ знакомствС: ΠΎΡ‚ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Ρ… настроСк ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΄ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ Ρ‡Π΅Ρ€Π΅Π· ST-Link ΠΈΠ»ΠΈ J-Link. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΠΈΡ‡ΠΈ CubeIDE, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π°Ρ… Π²Ρ€ΠΎΠ΄Π΅ Keil ΠΈΠ»ΠΈ IAR, β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° для ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΈ с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² тактирования ΠΈΠ»ΠΈ встроСнный Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ энСргопотрСблСния. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок ΠΏΡ€ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ частоты, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠ½ΠΎΠ³Π΄Π° «подвисаСт» ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, ΠΈ ΠΊΠ°ΠΊ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° 30% Π·Π° счёт ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… настроСк Makefile.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ STM32 CubeIDE ΠΈ Ρ‡Π΅ΠΌ ΠΎΠ½Π° Π»ΡƒΡ‡ΡˆΠ΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²

STM32 CubeIDE β€” это Π½Π΅ просто ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° для написания ΠΊΠΎΠ΄Π°, Π° ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ STM32. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… срСд Π²Ρ€ΠΎΠ΄Π΅ VS Code с ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ ΠΈΠ»ΠΈ Eclipse, CubeIDE ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»Π°ΡΡŒ с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ спСцифики STM32:

  • πŸ”§ Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ STM32CubeMX: Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Π°Ρ настройка ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΈ (Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹, ADC, DMA ΠΈ Π΄Ρ€.) с Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΊΠΎΠ΄Π° для HAL/LL Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.
  • πŸ“‘ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° всСх сСмСйств STM32: ΠΎΡ‚ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚Π½Ρ‹Ρ… STM32F0 Π΄ΠΎ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… STM32H7 с FPU ΠΈ кэшСм.
  • 🐞 ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ SWO: Π²Ρ‹Π²ΠΎΠ΄ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Ρ… сообщСний Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ (Π±Π΅Π· UART), Ρ‡Ρ‚ΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ для устройств с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌΠΈ.
  • ⚑ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ‚ΡƒΠ»Ρ‡Π΅ΠΉΠ½: компилятор GCC с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ настроСнными Ρ„Π»Π°Π³Π°ΠΌΠΈ для STM32, Ρ‡Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ Π½Π° 10–15% мСньший Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Keil.

Π“Π»Π°Π²Π½ΠΎΠ΅ прСимущСство CubeIDE ΠΏΠ΅Ρ€Π΅Π΄ Keil MDK ΠΈΠ»ΠΈ IAR Embedded Workbench β€” Π±Π΅ΡΠΏΠ»Π°Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ отсутствиС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ ΠΊΠΎΠ΄Π°. Однако Ρƒ Π½Π΅Ρ‘ Π΅ΡΡ‚ΡŒ ΠΈ нСдостатки: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±ΠΎΠ»Π΅Π΅ мСдлСнная индСксация ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² (100+ Ρ„Π°ΠΉΠ»ΠΎΠ²) ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ интСрфСйс для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с RTOS (ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с TrueSTUDIO, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ CubeIDE Π·Π°ΠΌΠ΅Π½ΠΈΠ»Π°).

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ· STM32CubeMX вСрсии ΡΡ‚Π°Ρ€ΡˆΠ΅ 6.0 Π² CubeIDE 1.13+ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ошибки Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° для ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΈ ETH ΠΈ USB. ΠŸΠ΅Ρ€Π΅Π΄ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ CubeMX Π΄ΠΎ послСднСй вСрсии ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ "Force regenerate" Π² настройках ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Установка STM32 CubeIDE: пошаговая инструкция для Windows, Linux ΠΈ macOS

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ CubeIDE ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Ρ€ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π½ΠΎ процСсс установки отличаСтся. На Windows достаточно ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ инсталлятор с сайта STMicroelectronics ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ мастСру, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π½Π° Linux ΠΈ macOS потрСбуСтся ручная настройка ΠΏΡ€Π°Π² доступа ΠΊ USB-устройствам (для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°ΠΌΠΈ).

Для Windows 10/11:

  1. Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ инсталлятор с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта (вСрсия Π½Π΅ Π½ΠΈΠΆΠ΅ 1.13.0).
  2. ЗапуститС установщик с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹:
    • βœ… STM32CubeIDE (ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ)
    • βœ… STM32CubeMX (интСгрированная вСрсия)
    • βœ… Π”Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ для ST-Link (Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ST)
  • ПослС установки Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ‚ΡƒΠ»Ρ‡Π΅ΠΉΠ½Ρƒ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния PATH:
    C:\ST\STM32CubeIDE_1.13.0\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.0.0.202309121326\tools\bin
  • Для Linux (Ubuntu/Debian):

    • УстановитС зависимости:
      sudo apt install libncurses5 libudev1
    • РаспакуйтС Π°Ρ€Ρ…ΠΈΠ² с CubeIDE Π² /opt/ ΠΈ Π½Π°Π·Π½Π°Ρ‡ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²Π°:
      sudo chmod +x /opt/STM32CubeIDE_1.13.0/stm32cubeide
    • Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ для доступа ΠΊ ST-Link:
      sudo usermod -a -G plugdev $USER
      

      sudo cp /opt/STM32CubeIDE_1.13.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.linux64_2.0.0.202309121326/resources/rules/99-stlink-v*.rules /etc/udev/rules.d/

      sudo udevadm control --reload-rules

    πŸ“Š ΠšΠ°ΠΊΡƒΡŽ ОБ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° STM32?
    • Windows
    • Linux
    • macOS
    • Π”Ρ€ΡƒΠ³ΡƒΡŽ

    Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°: ΠΎΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ тактирования Π΄ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°

    Начнём с самого ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎΠ³ΠΎ этапа β€” настройки Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ частоты. Ошибки здСсь ΠΏΡ€ΠΈΠ²Π΅Π΄ΡƒΡ‚ ΠΊ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, USART Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ с искаТСниями). Π’ CubeIDE этот процСсс максимально Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ понимания Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ².

    Π¨Π°Π³ΠΈ для создания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с нуля:

    1. ЗапуститС CubeIDE ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ File β†’ New β†’ STM32 Project.
    2. Π’ ΠΎΠΊΠ½Π΅ Target Selection ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ модСль МК (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, STM32F407G-DISC1* для ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ‹ STM32F4 Discovery).
    3. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Pinout & Configuration:
      • πŸ•’ НастройтС Clock Configuration: Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ источник тактирования (HSI, HSE, PLL) ΠΈ Ρ†Π΅Π»Π΅Π²ΡƒΡŽ частоту (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 84 ΠœΠ“Ρ† для STM32F4).
      • βš™οΈ АктивируйтС ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, USART2 Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Asynchronous).
      • πŸ”Œ ΠΠ°Π·Π½Π°Ρ‡ΡŒΡ‚Π΅ ΠΏΠΈΠ½Ρ‹ Π½Π° схСмС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PA2 для USART2_TX).
  • Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ΄ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ GENERATE CODE.
  • ПослС Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ„Π°ΠΉΠ»Ρ‹:

    • main.c β€” Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° с ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ HAL.
    • stm32f4xx_hal_conf.h β€” конфигурация Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ HAL.
    • STM32F407G-DISC1.ioc β€” Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° CubeMX (ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для рСдактирования).

    Π£Π±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ частота PLL Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ максимум для ядра (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 180 ΠœΠ“Ρ† для STM32H7)|ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΈΠ½Ρ‹ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΈ Π½Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‚ с JTAG/SWD|Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ -O2 Π² настройках компилятора|ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π² CubeMX для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ-->

    ⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если послС Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Π² Ρ„Π°ΠΉΠ»Π΅ main.c отсутствуСт Π²Ρ‹Π·ΠΎΠ² HAL_Init(), ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π΅ скомпилируСтся. Π­Ρ‚ΠΎ Π±Π°Π³ CubeIDE 1.12–1.13, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ исправляСтся Ρ€ΡƒΡ‡Π½Ρ‹ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ строки ΠΏΠ΅Ρ€Π΅Π΄ SystemClock_Config().

    CubeIDE ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Ρ€ΠΈ основных способа ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ:

    ΠœΠ΅Ρ‚ΠΎΠ΄ ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° НСдостатки ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ устройства
    ST-Link ВстроСн Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚ ST, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Π°Ρ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ (Π΄ΠΎ 4 ΠœΠ“Ρ†), Π½Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ трассировки STM32F0/F1/F3/F4/F7/H7/G0/G4
    J-Link (SEGGER) Высокая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ (Π΄ΠΎ 12 ΠœΠ“Ρ†), ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° RTT ΠΈ SWO ΠŸΠ»Π°Ρ‚Π½ΠΎΠ΅ ПО для коммСрчСского использования ВсС STM32, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ARM Cortex-M
    OpenOCD ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ исходный ΠΊΠΎΠ΄, гибкая настройка Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ со ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π›ΡŽΠ±Ρ‹Π΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΈ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ CMSIS-DAP

    Для настройки ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Ρ‡Π΅Ρ€Π΅Π· ST-Link:

    1. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΊ ΠΏΠ»Π°Ρ‚Π΅ ΠΈ ПК.
    2. Π’ CubeIDE Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Run β†’ Debug Configurations.
    3. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Ρ‚ΠΈΠΏΠ° STM32 Cortex-M C/C++ Application.
    4. Π’ΠΊΠ»Π°Π΄ΠΊΠ° Debugger:
      • Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ST-Link (OpenOCD) ΠΈΠ»ΠΈ ST-Link (ST-Link GDB Server).
      • Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΏΠΎΡ€Ρ‚ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ 3333 для OpenOCD).
      • Π’ ΠΏΠΎΠ»Π΅ Config options Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ -f interface/stlink.cfg -f target/stm32f4x.cfg (Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ f4x Π½Π° Π²Π°ΡˆΡƒ ΡΠ΅Ρ€ΠΈΡŽ).
    πŸ’‘

    Если ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ МК, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρƒ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ NRST ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ monitor reset halt Π² консоли GDB.

    ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°: ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ ΠΈ ускорСниС компиляции

    По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ CubeIDE Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ с консСрвативными настройками компилятора, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Β«Ρ€Π°Π·Π΄ΡƒΡ‚ΠΎΠΉΒ» ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ΅. НапримСр, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ для STM32F103 с Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ USART ΠΈ GPIO ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π΄ΠΎ 30 ΠšΠ‘ Flash, хотя Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ достаточно 8–12 ΠšΠ‘. Π’ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ способы ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ:

    1. Настройки компилятора:

    • πŸ”Ή Π’ Project Properties β†’ C/C++ Build β†’ Settings β†’ Tool Settings β†’ MC Settings установитС:
      • ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ: -Os (оптимизация ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ) вмСсто -O0.
      • Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ: -g2 вмСсто -g3.
      • Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ„Π»Π°Π³ -ffunction-sections -fdata-sections ΠΈ --gc-sections Π² Π»ΠΈΠ½ΠΊΠ΅Ρ€.
    • πŸ”Ή ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ HAL Π² CubeMX (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ I2C, снимитС Π³Π°Π»ΠΎΡ‡ΠΊΡƒ Π² Middleware).

    2. Π—Π°ΠΌΠ΅Π½Π° HAL Π½Π° LL (Low Layer):

    Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° HAL добавляСт Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π½Π° Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ. Для ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… ΠΊ скорости участков (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ LL-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°ΠΌΠ΅Π½Ρ‹:

    // HAL (ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Π½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅)
    

    HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);

    // LL (быстрСС, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ контроля)

    LL_GPIO_TogglePin(GPIOA, LL_GPIO_PIN_5);

    πŸ’‘

    ИспользованиС LL вмСсто HAL ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя выполнСния ΠΊΠΎΠ΄Π° Π½Π° 20–40%, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ понимания рСгистров ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΈ.

    Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

    Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ Π² CubeIDE. Π’ΠΎΡ‚ самыС распространённыС ΠΈ способы ΠΈΡ… устранСния:

    • 🚨 "No ST-Link detected":
      • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° (ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ питания Π΄ΠΎΠ»ΠΆΠ΅Π½ Π³ΠΎΡ€Π΅Ρ‚ΡŒ).
      • ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ Ρ‡Π΅Ρ€Π΅Π· STSW-LINK009 (ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ΠΎΡ‚ ST).
      • Для Linux: ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ plugdev.
    • 🚨 "HardFault Handler" ΠΏΡ€ΠΈ стартС:
      • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ тактирования (частая ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° β€” нСвСрная настройка PLL).
      • ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ (-O0) для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.
      • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Registers View Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅ для Π°Π½Π°Π»ΠΈΠ·Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ HFSR, CFSR.
    • 🚨 "Flash download failed":
      • Π£ΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚Π΅ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ программирования Π² настройках ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с 4000 ΠΊΠ“Ρ† Π΄ΠΎ 1800 ΠΊΠ“Ρ†).
      • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Π½Π΅ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π° Π»ΠΈ Flash ΠΎΡ‚ записи (Π±ΠΈΡ‚Ρ‹ WRPR Π² Option Bytes).
    Как Π΄ΠΈΠ°Π³Π½ΠΎΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ HardFault

    1. Π’ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅ посмотритС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ рСгистра SCB->HFSR. Если Π±ΠΈΡ‚ FORCED установлСн, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ€ΡƒΡ‡Π½ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ NVIC_SystemReset().

    2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ SCB->CFSR:

    - Π‘ΠΈΡ‚ DACCVIOL β€” ошибка доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ.

    - Π‘ΠΈΡ‚ UNSTKERR β€” ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка.

    3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ arm-none-eabi-objdump -d -S ваш_elf.elf для Π°Π½Π°Π»ΠΈΠ·Π° дизассСмблированного ΠΊΠΎΠ΄Π° Π² мСстС ΠΊΡ€Π°Ρ…Π°.

    ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ Ρ„ΠΈΡ‡ΠΈ: Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ энСргопотрСблСния, RTOS ΠΈ трассировка SWO

    CubeIDE Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ инструмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅, Π½ΠΎ ΠΎΠ½ΠΈ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ Π²Π°ΠΆΠ½Ρ‹ для ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²:

    1. Анализатор энСргопотрСблСния (Power Consumption Calculator):

    • πŸ“Š ДоступСн Π² CubeMX (Π²ΠΊΠ»Π°Π΄ΠΊΠ° Power Consumption).
    • ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠΊ потрСблСния Π² Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… Run, Sleep, Stop с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΈ.
    • πŸ”Ή ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Для STM32L4 с Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ LPUART ΠΈ RTC Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Stop 2 Ρ‚ΠΎΠΊ составит ~3 мкА.

    2. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с FreeRTOS:

    • πŸ› οΈ Π’ CubeMX Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Middleware β†’ FreeRTOS ΠΈ настройтС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ (Ρ€Π°Π·ΠΌΠ΅Ρ€ стСка, ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹ Π·Π°Π΄Π°Ρ‡).
    • πŸ”Ή Π’Π°ΠΆΠ½ΠΎ: Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с STM32H7 Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ "Use Newlib nano" Π² настройках Π»ΠΈΠ½ΠΊΠ΅Ρ€Π°.
    • πŸ“Œ Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ»Π°Π³ΠΈΠ½ FreeRTOS Thread Awareness (установитС Ρ‡Π΅Ρ€Π΅Π· Help β†’ STM32Cube Extension Manager).

    3. Врассировка Ρ‡Π΅Ρ€Π΅Π· SWO:

    • πŸ“‘ Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ SWO (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ST-Link V3 ΠΈΠ»ΠΈ J-Link).
    • πŸ”§ Настройка:
      // Π’ main.c
      

      #include "core_cm4.h" // или core_cm7.h для STM32H7

      void ITM_SendChar(uint8_t ch) {

      ITM->PORT[0].u8 = ch;

      while (ITM->PORT[0].u8 == ch);

      }

    • πŸ–₯️ Для просмотра Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ STM32CubeMonitor ΠΈΠ»ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ SWO Viewer Π² CubeIDE.

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

    МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ CubeIDE для STM8?

    НСт, CubeIDE ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ Π½Π° Π±Π°Π·Π΅ ARM Cortex-M (STM32). Для STM8 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ STM8CubeIDE ΠΈΠ»ΠΈ IAR for STM8.

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

    Π˜ΠΌΠΏΠΎΡ€Ρ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π½Π΅ поддСрТиваСтся, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ:

    1. Π­ΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΈΠ· Keil Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ .c/.h.
    2. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² CubeIDE ΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исходники.
    3. ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Makefile для совмСстимости с GCC (Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈ компилятора Keil Π½Π° Π°Π½Π°Π»ΠΎΠ³ΠΈ для arm-none-eabi-gcc).

    ΠŸΠΎΡ‡Π΅ΠΌΡƒ CubeIDE Π΄ΠΎΠ»Π³ΠΎ индСксируСт ΠΏΡ€ΠΎΠ΅ΠΊΡ‚?

    Π­Ρ‚ΠΎ извСстная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ (100+ Ρ„Π°ΠΉΠ»ΠΎΠ²). РСшСния:

    • ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Indexer Π² Window β†’ Preferences β†’ C/C++ β†’ Indexer (ускорит Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅).
    • Π Π°Π·Π±Π΅ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° нСсколько ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.
    • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ SSD для хранСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

    Как ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ CubeIDE Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ настроСк?

    ΠŸΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· Help β†’ Check for Updates настройки ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ. Если устанавливаСтС Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ с нуля:

    1. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ workspace (содСрТит ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ).
    2. ЭкспортируйтС настройки Ρ‡Π΅Ρ€Π΅Π· File β†’ Export β†’ General β†’ Preferences.
    3. ПослС установки ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ настройки ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ ΠΊ старому workspace.

    Π“Π΄Π΅ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² для CubeIDE?

    ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

    • Π’ составС STM32CubeF4 (ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ для вашСй сСрии) Π² ΠΏΠ°ΠΏΠΊΠ΅ Projects.
    • На сайтС ST: STM32Cube MCU Packages.
    • На GitHub: Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ STMicroelectronics (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, STM32CubeH7).