Серия STMicroelectronics STM32WBA Първи стъпки
Информация за продукта
Спецификации:
- Име на продукта: STM32CubeWBA MCU пакет
- производител: STMicroelectronics
- Съвместимост: Микроконтролери от серия STM32WBA
- Лицензиране: BSD лиценз с отворен код
Инструкции за употреба на продукта
Основни характеристики на STM32CubeWBA MCU пакет:
Пакетът STM32CubeWBA MCU предоставя всички необходими вградени софтуерни компоненти за разработване на приложения на микроконтролери от серия STM32WBA. Той е много преносим в рамките на серията STM32 и се предлага с HAL и LL API, напрampфайлове и компоненти на междинен софтуер.
Архитектурата свършиview:
Архитектурата на пакета STM32CubeWBA MCU се състои от три нива – приложения, библиотека и компоненти, базирани на протоколи, слой на хардуерна абстракция, BSP драйвери, основни драйвери и API на нисък слой.
ЧЗВ
- Какво е включено в пакета STM32CubeWBA MCU?
Пакетът включва API на нисък слой (LL) и слой на хардуерна абстракция (HAL), напрampфайлове, приложения, мидълуер компоненти като FileX/LevelX, NetX Duo, mbed-crypto библиотеки и др. - Пакетът STM32CubeWBA MCU съвместим ли е с генератор на код STM32CubeMX?
Да, пакетът е напълно съвместим с генератора на код STM32CubeMX за генериране на инициализиращ код.
Въведение
- STM32Cube е оригинална инициатива на STMicroelectronics за значително подобряване на продуктивността на дизайнера чрез намаляване на усилията, времето и разходите за разработка. STM32Cube покрива цялото портфолио на STM32.
STM32Cube включва:- Набор от лесни за потребителя инструменти за разработка на софтуер за покриване на разработването на проекти от концепцията до реализацията, сред които са:
- STM32CubeMX, инструмент за конфигуриране на графичен софтуер, който позволява автоматично генериране на C код за инициализация с помощта на графични съветници
- STM32CubeIDE, инструмент за разработка „всичко в едно“ с периферна конфигурация, генериране на код, компилиране на код и функции за отстраняване на грешки
- STM32CubeCLT, всичко-в-едно набор от инструменти за разработка на команден ред с компилация на код, програмиране на платка и функции за отстраняване на грешки
- STM32CubeProgrammer (STM32CubeProg), инструмент за програмиране, наличен в графични версии и версии на командния ред
- STM32CubeMonitor (STM32CubeMonitor, STM32CubeMonPwr, STM32CubeMonRF, STM32CubeMonUCPD), мощни инструменти за наблюдение за фина настройка на поведението и производителността на STM32 приложения в реално време
- Пакети STM32Cube MCU и MPU, изчерпателни платформи за вграден софтуер, специфични за всяка серия микроконтролер и микропроцесор (като STM32CubeWBA за серията STM32WBA), които включват:
- STM32Cube хардуерен абстракционен слой (HAL), осигуряващ максимална преносимост в портфолиото на STM32
- Нискослойни API на STM32Cube, осигуряващи най-добра производителност и отпечатъци с висока степен на потребителски контрол върху хардуера
- Последователен набор от компоненти на междинния софтуер като ThreadX, FileX / LevelX, NetX Duo, USBX, сензорна библиотека, mbed-crypto, TFM, MCUboot, OpenBL и STM32_WPAN (включително Bluetooth® Low Energy profiles и услуги, Mesh, Zigbee®, OpenThread, Matter и 802.15.4 MAC слой)
- Всички вградени софтуерни помощни програми с пълни набори от периферни и приложни exampлес
- STM32Cube Expansion Packages, които съдържат вградени софтуерни компоненти, които допълват функционалностите на STM32Cube MCU и MPU пакетите с:
- Разширения за междинен софтуер и приложни слоеве
- Exampфайлове, работещи на някои специфични платки за разработка на STMicroelectronics
- Набор от лесни за потребителя инструменти за разработка на софтуер за покриване на разработването на проекти от концепцията до реализацията, сред които са:
- Това ръководство за потребителя описва как да започнете с пакета STM32CubeWBA MCU.
- Раздел 2 Основни характеристики на STM32CubeWBA описва основните характеристики на пакета STM32CubeWBA MCU.
- Раздел 3 STM32CubeWBA архитектура приключиview осигурява надview на архитектурата STM32CubeWBA и структурата на пакета MCU.
Обща информация
Пакетът STM32CubeWBA MCU работи на 32-битови микроконтролери STM32, базирани на процесора Arm® Cortex®-M33 с Arm® TrustZone® и FPU.
Забележка: Arm и TrustZone са регистрирани търговски марки на Arm Limited (или неговите дъщерни дружества) в САЩ и/или другаде.
Основни характеристики на STM32CubeWBA
- Пакетът STM32CubeWBA MCU работи на 32-битови микроконтролери STM32, базирани на процесор Arm® Cortex®-M33 с TrustZone® и FPU.
- STM32CubeWBA събира в един пакет всички генерични вградени софтуерни компоненти, необходими за разработване на приложение за микроконтролерите от серията STM32WBA. В съответствие с инициативата STM32Cube, този набор от компоненти е изключително преносим, не само в рамките на микроконтролерите от серията STM32WBA, но също и към други серии STM32.
- STM32CubeWBA е напълно съвместим с генератора на код STM32CubeMX, за генериране на код за инициализация. Пакетът включва API на нисък слой (LL) и слой на хардуерна абстракция (HAL), които покриват хардуера на микроконтролера, заедно с обширен набор отampфайлове, работещи на платки STMicroelectronics. Приложните програмни интерфейси HAL и LL са налични в BSD лиценз с отворен код за удобство на потребителите.
- Пакетът STM32CubeWBA MCU също така съдържа изчерпателен междинен компонент, изграден около Microsoft® Azure® RTOS междинен софтуер и други вътрешни стекове и стекове с отворен код, със съответните изпр.ampлес.
- Те идват с безплатни, удобни за потребителя лицензионни условия:
- Интегрирана и пълнофункционална Azure® RTOS: Azure® RTOS ThreadX
- Внедряване на CMSIS-RTOS с Azure® RTOS ThreadX
- Стекове за USB хост и устройства, идващи с много класове: Azure® RTOS USBX
- Разширено file система и слой за превод на флаш: FileX / Ниво X
- Мрежов стек от промишлен клас: оптимизиран за производителност, идващ с много IoT протоколи: NetX Duo
- OpenBootloader
- Решение за интегриране на Arm® Trusted Firmware-M (TF‑M).
- mbed-крипто библиотеки
- Библиотека ST Network
- Библиотечно решение за сензорен сензор STMTouch
- Няколко приложения и демонстрации, прилагащи всички тези компоненти на междинния софтуер, също са предоставени в пакета STM32CubeWBA MCU.
- Оформлението на компонента на пакета STM32CubeWBA MCU е илюстрирано на Фигура 1. Компоненти на пакета STM32CubeWBA MCU.
Архитектурата STM32CubeWBA приключиview
Пакетното решение STM32CubeWBA MCU е изградено около три независими нива, които лесно си взаимодействат, както е описано на Фигура 2. Архитектура на пакета STM32CubeWBA MCU.
Ниво 0
Това ниво е разделено на три подслоя:
- Пакет за поддръжка на борда (BSP).
- Слой за хардуерна абстракция (HAL):
- HAL периферни драйвери
- Нискослойни драйвери
- Основно използване на периферни устройства, напрampлес.
Пакет за поддръжка на платка (BSP)
Този слой предлага набор от API по отношение на хардуерните компоненти в хардуерните платки (като LCD, Audio,\ microSD™ и MEMS драйвери). Състои се от две части:
- Драйвер за компоненти:
Този драйвер е свързан с външното устройство на платката, а не с устройството STM32. Драйверът на компонента предоставя специфични API на външните компоненти на BSP драйвера и може да бъде преносим на всяка друга платка. - BSP драйвер:
Драйверът BSP позволява свързване на компонентните драйвери към конкретна платка и предоставя набор от удобни за потребителя
API. Правилото за именуване на API е BSP_FUNCT_Action().
Example: BSP_LED_Init(), BSP_LED_On()
BSP се основава на модулна архитектура, позволяваща лесно пренасяне на всеки хардуер чрез просто прилагане на рутинните процедури на ниско ниво.
Слой на хардуерна абстракция (HAL) и нисък слой (LL)
STM32CubeWBA HAL и LL се допълват и покриват широк спектър от изисквания за приложения:
- HAL драйверите предлагат функционално ориентирани високо преносими API на високо ниво. Те скриват MCU и периферната сложност за крайния потребител.
HAL драйверите предоставят общи многоинстанционни функционално ориентирани API, които опростяват внедряването на потребителско приложение чрез предоставяне на готови за използване процеси. Напримерample, за комуникационните периферни устройства (I2S, UART и други), той предоставя API, позволяващи инициализиране и конфигуриране на периферното устройство, управление на трансфера на данни въз основа на запитване, прекъсване или DMA процес и обработка на комуникационни грешки, които могат да възникнат по време на комуникация. API на HAL драйверите са разделени на две категории:- Генерични API, които предоставят общи и общи функции за всички микроконтролери от серия STM32.
- API за разширение, които предоставят специфични и персонализирани функции за конкретно семейство или конкретен номер на част.
- API на нисък слой предоставят API на ниско ниво на ниво регистър, с по-добра оптимизация, но по-малка преносимост.
- Те изискват задълбочено познаване на спецификациите на MCU и периферните устройства.
- LL драйверите са проектирани да предложат бърз, лек, експертно ориентиран слой, който е по-близък до хардуера от HAL. Противно на HAL, LL API не се предоставят за периферни устройства, където оптимизираният достъп не е ключова характеристика, или за такива, които изискват тежка софтуерна конфигурация или сложен стек от по-високо ниво.
- Характеристиките на LL драйверите са:
- Набор от функции за инициализиране на периферните основни характеристики според параметрите, посочени в структурите от данни.
- Набор от функции за попълване на структурите от данни за инициализация със стойностите за нулиране, съответстващи на всяко поле.
- Функция за периферна деинициализация (периферните регистри се възстановяват до стойностите им по подразбиране).
- Набор от вградени функции за директен и атомен достъп до регистъра.
- Пълна независимост от HAL и възможност за използване в самостоятелен режим (без HAL драйвери).
- Пълно покритие на поддържаните периферни функции.
Основно използване на периферни устройства, напрampлес
Този слой обхваща exampфайлове, изградени върху STM32 периферни устройства, използващи само HAL и BSP ресурси.
Ниво 1
Това ниво е разделено на два подслоя:
- Мидълуер компоненти
- Exampфайлове, базирани на компонентите на междинния софтуер
Мидълуер компоненти
- Мидълуерът е набор от библиотеки, покриващи Bluetooth® Low Energy (Linklayer, HCI, Stack), Thread®, Zigbee®,
- Matter, OpenBootloader, Microsoft® Azure® RTOS, TF‑M, MCUboot и mbed-crypto.
- Хоризонталното взаимодействие между компонентите на този слой се извършва чрез извикване на представените API.
- Вертикалното взаимодействие с драйверите на нисък слой се извършва чрез специфични обратни извиквания и статични макроси, внедрени в интерфейса за извикване на библиотечната система.
- Основните характеристики на всеки компонент на междинния софтуер са както следва:
- Microsoft® Azure® RTOS
- Azure® RTOS ThreadX: Операционна система в реално време (RTOS), предназначена за вградени системи с два функционални режима.
- Общ режим: Общи функции на RTOS, като управление на нишки и синхронизация, управление на пул памет, съобщения и обработка на събития.
- Модулен режим: Разширен потребителски режим, който позволява зареждане и разтоварване на предварително свързани ThreadX модули в движение чрез мениджър на модули.
- NetX Duo
- FileX
- USBX
- Azure® RTOS ThreadX: Операционна система в реално време (RTOS), предназначена за вградени системи с два функционални режима.
- Bluetooth® Low Energy (BLE): Внедрява Bluetooth® Low Energy протокола за слоевете Link и Stack.
- MCUboot (софтуер с отворен код)
- Zigbee® протоколи за стека и свързаните клъстери.
- Thread® протоколен стек и ниво на връзката.
- Arm® trusted firmware-M, TF‑M (софтуер с отворен код): Референтно внедряване на архитектурата за сигурност на платформата Arm® (PSA) за TrustZone® със свързаните защитени услуги.
- mbed-crypto (софтуер с отворен код): Мидълуерът mbed-crypto осигурява внедряване на API за криптография на PSA.
- Библиотека за сензори за докосване STM32: Здраво капацитивно решение за сензори за докосване STMTouch, поддържащо сензори за близост, сензорни бутони, линейни и въртящи се сензори за докосване. Базира се на доказан принцип за получаване на повърхностен трансфер на заряд.
- Microsoft® Azure® RTOS
Exampфайлове, базирани на компонентите на междинния софтуер
Всеки компонент на междинен софтуер идва с един или повече exampфайлове (наричани още приложения), показващи как да го използвате. Интеграция прampПредоставени са и файлове, които използват няколко компонента на междинен софтуер.
Пакетът с фърмуер STM32CubeWBA приключиview
Поддържани устройства и хардуер от серия STM32WBA
- STM32Cube предлага силно преносим слой за хардуерна абстракция (HAL), изграден около обща архитектура. Той позволява принципа на надграждане на слоевете, като например използване на междинния слой за изпълнение на техните функции, без да се знае в дълбочина какъв MCU се използва. Това подобрява повторното използване на кода на библиотеката и осигурява лесна преносимост към други устройства.
- В допълнение, благодарение на многослойната си архитектура, STM32CubeWBA предлага пълна поддръжка на всички серии STM32WBA.
- Потребителят трябва само да дефинира правилния макрос в stm32wbaxx.h.
- Таблица 1 показва макроса за дефиниране в зависимост от използваното устройство от серията STM32WBA. Този макрос също трябва да бъде дефиниран в препроцесора на компилатора.
Таблица 1. Макроси за серия STM32WBAМакрос, дефиниран в stm32wbaxx.h Устройства от серия STM32WBA stm32wba52xx STM32WBA52CGU6, STM32WBA52KGU6, STM32WBA52CEU6, STM32WBA52KEU6 stm32wba55xx STM32WBA55CGU6, STM32WBA55CGU6U, STM32WBA55CGU7, STM32WBA55CEU6, STM32WBA55CEU7 - STM32CubeWBA разполага с богат набор от exampфайлове и приложения на всички нива, което улеснява разбирането и използването на всеки HAL драйвер или компоненти на междинен софтуер. Тези бившиampсе изпълняват на платките на STMicroelectronics, изброени в таблица 2.
Таблица 2. Платки за серия STM32WBAдъска Платка STM32WBA поддържа устройства NUCLEO-WBA52CG STM32WBA52CGU6 NUCLEO-WBA55CG STM32WBA55CGU6 STM32WBA55-DK1 STM32WBA55CGU7 - Пакетът STM32CubeWBA MCU може да работи на всеки съвместим хардуер. Потребителят просто актуализира BSP драйверите, за да пренесе предоставения exampфайлове на платката, ако последната има същите хардуерни характеристики (като LED, LCD дисплей и бутони).
Пакетът на фърмуера приключиview
- Пакетното решение STM32CubeWBA се предоставя в един единствен zip пакет със структурата, показана на Фигура 3. Структура на фърмуерния пакет STM32CubeWBA.
- За всяка дъска, комплект от изхamples се предоставя с предварително конфигурирани проекти за вериги инструменти EWARM, MDK-ARM и STM32CubeIDE.
- Фигура 4. STM32CubeWBA прamples overview показва структурата на проекта за платките NUCLEO‑WBA52CG, NUCLEO-WBA55CG и STM32WBA55G-DK1.
- Бившиятampфайловете се класифицират в зависимост от нивото на STM32Cube, към което се прилагат, и се наименуват, както следва:
- Ниво 0 прampфайловете се наричат Examples, Examples_LL и Examples_MIX. Те използват съответно HAL драйвери, LL драйвери и комбинация от HAL и LL драйвери без компонент на междинен софтуер.
- Ниво 1 прampфайловете се наричат приложения. Те предоставят типични случаи на използване на всеки компонент на междинния софтуер. Всяко фърмуерно приложение за дадена платка може бързо да бъде изградено благодарение на шаблонни проекти, налични в директориите Templ ates и Templates_LL.
Проекти, поддържащи TrustZone®
- TrustZone® активиран ПрampИмената на файловете съдържат префикса _TrustZone. Правилото се прилага и за приложения (с изключение на TFM и SBSFU, които са първоначално за TrustZone®).
- TrustZone®-активиран Прampфайловете и приложенията са снабдени с мултипроектна структура, съставена от защитени и незащитени подпроекти, както е представено на Фигура 5. Многопроектна защитена и незащитена структура на проекта.
- Проектите с активиран TrustZone® се разработват съгласно шаблона за устройство CMSIS-5, разширен, за да включва заглавката за разделяне на системата file partition_ .h, който е отговорен главно за настройката на защитната атрибутна единица (SAU), FPU и присвояването на защитени/несигурни прекъсвания в състояние на защитено изпълнение.
- Тази настройка се извършва в защитената CMSIS SystemInit() функция, която се извиква при стартиране преди влизане в защитената функция main() на приложението. Обърнете се към документацията на Arm® TrustZone®-M за указанията за софтуера.
- Пакетът фърмуер на пакета STM32CubeWBA осигурява разделяне на паметта по подразбиране в дяла _ .h files налични под: \Drivers\CMSIS\Device\ST\STM32WBAxx\Include\T emplates
- В тези дялове files, SAU е деактивиран по подразбиране. Следователно картографирането на паметта IDAU се използва за приписване на сигурността. Вижте фигурата Сигурно/незащитено разделяне с помощта на технологията TrustZone® в справочното ръководство RM0495.
- Ако потребителят активира SAU, конфигурацията на SAU региони по подразбиране е предварително дефинирана в дяла files както следва:
- SAU регион 0: 0x08080000 – 0x081FFFFF (несигурна защитена половина на флаш паметта (512 Kbytes))
- SAU регион 1: 0x0BF88000 – 0x0BF97FFF (незащитена системна памет)
- SAU регион 2: 0x0C07E000 – 0x0C07FFFF (сигурен, незащитен извикващ)
- SAU регион 3: 0x20010000 – 0x2001FFFF (незащитен SRAM2 (64 Kbytes))
- SAU регион 4: 0x40000000 – 0x4FFFFFFF (несигурена периферна картографирана памет)
- За да съответства на разделянето по подразбиране, устройствата от серията STM32WBAxx трябва да имат зададени следните байтове за потребителски опции:
- TZEN = 1 (устройство с активиран TrustZone®)
- SECWM1_PSTRT = 0x0 SECWM1_PEND = 0x3F (64 от 128 страници вътрешна флаш памет, зададени като защитени) Забележка: Вътрешната флаш памет е напълно защитена по подразбиране в TZEN = 1. Байтовете за потребителски опции SECWM1_PSTRT/ SECWM1_PEND трябва да бъдат зададени според приложението конфигурация на паметта (SAU региони, ако SAU е активиран). Свързващ проект за защитени/незащитени приложения files също трябва да бъдат подравнени.
- Всички ехampфайловете имат същата структура:
- Папка \Inc, съдържаща всички заглавки files.
- Папка Src, съдържаща изходния код.
- Папки \EWARM, \MDK-ARM и \STM32CubeIDE, съдържащи предварително конфигурирания проект за всяка верига от инструменти.
- readme.md и readme.html, описващи прampповедение и необходимата среда, за да работи.
- ioc file което позволява на потребителите да отварят по-голямата част от фърмуера напрampфайлове в STM32CubeMX.
Първи стъпки със STM32CubeWBA
Изпълнение на първи HAL example
Този раздел обяснява колко лесно е да стартирате първия example в STM32CubeWBA. Той използва като илюстрация генерирането на прост LED превключвател, работещ на платката NUCLEO-WBA52CG:
- Изтеглете пакета STM32CubeWBA MCU.
- Разархивирайте го в директория по ваш избор.
- Уверете се, че не променяте структурата на пакета, показана на фигура 1. Също така се препоръчва да копирате пакета на място, близо до вашия основен том (което означава C:\ST или G:\Tests), тъй като някои IDE срещат проблеми, когато пътят дължината е твърде дълга.
Пускане на първи активиран TrustZone® example
- Преди да заредите и стартирате активиран TrustZone® напрample, задължително е да се чете изхample readme file за всяка конкретна конфигурация, което гарантира, че защитата е активирана, както е описано в раздел 4.2.1 Проекти с активиран TrustZone® (TZEN=1 (байт за потребителска опция)).
- Прегледайте \Projects\NUCLEO-WBA52CG\Exampлес.
- Отворете папките \GPIO, след това \GPIO_IOToggle_TrustZone.
- Отворете проекта с предпочитаната от вас верига инструменти. Бързо надview за това как да отворите, изградите и стартирате exampфайл с поддържаните вериги от инструменти е даден по-долу.
- Възстановете последователно всички защитени и незащитени проекти files и зарежда защитените и незащитените изображения в целевата памет.
- Пуснете бившияample: редовно защитеното приложение превключва LD2 всяка секунда, а незащитеното приложение превключва LD3 два пъти по-бързо. За повече подробности вижте readme file на бившияampле.
- За отваряне, изграждане и стартиране на exampфайл с поддържаните вериги инструменти, следвайте стъпките по-долу:
- EWARM:
- Под ексample папка, отворете \EWARM подпапка.
- Стартирайте работното пространство Project.eww
- Изградете отново защитения проект xxxxx_S files: [Проект]>[Изграждане наново всички].
- Задайте незащитения проект xxxxx_NS като активно приложение (щракнете с десния бутон върху проекта xxxxx_NS [Задаване като активно])
- Изградете отново незащитения проект xxxxx_NS files: [Проект]>[Изграждане наново всички].
- Флаширайте незащитения двоичен файл с [Проект]>[Изтегляне]>[Изтегляне на активно приложение].
- Задайте xxxxx_S като активно приложение (щракнете с десния бутон върху проекта xxxxx_S [Задаване като активно].
- Флаширайте защитения двоичен файл с [Изтегляне и отстраняване на грешки] (Ctrl+D).
- Стартирайте програмата: [Debug]>[Go(F5)]
- MDK-ARM:
- Отворете инструменталната верига \MDK-ARM.
- Отворете работното пространство Multiprojects file Проект.uvmpw.
- Изберете проекта xxxxx_s като активно приложение ([Задаване като активен проект]).
- Изградете проекта xxxxx_s.
- Изберете проекта xxxxx_ns като активен проект ([Задаване като активен проект]).
- Изградете проекта xxxxx_ns.
- Заредете незащитения двоичен файл ([F8]). Това изтегля \MDK-ARM\xxxxx_ns\Exe\xxxxx_ns.axf във флаш памет)
- Изберете проекта Project_s като активен проект ([Задаване като активен проект]).
- Заредете защитения двоичен файл ([F8]). Това изтегля \MDK-ARM\xxxxx_s\Exe\xxxxx_s.axf във флаш памет).
- Пуснете бившияampле.
- STM32CubeIDE:
- Отворете инструменталната верига STM32CubeIDE.
- Отворете работното пространство Multiprojects file .проект.
- Изградете отново проекта xxxxx_Secure.
- Изградете отново проекта xxxxx_NonSecure.
- Стартирайте приложението [Debug as STM32 Cortex-M C/C++] за защитен проект.
- В прозореца [Редактиране на конфигурация] изберете панела [Стартиране] и добавете заредете изображението и символите на незащитения проект.
Важно: Незащитеният проект трябва да бъде зареден преди защитения проект. - Щракнете върху [Ok].
- Пуснете бившияample от гледна точка на отстраняване на грешки.
- EWARM:
Стартиране на първи деактивиран TrustZone® example
- Преди да заредите и стартирате деактивиран TrustZone® example, задължително е да се чете изхample readme file за всяка специфична конфигурация. Ако няма конкретни споменавания, уверете се, че устройството на платката е с деактивирана защита (TZEN=0 (байт за потребителска опция)). Вижте ЧЗВ за извършване на незадължителната регресия до TZEN = 0
- Прегледайте \Projects\NUCLEO-WBA52CG\Exampлес.
- Отворете папките \GPIO, след това \GPIO_EXTI.
- Отворете проекта с предпочитаната от вас верига инструменти. Бързо надview за това как да отворите, изградите и стартирате exampфайл с поддържаните вериги от инструменти е даден по-долу.
- Възстановете всичко files и заредете вашето изображение в целевата памет.
- Пуснете бившияample: Всеки път, когато се натисне бутонът [ПОТРЕБИТЕЛ], светодиодът LD1 превключва. За повече подробности вижте readme file на бившияampле.
- За отваряне, изграждане и стартиране на exampфайл с поддържаните вериги инструменти, следвайте стъпките по-долу:
- EWARM:
- Под ексample папка, отворете \EWARM подпапка.
- Стартирайте работното пространство Project.eww (името на работното пространство може да се промени от едно напрampна друг).
- Възстановете всичко files: [Проект]>[Изграждане наново всички].
- Заредете изображението на проекта: [Проект]>[Отстраняване на грешки].
- Стартирайте програмата: [Debug]>[Go (F5)].
- MDK-ARM:
- Под ексample, отворете подпапката \MDK-ARM.
- Стартирайте работното пространство Project.uvproj (името на работното пространство може да се промени от едно напрampна друг).
- Възстановете всичко files:[Project]>[Rebuild all target fileс].
- Заредете изображението на проекта: [Debug]>[Start/Stop Debug Session].
- Стартирайте програмата: [Debug]>[Run (F5)].
- STM32CubeIDE:
- Отворете инструменталната верига STM32CubeIDE.
- Щракнете [File]>[Превключване на работно пространство]>[Други] и прегледайте директорията на работното пространство на STM32CubeIDE.
- Щракнете [File]>[Импортиране] , изберете [Общи]>[Съществуващи проекти в работното пространство] и след това щракнете върху [Напред].
- Прегледайте директорията на работното пространство на STM32CubeIDE и изберете проекта.
- Възстановете целия проект files: Изберете проекта в прозореца [Project Explorer], след което щракнете върху менюто [Project]>[Build project].
- Стартирайте програмата: [Run]>[Debug (F11)]
- EWARM:
Разработване на персонализирано приложение
Забележка: Софтуерът трябва да активира кеша за инструкции (ICACHE), за да получи 0 изпълнение в състояние на изчакване от флаш памет и да достигне максимална производителност и по-добра консумация на енергия.
Използване на STM32CubeMX за разработване или актуализиране на приложение
- В пакета STM32CubeWBA MCU, почти всички проекти напрampфайлове се генерират с инструмента STM32CubeMX за инициализиране на системата, периферните устройства и междинния софтуер.
- Директното използване на съществуващ проект напрampфайл от инструмента STM32CubeMX изисква STM32CubeMX 6.10.0 или по-нова версия:
- След инсталирането на STM32CubeMX отворете и ако е необходимо актуализирайте предложен проект. Най-простият начин да отворите съществуващ проект е да щракнете двукратно върху *.ioc file така че STM32CubeMX автоматично отваря проекта и неговия източник files.
- STM32CubeMX генерира изходния код за инициализация на такива проекти. Основният изходен код на приложението се съдържа в коментарите „ПОТРЕБИТЕЛСКИ КОД НАЧАЛО“ и „КРАЙ НА ПОТРЕБИТЕЛСКИ КОД“. В случай, че изборът и настройката на IP са променени, STM32CubeMX актуализира частта за инициализация на кода, но запазва основния изходен код на приложението.
- За да разработите персонализиран проект в STM32CubeMX, следвайте процеса стъпка по стъпка:
- Изберете микроконтролера STM32, който съответства на необходимия набор от периферни устройства.
- Конфигурирайте целия необходим вграден софтуер с помощта на инструмент за решаване на конфликти на разпределение, помощник за настройка на часовниково дърво, калкулатор за консумация на енергия и помощната програма, изпълняваща периферна конфигурация на MCU (като GPIO или USART) и стекове за междинен софтуер (като USB).
- Генерирайте инициализиращия C код въз основа на избраната конфигурация. Този код е готов за използване в няколко среди за разработка. Потребителският код се запазва при следващото генериране на код.
- За повече информация относно STM32CubeMX вижте ръководството на потребителя STM32CubeMX за STM32 конфигурация и генериране на C код за инициализация (UM1718).
- За списък на наличните проекти напрampфайлове за STM32CubeWBA, вижте бележката за приложението STM32Cube фърмуер пр.ampфайлове за серия STM32WBA (AN5929).
Приложения за драйвери
HAL приложение
Този раздел описва стъпките, необходими за създаване на персонализирано HAL приложение с помощта на STM32CubeWBA:
- Създайте проект
- За да създадете нов проект, започнете или от шаблонния проект, предоставен за всяка дъска под \Проекти\ \Templates или от всеки наличен проект под \Projects\ \Примери или \Проекти\ \Приложения (където се отнася до името на платката, като STM32CubeWBA).
- Проектът Template предоставя празна функция на главния цикъл. Това обаче е добра отправна точка за разбиране на настройките на проекта STM32CubeWBA. Шаблонът има следните характеристики:
- Той съдържа изходния код на HAL, CMSIS и BSP драйвери, които са минималният набор от компоненти, необходими за разработване на код на дадена платка.
- Той съдържа включените пътища за всички компоненти на фърмуера.
- Той дефинира поддържаните устройства от серията STM32WBA, позволявайки на CMSIS и HAL драйверите да бъдат конфигурирани правилно.
- Той предоставя готов за използване потребител fileе предварително конфигуриран, както е показано по-долу:
HAL се инициализира с времевата база по подразбиране с Arm® core SysTick. SysTick ISR, внедрен за целите на HAL_Delay().
Забележка: Когато копирате съществуващ проект на друго място, уверете се, че всички включени пътища са актуализирани.
- Добавете необходимия междинен софтуер към потребителския проект (по избор)
За идентифициране на източника fileще бъдат добавени към проекта file списък, вижте документацията, предоставена за всеки междинен софтуер. Вижте приложенията в \Projects\STM32xxx_yyy\Applications\ (където се отнася до стека на междинния софтуер, като ThreadX), за да знаете кой източник fileтрябва да се добавят s и включващи пътища. - Конфигурирайте компонентите на фърмуера
Компонентите на HAL и междинния софтуер предлагат набор от опции за конфигуриране по време на изграждане, използвайки макроси #define, декларирани в заглавка file. Конфигурация на шаблон file се предоставя във всеки компонент, който трябва да бъде копиран в папката на проекта (обикновено конфигурацията file се нарича xxx_conf_template.h, думата _template трябва да бъде премахната, когато го копирате в папката на проекта). Конфигурацията file предоставя достатъчно информация, за да разберете въздействието на всяка опция за конфигурация. По-подробна информация е достъпна в документацията, предоставена за всеки компонент. - Стартирайте библиотеката HAL
След като преминете към основната програма, кодът на приложението трябва да извика HAL_Init() API, за да инициализира HAL библиотеката, която изпълнява следните задачи:- Конфигуриране на предварително извличане на флаш памет и приоритет на прекъсване на SysTick (чрез макроси, дефинирани в st m32wbaxx_hal_conf.h).
- Конфигуриране на SysTick за генериране на прекъсване на всяка милисекунда при приоритет на прекъсване на SysTick TICK_INT_PRIO, дефиниран в stm32wbaxx_hal_conf.h.
- Настройка на приоритет на NVIC група на 0.
- Извикване на функция за обратно извикване HAL_MspInit(), дефинирана в потребител stm32wbaxx_hal_msp.c file за извършване на глобални хардуерни инициализации на ниско ниво.
- Конфигурирайте системния часовник
Конфигурирането на системния часовник се извършва чрез извикване на двата API, описани по-долу:- HAL_RCC_OscConfig(): този API конфигурира вътрешните и външните осцилатори. Потребителят избира да конфигурира един или всички осцилатори.
- HAL_RCC_ClockConfig(): този API конфигурира източника на системния часовник, латентността на флаш паметта и прескалерите AHB и APB.
- Инициализирайте периферното устройство
- Първо напишете периферната функция HAL_PPP_MspInit. Продължете както следва:
- Активирайте периферния часовник.
- Конфигурирайте периферните GPIO.
- Конфигурирайте DMA канала и активирайте DMA прекъсване (ако е необходимо).
- Разрешете периферно прекъсване (ако е необходимо).
- Редактирайте stm32xxx_it.c, за да извикате необходимите манипулатори на прекъсвания (периферни и DMA), ако е необходимо.
- Функции за обратно извикване на процеса на запис, ако се планира да се използва периферно прекъсване или DMA.
- В потребител main.c file, инициализирайте структурата на манипулатора на периферното устройство, след което извикайте функцията HAL_PPP_Init(), за да инициализирате периферното устройство.
- Първо напишете периферната функция HAL_PPP_MspInit. Продължете както следва:
- Разработете приложение
- На този stage, системата е готова и може да започне разработването на кода на потребителското приложение.
- HAL предоставя интуитивни и готови за използване API за конфигуриране на периферията. Той поддържа запитване, прекъсвания и модел на програмиране DMA, за да отговори на всички изисквания на приложението. За повече подробности как да използвате всяко периферно устройство, вижте rich exampпредоставен в пакета STM32CubeWBA MCU.
Внимание: В изпълнението на HAL по подразбиране таймерът SysTick се използва като времева база: той генерира прекъсвания на редовни интервали от време. Ако HAL_Delay() се извика от периферния ISR процес, уверете се, че прекъсването на SysTick има по-висок приоритет (числово по-нисък) от периферното прекъсване. В противен случай ISR процесът на повикващия се блокира. Функциите, засягащи конфигурациите на времевата база, са декларирани като __слаби, за да направят възможно отмяната в случай на други реализации в потребителя file (с помощта на таймер с общо предназначение, напрample или друг източник на време). За повече подробности вижте примера HAL_TimeBaseampле.
LL приложение
Този раздел описва стъпките, необходими за създаване на персонализирано LL приложение с помощта на STM32CubeWBA.
- Създайте проект
- За да създадете нов проект, или започнете от проекта Templates_LL, предоставен за всяка дъска под \Projects\ \Templates_LL или от всеки наличен проект под \Projects\ \ Прamples_LL ( се отнася до името на платката, като NUCLEO-WBA32CG).
- Проектът на шаблона предоставя празна функция за основен цикъл, което е добра отправна точка за разбиране на настройките на проекта за STM32CubeWBA. Основните характеристики на шаблона са следните:
- Той съдържа изходните кодове на драйверите LL и CMSIS, които са минималният набор от компоненти, необходими за разработване на код на дадена платка.
- Той съдържа включените пътища за всички необходими компоненти на фърмуера.
- Той избира поддържаното устройство от серията STM32WBA и позволява правилната конфигурация на CMSIS и LL драйверите.
- Той предоставя готов за употреба потребител files, които са предварително конфигурирани, както следва:
◦ main.h: Слой за абстракция на LED и USER_BUTTON.
◦ main.c: Конфигурация на системния часовник за максимална честота.
- Пренасяне на съществуващ проект към друга платка
За да поддържате съществуващ проект на друга целева дъска, започнете от проекта Templates_LL, предоставен за всяка платка и достъпен в \Projects\ \Templates_LL.- Изберете LL example: За да намерите дъската, на която LL exampфайлове са разположени, вижте списъка на LL examples STM32CubeProjectsList.html.
- Пренесете LL exampле:
- Копирайте/поставете папката Templates_LL – за да запазите първоначалния източник – или директно актуализирайте съществуващия проект Templates_LL.
- Тогава пренасянето се състои главно в замяна на Templates_LL files от Exampцелеви проект les_LL.
- Запазете всички части, специфични за платката. От съображения за яснота специфичните части на платката са маркирани със специфични tags:
- Следователно основните стъпки за пренасяне са следните:
- Заменете stm32wbaxx_it.h file
- Заменете stm32wbaxx_it.c file
- Сменете основния.h file и го актуализирайте: Запазете дефиницията на светодиода и потребителския бутон на шаблона LL под СПЕЦИФИЧНА КОНФИГУРАЦИЯ НА ДАБЛА tags.
- Сменете главния.c file и го актуализирайте:
- Запазете конфигурацията на часовника на шаблонната функция SystemClock_Config() LL под СПЕЦИАЛНА КОНФИГУРАЦИЯ НА ДЪБА tags.
- В зависимост от дефиницията на LED, заменете всяко появяване на LDx с друго LDy, налично в main.h file.
- С тези модификации, изхample сега се изпълнява на целевата дъска
Приложения за сигурност
Този пакет се доставя с приложения за сигурност.
SBSFU приложения
- SBSFU предоставя решение Root of Trust, включително функционалности за защитено стартиране и защитено актуализиране на фърмуера (базирано на MCUboot).
- Решението се използва преди изпълнение на приложението.
- Решението предоставя изхampфайл на защитена услуга (GPIO превключване), който е изолиран от незащитеното приложение. Несигурното приложение по време на изпълнение все още може да използва това решение.
TFM приложения
TFM предоставя решение Root of Trust, включително функционалности за сигурно зареждане и сигурна актуализация на фърмуера
(базиран на MCUboot). Решението се използва преди изпълнение на приложението. Решението предоставя TFM защитени услуги, които са изолирани от незащитеното приложение. Несигурното приложение по време на изпълнение все още може да използва това решение.
RF приложения
RF приложението е описано в тази бележка за приложението: Изграждане на безжични приложения с микроконтролери от серия STM32WBA (AN5928).
Получаване на актуализации на изданието STM32CubeWBA
Най-новите версии и корекции на пакета STM32CubeWBA MCU са достъпни от серията STM32WBA. Те могат да бъдат извлечени от бутона ПРОВЕРКА ЗА АКТУАЛИЗАЦИЯ в STM32CubeMX. За повече подробности вижте раздел 3 от ръководството за потребителя STM32CubeMX за STM32 конфигурация и генериране на C код за инициализация (UM1718).
ЧЗВ
- Кога трябва да използвам HAL вместо LL драйвери?
- HAL драйверите предлагат API на високо ниво и функционално ориентирани, с високо ниво на преносимост. Сложността на продукта или периферията е скрита за крайните потребители.
- LL драйверите предлагат API на ниско ниво на регистър, с по-добра оптимизация, но по-малко преносими. Те изискват задълбочени познания за продуктовите или IP спецификациите.
- Мога ли да използвам HAL и LL драйвери заедно? Ако мога, какви са ограниченията?
- Възможно е да се използват както HAL, така и LL драйвери. Използвайте HAL за фазата на IP инициализация и след това управлявайте I/O операциите с LL драйвери.
- Основната разлика между HAL и LL е, че HAL драйверите изискват да създават и използват манипулатори за управление на операциите, докато LL драйверите работят директно върху периферни регистри. Бившиятamples_MIX прample илюстрира как да смесвате HAL и LL.
- Как се активират API за инициализация на LL?
- Дефиницията на API за инициализация на LL и свързаните с тях ресурси (структури, литерали и прототипи) е обусловена от превключвателя за компилиране USE_FULL_LL_DRIVER.
- За да можете да използвате API за инициализация на LL, добавете този ключ в препроцесора на компилатора на веригата инструменти.
- Как може STM32CubeMX да генерира код въз основа на вграден софтуер?
STM32CubeMX има вградени познания за STM32 микроконтролери, включително техните периферни устройства и софтуер, който позволява предоставяне на графично представяне на потребителя и генериране на *.h или *.c fileбазирани на потребителска конфигурация.
ВАЖНО СЪОБЩЕНИЕ – ПРОЧЕТЕТЕ ВНИМАТЕЛНО
- STMicroelectronics NV и нейните дъщерни дружества („ST“) си запазват правото да правят промени, корекции, подобрения, модификации и подобрения на ST продуктите и/или на този документ по всяко време без предизвестие. Купувачите трябва да получат най-новата подходяща информация за продуктите на ST, преди да направят поръчки. Продуктите на ST се продават в съответствие с правилата и условията за продажба на ST в момента на потвърждаване на поръчката.
- Купувачите са изцяло отговорни за избора, подбора и използването на продуктите на ST и ST не поема отговорност за помощ при прилагането или дизайна на продуктите на купувачите.
- Никакъв лиценз, изричен или подразбиращ се, за права върху интелектуална собственост не се предоставя от ST тук.
- Препродажбата на продукти на ST с условия, различни от информацията, посочена тук, анулира всяка гаранция, предоставена от ST за такъв продукт.
- ST и логото на ST са търговски марки на ST. За допълнителна информация относно търговските марки ST вижте www.st.com/trademarks. Всички други имена на продукти или услуги са собственост на съответните им собственици.
- Информацията в този документ отменя и заменя информацията, предоставена преди това в предишни версии на този документ.
- © 2023 STMicroelectronics – Всички права запазени
Документи / Ресурси
![]() |
Серия STMicroelectronics STM32WBA Първи стъпки [pdf] Ръководство за потребителя Серия STM32WBA Първи стъпки, Първи стъпки, Старт |