Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal

Π‘Π»ΠΎΠΉ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ абстракции HAL

ПослСдняя Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° β€” слой Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ абстракции (Π°Π½Π³Π». Hardware Abstraction Layer, HAL). Π•Π΅ основныС Π·Π°Π΄Π°Ρ‡ΠΈ β€” ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Π½Π° любоС сСмСйство STM32 (F0, F1 ΠΈ Ρ‚.Π΄.) ΠΊΠΎΠ΄. Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, ΠΎΠ½Π° ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ: для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ структура. ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎΡ€Ρ‚Π° Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ HAL:

ВсС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» stm32f1xx_hal_conf.h :

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. hal. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° hal

НС Π½Π°Π΄ΠΎ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° этом всС особСнности Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ. Если Ρ€Π΅Ρ‡ΡŒ Π½Π΅ ΠΈΠ΄Π΅Ρ‚ ΠΎΠ± ΠΎΠ±Ρ‰ΠΈΡ… ΠΈΠ»ΠΈ систСмных рСсурсах (GPIO, SysTick, NVIC, PWR, RCC, FLASH), вводится Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ β€” дСскриптор (Π°Π½Π³Π». handle). Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ описания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° 1 Π² систСмС. Если ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ (USART, SPI, I 2 C ΠΈ Ρ‚.Π΄.), ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ Π΅Π³ΠΎ основной Π·Π°Π΄Π°Ρ‡Π΅ β€” ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ хранятся Π² Π±ΡƒΡ„Π΅Ρ€Π΅. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ завСсти ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π΄Π²Π° массива (Π½Π° ΠΏΡ€ΠΈΠ΅ΠΌ ΠΈ Π½Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ) плюс Π΅Ρ‰Π΅ Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (ΠΈΠ»ΠΈ макроса) с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π±ΡƒΡ„Π΅Ρ€ΠΎΠ². Π£ Π±Π»ΠΎΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ (Ρ‡Π΅Ρ€Π΅Π· USART рСализуСтся IrDA ΠΈ SMARTCARD, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€), ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, сам Π±Π»ΠΎΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ состояниС (ΠΎΠ½ сСйчас Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ отправляСт ΠΈΠ»ΠΈ, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄). Π’ устройствС ΠΏΡ€ΠΈ этом ΠΌΠΎΠΆΠ΅Ρ‚ находится нСсколько Ρ‚Π°ΠΊΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ² β€” Π΄Π²Π°, Ρ‚Ρ€ΠΈ, ΠΊΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚? Π’ ΠΈΡ‚ΠΎΠ³Π΅ получаСтся, Ρ‡Ρ‚ΠΎ для обслуТивания ΠΎΠ΄Π½ΠΎΠ³ΠΎ «экзСмпляра» (Π°Π½Π³Π». instance) USART трСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΡƒΡ‡Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π² ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒΡΡ. Π›ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ являСтся ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ° всСх этих ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² структуру.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ОписаниС Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² HAL STM32F4xx, частичный ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. . Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 3b70af. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-3b70af. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 3b70af
Π”Π΅Π»ΡŽΡΡŒ нСбольшой ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ β€” это частичный ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ описания

HAL Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ для примСнСния Ρ‚Π°ΠΊΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ программирования, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π²Π΅Ρ€Ρ…Π½ΠΈΠΌ слоСм прилоТСния, Π·Π° счСт примСнСния ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ уровня HAL. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ программирования Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ прилоТСния Π½Π΅ «привязан» ΠΊ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ (МК), Ρ‚.ΠΊ обращаСтся ΠΊ рСсурсам МК Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² HAL. Вакая структура ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ прилоТСния ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΊΠΎΠ΄Π°, ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ Π»Π΅Π³ΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ устройства STM32.

Π”Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ HAL ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΊ использованию API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ прилоТСния. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° β€” встроСнныС устройства ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ (связи) содСрТат интСрфСйсы API для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ настройки устройства, управлСния ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° основС опроса, Π² прСрываниях ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· DMA, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ для управлСния ошибками связи.

API-интСрфСйсы Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² HAL, дСлятся Π½Π° Π΄Π²Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ: 1) ΠžΠ±Ρ‰ΠΈΠ΅ (generic) API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠ΅, для всСх сСрий STM32, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. 2) Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ (extension) API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат спСцифичСскиС ΠΈΠ»ΠΈ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ сСмСйства ΠΈΠ»ΠΈ Π΅Π³ΠΎ части.

Π”Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ HAL ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ, Π° Π½Π΅ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Π΅ устройства. НапримСр, API Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° дСлится Π½Π° нСсколько ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ, ΠΏΠΎ функциям, прСдоставляСмым Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ устройством Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°: Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ (basic timer), Π·Π°Ρ…Π²Π°Ρ‚Π° (capture), ΡˆΠΈΡ€ΠΎΡ‚Π½ΠΎ-ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ½ΠΎΠΉ модуляции (PWM), ΠΈ Ρ‚.д…

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² соотвСтствии со Strict ANSI-C, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ нСзависимым ΠΎΡ‚ инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’Π΅ΡΡŒ исходный ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнта статистичСского Π°Π½Π°Π»ΠΈΠ·Π° CodeSonarTM, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ являСтся MISRA-C 2004 совмСстимым.

Π”Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ слоя HAL Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ошибок Π²ΠΎ врСмя выполнСния (run-time failure detection), HAL провСряСт Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ значСния всСх Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Вакая динамичСская ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° способствуСт ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ надСТности встроСнного ПО. ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ошибок Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚Π°ΠΊΠΆΠ΅, способствуСт ΡƒΡΠΊΠΎΡ€Π΅Π½ΠΈΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ процСсса ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

Π”Π°Π»Π΅Π΅ β€” Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅

Π‘Ρ€Π°Π·Ρƒ скаТу, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π°, фактичСски, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 2 Π³Π»Π°Π²Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ описано, ΠΊΠ°ΠΊ устроСн HAL. Бтарался пСрСвСсти максимально Β«ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΒ», Π° ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒβ€¦
Если ΠΊΠ΅ΠΌ-Ρ‚ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ ляпусы β€” ΠΈΡΠΏΡ€Π°Π²Π»ΡŽ.
ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° Ρ„ΠΎΡ€ΡƒΠΌΠ΅

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

HAL stm32

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. c76c7e. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-c76c7e. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° c76c7e

HAL (Hardware Abstraction Layer) β€” это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° stm32, разработанная ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ ST Π² 2014 Π³ΠΎΠ΄Ρƒ. HAL ΠΏΡ€ΠΈΡˆΡ‘Π» Π½Π° смСну SPL.

