Π Π°Π±ΠΎΡΠ° Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°ΠΌΠΈ STM32 ΡΡΠ°Π»Π° Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ STM32 CubeIDE ΠΎΡ STMicroelectronics. ΠΡΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Π² ΡΠ΅Π±Π΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΠΊΠΎΠ΄Π° STM32CubeMX, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π° Π±Π°Π·Π΅ GCC ΠΈ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ J-Link, ST-Link ΠΈ Π΄ΡΡΠ³ΠΈΡ
Π°Π΄Π°ΠΏΡΠ΅ΡΠΎΠ². ΠΠΎ despite ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΡ
ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ², ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΡΡΡΠ΄Π½ΠΎΡΡΡΠΌΠΈ: ΠΎΡ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΡΡ
ΠΎΡΠΈΠ±ΠΎΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π΄ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ ΡΠ°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΡΠΌ Π²Π΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ β ΠΎΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ CubeIDE Π΄ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΡ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ clock tree Π΄Π»Ρ STM32F4 ΠΈΠ»ΠΈ STM32H7, ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠΈΠΏΠΈΡΠ½ΡΡ
ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠ΅ΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, USART ΠΈΠ»ΠΈ SPI), ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΎΠ΅ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ, Π½ΠΎ Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π½Π° ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΠ΅. ΠΠ°ΡΠ΅ΡΠΈΠ°Π» Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΊΠ°ΠΊ Π½ΠΎΠ²ΠΈΡΠΊΠ°ΠΌ, ΡΠ°ΠΊ ΠΈ ΠΎΠΏΡΡΠ½ΡΠΌ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ°ΠΌ, ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΡΡΠΈΠΌ Ρ Keil ΠΈΠ»ΠΈ IAR Π½Π° Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ ST.
1. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° STM32 CubeIDE: ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π½ΡΠ°Π½ΡΡ
ΠΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ STM32 CubeIDE ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Windows 10/11, Linux (Ubuntu, Debian) ΠΈ macOS, Π½ΠΎ Π΅ΡΡΡ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°ΠΌΠ½ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° Windows 7 ΡΡΠ΅Π΄Π° ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π½ΠΎ Π±Π΅Π· Π³Π°ΡΠ°Π½ΡΠΈΠΈ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ β ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ°. ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ:
- π₯οΈ ΠΠΠ£: 4 ΠΠ (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ 8 ΠΠ Π΄Π»Ρ ΠΊΡΡΠΏΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ STM32H7)
- πΎ ΠΠ΅ΡΡΠΎ Π½Π° Π΄ΠΈΡΠΊΠ΅: 3 ΠΠ (ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π½Π°
SSD, ΡΡΠΎΠ±Ρ ΡΡΠΊΠΎΡΠΈΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π°) - π ΠΠΎΡΡΡ:
USB 2.0Π΄Π»ΡST-Link(3.0 ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±Π΅Π· Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ²) - π οΈ ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ: Java 8+ (Π²Ρ
ΠΎΠ΄ΠΈΡ Π² ΡΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊ, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ
JAVA_HOME)
Π‘ΠΊΠ°ΡΠΈΠ²Π°ΠΉΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ° ST. ΠΠ΅ΡΡΠΈΠΈ ΠΈΠ· ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ
ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ STM32Cube ΠΈΠ»ΠΈ Π²ΠΈΡΡΡΡ. ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ CubeIDE ΡΠ΅ΡΠ΅Π· Help β Check for Updates β Π² Π½ΠΎΠ²ΡΡ
ΡΠ΅Π»ΠΈΠ·Π°Ρ
ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π±Π°Π³ΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠΈΠ±ΠΊΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π΄Π»Ρ STM32G4 Π² Π²Π΅ΡΡΠΈΠΈ 1.11.0).
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ CubeIDE Π½Π΅ Π²ΠΈΠ΄ΠΈΡ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΡ ΠΏΠ»Π°ΡΡ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ ST-Link Π² ΠΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ². Π§Π°ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° ΡΠ΅ΡΠ΅Π· STSW-LINK009 (ΡΡΠΈΠ»ΠΈΡΠ° ΠΎΡ ST).
2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°: ΡΠ°Π³ Π·Π° ΡΠ°Π³ΠΎΠΌ
ΠΠ°ΡΠ½ΡΠΌ Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ β ΠΌΠΈΠ³Π°Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ΠΎΠΌ Π½Π° ΠΏΠ»Π°ΡΠ΅ STM32F407 Discovery. ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΡΡΡΡΠΊΡΡΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ .
- ΠΡΠ±ΠΎΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°:
Π ΠΌΠ΅Π½Ρ
File β New β STM32 ProjectΠ²Π²Π΅Π΄ΠΈΡΠ΅ Π² ΠΏΠΎΠΈΡΠΊΠ΅STM32F407G-DISC1(ΠΈΠ»ΠΈ Π²Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ). ΠΡΠ»ΠΈ ΠΏΠ»Π°ΡΡ Π½Π΅Ρ Π² ΡΠΏΠΈΡΠΊΠ΅, ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΡΠ΅ΡΠ΅Π·Help β Manage Embedded Software Packages. - ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΡ
Clock Configuration. ΠΠ»Ρ STM32F4 ΡΠΈΠΏΠΈΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ:- π ΠΡΡΠΎΡΠ½ΠΈΠΊ:
HSE(8 ΠΠΡ ΠΎΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΊΠ²Π°ΡΡΠ°) - β‘
PLL: ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎ 168 ΠΠΡ (ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ Π΄Π»Ρ ΡΠ΄ΡΠ°) - π
APB1/APB2: Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ 4/2 ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ (Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡTIMΠΈUSART)
- π ΠΡΡΠΎΡΠ½ΠΈΠΊ:
Π Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Pinout & Configuration Π½Π°ΠΉΠ΄ΠΈΡΠ΅ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, LD2 Π½Π° Discovery). ΠΠ°Π·Π½Π°ΡΡΡΠ΅ ΠΏΠΈΠ½ (ΠΎΠ±ΡΡΠ½ΠΎ PA5) ΠΊΠ°ΠΊ GPIO_Output.
ΠΠΎΡΠ»Π΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° (Ctrl+S) ΠΎΡΠΊΡΠΎΠΉΡΠ΅ main.c. Π€ΡΠ½ΠΊΡΠΈΡ HAL_GPIO_TogglePin() Π² ΡΠΈΠΊΠ»Π΅ while(1) Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄Π°. ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΡ HAL_Delay(500), ΠΈΠ½Π°ΡΠ΅ ΠΌΠΈΠ³Π°Π½ΠΈΡ Π½Π΅ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅.
ΠΡΠ±ΡΠ°Π½ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ|Π’Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΎ Π±Π΅Π· ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ|Π‘Π²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ Π½Π°Π·Π½Π°ΡΠ΅Π½ Π½Π° GPIO_Output|Π ΠΊΠΎΠ΄Π΅ Π΅ΡΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠ° HAL_Delay-->
STM32F4 Discovery|STM32F103 Blue Pill|STM32H7 Nucleo|STM32L4|ΠΡΡΠ³Π°Ρ-->
3. Π Π°Π±ΠΎΡΠ° Ρ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠ΅ΠΉ: USART, SPI, ADC
ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ STM32 CubeIDE ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΈ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠΈ ΡΠ°ΠΌΡΡ Π²ΠΎΡΡΡΠ΅Π±ΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ.
| ΠΠ΅ΡΠΈΡΠ΅ΡΠΈΡ | Π’ΠΈΠΏΠΈΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ | Π§Π°ΡΡΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ |
|---|---|---|
USART |
ΠΡΠ»Π°Π΄ΠΊΠ° ΡΠ΅ΡΠ΅Π· printf, ΡΠ²ΡΠ·Ρ Ρ ΠΠ |
ΠΠ΅Π²Π΅ΡΠ½Π°Ρ ΡΠΊΠΎΡΠΎΡΡΡ (Baud Rate), ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ Pull-Up Π½Π° TX/RX |
SPI |
Π Π°Π±ΠΎΡΠ° Ρ Π΄Π°ΡΡΠΈΠΊΠ°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, MPU6050) | ΠΠ΅ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Mode (0β3) ΠΈΠ»ΠΈ Clock Polarity |
ADC |
Π‘ΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² | ΠΠ°Π±ΡΠ»ΠΈ Π²ΠΊΠ»ΡΡΠΈΡΡ ADC Clock Π² RCC |
ΠΠ»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ USART ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² Pinout & Configuration β Connectivity β USART2 (ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΡ). Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅:
- π Mode:
Asynchronous - πΆ Baud Rate:
115200(ΡΡΠ°Π½Π΄Π°ΡΡ Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ) - π Hardware Flow Control:
None(Π΅ΡΠ»ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅RTS/CTS)
Π§ΡΠΎΠ±Ρ Π²ΡΠ²Π΅ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π· printf, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π² ΠΏΡΠΎΠ΅ΠΊΡ syscalls.c (ΡΠ°Π±Π»ΠΎΠ½ Π΅ΡΡΡ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
STM32Cube) ΠΈ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²ΡΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄:
#include <stdio.h>
int _write(int file, char *ptr, int len) {
HAL_UART_Transmit(&huart2, (uint8_t*)ptr, len, HAL_MAX_DELAY);
return len;
}
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠ»ΠΈUSARTΠ½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅PA2 (TX)ΠΈPA3 (RX)ΠΊ ΠΊΠΎΠ½Π²Π΅ΡΡΠ΅ΡΡ USB-UART (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, CP2102). ΠΠ° ΠΏΠ»Π°ΡΠ°Ρ Nucleo Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉST-Link.
4. ΠΡΠ»Π°Π΄ΠΊΠ° ΠΈ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ
ΠΡΠ»Π°Π΄ΠΊΠ° Π² STM32 CubeIDE ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΡΠ΅ΠΆΠΈΠΌΠ°: Debug (ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅) ΠΈ Run (Π·Π°ΠΏΡΡΠΊ Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²Π°). ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°Π±ΠΎΡΡ:
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΡ ΠΏΠ»Π°ΡΡ ΡΠ΅ΡΠ΅Π·
ST-LinkΠΈΠ»ΠΈJ-Link. - ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ:
Run β Debug Configurations β STM32 Cortex-M C/C++ Application. - Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ
ΡΠΊΠ°Π·Π°Π½ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ
Debug Probe(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,ST-Link (OpenOCD)).
Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅:
- π« "No ST-Link detected"): ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ USB ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ. ΠΠ½ΠΎΠ³Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΠ.
- π΄ "Target not responding"): ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ±ΠΈΠ»ΠΈΡΡ ΡΡΡΠ·Ρ ΠΈΠ»ΠΈ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ
HardFault. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ±ΡΠΎΡΠΈΡΡ ΠΏΠ»Π°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉNRST. - β οΈ "Breakpoint not hit"): Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° (
-O0) ΠΎΡΠΊΠ»ΡΡΠ΅Π½Ρ Π²Project Properties β C/C++ Build β Settings β Optimization Level.
ΠΠ»Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ HardFault ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΡ SCB->HFSR ΠΈ SCB->CFSR. ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π² ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ:
void HardFault_Handler(void) {
__asm("TST LR, #4");
__asm("ITE EQ");
__asm("MRSEQ R0, MSP"); // Stack pointer if exception from main stack
__asm("MRSNE R0, PSP"); // Stack pointer if exception from process stack
__asm("B __cpp(HardFault_Decoder)");
}
ΠΠ°ΠΊ ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ HardFault?
ΠΠ½Π°Π»ΠΈΠ· ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² CFSR (Configurable Fault Status Register) ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΏΡΠΈΡΠΈΠ½Ρ ΡΠ±ΠΎΡ:
- MMFSR (Π±ΠΈΡΡ 0β7): ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎΡΡΡΠΏ ΠΊ Π½Π΅Π²ΡΡΠΎΠ²Π½Π΅Π½Π½ΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ).
- BFSR (Π±ΠΈΡΡ 8β15): ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠΈΠ½Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅Π²Π΅ΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΈ).
- UFSR (Π±ΠΈΡΡ 16β31): Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π½ΠΎΠ»Ρ).
ΠΠ»Ρ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ STM32CubeMonitor ΠΈΠ»ΠΈ ΡΡΠΈΠ»ΠΈΡΡ STM32CubeProgrammer (Π²ΠΊΠ»Π°Π΄ΠΊΠ° Logs).
5. ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ΄Π° ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ HAL
HAL-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° (Hardware Abstraction Layer) ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠ΅ΠΉ, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ: Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΠ΄Π° ΠΈ Π½ΠΈΠ·ΠΊΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ²ΡΠΌ Π΄ΠΎΡΡΡΠΏΠΎΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ½ΠΊΡΠΈΡ HAL_GPIO_TogglePin() Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π΄ΠΎ 5-ΡΠΈ ΡΡΠΎΠ²Π½Π΅ΠΉ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ
Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΡΡΠΎ ΠΊΡΠΈΡΠΈΡΠ½ΠΎ Π΄Π»Ρ STM32F0 Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ.
Π‘ΠΏΠΎΡΠΎΠ±Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ:
- π ΠΠ°ΠΌΠ΅Π½Π° HAL Π½Π° LL: ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°
LL(Low Layer) ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π°ΠΏΡΡΠΌΡΡ Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΠΌΠΈ. ΠΡΠΈΠΌΠ΅Ρ Π΄Π»ΡGPIO:LL_GPIO_TogglePin(GPIOA, LL_GPIO_PIN_5); // ΠΠΌΠ΅ΡΡΠΎ HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5) - π ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅Π½ΡΠΆΠ½ΡΡ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ: Π
stm32f4xx_hal_conf.hΠ·Π°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,#define HAL_I2C_MODULE_ENABLED). - β‘ ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°: ΠΠΊΠ»ΡΡΠΈΡΠ΅
-O2ΠΈΠ»ΠΈ-OsΠ² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΡΠ±ΠΎΡΠΊΠΈ, Π½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅: ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΠΎΠΌΠ°ΡΡ ΠΎΡΠ»Π°Π΄ΠΊΡ!
ΠΡΠΈΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²: ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ HAL_Delay() Π² ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡΡ
. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡεΊδΊ SysTick ΠΈ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΡΠ΄ΡΠΎ, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΠΎΡΠ΅ΡΠ΅ Π΄Π°Π½Π½ΡΡ
Π² UART ΠΈΠ»ΠΈ SPI. ΠΠΌΠ΅ΡΡΠΎ Π½Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ°ΠΉΠΌΠ΅ΡΡ ΠΈΠ»ΠΈ DWT_Delay (ΡΠΈΠΊΠ»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°).
ΠΠ»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΊΡΡΠΏΠ½ΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π² Project Properties β C/C++ Build β Settings β Build Steps ΡΠ»Π°Π³ -j4 (ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½Π°Ρ ΡΠ±ΠΎΡΠΊΠ° Π½Π° 4 ΡΠ΄ΡΠ°Ρ
).
6. ΠΠ΅ΡΠ΅Π½ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠ»Π°ΡΠ°ΠΌΠΈ ΠΈ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°ΠΌΠΈ
ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠΈΠ»ΡΠ½ΡΡ ΡΡΠΎΡΠΎΠ½ STM32 CubeIDE ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ STM32F103 Π½Π° STM32F401). ΠΠ΄Π½Π°ΠΊΠΎ Π·Π΄Π΅ΡΡ Π΅ΡΡΡ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°ΠΌΠ½ΠΈ:
- Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΈ:
ΠΠ΅ Π²ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π½Π° ΡΠ°Π·Π½ΡΡ ΡΠ΅ΡΠΈΡΡ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, STM32F0 Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ
FMAC(Π±Π»ΠΎΠΊ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ), Π° STM32H7 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡDMAΡ 32-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠΉ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ. - ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΠΎΡΠ° ΡΠ΄ΡΠ° Π²Π°ΡΡΠΈΡΡΠ΅ΡΡΡ: 72 ΠΠΡ Π΄Π»Ρ STM32F1, 180 ΠΠΡ Π΄Π»Ρ STM32F4, 480 ΠΠΡ Π΄Π»Ρ STM32H7. ΠΡΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ
PLL. - Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΈΠ½ΠΎΠ²:
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ,
USART1Π½Π° STM32F103 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡPA9/PA10, Π° Π½Π° STM32F407 β ΡΠ΅ ΠΆΠ΅ ΠΏΠΈΠ½Ρ, Π½ΠΎ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ (AF7Π²ΠΌΠ΅ΡΡΠΎAF1).
ΠΠ»Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°:
- Π‘ΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΠΏΠ°ΠΏΠΊΡ Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠ°ΠΌΠΈ (
Src,Inc). - Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π΄Π»Ρ ΡΠ΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°.
- ΠΠΌΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΠ΅ΡΠ΅Π·
File β Import β File System. - ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π²
.ioc-ΡΠ°ΠΉΠ»Π΅ (ΠΎΡΠΊΡΠΎΠ΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ).
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ΅ Π½Π° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Ρ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌFlash(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ 64 ΠΠ Π½Π° 128 ΠΠ) ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π°Π΄ΡΠ΅ΡΠ° ΡΠ΅ΠΊΡΠΈΠΉ Π²linker script(.ld-ΡΠ°ΠΉΠ»). ΠΠ½Π°ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΌΠΎΠ³ΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΏΠΎΠ²Π΅ΡΡ ΠΊΠΎΠ΄Π°!
7. Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ
ΠΠ°ΠΆΠ΅ ΠΎΠΏΡΡΠ½ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ Π² STM32 CubeIDE. ΠΠΎΡ ΡΠ°ΠΌΡΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΠ΅:
| ΠΡΠΈΠ±ΠΊΠ° | ΠΠΎΠ·ΠΌΠΎΠΆΠ½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π° | Π Π΅ΡΠ΅Π½ΠΈΠ΅ |
|---|---|---|
error: region `FLASH' overflowed by X bytes |
ΠΠΎΠ΄ Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² Flash |
ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΊΠΎΠ΄ (-Os) ΠΈΠ»ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΠ Ρ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΡΡ |
OpenOCD failed to start |
ΠΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°ΠΌΠΈ ST-Link |
ΠΠ΅ΡΠ΅ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅Ρ ΡΠ΅ΡΠ΅Π· STSW-LINK009 |
| ΠΡΠΎΠ΅ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ, Π½ΠΎ Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ | ΠΠ΅Π²Π΅ΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Vector Table |
ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ System Clock Π² .ioc ΠΈ Π°Π΄ΡΠ΅Ρ VTOR Π² startup_*.s |
HAL_ErrorHandler() Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π±Π΅Π· ΠΏΡΠΈΡΠΈΠ½Ρ |
ΠΡΠΈΠ±ΠΊΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, RCC) |
ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ HAL_StatusTypeDef |
ΠΡΠ»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π» ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ CubeIDE, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅:
- ΠΡΠΈΡΡΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡ:
Project β Clean. - Π£Π΄Π°Π»ΠΈΡΡ ΠΏΠ°ΠΏΠΊΡ
DebugΠ²ΡΡΡΠ½ΡΡ. - ΠΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ STM32Cube Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΡΠ΅ΡΠΈΠΈ ΠΠ.
ΠΡΠ΅Π³Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ Π»ΠΎΠ³ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ (Console Π² CubeIDE) β ΡΠ°ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ° ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ Π² ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡΡ
, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
FAQ: ΠΡΠ²Π΅ΡΡ Π½Π° ΡΠ°ΡΡΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ STM32 CubeIDE Π΄Π»Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ?
ΠΠ΅Ρ, STM32 CubeIDE ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ STMicroelectronics (ΡΠ΅ΡΠΈΠΈ STM32F0/F1/F2/F3/F4/F7/H7/L0/L1/L4/L5/G0/G4/WB). ΠΠ»Ρ Π΄ΡΡΠ³ΠΈΡ Π±ΡΠ΅Π½Π΄ΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, NXP ΠΈΠ»ΠΈ Microchip) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ MCUXpresso ΠΈΠ»ΠΈ MPLAB X ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
ΠΠ°ΠΊ ΡΡΠΊΠΎΡΠΈΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π° Π² .ioc-ΡΠ°ΠΉΠ»Π΅?
ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π΄ΠΎ 10β15 ΡΠ΅ΠΊΡΠ½Π΄ Π΄Π»Ρ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². Π§ΡΠΎΠ±Ρ ΡΡΠΊΠΎΡΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ:
- ΠΠ°ΠΊΡΠΎΠΉΡΠ΅ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Π²
.ioc(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,Clock Configuration, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΆΠ΅ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΎ). - ΠΡΠΊΠ»ΡΡΠΈΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π° ΠΏΡΠΈ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠΈ:
Window β Preferences β STM32Cube β Code Generation β Uncheck "Generate under editor". - ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ SSD-Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»Ρ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠΎΡΠ΅ΠΌΡ ΠΏΡΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ?
ΠΡΠΎ ΡΠΈΠΏΠΈΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°. Π Π΅ΡΠ΅Π½ΠΈΡ:
- ΠΡΠΊΠ»ΡΡΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ:
Project Properties β C/C++ Build β Settings β Optimization Level β None (-O0). - ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² ΠΎΠΊΠ½ΠΎ
Expressions(Π° Π½Π΅Variables) ΠΈ ΡΠΊΠ°ΠΆΠΈΡΠ΅ Π΅Ρ ΡΠΈΠΏ Π²ΡΡΡΠ½ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,(uint32_t)myVar). - ΠΡΠΎΠ²Π΅ΡΡΡΠ΅, Π½Π΅ ΡΠ±ΠΈΠ»ΠΈΡΡ Π»ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ°:
Debug Configuration β Debugger β Uncheck "Enable SWO trace".
ΠΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΠ· Keil Π² STM32 CubeIDE?
ΠΠ΅ΡΠ΅Π½ΠΎΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½, Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ:
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π² CubeIDE Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΠ.
- Π‘ΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΡΠ°ΠΉΠ»Ρ
.cΠΈ.hΠΈΠ· Keil Π² ΠΏΠ°ΠΏΠΊΠΈSrc/Inc. - ΠΠ°ΡΡΡΠΎΠΉΡΠ΅
.ioc-ΡΠ°ΠΉΠ» (ΡΠ°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΡ). - ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ (
#include) β Π² Keil ΠΎΠ½ΠΈ ΡΠ°ΡΡΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅, Π° Π² CubeIDE ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΠ΅. - ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊΠ° (
.ld-ΡΠ°ΠΉΠ») β Π² Keil ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Keil ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ STM32xx_StdPeriph_Driver, Π° CubeIDE β HAL/LL. ΠΡΠΈΠ΄ΡΡΡΡ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ·ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΠ΄Π΅ Π½Π°ΠΉΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π΄Π»Ρ STM32 CubeIDE?
ΠΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ:
- Π ΡΠ°ΠΌΠΎΠΉ CubeIDE:
File β New β STM32 Project β Examples. - ΠΠ° ΡΠ°ΠΉΡΠ΅ ST: STM32Cube MCU Packages (ΠΏΠ°ΠΊΠ΅ΡΡ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ΅ΡΠΈΠΈ).
- ΠΠ° GitHub: ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ STMicroelectronics (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, STM32CubeF4).
ΠΠ»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ
Π·Π°Π΄Π°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π±ΠΎΡΠ° Ρ LoRa ΠΈΠ»ΠΈ FreeRTOS) ΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ Π½Π° GitHub Ρ ΡΠ΅Π³ΠΎΠΌ stm32-cubeide.