Перейти до основного вмісту

RAL RAL ST

Підтримувані родини STM32: G4 · H5 · H7 · L4 · U5

Модуль Register Abstraction Layer: поєднує оригінальні драйвери HAL/LL від STMicroelectronics із власним апаратно-незалежним інтерфейсним рівнем Embedbits (Port/). Використовується як git submodule репозиторію Bsp-Ral, по одній гілці на родину/реліз STM32.


Огляд​

Вихідний проєкт (Stm32_Drv/)STMicroelectronics/stm32<family>xx_hal_driver (наприклад, stm32g4xx_hal_driver)
Вміст, що належить Embedbits (Port/)Уніфіковані, незалежні від родини назви функцій і заголовків поверх API ST HAL/LL
Роль у Bsp-RalДжерело як для Ral_Lib (рекомендовано, інтерфейс лише з Port/), так і для HAL_LL_Lib (повний доступ до ST HAL/LL)
ЛіцензіяДля вихідного коду драйверів, похідного від ST, дивіться Stm32_Drv/License.md; рівень Port/ від Embedbits підпорядковується ліцензії батьківського репозиторію
Модель супроводуStm32_Drv/ дзеркалюється з оригіналу ST для кожної родини і не повинен змінюватися локально; Port/ підтримує Embedbits

⚠️ Не змінюйте Stm32_Drv/ безпосередньо — оновлення відстежуються відносно оригінального репозиторію ST. Апаратно-незалежні зміни слід вносити в Port/.


Структура гілок​

Шаблон гілкиПризначення
STM32<family> (наприклад, STM32G4, STM32U5, STM32H7)Гілка родини, відгалужена від master, з драйверами ST HAL/LL та інтерфейсом Port/ для цієї родини
STM32<family>_<major>.x (наприклад, STM32G4_1.x)Гілка мажорного релізу, відгалужена від гілки родини, що відстежує мажорний реліз ST HAL
STM32<family>_<major>.<minor> (наприклад, STM32G4_1.2)Гілка мінорного релізу/патча, відгалужена від гілки мажорного релізу

Усі гілки родин відгалужуються від master.


Структура репозиторію​

RAL_ST
├── Port # Embedbits' hardware-independent interface layer
│ ├── Stm32.h # Umbrella include
│ ├── Stm32_tim.h # Unified timer interface
│ ├── Stm32_i2c.h # Unified I2C interface
│ ├── Stm32_spi.h # Unified SPI interface
│ ├── Stm32_gpio.h
│ ├── Stm32_usart.h
│ └── ... # One header per peripheral, family-independent naming
└── Stm32_Drv # Original HAL/LL drivers, unmodified from STMicroelectronics
├── Inc # HAL/LL headers (e.g. stm32g4xx_ll_tim.h)
├── Src # HAL/LL sources (e.g. stm32g4xx_ll_tim.c)
└── License.md

Port/ — уніфікований інтерфейс​

Port/ надає по одному заголовку на периферійний модуль з іменуванням функцій/типів, незалежним від родини STM32, тож код застосунку може перемикатися між родинами STM32 без зміни власного вихідного коду:

#include "Stm32_tim.h" // Automatically selects the correct HAL headers based on the target MCU define

Використання​

І Ral_Lib, і HAL_LL_Lib визначені в кореневому CMakeLists.txt репозиторію Bsp-Ral та використовують дві директорії цього модуля:

Ціль CMakeПублічний шлях includeПризначення
Ral_LibRAL_ST/Port/Рекомендовано. Стабільний, апаратно-незалежний API для коду застосунку/middleware
HAL_LL_LibRAL_ST/Stm32_Drv/Inc/Повний доступ до ST HAL/LL, лише для внутрішньої інтеграції та тестування
# Recommended interface
target_link_libraries(MyApp PRIVATE Ral_Lib)

# Extended low-level access (not recommended for modular projects)
target_link_libraries(MyApp PRIVATE HAL_LL_Lib)
#include "Stm32_tim.h" // Unified abstraction header, via Ral_Lib

⚠️ Ral_Lib є єдиним офіційно підтримуваним інтерфейсом для зовнішніх проєктів. Використовуйте HAL_LL_Lib лише тоді, коли явно потрібен прямий API ST HAL/LL.


Ліцензія​

Компоненти Stm32_Drv/ походять від драйверів STMicroelectronics HAL/LL і поширюються за їхньою відповідною ліцензією — дивіться Stm32_Drv/License.md. Інтерфейсний рівень Port/ — це оригінальний код Embedbits, що поширюється за ліцензією батьківського репозиторію Bsp-Ral.