Π—Π°Ρ€Π°Π½Π΅Π΅ скаТу, Ρ‡Ρ‚ΠΎ эта ΡΡ‚Π°Ρ‚ΡŒΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π½Π΅ ΠΌΠ°Π½ΡƒΠ°Π», это просто ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ устройство HAL, Π½Ρƒ ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это ΠΌΠ΅Ρ‚ΠΎΠ΄ изучСния сабТа.

Π˜Ρ‚Π°ΠΊ, HAL позволяСт Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с рСгистрами ΠΈ ΠΏΡ€ΠΎΡ‡Π΅ΠΉ слоТной ΠΌΠ°Π³ΠΈΠΈ. Π“Ρ€ΡƒΠ±ΠΎ говоря, HAL это ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠ° Π½Π°Π΄ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌΠΈ опСрациями. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅ это Π½Π΅ отмСняСт нСобходимости понимания устройства ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ², Π½ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сниТаСт ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ вхоТдСния.

НапримСр, Ρ‡Ρ‚ΠΎΠ± Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€, достаточно ΠΏΠ΅Ρ€Π΅Π΄ бСсконСчным Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽβ€¦

Π’ΠΎ Π΅ΡΡ‚ΡŒ Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅ рСгистры ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° это, ΠΈ Ρ‡Ρ‚ΠΎ Π² Π½ΠΈΡ… Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, эта функция Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° Π»ΡŽΠ±Ρ‹Ρ… ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… сСрии stm32.

Π‘Π°ΠΌΠ° функция выглядит Ρ‚Π°ΠΊ:

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 10f6c6. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-10f6c6. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 10f6c6

Π’Π½Π°Ρ‡Π°Π»Π΅ происходит ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π½Π° ошибки (assert_param), ΠΈ послС этого активируСтся ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΈ запускаСтся Ρ‚Π°ΠΉΠΌΠ΅Ρ€.

Однако я Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°Π±Π΅ΠΆΠ°Π» Π²ΠΏΠ΅Ρ€Ρ‘Π΄. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ HAL, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ CubeMX (Π² просторСчии Β«ΠšΡƒΠ±Β») Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ HAL являСтся Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ Β«ΠšΡƒΠ±Π°Β», ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Π½Ρ‘ΠΌ гСнСрится вСсь Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ прилоТСния Π²ΠΊΠ»ΡŽΡ‡Π°Ρ описанныС Π²Ρ‹ΡˆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΎ CubeMX Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ здСсь.

Познакомились β€” Ρ‚ΠΎΠ³Π΄Π° продолТим…

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сдСлан ΠΏΠΎ ссылкС Π²Ρ‹ΡˆΠ΅, ΠΈ рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ всю ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Π˜Ρ‚Π°ΠΊ ΠΌΡ‹ сгСнСрировали ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ, ΠΈ GPIO. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (Ρƒ мСня TrueStudio) ΠΈ Π² Π»Π΅Π²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΊΠ»Π°Ρ†Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» main.c…

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. c7953e. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-c7953e. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° c7953e

ΠšΡƒΠ± создал всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ инициализации…

void SystemClock_Config(void) β€” инициализация тактирования.
static void MX_TIM1_Init(void) β€” инициализация Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°.
static void MX_GPIO_Init(void) β€” инициализация GPIO.

… ΠΈ ΠΈΠ·Π±Π°Π²ΠΈΠ» нас ΠΎΡ‚ Π²ΠΎΠ·Π½ΠΈ с настройками, ΠΈ ΠΎΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ошибок.

ВсС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² структуры, ΠΈ адрСса этих структур ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ HAL-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. КаТдая функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ статус. Если возвращаСтся ошибка, Ρ‚ΠΎ вызываСтся функция Error_Handler() находящаяся Π² самом Π½ΠΈΠ·Ρƒ. Π’ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π±Ρ‹ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сигнализировало Π±Ρ‹ ΠΎΠ± ошибкС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΈΠ³Π½ΡƒΡ‚ΡŒ Π»Π°ΠΌΠΏΠΎΡ‡ΠΊΠΎΠΉ.

Π’ ΠΊΠΎΠ½Ρ†Π΅ Ρ„Π°ΠΉΠ»Π° обрисован ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ assert_param() Π² void assert_failed()…

Если Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎΠ± ΠΎΠ½ раскоммСнтировался, Ρ‚ΠΎ Π½Π°Π΄ΠΎ Π² ΠšΡƒΠ±Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ так…

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. f312eb. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-f312eb. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° f312eb
Enable Full Assert. Π­Ρ‚ΠΈ ассСрты Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ количСство памяти, поэтому ΠΈΡ… Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π° Π² Ρ€Π΅Π»ΠΈΠ·Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°ΠΌΠΈ Π½Π° ошибки Ρƒ HAL’Π° всё ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим процСсс ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°.

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. c115c7. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-c115c7. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° c115c7

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 9862cb. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-9862cb. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 9862cb

Π—Π΄Π΅ΡΡŒ происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ΡΡ Π½Π΅ пустой Π»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ структуры (htim == NULL) ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π»ΠΈ всС элСмСнты структуры (assert_param).

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ΡΡ статус Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° (htim->State == HAL_TIM_STATE_RESET). Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС статус HAL_TIM_STATE_RESET Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ устройство Π΅Ρ‰Π΅ Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ.

Если статус удовлСтворяСт, Ρ‚ΠΎ снимаСтся Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° (htim->Lock = HAL_UNLOCKED) ΠΈ вызываСтся функция HAL_TIM_Base_MspInit(htim) …

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. c27f16. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-c27f16. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° c27f16

Π—Π΄Π΅ΡΡŒ провСряСтся ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ настраиваСтся (htim_base->Instance==TIM1) ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Ρ‚Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°, Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΈ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚.

Π”Π°Π»Π΅Π΅ устанавливаСтся статус «занято» (htim->State= HAL_TIM_STATE_BUSY) β€” Ссли ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½Π° Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° функция ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°, Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ смоТСт Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΡ€Ρ‚ΠΈΡ‚ΡŒ.

ПослС этого вызываСтся функция TIM_Base_SetConfig(htim->Instance, &htim->Init) (Ρƒ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅Ρ‚ приставки HAL, поэтому ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ Π΅Ρ‘ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ) Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π°Ρ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ с рСгистрами…

