Π Π°Π±ΠΎΡΠ° Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°ΠΌΠΈ STM32 ΡΡΠ°Π»Π° Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ STM32CubeIDE ΠΎΡ STMicroelectronics. ΠΡΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Π² ΡΠ΅Π±Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ, Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΠΊΠΎΠ΄Π° ΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΎΡ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΈ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡΠΌ Π΄Π»Ρ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠ² ΠΈ Π»ΡΠ±ΠΈΡΠ΅Π»Π΅ΠΉ ΡΠ»Π΅ΠΊΡΡΠΎΠ½ΠΈΠΊΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π»Ρ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» IDE ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ β ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠ»ΠΈ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΡΠ΅ ΡΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π°Ρ ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌ.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π²Ρ Π½Π°ΠΉΠ΄ΡΡΠ΅ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΡΡ Π±Π°Π·Ρ, Π½ΠΎ ΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠ²Π΅ΡΡ ΠΏΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ Ρ STM32CubeIDE, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π΄ΠΊΠΎ ΡΠΏΠΎΠΌΠΈΠ½Π°ΡΡΡΡ Π² ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΡΡΠ΅Π΄Ρ, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· CubeMX, ΠΎΡΠ»Π°Π΄ΠΊΡ ΠΈ Π΄Π°ΠΆΠ΅ ΡΠ°Π±ΠΎΡΡ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ. ΠΡΠΎΠ±ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ΄Π΅Π»Π΅Π½ΠΎ ΡΠΈΠΏΠΈΡΠ½ΡΠΌ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌ ΠΈΡ
ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ β ΡΡΠΎ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π²Π°ΠΌ ΡΠ°ΡΡ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΠΎΡΡΠΌΠ°Ρ
.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° STM32CubeIDE: ΠΏΠΎΡΠ°Π³ΠΎΠ²Π°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π΄Π»Ρ Windows, Linux ΠΈ macOS
ΠΠ΅ΡΠ΅Π΄ Π½Π°ΡΠ°Π»ΠΎΠΌ ΡΠ°Π±ΠΎΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ°ΠΌΡ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. STM32CubeIDE Π΄ΠΎΡΡΡΠΏΠ½Π° Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ, Π½ΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈΠΌΠ΅Π΅Ρ Π½ΡΠ°Π½ΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. ΠΠ° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΡΠ΅ STMicroelectronics Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ β ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ Π΅Ρ ΠΎΡΡΡΠ΄Π°, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΡ.
ΠΠ»Ρ Windows ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠ°: Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠΊΠ°ΡΠ°Π½Π½ΡΠΉ .exe-ΡΠ°ΠΉΠ» ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ ΠΌΠ°ΡΡΠ΅ΡΠ°. ΠΠ°ΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΡΠ°Π² Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ° ST-Link. ΠΠ° Linux (Ubuntu/Debian) ΡΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ .deb-ΠΏΠ°ΠΊΠ΅Ρ ΠΈΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΡΠ΅ΡΠ΅Π· snap, Π° Π΄Π»Ρ macOS Π΄ΠΎΡΡΡΠΏΠ΅Π½ .dmg-ΠΎΠ±ΡΠ°Π·. ΠΠΎ Π²ΡΠ΅Ρ
ΡΠ»ΡΡΠ°ΡΡ
ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΡ.
- π₯ Π‘ΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ° (Π²ΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ Π²Π΅ΡΡΠΈΡ ΠΏΠΎΠ΄ Π²Π°ΡΡ ΠΠ‘).
- π§ Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ ST-Link (Π²Ρ ΠΎΠ΄ΡΡ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ IDE).
- π ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ β ΡΡΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ°.
- π οΈ ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΡΠ΅ΡΠ΅Π· ΠΌΠ΅Π½Ρ
Help β Check for Updates.
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π°Π½ΡΠΈΠ²ΠΈΡΡΡ Avast ΠΈΠ»ΠΈ Kaspersky, Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ. ΠΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ½ΠΎΠ³Π΄Π° Π±Π»ΠΎΠΊΠΈΡΡΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ ST-Link, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΡ ΠΏΠ»Π°Ρ.
- Windows
- Linux (Ubuntu/Debian)
- macOS
- ΠΡΡΠ³Π°Ρ
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°: ΠΎΡ ΡΠ°Π±Π»ΠΎΠ½Π° Π΄ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ STM32CubeIDE ΡΠ°ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠ°ΡΠ½ΡΠΌ Ρ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° β ΠΌΠΈΠ³Π°Π½ΠΈΡ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ΠΎΠΌ Π½Π° ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΠ΅ STM32 Nucleo. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ File β New β STM32 Project ΠΈ ΡΠ»Π΅Π΄ΡΠΉΡΠ΅ ΠΌΠ°ΡΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠ° ΡΡΠ°ΠΏΠ΅ Π²ΡΠ±ΠΎΡΠ° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΈΠ»ΡΡΡ ΠΏΠΎ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, STM32F4) ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΌΠΎΠ΄Π΅Π»Ρ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ Π²Π°ΡΠ΅ΠΉ ΠΏΠ»Π°ΡΠ΅.
ΠΡΠΎΠ±ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ΄Π΅Π»ΠΈΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΡΠ°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ (clock configuration). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ IDE ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΊΠ²Π°ΡΡΠ΅Π²ΡΠΌ ΡΠ΅Π·ΠΎΠ½Π°ΡΠΎΡΠΎΠΌ, Π½ΠΎ Π΄Π»Ρ ΠΏΡΠΎΡΡΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ HSI. ΠΠΎΡΠ»Π΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ main.c ΠΈ stm32f4xx_it.c β ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π΄Π΅ΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π²Π°Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ STM32CubeIDE|ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΡ ΠΏΠ»Π°ΡΡ ΠΊ USB|ΠΡΠ±ΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΠ Π² ΠΌΠ°ΡΡΠ΅ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°|ΠΠ°ΡΡΡΠΎΠΈΡΡ ΡΠ°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (Clock Configuration)|Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ (Generate Code)
-->
| ΠΡΠ°ΠΏ | ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ | ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ |
|---|---|---|
| ΠΡΠ±ΠΎΡ ΠΏΠ»Π°ΡΡ | Π€ΠΈΠ»ΡΡΡ ΠΏΠΎ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, STM32F1) |
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΡΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΠ |
| ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ | ΠΡΠ±ΠΎΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° HSI/HSE |
ΠΠ»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ
ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ HSI (16 MHz) |
| ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ GPIO | ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΈΠ½Π° ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄Π° ΠΊΠ°ΠΊ Π²ΡΡ ΠΎΠ΄Π° | ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Pinout & Configuration |
| ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π° | ΠΠ½ΠΎΠΏΠΊΠ° GENERATE CODE |
ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ main.c ΠΈ stm32f4xx_hal_conf.h |
ΠΠΎΡΠ»Π΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΎΡΠΊΡΠΎΠ΅ΡΡΡ ΡΠ°ΠΉΠ» main.c Ρ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ main(). ΠΠ΄Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π·Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ ΡΠΈΠΊΠ» Π΄Π»Ρ ΠΌΠΈΠ³Π°Π½ΠΈΡ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ΠΎΠΌ:
while (1)
{
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); // ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π° Π²Π°Ρ ΠΏΠΈΠ½
HAL_Delay(500); // ΠΠ°Π΄Π΅ΡΠΆΠΊΠ° 500 ΠΌΡ
}
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠ»ΠΈ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ°undefined reference to `HAL_Delay', ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π² ΡΠ°ΠΉΠ»Π΅stm32f4xx_hal_conf.hΡΠ°ΡΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π° ΡΡΡΠΎΠΊΠ°#define HAL_Delay(__DELAY__). ΠΡΠΎ ΡΠ°ΡΡΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π½ΠΎΠ²ΡΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ.
Π Π°Π±ΠΎΡΠ° Ρ CubeMX: Π²ΠΈΠ·ΡΠ°Π»ΡΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΈ
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² STM32CubeIDE ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ CubeMX β Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΎΡ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΈ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΠ°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, GPIO, ΡΠ°ΠΉΠΌΠ΅ΡΡ, ADC ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π±Π΅Π· ΡΡΡΠ½ΠΎΠ³ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ CubeMX ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² IDE, ΡΡΠΎ ΡΡΠΊΠΎΡΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°Π±ΠΎΡΡ Ρ CubeMX ΠΎΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ°ΠΉΠ» .ioc Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ (ΠΎΠ½ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°). ΠΠ΄Π΅ΡΡ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΡ
Π΅ΠΌΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ ΠΏΠΈΠ½Π°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ UART Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ:
- ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΠΈΠ½
TX(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,PA9) ΠΈ Π½Π°Π·Π½Π°ΡΡΡΠ΅ Π΅ΠΌΡ ΡΡΠ½ΠΊΡΠΈΡUSART1_TX. - ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΉΡΠ΅ ΠΏΠΈΠ½
RX(PA10βUSART1_RX). - Π ΡΠ°Π·Π΄Π΅Π»Π΅
Connectivity β USART1ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠΊΠΎΡΠΎΡΡΡ ΠΎΠ±ΠΌΠ΅Π½Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,115200 Π±ΠΎΠ΄). - Π‘Π³Π΅Π½Π΅ΡΠΈΡΡΠΉΡΠ΅ ΠΊΠΎΠ΄ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ
GENERATE CODE.
ΠΠΎΡΠ»Π΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π² ΡΠ°ΠΉΠ»Π΅ main.c ΠΏΠΎΡΠ²ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ MX_USART1_UART_Init(), Π° Π² stm32f4xx_hal_uart.h β Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ HAL Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ UART, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
char message[] = "Hello from STM32!\r\n";
HAL_UART_Transmit(&huart1, (uint8_t*)message, strlen(message), HAL_MAX_DELAY);
ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΠΏΠ»Π°ΡΠ°ΠΌΠΈ Nucleo ΠΈΠ»ΠΈ Discovery, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ COM-ΠΏΠΎΡΡ (ST-Link). ΠΠ½ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ COM-ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ Π±Π΅Π· Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ USB-UART Π°Π΄Π°ΠΏΡΠ΅ΡΠ°.
ΠΡΠ»Π°Π΄ΠΊΠ° ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΡΠ΅ΡΠ΅Π· ST-Link
ΠΡΠ»Π°Π΄ΠΊΠ° β ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ
Π²Π°ΠΆΠ½ΡΡ
ΡΡΠ°ΠΏΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. STM32CubeIDE ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΡΠ»Π°Π΄ΠΊΡ ΡΠ΅ΡΠ΅Π· Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ST-Link (Π΄Π»Ρ ΠΏΠ»Π°Ρ Nucleo/Discovery) ΠΈΠ»ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠΈ (J-Link, OpenOCD). ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΏΠ»Π°ΡΡ ΠΊ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΡΠ΅ΡΠ΅Π· USB ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΌΠ΅Π½Ρ Run β Debug Configurations.
Π ΠΎΡΠΊΡΡΠ²ΡΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ STM32 Cortex-M C/C++ Application ΠΈ ΡΠΊΠ°ΠΆΠΈΡΠ΅:
- π Π’ΠΈΠΏ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ:
ST-Link (OpenOCD)ΠΈΠ»ΠΈST-Link (SWD). - π ΠΠΎΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ: ΠΎΠ±ΡΡΠ½ΠΎ
SWD(Serial Wire Debug). - π Π£ΡΠΎΠ²Π΅Π½Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ: Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π²ΡΠ±ΠΈΡΠ°ΠΉΡΠ΅
Debug (-O0).
ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π²Ρ ΠΏΠΎΠΏΠ°Π΄Π΅ΡΠ΅ Π² ΡΠ΅ΠΆΠΈΠΌ Debug Perspective, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ:
- Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΠΎΡΠΊΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²Π° (
Breakpoints). - ΠΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (
Variables). - ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° (
Step Into/Over). - ΠΠ½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² (
Memory,Registers).
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠ»ΠΈ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ°"No ST-Link detected", ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠ»Π°ΡΡ ΠΏΠΎ USB ΠΈ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ ST-Link ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ. Π Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ² ΠΏΠ»Π°ΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΠΊΠ°ΠΊST-Link DebugΠΈΠ»ΠΈSTMicroelectronics ST-Link.
ΠΠ°ΠΊ ΡΠ±ΡΠΎΡΠΈΡΡ Π·Π°Π²ΠΈΡΡΠΈΠΉ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΡΠ΅ΡΠ΅Π· ST-Link?
ΠΡΠ»ΠΈ ΠΠ Π·Π°Π²ΠΈΡ ΠΈ Π½Π΅ ΡΠ΅Π°Π³ΠΈΡΡΠ΅Ρ Π½Π° ΡΠ±ΡΠΎΡ, Π·Π°ΠΊΡΠΎΠΉΡΠ΅ Π²ΡΠ΅ ΡΠ΅ΡΡΠΈΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π² IDE, Π·Π°ΡΠ΅ΠΌ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅:
ST-Link_CLI.exe -c UR -P stm32f4xx -V
ΠΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠ±ΡΠΎΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ SWD. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΎΡΠ»Π°Π΄ΠΊΡ.
Π Π°Π±ΠΎΡΠ° Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ HAL ΠΈ LL: ΡΡΠΎ Π²ΡΠ±ΡΠ°ΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°?
STM32CubeIDE ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄Π²Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠ΅ΠΉ: HAL (Hardware Abstraction Layer) ΠΈ LL (Low Layer). ΠΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· Π½ΠΈΡ
ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ
Π·Π°Π΄Π°Ρ. HAL ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΉ API Ρ ΡΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, HAL_GPIO_TogglePin()), Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΠΎΠΉ Π΄Π»Ρ ΠΏΡΠΎΡΡΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². LL, Π½Π°ΠΏΡΠΎΡΠΈΠ², ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΏΡΡΠΌΠΎΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅Π³ΠΈΡΡΡΠ°ΠΌ, ΡΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ Π³Π»ΡΠ±ΠΎΠΊΠΈΡ
Π·Π½Π°Π½ΠΈΠΉ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΠ.
ΠΠ»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ
ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π½Π°ΡΠΈΠ½Π°ΡΡ Ρ HAL, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° ΡΠ΅ΡΠ΅Π· HAL Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
TIM_HandleTypeDef htim2;
htim2.Instance = TIM2;
htim2.Init.Prescaler = 8400 - 1; // ΠΠ»Ρ ΡΠ°ΠΊΡΠΎΠ²ΠΎΠΉ 84 MHz
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
HAL_TIM_Base_Init(&htim2);
HAL_TIM_Base_Start(&htim2);
ΠΠ»Ρ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π° Π½Π° LL ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΡΡΠ½ΡΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΠ΅Π³ΠΈΡΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ° ΠΆΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° ΡΠ΅ΡΠ΅Π· LL:
LL_TIM_InitTypeDef TIM_InitStruct;
LL_TIM_StructInit(&TIM_InitStruct);
TIM_InitStruct.Prescaler = 8400 - 1;
LL_TIM_Init(TIM2, &TIM_InitStruct);
LL_TIM_EnableCounter(TIM2);
| ΠΡΠΈΡΠ΅ΡΠΈΠΉ | HAL | LL |
|---|---|---|
| Π£Π΄ΠΎΠ±ΡΡΠ²ΠΎ | βββββ | ββ |
| ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ | ββ | βββββ |
| Π Π°Π·ΠΌΠ΅Ρ ΠΊΠΎΠ΄Π° | ΠΠΎΠ»ΡΡΠΎΠΉ (ΠΈΠ·-Π·Π° Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ) | ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ |
| ΠΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ | ΠΠ°ΡΠΈΠ½Π°ΡΡΠΈΡ , ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² | ΠΠΏΡΡΠ½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΊΡΠΈΡΠΈΡΠ½ΡΡ Π·Π°Π΄Π°Ρ |
ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ HAL ΠΈ LL: HAL Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΈ, LL Π΄Π»Ρ ΠΊΡΠΈΡΠΈΡΠ½ΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ°ΡΡΠΊΠΎΠ² ΠΊΠΎΠ΄Π°.
Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ: ΡΠ΅ΠΊ-Π»ΠΈΡΡ Π΄Π»Ρ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ
ΠΠ°ΠΆΠ΅ ΠΎΠΏΡΡΠ½ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Π² STM32CubeIDE. ΠΠΈΠΆΠ΅ ΠΌΡ ΡΠΎΠ±ΡΠ°Π»ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ ΠΈΠ»ΠΈ ΠΠ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ:
- β ΠΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
undefined referenceβ ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π²stm32f4xx_hal_conf.h. - β‘ ΠΠ Π½Π΅ ΡΠ΅Π°Π³ΠΈΡΡΠ΅Ρ Π½Π° ΠΏΡΠΎΡΠΈΠ²ΠΊΡ β Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²ΡΠ±ΡΠ°Π½ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΏΠΎΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ (
SWDΠΈΠ»ΠΈJTAG). - π ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎ β ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (ΡΠ°ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² Π½Π΅Π²Π΅ΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅
PLL). - π‘ UART Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ β Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΏΠΈΠ½Ρ
TX/RXΠ½Π°ΡΡΡΠΎΠ΅Π½Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ.
ΠΠ΄Π½Π° ΠΈΠ· ΡΠ°ΠΌΡΡ
ΠΊΠΎΠ²Π°ΡΠ½ΡΡ
ΠΎΡΠΈΠ±ΠΎΠΊ β hard fault, ΠΊΠΎΠ³Π΄Π° ΠΠ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ. ΠΠ»Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ ΡΠ°ΠΊΠΈΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡ SCB->HFSR (Hard Fault Status Register). Π STM32CubeIDE Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π² ΠΎΠΊΠ½Π΅ Registers. Π§Π°ΡΡΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ hard fault:
- ΠΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌ.
- ΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ° (ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠ΅ΠΊΠ° Π²
.ioc). - ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»ΠΈΡΠΊΠΎΠΌ Π²ΡΡΠΎΠΊΠ°Ρ ΡΠ°ΡΡΠΎΡΠ° Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΠ).
ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΡ "Flash Download failed" ΠΏΡΠΈ ΠΏΡΠΎΡΠΈΠ²ΠΊΠ΅, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ
ST-Link (ΠΌΠ΅Π½Ρ Debug Configurations β Debugger β ST-Link β Frequency). ΠΠ½ΠΎΠ³Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ Ρ 4 MHz Π΄ΠΎ 1.5 MHz.
ΠΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ: ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Git, CMSIS ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ
ΠΠ»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ»ΠΈ Π΄ΠΎΠ»Π³ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ STM32CubeIDE Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ Git. Π IDE Π²ΡΡΡΠΎΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Git, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅, ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²Π΅ΡΠΊΠΈ ΠΈ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌΠΈ Π½Π° GitHub ΠΈΠ»ΠΈ GitLab. Π§ΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ, Π²ΡΠ±Π΅ΡΠΈΡΠ΅ File β Import β Git β Projects from Git ΠΈ ΡΠ»Π΅Π΄ΡΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ.
ΠΡΡ ΠΎΠ΄Π½Π° ΠΌΠΎΡΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ CMSIS (Cortex Microcontroller Software Interface Standard). ΠΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ API Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΄ΡΠΎΠΌ Cortex-M, ΡΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡ ΠΊΠΎΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π°ΠΌΠΈ STM32. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ SysTick ΡΠ΅ΡΠ΅Π· CMSIS Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ:
SysTick_Config(SystemCoreClock / 1000); // ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° SysTick Π½Π° 1 ΠΌΡ
ΠΠ»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π²Π½Π΅ΡΠ½ΠΈΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, FreeRTOS ΠΈΠ»ΠΈ FatFS) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ STM32CubeMX:
- ΠΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ°ΠΉΠ»
.iocΠ²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. - ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π²
Software Packs β Select Components. - ΠΡΠ±Π΅ΡΠΈΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
FreeRTOS). - Π‘Π³Π΅Π½Π΅ΡΠΈΡΡΠΉΡΠ΅ ΠΊΠΎΠ΄ β IDE Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ Π½ΡΠΆΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΏΡΠΎΠ΅ΠΊΡ.
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ FreeRTOS ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π² ΡΠ°ΠΉΠ»Π΅FreeRTOSConfig.hΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠ΅Π½Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡconfigTOTAL_HEAP_SIZEΠΈconfigMAX_PRIORITIES. ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΡΡΠΈ (heap) β ΡΠ°ΡΡΠ°Ρ ΠΏΡΠΈΡΠΈΠ½Π° ΠΊΡΠ°Ρ ΠΎΠ² Π² ΠΌΠ½ΠΎΠ³ΠΎΠ·Π°Π΄Π°ΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ .
FAQ: ΠΎΡΠ²Π΅ΡΡ Π½Π° ΡΠ°ΡΡΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΠΎ STM32CubeIDE
ΠΠ°ΠΊ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ STM32CubeIDE Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ?
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ:
- Π§Π΅ΡΠ΅Π· ΠΌΠ΅Π½Ρ IDE:
Help β Check for Updates. - Π‘ΠΊΠ°ΡΠ°ΡΡ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ Ρ ΡΠ°ΠΉΡΠ° STMicroelectronics ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠΎΠ²Π΅ΡΡ ΡΡΠ°ΡΠΎΠΉ (Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΡΠΎΡ ΡΠ°Π½ΡΡΡΡ).
ΠΠ΅ΡΠ΅Π΄ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Π·Π°ΠΊΡΠΎΠΉΡΠ΅ Π²ΡΠ΅ ΠΎΡΠΊΡΡΡΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΈ ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΡ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ (workspace).
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ STM32CubeIDE Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² (Π½Π΅ STM32)?
ΠΠ΅Ρ, STM32CubeIDE ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° STM32. ΠΠ»Ρ Π΄ΡΡΠ³ΠΈΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, AVR, PIC, ESP32) ΠΏΠΎΡΡΠ΅Π±ΡΡΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ: Atmel Studio, MPLAB X ΠΈΠ»ΠΈ ESP-IDF ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
ΠΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΠ· STM32CubeMX Π² STM32CubeIDE?
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΠΆΠ΅ Π΅ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π² STM32CubeMX, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ:
- ΠΡΠΊΡΠΎΠΉΡΠ΅ STM32CubeIDE ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅
File β Import β STM32CubeMX β Existing STM32CubeMX Project. - Π£ΠΊΠ°ΠΆΠΈΡΠ΅ ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ
.iocΠ²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. - ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠ°Π±ΠΎΡΡΡ ΠΎΠ±Π»Π°ΡΡΡ (
workspace) ΠΈ Π΄ΠΎΠΆΠ΄ΠΈΡΠ΅ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°.
ΠΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΈ ΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅Π½Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
ΠΠΎΡΠ΅ΠΌΡ ΠΏΡΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ Π½Π΅ Π²ΠΈΠ΄Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ?
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½Π° Ρ ΡΡΠΎΠ²Π½Π΅ΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°. Π§ΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π»ΠΈΡΡ Π² ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ΅:
- ΠΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° (
Project β Properties). - ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π²
C/C++ Build β Settings β Optimization. - ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΡΠΎΠ²Π΅Π½Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ
None (-O0)Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ.
Π’Π°ΠΊΠΆΠ΅ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΏΡΠΎΡΠ»Π° Π±Π΅Π· ΠΎΡΠΈΠ±ΠΎΠΊ β ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΠΈΠ·-Π·Π° Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΎΡΠ»Π°Π΄ΠΊΠΈ.
ΠΠ΄Π΅ Π½Π°ΠΉΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π΄Π»Ρ STM32CubeIDE?
STMicroelectronics ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠ±ΡΠΈΡΠ½ΡΡ Π±Π°Π·Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ²:
- Π ΡΠ°ΠΌΠΎΠΉ IDE:
File β New β STM32 Project β Board Selector(Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠ²ΠΎΡ ΠΏΠ»Π°ΡΡ ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ). - ΠΠ° ΡΠ°ΠΉΡΠ΅ ST.com Π² ΡΠ°Π·Π΄Π΅Π»Π΅
Resources β Software β STM32Cube Expansion Packages. - ΠΠ° GitHub Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡ
STMicroelectronics(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, STM32CubeF4).
ΠΠ»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ
ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ Ρ ΠΌΠΈΠ³Π°Π½ΠΈΠ΅ΠΌ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄Π° (GPIO_IOToggle) ΠΈ ΡΠ°Π±ΠΎΡΠΎΠΉ Ρ UART (UART_Printf).