Ну ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ† устанавливаСтся статус Β«Π³ΠΎΡ‚ΠΎΠ² ΠΊ Ρ‚Ρ€ΡƒΠ΄Ρƒ ΠΈ ΠΎΠ±ΠΎΡ€ΠΎΠ½Π΅Β» (htim->State= HAL_TIM_STATE_READY) ΠΈ возвращаСтся β€” return HAL_OK;

ВсС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Π΅ названия ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΈΡ… назначСниС…

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 86dbf0. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-86dbf0. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 86dbf0

ΠžΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ _IT ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ устройство Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅. Π­Ρ‚ΠΎ относится ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ функциям ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ Π² HAL.

НапримСр запуск Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Π±Π΅Π· ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ выглядит Ρ‚Π°ΠΊ:

Как Π²Ρ‹ ΡƒΠΆΠ΅ Π½Π°Π²Π΅Ρ€Π½ΠΎ поняли, ΠΎΠ΄Π½Π° ΠΈΠ· особСнностСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ HAL это большоС количСство ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Π·Π°Ρ‰ΠΈΡ‰Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΎΡ‚ массы нСприятностСй. ΠšΡ‚ΠΎ-Ρ‚ΠΎ расцСнит это ΠΊΠ°ΠΊ Π΄ΠΎΠ±Ρ€ΠΎΠ΄Π΅Ρ‚Π΅Π»ΡŒ, Π° ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ количСство ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎ. Однако Π½Π΅ стоит Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π½Π° этот счёт Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² процСссС изучСния Π²Ρ‹ ΠΏΠΎΠΉΠΌΡ‘Ρ‚Π΅ Π³Π΄Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ эти ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Π° Π³Π΄Π΅ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ. Π’ΠΎ ΠΆΠ΅ самоС касаСтся ΠΈ всСго ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ, со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ HAL ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ с рСгистрами.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠ΅ΠΉ, всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… файлах…

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. cbc2f6. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-cbc2f6. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° cbc2f6

Названия Ρ„Π°ΠΉΠ»ΠΎΠ² говорят сами Π·Π° сСбя.

Ѐункция запуска таймСра…

… сама ΠΏΠΎ сСбС Π½Π΅ особо интСрСсна.

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 4a44d9. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-4a44d9. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 4a44d9

Ѐункция устанавливаСт Π±ΠΈΡ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΉ прСрывания ΠΏΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ β€” __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE) ΠΈ Π±ΠΈΡ‚ Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° β€” __HAL_TIM_ENABLE(htim).

А Π²ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° прСрывания ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ устройство Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ HAL. Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ Сго…

Когда ΠΌΡ‹ Π² ΠšΡƒΠ±Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΎΡ‚ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΈ, Ρ‚ΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ stm32f1xx_it.c автоматичСски создаётся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ имСнСм…

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 78950d. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-78950d. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 78950d
Бюда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сработаСт ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΎΡ‚ любого ΠΈΠ· событий Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° β„–1.

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ecdee9. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-ecdee9. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ecdee9

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° войдя Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ HAL_TIM_IRQHandler провСряСт ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Ρ„Π»Π°Π³ΠΎΠ² Π±Ρ‹Π» установлСн ΠΈ найдя Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ выполняСт Π΅Π³ΠΎ содСрТимоС.

Нас интСрСсуСт Π±Π»ΠΎΠΊ TIM Update event…

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 1e1bab. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-1e1bab. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 1e1bab

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° HAL ΠΏΠΎΠ΄ завязку Π½Π°ΠΏΠΈΡ‡ΠΊΠ°Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ макросами. Как ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π² Π½Π°Ρ‡Π°Π»Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΎΠ½ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с __Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ подчёркивания ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΈΡ… Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΈ макросы ΠΎΡ‡Ρ‘Π½ΡŒ клёвая ΡˆΡ‚ΡƒΠΊΠ°, ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π±ΠΈΡ‚Π°ΠΌΠΈ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… рСгистрах Π±Π΅Π· нСобходимости ΠΊΠΎΠΏΠ°Ρ‚ΡŒΡΡ Π² Π΄Π°Ρ‚Π°ΡˆΠΈΡ‚Π°Ρ….

Π’Π½ΡƒΡ‚Ρ€ΠΈ макроса __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE) содСрТится Π²ΠΎΡ‚ такая конструкция…

Π­Ρ‚ΠΎΡ‚ макрос сбрасываСт Π±ΠΈΡ‚ (ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ) Π² рСгистрС состояния (Status Register).

Π’ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ подставляСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° структуру Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°, Π° Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΈΠ΄Ρ‘Ρ‚ Π΄Π΅Ρ„Π°ΠΈΠ½ Ρ„Π»Π°Π³Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ взводится ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ прСрывания…

Написав ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° HAL Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π³Π΄Π΅-ΠΊΠ°ΠΊΠΈΠ΅ макросы/Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ, ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с рСгистрами Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. Π’ΠΎ Π΅ΡΡ‚ΡŒ HAL ΠΌΠΎΠΆΠ½ΠΎ с Π»Ρ‘Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ пособиС для изучСния Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

КолбСк это характСрная Ρ„ΠΈΡˆΠΊΠ° HAL’Π°. Π’ ΠΊΠΎΠ»Π±Π΅ΠΊΠ°Ρ… Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ дСйствия ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ события/прСрывания, Π² нашСм случаС ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΌΠΈΠ³Π°Ρ‚ΡŒ Π»Π°ΠΌΠΏΠΎΡ‡ΠΊΠΎΠΉ.

Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ Π½Π°ΠΌ Π½ΠΈΡ‡Ρ‚ΠΎ Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ ΠΌΠΈΠ³Π°Ρ‚ΡŒ Π»Π°ΠΌΠΏΠΎΡ‡ΠΊΠΎΠΉ прямо Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅, Π΄Π° Π΅Ρ‰Ρ‘ ΠΈ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ рСгистрами Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ (Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ…Π°Ρ€Π΄ΠΊΠΎΡ€Π°)…

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. abfcd0. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-abfcd0. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° abfcd0
Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ дСлаСтся Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ HAL β€” сбрасываСтся Ρ„Π»Π°Π³ прСрывания ΠΈ вмСсто Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠΎΠ»Π±Π΅ΠΊΠ° сразу ΠΆΠ΅ выполняСтся дСйствиС (ΠΌΠΈΠ³Π°Π½ΠΈΠ΅ свСтиком).

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ количСство ΠΊΠΎΠ΄Π° ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΠ»ΠΎΡΡŒ Π±Ρ‹ Π² Ρ€Π°Π·Ρ‹, Π½ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ, ΠΈ Π² любом случаС Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ β€” ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ событиС ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ (Ссли Π±Ρ‹ ΠΈΡ… Π±Ρ‹Π»ΠΎ нСсколько). Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² дальнСйшСм, ΠΊΠΎΠ³Π΄Π° Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π½ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Π΅Ρ‚Π΅ΡΡŒ, Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΡ‚ΠΈΡ…ΠΎΠ½Π΅Ρ‡ΠΊΡƒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с рСгистрами.

Если Π²Ρ‹ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ посмотритС, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ события Π΅ΡΡ‚ΡŒ свой ΠΊΠΎΠ»Π±Π΅ΠΊ. НапримСр Ρƒ Π·Π°Ρ…Π²Π°Ρ‚Π°/сравнСния ΠΈΡ… Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎβ€¦

Находим Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π½Π°ΠΌ колбСк…

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. dfb2c4. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-dfb2c4. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° dfb2c4

… ΠΈ пСрСопрСдСляСм Π΅Π³ΠΎ Π² Ρ„Π°ΠΉΠ» main.c

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎ ΠΎΡ‚ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° β„–1 ΠΈ ΠΌΠΈΠ³Π°Π΅ΠΌ свСтиком.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΎΡ‚ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΈΡˆΠ»ΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ нСсколько Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ². Π’ΡƒΡ‚ Π΄Π΅Π»ΠΎ Π²ΠΎΡ‚ Π² Ρ‡Ρ‘ΠΌ: Ссли ΠΌΡ‹ настроим Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ Ρ‚Π°ΠΉΠΌΠ΅Ρ€, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β„–2, ΠΈ ΠΎΠ½ Ρ‚ΠΎΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ прСрывания, Ρ‚ΠΎΠ³Π΄Π° Π² Ρ„Π°ΠΉΠ»Π΅ stm32f1xx_it.c появится Π²Ρ‚ΠΎΡ€ΠΎΠΉ обработчик…

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 7b32b2. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-7b32b2. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 7b32b2

НС смотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π΄Π²Π°, функция HAL_TIM_IRQHandler() ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅. БоотвСтствСнно ΠΈ ΠΊΠΎΠ»Π±Π΅ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для Π΄Π²ΡƒΡ… Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ² Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ так…

Π­Ρ‚ΠΎ касаСтся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ², Π½ΠΎ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅ΠΉ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΈ β€” USART, SPI, I2C ΠΈ Ρ‚.Π΄.

Рассмотрим Ρ€Π°Π±ΠΎΡ‚Ρƒ USART’Π° с DMA, Ρ‚Π°ΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ нСсколько слоТнСС Ρ‡Π΅ΠΌ с Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠΌ. Π’ ΠšΡƒΠ±Π΅ настройтС USART с использованиСм DMA Π½Π° приём…

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ba9b86. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-ba9b86. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ba9b86

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ USART’Π° Ρ‚ΠΎΡ‡Π½ΠΎ такая ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Ρƒ таймСра…

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 5c3b6f. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-5c3b6f. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 5c3b6f
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ Π² структуру ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Команда запуска ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅ схоТа с Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠΌ (пСрСдаётся структура + Π΄ΠΎΠΏ. Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹)…

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ это адрСс структуры, Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” это адрСс массива Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ β€” это количСство Π±Π°ΠΉΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ.

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 513d54. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-513d54. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 513d54

Π—Π΄Π΅ΡΡŒ Ρƒ нас ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π΅Π³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½Π΅Π½ΡŒΠΊΠΎΠ³ΠΎ.

Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ происходит ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° β€” занят USART ΠΈΠ»ΠΈ Π½Π΅Ρ‚ (HAL_UART_STATE_READY).

Если Π΄ΠΎ этого функция ΡƒΠΆΠ΅ Π·Π°ΠΏΡƒΡΠΊΠ°Π»Π°ΡΡŒ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ Π΅Ρ‰Ρ‘ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹, Ρ‚ΠΎ эта ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π΅ ΠΏΡ€ΠΎΠΉΠ΄Ρ‘Ρ‚ ΠΈ функция Π²Π΅Ρ€Π½Ρ‘Ρ‚ статус «занято» (return HAL_BUSY). Если ΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Π΄ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ β€” HAL_UART_AbortReceive(&huart1). Как Π²ΠΈΠ΄ΠΈΡ‚Π΅ названия Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ говорят сами Π·Π° сСбя.

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 03a3ba. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-03a3ba. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 03a3ba

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 4812d8. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-4812d8. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 4812d8

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 7bcbba. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-7bcbba. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 7bcbba

Π‘Π»Π΅Π΄ΠΎΠΌ ΠΈΠ΄Ρ‘Ρ‚ запуск DMA β€” HAL_DMA_Start_IT() …

Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ пСрСдаётся: ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° структуру, источник Π΄Π°Π½Π½Ρ‹Ρ… (Π² нашСм случаС это рСгистр Π΄Π°Π½Π½Ρ‹Ρ… (DR) USART’Π°), ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… (адрСс Π±ΡƒΡ„Π΅Ρ€Π°), ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅ ΠΊΠΎΠ»-Π²ΠΎ Π±Π°ΠΉΡ‚.

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ebada3. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-ebada3. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ebada3

Если элСмСнт структуры hdma->XferHalfCpltCallback Π½Π΅ пустой, Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ прСрывания ΠΏΠΎ заполнСнию Π±ΡƒΡ„Π΅Ρ€Π° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ (DMA_IT_TC), ΠΏΠΎ заполнСнию Π±ΡƒΡ„Π΅Ρ€Π° Π½Π°ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ (DMA_IT_HT), ΠΈ ΠΏΡ€ΠΈ ошибкС (DMA_IT_TE). Если Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ‹ Π±ΡƒΡ„Π΅Ρ€Π°, Ρ‚ΠΎ Π½Π°Π΄ΠΎ Π² huart->hdmarx->XferHalfCpltCallback Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ NULL.

На этом функция HAL_UART_Receive_DMA(&huart1, (uint8_t*)rx_buff, BUFSIZE) Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°.

НизкоуровнСвый ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ ΠΎΡ‚ DMA выглядит Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π² случаС с таймСром…

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. b0325c. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-b0325c. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° b0325c

… Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ HAL-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ HAL_DMA_IRQHandler(&hdma_usart1_rx);

И ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Ρƒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°, функция состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ². ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π±Π»ΠΎΠΊ срабатываСт ΠΏΡ€ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ΠΊΠΈ Π±ΡƒΡ„Π΅Ρ€Π°, Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, Π° Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΡ€ΠΈ ошибкС. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рассмотрим Π±Π»ΠΎΠΊ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ буфСра…

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. c546be. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-c546be. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° c546be

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ Ρ„Π»Π°Π³ΠΈ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π° (DMA_FLAG_TC1) ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΡ‘Π½Π½ΠΎΠ³ΠΎ прСрывания (DMA_IT_TC).

Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΎΡ‡Π΅Π½ΡŒ просто…

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 8fd7bb. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-8fd7bb. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 8fd7bb

Вакая Π²ΠΎΡ‚ хитроумная конструкция Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 519969. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-519969. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 519969

Если ΠΏΡ€ΠΈΡ‘ΠΌ вСдётся Π±Π΅Π· DMA…

Π’ΠΎΠ³Π΄Π° послС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ глобального прСрывания USART’Π° появится Π΅Π³ΠΎ обработчик…

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 5871ff. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-5871ff. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 5871ff

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 478ad4. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-478ad4. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 478ad4

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 354242. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-354242. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 354242

Π‘Π»Π΅Π΄ΠΎΠΌ провСряСтся счётчик принятых Π±Π°ΠΉΡ‚ β€” RxXferCount (ΠΎΠ½ считаСт Β«Π²Π½ΠΈΠ·Β» ΠΎΡ‚ максимального значСния Π±ΡƒΡ„Π΅Ρ€Π°), ΠΈ Ссли ΠΎΠ½ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ приняты всС Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅), Ρ‚ΠΎ вызываСтся ΠΊΠΎΠ»Π±Π΅ΠΊ β€” HAL_UART_RxCpltCallback(huart);

Π’ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ хочСтся Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· DMA. Для этого Ρ€Π΅ΠΆΠΈΠΌΠ° Ρƒ DMA Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ создания ΠΊΠΎΠ»Π±Π΅ΠΊΠΎΠ².

Настроим ΠšΡƒΠ± для ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ массива ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ области памяти Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ DMA…

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. e860d2. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-e860d2. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° e860d2
Π”Π»ΠΈΠ½Π° слова ΡƒΠΊΠ°Π·Π°Π½Π° Word (32 Π±ΠΈΡ‚Π°), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π±Π°ΠΉΡ‚Π° Π·Π° ΠΎΠ΄ΠΈΠ½ Ρ‚Π°ΠΊΡ‚.

Ѐункция рСгистрации колбСка…

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. f7d238. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-f7d238. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° f7d238

Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Ρ‚Ρ€ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:

1. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° структуру.
2. ΠšΠ»ΡŽΡ‡, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ опрСдСляСтся ΠΊΠ°ΠΊΠΎΠ΅ событиС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π±Π΅ΠΊ β€” скопирован вСсь Π±ΡƒΡ„Π΅Ρ€, скопирована ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° Π±ΡƒΡ„Π΅Ρ€Π° ΠΈ Ρ‚.Π΄.

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. cdf742. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-cdf742. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° cdf742
Π’ нашСм случаС ΡƒΠΊΠ°Π·Π°Π½ ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π±ΡƒΡ„Π΅Ρ€ β€” HAL_DMA_XFER_CPLT_CB_ID.

3. НазваниС ΠΊΠΎΠ»Π±Π΅ΠΊΠ°. ΠŸΡ€ΠΈΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ сами.

Ѐункция запуска копирования…

АргумСнты: ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° структуру, массив ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ копируСтся, массив Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ копируСтся, количСство Π±Π°ΠΉΡ‚ (ячСйки массива 8-ΠΌΠΈ Π±ΠΈΡ‚Π½Ρ‹Π΅, Π° DMA Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ 32 Π±ΠΈΡ‚Π° Π·Π° Ρ€Π°Π·).

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠΈΠ·ΡƒΡ‡Π°ΠΉΡ‚Π΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π²Ρ‹ ΡƒΠΆΠ΅ всё Π·Π½Π°Π΅Ρ‚Π΅ Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 6b164e. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-6b164e. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 6b164e

По ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΡŽ копирования ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ обработчик…

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 77e4ee. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-77e4ee. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 77e4ee

Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ HAL_DMA_IRQHandler() прописан Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΊΠ°ΠΊ ΠΈ Π² случаС с USART’ΠΎΠΌ β€” нСсколько Π±Π»ΠΎΠΊΠΎΠ² ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΡ… Π·Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ событиС (ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π±ΡƒΡ„Π΅Ρ€, ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ΠΊΠ° ΠΈ Ρ‚.Π΄.) ΠΈ Π²ΠΎΡ‚ это…

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 10b1ff. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-10b1ff. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 10b1ff

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ структуры hdma->XferCpltCallback Π±Ρ‹Π» Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ Π²ΠΎ врСмя рСгистрации ΠΊΠΎΠ»Π±Π΅ΠΊΠ°.

На этом Π½Π°Π²Π΅Ρ€Π½ΠΎ всё.

ВсСм спасибо Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 1db9cc. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-1db9cc. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 1db9cc

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

РусскиС Π‘Π»ΠΎΠ³ΠΈ

HAL Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для STM32

1 Π’Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ STM32

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с STM32, ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ сначала Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.Π Π°Π·Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄ΡƒΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ваша Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° программирования Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ людСй Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ HAL, ΠΈ ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΠ΅ люди Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡƒΡ‚Π΅ΠΌ нСпосрСдствСнной настройки рСгистров. ОписаниС стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ HAL Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚, бСсчислСнноС мноТСство. Но для ΠΌΠ½ΠΎΠ³ΠΈΡ… Π½ΠΎΠ²Ρ‹Ρ… Π΄Ρ€ΡƒΠ·Π΅ΠΉ я Π΄ΠΎ сих ΠΏΠΎΡ€ Π½Π΅ понимаю Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ этими Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, поэтому я Ρ…ΠΎΡ‡Ρƒ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ эти Π²Π΅Ρ‰ΠΈ с ΠΌΠΎΠΈΠΌ собствСнным ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ Π² ΠΎΡ‡Π΅Π½ΡŒ простой Ρ„ΠΎΡ€ΠΌΠ΅. Если Π² описании Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ мнСния, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΡΠΊΠ°Π·Π°Ρ‚ΡŒ это.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ рСгистр
МногиС Π΄Ρ€ΡƒΠ·ΡŒΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сначала ΡƒΠ·Π½Π°Π»ΠΈ 51, ΠΌΠΎΠ³ΡƒΡ‚ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ нСбольшоС количСство людСй ΠΈΠ»ΠΈ ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… пособий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡƒΡ‚Π΅ΠΌ нСпосрСдствСнного управлСния рСгистрами Π½Π° ассСмблСрС. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² STM32. Блишком прост Π² Ρ€Π°Π±ΠΎΡ‚Π΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ количСство рСгистров STM32 Π² Π΄Π΅ΡΡΡ‚ΡŒ Ρ€Π°Π· большС, Ρ‡Π΅ΠΌ Ρƒ ΠΎΠ΄Π½ΠΎΠΊΡ€ΠΈΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° 51, поэтому ΠΌΠ½ΠΎΠ³ΠΈΠ΅ рСгистры Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°ΠΏΠΎΠΌΠ½Π΅Π½Ρ‹. Π’ΠΎ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ часто Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… микросхСмы. Π’ настоящСС врСмя нСпосрСдствСнноС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ рСгистрами становится ΠΎΡ‡Π΅Π½ΡŒ трудоСмкая. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, всС Π΅Ρ‰Π΅ Π±ΡƒΠ΄Π΅Ρ‚ нСбольшоС количСство людСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ рСгистрами, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Π±Π»ΠΈΠΆΠ΅ ΠΊ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ, ΠΈ ΠΎΠ½ΠΈ Π·Π½Π°ΡŽΡ‚, ΠΏΠΎΡ‡Π΅ΠΌΡƒ.

2 Установка Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΎΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ HAL ΠΈ руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

1. Π‘Π½Π°Ρ‡Π°Π»Π° настройтС ΠΊΡƒΠ± для автоматичСской Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈΠ· сСти.
Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ настройки срСдства обновлСния
Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 82c459825666be39cf9d0c3d6d6b6a62. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-82c459825666be39cf9d0c3d6d6b6a62. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 82c459825666be39cf9d0c3d6d6b6a62

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. a16c32f1d07c300d53b4207a66d1d159. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-a16c32f1d07c300d53b4207a66d1d159. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° a16c32f1d07c300d53b4207a66d1d159

2. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ Π² соотвСтствии с Ρ‡ΠΈΠΏΠΎΠΌ

ВСрсия ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ совмСстима, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ. Но Ссли Π²Ρ‹ считаСтС, Ρ‡Ρ‚ΠΎ послСдняя вСрсия слишком Π²Π΅Π»ΠΈΠΊΠ°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ основныС измСнСния Π½ΠΈΠΆΠ΅: ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ваш Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ‡ΠΈΠΏ.
Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 918de3d6f3f7bed5fa0bce1abda3ff17. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-918de3d6f3f7bed5fa0bce1abda3ff17. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 918de3d6f3f7bed5fa0bce1abda3ff17

ПослС Π²Ρ‹Π±ΠΎΡ€Π° Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β«Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ сСйчас». ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌ. РСкомСндуСтся Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ нСпосрСдствСнно Π½Π° мСстный ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ сайт, Π° Π·Π°Ρ‚Π΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. bb3b2f7312fedf046f12a92a1988bf7f. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-bb3b2f7312fedf046f12a92a1988bf7f. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° bb3b2f7312fedf046f12a92a1988bf7f

РСализация ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ модСль

Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 1000f6ca35e1b06832bb0bf7c3bed3d8. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-1000f6ca35e1b06832bb0bf7c3bed3d8. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 1000f6ca35e1b06832bb0bf7c3bed3d8

Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ находится Π² ΠΏΠ°ΠΏΠΊΠ΅ Drivers.
Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. a6fb80f999a87c0a7b09a6b3837d49bc. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-a6fb80f999a87c0a7b09a6b3837d49bc. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° a6fb80f999a87c0a7b09a6b3837d49bc

Автор: My ΠœΡƒΠΆΠΈ Мин
Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: CSDN
ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»:https://blog.csdn.net/sinat_37853238/article/details/85141168
ЗаявлСниС ΠΎΠ± авторском ΠΏΡ€Π°Π²Π΅: эта ΡΡ‚Π°Ρ‚ΡŒΡ являСтся ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ Π±Π»ΠΎΠ³Π³Π΅Ρ€Π°, ΠΏΠ΅Ρ€Π΅ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΠΉΡ‚Π΅ ссылку Π½Π° пост Π² Π±Π»ΠΎΠ³Π΅!

3 Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ STM32 HAL ΠΈ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ _ ΠŸΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ дСскрипторС, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MSP, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°

3.1 Π ΡƒΡ‡ΠΊΠ°

ДСскриптор (handle) ΠΈΠΌΠ΅Π΅Ρ‚ мноТСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… относится ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, Π²Ρ‚ΠΎΡ€ΠΎΠ΅ относится ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Windows. БСйчас Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Π½ΠΈΡ… относятся ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ / Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ программ。

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ STM32 ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½ΠΎΠ΅ устройство (здСсь Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° взят USART), Π½Π°ΠΌ сначала Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ рСгистры. Π’ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ структуры Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ встроСнного ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния + функция ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ встроСнного ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния:

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ:

Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ HAL ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ структуры ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ USART Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. 。

Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ элСмСнты структуры

ΠœΡ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, этот Ρ‡Π»Π΅Π½ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ:

НапримСр, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° MSP ΠΈ Callback Π±ΡƒΠ΄ΡƒΡ‚ описаны ΠΏΠΎΠ·ΠΆΠ΅:

Π’ этих функциях Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ дСскриптор UART1_Handler, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π²ΠΎ врСмя ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

3.2.MSP функция

MSP: ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ MCU

MSP относится ΠΊ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, связанной с MCUЦитируя объяснСниС ΠΏΡƒΠ½ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Π°Ρ‚ΠΎΠΌΠΎΠ², я Π»ΠΈΡ‡Π½ΠΎ ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ это ΠΎΡ‡Π΅Π½ΡŒ ясно:

ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ сначала ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Π΅Ρ‰ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ с MCU, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ, Ρ‡Π΅Ρ‚Π½ΠΎΡΡ‚ΡŒ, остановка
Π±ΠΈΡ‚Ρ‹ ΠΈ Ρ‚. Π΄. Π­Ρ‚ΠΈ настройки ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ с MCU, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ STM32F1 ΠΈΠ»ΠΈ STM32F2 / F3 / F4 / F7
. Для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ устройства трСбуСтся MCU для Π΅Π³ΠΎ пСрСноса, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, STM32F4 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС ΠΊΠ°Π½Π°Π»Π°-носитСля, Π° PA9 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС отправитСля.
для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ, PA10 Π² качСствС получатСля, MSP ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ PA9, PA10 Π² STM32F4 ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ эти Π΄Π²Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°. Π’Π°ΠΊ Π₯АЛ
ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° :

Π’ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ HAL STM32 HAL_PPP_MspInit () ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ HAL_PPP_Init (). Когда Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ пСрСнСсти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ STM32F1, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ содСрТимоС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ HAL_PPP_MspInit Π±Π΅Π· измСнСния содСрТимого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² записи HAL_PPP_Init.

Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ HAL ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½ΠΎΠΌΡƒ устройству Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ соСдинСниС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹ΠΌ устройством ΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ ΠΏΠΎΡ€Ρ‚ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ Π»ΠΈ ΠΎΠ½ ΠΈ Ρ‚. Π”. МоТно Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° HAL ΠΈΠΌΠ΅Π΅Ρ‚ большС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ MSP, Ρ‡Π΅ΠΌ стандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΈ ΠΎΠ½Π° пСрСносима ΠžΡ‡Π΅Π½ΡŒ ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΉ, Π½ΠΎ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя это ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ объСм ΠΊΠΎΠ΄Π° ΠΈ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ влоТСнности ΠΊΠΎΠ΄Π°. Π•ΡΡ‚ΡŒ ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы.

Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MSP ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с дСскрипторами для достиТСния ΠΎΡ‡Π΅Π½ΡŒ сильной пСрСносимости:

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ Π²Π²ΠΎΠ΄Π° Π½ΡƒΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ дСскриптор ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π°, поэтому Π΅Π³ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ.

3.3.Callback функция

Подобно Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MSP, я Π»ΠΈΡ‡Π½ΠΎ ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ функция ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Π² основном ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅.

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° USART. Π’ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ послС прСрывания ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ сначала ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, слСдуСт Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ Π² ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΈ, Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, кстати ΡΠ½ΡΡ‚ΡŒ Ρ„Π»Π°ΠΆΠΎΠΊ прСрывания, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, поэтому, Ссли ΠΌΡ‹ НаписаниС Ρ‚Π°ΠΊΠΎΠ³ΠΎ большого количСства ΠΊΠΎΠ΄Π° Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСрывания ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ±ΠΈΡ‚ΡŒ с Ρ‚ΠΎΠ»ΠΊΡƒ:

Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ HAL послС Π²Π²ΠΎΠ΄Π° прСрывания ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° ΠΎΠ½Π° нСпосрСдствСнно размСщаСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ прСрывания Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ HAL:

HAL_UART_IRQHandler Π­Ρ‚Π° функция Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠ΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ (ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ? ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ? Или Π΄Ρ€ΡƒΠ³ΠΎΠ΅?), А Π·Π°Ρ‚Π΅ΠΌ считываСт Π΄Π°Π½Π½Ρ‹Π΅, сохраняСт ΠΈΡ… Π² Π±ΡƒΡ„Π΅Ρ€Π½ΠΎΠΉ области, ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ Ρ„Π»Π°Π³ прСрывания ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.
НапримСр, Ссли я ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»ΡŽ Π΅Π³ΠΎ Π·Π°Ρ€Π°Π½Π΅Π΅, ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ ΠΏΡΡ‚ΡŒ Π±Π°ΠΉΡ‚ΠΎΠ², ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΡ€Ρ‚ΠΎΠΌ, я ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ эти ΠΏΡΡ‚ΡŒ Π±Π°ΠΉΡ‚ΠΎΠ².
Π’ Π½Π°Ρ‡Π°Π»Π΅ я ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ» Π±ΡƒΡ„Π΅Ρ€ ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π°:

Π’ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ я установил адрСс области Π±ΡƒΡ„Π΅Ρ€Π° ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±ΡƒΡ„Π΅Ρ€Π° (ΠΏΡΡ‚ΡŒ Π±Π°ΠΉΡ‚ΠΎΠ²) Π² дСскрипторС.

Π’ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… HAL_UART_IRQHandler Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ ΠΏΡΡ‚ΡŒ Π±Π°ΠΉΡ‚ΠΎΠ² послС получСния:

Π’ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Π½Π°ΠΌ трСбуСтся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ² (сохранСнных Π² aRxBuffer []), ΠΈ Π½Π΅Ρ‚ нСобходимости Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ Ρ„Π»Π°Π³ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.
Π’Π°ΠΊ ΡΠΊΠ°Π·Π°Ρ‚ΡŒΠ€ΡƒΠ½ΠΊΡ†ΠΈΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° являСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ уровня. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ устанавливаСм ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² дСскрипторС, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΆΠ΄Π΅ΠΌ, ΠΏΠΎΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° HAL ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»ΠΈ, Π² наши Ρ€ΡƒΠΊΠΈ.

4 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ STM32 HAL

Когда Π΄Π΅Π»ΠΎ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ STM32 HAL, я Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ STM32CubeMX, ΠΊΠ°ΠΊ инструмСнт Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ экономит врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. STM32CubeMX основан Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ HAL ΠΈ Π² настоящСС врСмя ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ HAL ΠΈ LL! Π‘Π½Π°Ρ‡Π°Π»Π° рассмотрим структуру include ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ HAL:
Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. 22cfd718c32d121dc7ec7fba8af867b0. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal Ρ„ΠΎΡ‚ΠΎ. Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal-22cfd718c32d121dc7ec7fba8af867b0. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Stm32 Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ hal. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 22cfd718c32d121dc7ec7fba8af867b0

Π‘Ρ€Π°Π·Ρƒ ΠΆΠ΅ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ stm32f4xx_hal.h.

Π”Π°Π»Π΅Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ исходныС Ρ„Π°ΠΉΠ»Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ HAL. ИмСна Ρ„Π°ΠΉΠ»ΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ HAL Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с stm32f4xx_hal, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт _ имя ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ устройства ΠΈΠ»ΠΈ модуля (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, stm32f4xx_hal_adc.c):

Π’ соотвСтствии с ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ имСнования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ HAL Π΅Π΅ API ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Ρ€ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:
Π’ настоящСС врСмя Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° LL связана с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ HAL, поэтому Π² исходном ΠΊΠΎΠ΄Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ HAL Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ исходныС Ρ„Π°ΠΉΠ»Ρ‹ с ΠΈΠΌΠ΅Π½Π΅ΠΌ stm32f2xx_ll_ppp. Π­Ρ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅Π΄Π°Π²Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ LL.

ΠŸΡ€ΠΈ использовании производствСнного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° CubeMX Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ LL

Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ знания Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ:

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ опрСдСлСния, ADC_HandleTypeDef содСрТит всС опрСдСлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ Π² ADC. Для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ADC, просто ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ADC_HandleTypeDef, присвойтС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½ΠΎΠ΅ устройство Π±ΡƒΠ΄Π΅Ρ‚ абстрагировано. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом являСтся Π΅Π³ΠΎ использованиС.
ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Для этих ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… устройств ΠΈΠ»ΠΈ систСмных ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… устройств ΠΈΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ абстракции. οΌŒΠ­Ρ‚ΠΈ части Π² основном ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ с ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ стандартными функциями ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ., НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Π΅ устройства:
— GPIO
— SYSTICK
— NVIC
— RCC
— FLASH

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рассмотрим GPIO. Для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ HAL_GPIO_Init () трСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ адрСс GPIO ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

(2) Π’Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° программирования
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° HAL Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ. Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ HAL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚Ρ€ΠΈ Ρ€Π΅ΠΆΠΈΠΌΠ° программирования:Π Π΅ΠΆΠΈΠΌ опроса, Ρ€Π΅ΠΆΠΈΠΌ прСрывания, Ρ€Π΅ΠΆΠΈΠΌ DMA(Если поддСрТиваСтся ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹ΠΌ устройством). Они ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Ρ‚Ρ€Π΅ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ АЦП):

Π‘Ρ€Π΅Π΄ΠΈ Π½ΠΈΡ…Π‘ _IT ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ прСрывания, Ρ€Π°Π±ΠΎΡ‚Π° с _DMA Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ DMA(ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: прСрывания Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ DMA);НичСго Π½Π΅ принСсло это Ρ€Π΅ΠΆΠΈΠΌ опроса(Π‘Π΅Π· Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ). ΠžΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, зависит ΠΎΡ‚ Π΅Π³ΠΎ Π²Ρ‹Π±ΠΎΡ€Π°.

Π’Π°ΠΊΠΆΠ΅ Π’ Π½ΠΎΠ²ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ HAL макросы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для настройки Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ ΠΈ Ρ‚. Π”. (Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ стандартныС ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой всС Π²ΠΈΠ΄Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ). Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ макросы Π² основном ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… устройств:

__HAL_PPP_ENABLE_IT(HANDLE, INTERRUPT): Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½ΠΎΠ΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅
__HAL_PPP_DISABLE_IT(HANDLE, INTERRUPT)οΌšΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½ΠΎΠ΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅
__HAL_PPP_GET_IT (HANDLE, __ INTERRUPT __)οΌšΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ статус ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ прСрывания
__HAL_PPP_CLEAR_IT (HANDLE, __ INTERRUPT __)οΌšΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ состояниС прСрывания ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ устройства
__HAL_PPP_GET_FLAG (HANDLE, FLAG)οΌšΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ статус Ρ„Π»Π°Π³Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ устройства
__HAL_PPP_CLEAR_FLAG (HANDLE, FLAG)οΌšΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ состояниС Ρ„Π»Π°Π³Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ устройства
__HAL_PPP_ENABLE(HANDLE) οΌšΠ’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΡŽ
__HAL_PPP_DISABLE(HANDLE) οΌšΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ пСрифСрия
__HAL_PPP_XXXX (HANDLE, PARAM) οΌšΠœΠ°ΠΊΡ€ΠΎ опрСдСлСния для ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… устройств
_HAL_PPP_GET IT_SOURCE (HANDLE, __ INTERRUPT __)οΌšΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ источник прСрывания

(3) Π’Ρ€ΠΈ основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°
Π’ исходном ΠΊΠΎΠ΄Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ HAL Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с __weak, ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±Ρ‹Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

НСкоторыС Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

1. Ѐункция ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ / Π΄Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½ΠΎΠΉ систСмы(Вторая Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° MSP): HAL_PPP_MspInit () ΠΈ HAL_PPP_MspDeInit ** НапримСр: __weak void HAL_SPI_MspInit (SPI_HandleTypeDef * hspi). ВызываСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ HAL_PPP_Init () для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… связанных устройств (GPIO, часы, DMA, ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅)

Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² Ρ‚Ρ€Π΅Ρ… Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹Ρ… функциях ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°.

Π’ структурС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ HAL Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ DeInit ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ (особСнно ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ). 。
Ошибка Π²Ρ‹Π·ΠΎΠ²Π° return, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Π΅ устройства ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ нСсколько Ρ€Π°Π·, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ сбою ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. БущСствуСт ΠΌΠ½ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ HAL_UART_TxCpltCallback ΠΈ HAL_UART_TxHalfCpltCallback.
(Ρ‚Ρ€Π΅Ρ‚ΡŒΡ основная Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°: ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ ΠΏΡƒΠ½ΠΊΡ‚Π°Ρ… Π²Ρ‹ΡˆΠ΅)
ΠŸΡ€ΠΈ фактичСском использовании я ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ с HAL всС Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΡ€ΠΈ использовании USB

5 HAL ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ шаги
1. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ stm32f2xx_hal_msp_template.c, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ этому ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ HAL_PPP_MspInit () ΠΈ HAL_PPP_MspDeInit ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… устройств, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.
2. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ stm32f2xx_hal_conf_template.h. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ свободно ΠΎΠ±Ρ€Π΅Π·Π°Ρ‚ΡŒ этот Ρ„Π°ΠΉΠ» ΠΈ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ HAL.
3. ΠŸΡ€ΠΈ использовании Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ HAL сначала Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ: HAL_StatusTypeDef HAL_Init (void) (эта функция ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π² stm32f2xx_hal.c, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡƒΠ½ΠΊΡ‚Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ сначала Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ HAL_MspInit (void) ΠΈ HAL_MspDeInit (void))
4. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° HAL отличаСтся ΠΎΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ STD. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° HAL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² RCC для настройки систСмных часов. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ часов ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ STD ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ system_stm32f2xx.c)
5. Π§Ρ‚ΠΎ касаСтся ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ, HAL прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ, прСдоставляСмыС HAL. БобствСнный ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π΅ рСкомСндуСтся сначала Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅, Π½ΠΎ Π΅Π³ΠΎ слСдуСт Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅ΠΌΡƒΡŽ HAL.
6. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ устройства HAL прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ собствСнного ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Вся структура Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² выполняСтся самой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ HAL. НапримСр: Π’ Uart HAL прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ void HAL_UART_IRQHandler (UART_HandleTypeDef * huart);; ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅, Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ свой собствСнный ΠΊΠΎΠ΄ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°! Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π»ΡŽΠ±ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅!

Базовая структура
Π˜Ρ‚Π°ΠΊ, основная структура (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π°) написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ устройства) с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ HAL выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *