Az STMicroelectronics STM32U0 sorozatú eredeti kezdeményezése javítja a tervezők termelékenységét

Műszaki adatok
- Termék neve: STM32CubeU0
 - Kompatibilitás: STM32U0 sorozatú mikrokontrollerek
 - Jellemzők: RTOS, USB-eszköz verem, File Rendszer, Flash memória fordítási réteg, köztes szoftver komponensek
 - Engedélyezés: Nyílt forráskódú BSD licenc
 
A termék használati útmutatója
Felettview STM32CubeU0
Az STM32CubeU0 egy átfogó csomag, amely beágyazott szoftverkomponenseket tartalmaz az STM32U0 sorozatú mikrokontrollereken történő alkalmazások fejlesztéséhez. Nagyon hordozható és kompatibilis más STM32 sorozatokkal.
Főbb jellemzők
A csomag alacsony rétegű (LL) és hardveres absztrakciós rétegű (HAL) API-kat tartalmaz, amelyek lefedik a mikrokontroller hardverét, valamint egy kiterjedt készletetamples. Tartalmaz továbbá egy integrált RTOS-t, USB-eszköz veremeket, file rendszertámogatás és különféle könyvtárak.
Az építészet végeview
Az architektúra három szint köré épül fel – 0. szint (HAL és alap periféria plamples), 1. szint (Alkalmazások és könyvtárak) és 2. szint (Értékelő táblák és bemutatók).
Hardveres absztrakciós réteg (HAL)
- BSP illesztőprogramok: Biztosítson API-kat a kártyákon lévő hardverkomponensekhez, például LCD, joystick stb.
 - Alacsony réteg (LL): Alapszintű perifériahasználatot kínál, plamples és HAL alapmeghajtók.
 
Board Support Package (BSP)
Ez a réteg tartalmazza a kártyán lévő külső eszközök illesztőprogramjait, és API-kat biztosít a BSP illesztőprogram külső összetevőihez, amelyek különböző kártyákon hordozhatók.
Bevezetés
Az STM32Cube az STMicroelectronics eredeti kezdeményezése, amely jelentősen javítja a tervezők termelékenységét a fejlesztési erőfeszítések, az idő és a költségek csökkentésével. Az STM32Cube a teljes STM32 portfóliót lefedi.
STM32Cube tartalmaz
- Felhasználóbarát szoftverfejlesztő eszközök készlete, amelyek lefedik a projektfejlesztést a koncepciótól a megvalósításig, amelyek között szerepel:
 - STM32CubeMX, egy grafikus szoftverkonfigurációs eszköz, amely lehetővé teszi a C inicializálási kód automatikus generálását grafikus varázslók segítségével
 - STM32CubeIDE, egy minden az egyben fejlesztőeszköz perifériakonfigurációval, kódgenerálással, kódfordítással és hibakeresési funkciókkal
 - STM32CubeCLT, egy minden az egyben parancssori fejlesztői eszközkészlet kódfordítással, kártyaprogramozással és hibakeresési funkciókkal
 - STM32CubeProgrammer (STM32CubeProg), grafikus és parancssori változatban elérhető programozási eszköz
 - STM32CubeMonitor (STM32CubeMonitor, STM32CubeMonPwr, STM32CubeMonRF, STM32CubeMonUCPD), hatékony megfigyelő eszközök az STM32 alkalmazások viselkedésének és teljesítményének valós időben történő finomhangolásához
 - STM32Cube MCU és MPU csomagok, átfogó beágyazott szoftverplatformok, amelyek minden mikrokontroller- és mikroprocesszor-sorozathoz specifikusak (például az STM32CubeU0 az STM32U0 sorozathoz), amelyek a következőket tartalmazzák:
 - STM32Cube hardveres absztrakciós réteg (HAL), amely biztosítja a maximális hordozhatóságot az STM32 portfólióban
 - Az STM32Cube alacsony rétegű API-k biztosítják a legjobb teljesítményt és helyigényt a hardver feletti nagyfokú felhasználói vezérléssel
 - Köztesszoftver-összetevők konzisztens készlete, mint például a ThreadX, FileX / LevelX, USBX, érintőkönyvtár, embed-crypto, MCUboot és OpenBL
 - Minden beágyazott szoftver segédprogram teljes perifériás és alkalmazási készlettel, plamples
 - STM32Cube bővítőcsomagok, amelyek beágyazott szoftverkomponenseket tartalmaznak, amelyek kiegészítik az STM32Cube MCU és MPU csomagok funkcióit a következőkkel:
 - Köztesszoftver-kiterjesztések és alkalmazási rétegek
 - Exampegyes speciális STMicroelectronics fejlesztőkártyákon fut
 
Ez a felhasználói kézikönyv leírja, hogyan kezdje meg az STM32CubeU0 MCU csomag használatát.
A 2. szakasz az STM32CubeU0 MCU-csomag főbb jellemzőit írja le.
A 3. és a 4. szakasz túllépést biztosítview az STM32CubeU0 architektúra és az MCU-csomag struktúrája.
Általános információk
Jegyzet
- Az STM32CubeU0 alkalmazás az Arm® Cortex®-M processzoron alapuló STM32U0 sorozatú 32 bites mikrokontrollereken fut.
 - Az Arm az Arm Limited (vagy leányvállalatai) bejegyzett védjegye az Egyesült Államokban és/vagy másutt.
 
STM32CubeU0 főbb jellemzői
Az STM32CubeU0 egyetlen csomagban gyűjti össze az STM32U0 sorozatú mikrovezérlők alkalmazásának fejlesztéséhez szükséges összes általános beágyazott szoftverkomponenst. Az STM32Cube kezdeményezésnek megfelelően ez az alkatrészkészlet nagymértékben hordozható, nemcsak az STM32U0 sorozatú mikrokontrollereken belül, hanem más STM32 sorozatokhoz is.
Az STM32CubeU0 teljesen kompatibilis az STM32CubeMX kódgenerátorral az inicializálási kód generálásához. A csomag alacsony rétegű (LL) és hardveres absztrakciós rétegű (HAL) API-kat tartalmaz, amelyek lefedik a mikrokontroller hardverét, valamint egy kiterjedt készletetampSTMicroelectronics kártyákon fut. A HAL és LL API-k nyílt forráskódú BSD-licencben állnak rendelkezésre a felhasználói kényelem érdekében.
Az STM32CubeU0 MCU-csomag egy átfogó köztesszoftver-összetevőt is tartalmaz, amely a Microsoft® Azure® RTOS köztes szoftver és más házon belüli és nyílt forráskódú verem köré épült, a megfelelő ex.amples.
Ingyenes, felhasználóbarát licencfeltételekkel rendelkeznek:
- Integrált és teljes funkcionalitású RTOS: ThreadX
 - CMSIS-RTOS megvalósítás FreeRTOS™ nyílt forráskódú megoldással
 - CMSIS-RTOS megvalósítás ThreadX-szel
 - Az USB-eszközveremek számos osztályba tartoznak: USBX
 - Fejlett file rendszer és flash memória fordítási réteg: FileX/LevelX
 - OpenBootloader (OpenBL)
 - MCUboot
 - mbed-crypto könyvtárak
 - STM32_Touch könyvtár
 
Az STM32CubeU0 MCU-csomag számos alkalmazást és bemutatót is tartalmaz, amelyek mindezen köztesszoftver-összetevőket megvalósítják.
Az 1. ábra az STM32CubeU0 MCU-csomag komponens elrendezését mutatja be.

Az STM32CubeU0 architektúra végeview
- Az STM32CubeU0 MCU Package megoldás három független szint köré épül, amelyek könnyen interakcióba lépnek, a 2. ábra szerint.
 

0. szint
Ez a szint három alrétegre oszlik:
- Támogatási csomag (BSP)
 - Hardveres absztrakciós réteg (HAL)
 - HAL periféria meghajtók
 - Alacsony rétegű meghajtók
 - Alapvető perifériahasználat plamples
 
Támogatási csomag (BSP)
Ez a réteg API-készletet kínál a hardverkártyák hardverösszetevőihez (például LCD, joystick és hőmérséklet-érzékelő) képest. Két részből áll:
- Összetevő
 - Ez az illesztőprogram a kártyán lévő külső eszközhöz viszonyítva, nem pedig az STM32 eszközhöz. Az összetevő-illesztőprogram speciális API-kat biztosít a BSP-illesztőprogram külső összetevőihez, és a fülke bármely más kártyára hordozható.
 - BSP driver
 - Lehetővé teszi az összetevő-illesztőprogramok egy adott kártyához való kapcsolását, és felhasználóbarát API-kat biztosít. Az API elnevezési szabály a BSP_FUNCT_Action().
 - Example: BSP_LED_Init(), BSP_LED_On()
 
A BSP moduláris architektúrán alapul, amely alacsony szintű rutinok végrehajtásával lehetővé teszi bármilyen típusú hardver egyszerű portolását.
Hardveres absztrakciós réteg (HAL) és alacsony réteg (LL)
Az STM32CubeU0 HAL és LL kiegészítik egymást, és az alkalmazási követelmények széles skáláját fedik le:
- A HAL illesztőprogramok magas szintű, funkcióorientált, rendkívül hordozható API-kat kínálnak. Elrejtik az MCU-t és a periféria bonyolultságát a végfelhasználó elől.
 - A HAL illesztőprogramok általános, többpéldányos, szolgáltatásorientált API-kat biztosítanak, amelyek leegyszerűsítik a felhasználói alkalmazások megvalósítását azáltal, hogy használatra kész folyamatokat biztosítanak. Plample, a kommunikációs perifériák (I2S, UART és mások) számára API-kat biztosít, amelyek lehetővé teszik a periféria inicializálását és konfigurálását, lekérdezés, megszakítás vagy DMA folyamaton alapuló adatátvitelt, valamint a kommunikáció során esetlegesen felmerülő kommunikációs hibák kezelését. A HAL illesztőprogram API-k két kategóriába sorolhatók:
 - Általános API-k, amelyek közös és általános funkciókat biztosítanak az összes STM32 sorozathoz.
 - Kiterjesztés API-k, amelyek meghatározott és testreszabott funkciókat biztosítanak egy adott családhoz vagy egy adott cikkszámhoz.
 - Az alacsony rétegű API-k alacsony szintű API-kat biztosítanak regiszterszinten, jobb optimalizálással, de kisebb hordozhatósággal. Az MCU és a periféria specifikációinak mélyreható ismeretére van szükség.
 - Az LL meghajtókat úgy tervezték, hogy gyors, könnyű, szakértő-orientált réteget kínáljanak, amely közelebb áll a hardverhez, mint a HAL. A HAL-lal ellentétben az LL API-k nem állnak rendelkezésre olyan perifériákhoz, ahol az optimalizált hozzáférés nem kulcsfontosságú, vagy amelyekhez nehéz szoftverkonfiguráció és/vagy összetett felső szintű verem szükséges. Az LL illesztőprogramok jellemzői:
 - Funkciókészlet a periféria főbb jellemzőinek inicializálására az adatstruktúrákban megadott paraméterek szerint.
 - Az inicializálási adatszerkezetek az egyes mezőknek megfelelő visszaállítási értékekkel való kitöltésére szolgáló függvénykészlet.
 - A perifériák inicializálásának megszüntetésére szolgáló funkció (a perifériaregiszterek visszaállítva az alapértelmezett értékekre).
 - Inline függvények készlete a közvetlen és atomi regisztereléréshez.
 - Teljes függetlenség a HAL-tól és önálló módban használható (HAL illesztőprogramok nélkül).
 - A támogatott perifériák teljes körű lefedettsége.
 
Alapvető perifériahasználat plamples
Ez a réteg magába foglalja az exampAz STM32 perifériákra épül, csak a HAL és BSP erőforrásokat használva.
1. szint
Ez a szint két alrétegre oszlik:
- Köztes szoftver összetevők
 - Exampa köztes szoftver összetevői alapján
 
Köztes szoftver összetevők
A köztesszoftver a Microsoft® Azure® RTOS köztes szoftver és más házon belüli (például OpenBL) és nyílt forráskódú (például mbed-crypto) könyvtárak köré összeállított könyvtárak halmaza. Mindegyik be van építve és testreszabott az STM32 MCU-eszközökhöz, és a megfelelő alkalmazásokkal, plamppromóciós táblák alapján. A réteg összetevői közötti vízszintes interakciók a szolgáltatás API-k meghívásával valósulnak meg, míg a függőleges interakció az alacsony rétegű illesztőprogramokkal speciális visszahívásokon és a könyvtári rendszerhívási felületen megvalósított statikus makrókon keresztül történik.
Az egyes köztesszoftver-összetevők főbb jellemzői a következők:
- ThreadX:
Beágyazott rendszerekhez tervezett valós idejű operációs rendszer (RTOS), két működési móddal:- Közös mód: gyakori RTOS funkciók, például szálkezelés és szinkronizálás, memóriatár-kezelés, üzenetkezelés és eseménykezelés.
 - Modul mód: egy speciális használati mód, amely lehetővé teszi az előre összekapcsolt ThreadX modulok menet közbeni be- és kirakodását egy modulkezelőn keresztül.
 
 - FileX / LevelX:
- Fejlett vaku file rendszer (FS) / flash fordítási réteg (FTL): teljes mértékben támogatja a NAND/NOR flash memóriákat.
 
 - USBX:
- USB-eszköz-veremek sok osztállyal (USB Type-C®).
 
 - OpenBootloader:
Ez a köztesszoftver-összetevő egy nyílt forráskódú rendszerbetöltőt biztosít, amely pontosan ugyanazokkal a funkciókkal és eszközökkel rendelkezik, mint az STM32 rendszerbetöltő. - STM32 Touch Sensing Library:
A Touch Sensing Controller perifériával (TSC) ellátott érintésérzékelők támogatására használt szoftverkönyvtár. - MCUboot.
 - mbed-crypto:
Nyílt forráskódú kriptográfiai könyvtár, amely a titkosítási műveletek széles skáláját támogatja, beleértve:- Kulcskezelés.
 - Kivonatolás.
 - Szimmetrikus kriptográfia.
 - Aszimmetrikus kriptográfia.
 - Üzenet hitelesítés (MAC).
 - Kulcsgenerálás és -levezetés.
 - Hitelesített titkosítás társított adatokkal (AEAD).
 
 
Exampa köztes szoftver összetevői alapján
Minden köztesszoftver-komponenshez tartozik egy vagy több examples (más néven alkalmazások), amely bemutatja, hogyan kell használni. Integráció plampTöbb köztesszoftver-összetevőt használó eszközök is rendelkezésre állnak.
2. szint
Ez a szint egyetlen rétegből áll, amely egy globális valós idejű és grafikus bemutatóból áll, amely a köztes szoftver szolgáltatási rétegen, az alacsony szintű absztrakciós rétegen és az alaplap alapú szolgáltatások alapvető perifériahasználati alkalmazásain alapul.
Támogatott STM32CubeU0 sorozatú eszközök és hardver
- Az STM32Cube nagymértékben hordozható hardveres absztrakciós réteget (HAL) kínál, amely egy általános architektúrára épül. Lehetővé teszi a rétegek felépítésének elvét, például a köztes szoftverréteg használatát a funkcióik megvalósításához anélkül, hogy tudnák, milyen MCU-t használnak. Ez javítja a könyvtár kódjának újrafelhasználhatóságát, és biztosítja a könnyű hordozhatóságot más eszközökre.
 - Ezen túlmenően, réteges architektúrájának köszönhetően az STM32CubeU0 teljes mértékben támogatja az összes STM32U0 sorozatú eszközt.
 - A felhasználónak csak a megfelelő makrót kell megadnia az stm32u0xx.h fájlban.
 - Az 1. táblázat mutatja, hogy melyik makrót kell meghatározni, a használt STM32U0 sorozatú eszköztől függően. Ezt a makrót a fordító előfeldolgozójában is meg kell határozni.
 
1. táblázat: STM32CubeU0 makrók
| -ban definiált makró stm32u0xx.h | STM32U0 eszközök | 
| STM32U031x4 | STM32U031F4, STM32U031K4 | 
| STM32U031x6 | STM32U031F6, STM32U031K6, STM32U031C6, STM32U031R6, STM32U031G6 | 
| STM32U031x8 | STM32U031F8, STM32U031K8, STM32U031C8, STM32U031R8, STM32U031G8 | 
| STM32U073x8 | STM32U073K8, STM32U073H8, STM32U073C8, STM32U073R8, STM32U073M8 | 
| STM32U073xB | STM32U073KB, STM32U073HB, STM32U073CB, STM32U073RB, STM32U073MB | 
| STM32U073xC | STM32U073KC, STM32U073HC, STM32U073CC, STM32U073RC, STM32U073MC | 
| STM32U083xC | STM32U083KC, STM32U083HC, STM32U083CC, STM32U083RC, STM32U083MC | 
Az STM32CubeU0 gazdag examplek és alkalmazások minden szinten, megkönnyítve a HAL illesztőprogramok és/vagy köztes szoftver összetevők megértését és használatát. Ezek az exampA 2. táblázatban felsorolt STMicroelectronics kártyákon futnak.
2. táblázat: STM32CubeU0 sorozat táblái
| Bizottság | Támogatott STM32CubeU0 eszközök | 
| NUCLEO-U031R8 | STM32U031xx | 
| NUCLEO-U083RC | STM32U073xx, STM32U083xx | 
| STM32U083C-DK | STM332U073xx, STM32U083xx | 
Az STM32CubeU0 MCU csomag minden kompatibilis hardveren fut. A felhasználó frissíti a BSP illesztőprogramokat a megadott exampsaját kártyájukra, ha az utóbbi ugyanazokkal a hardverfunkciókkal rendelkezik (például LED, LCD és gombok).
MCU csomag végeview
Az STM32CubeU0 MCU Package megoldás egyetlen zip-csomagban érhető el, a 3. ábrán látható szerkezettel.
3. ábra STM32CubeU0 MCU Csomagstruktúra

Minden táblához egy sor exampA les előre konfigurált projekteket tartalmaz az EWARM, MDK-ARM és STM32CubeIDE eszközláncokhoz.
A 4. ábra az STM32U0xx_Nucleo kártya projektstruktúráját mutatja.

Az exampaz STM32Cube szint szerint vannak besorolva, és elnevezésük az alábbiak szerint történik:
- 0. szint plampleseket „Plamples”, „Plamples_LL” és „Plamples_MIX”. HAL illesztőprogramokat, LL illesztőprogramokat, valamint HAL és LL illesztőprogramok keverékét használnak köztes szoftver komponensek nélkül.
 - 1. szint plampalkalmazásokat nevezzük. Az egyes köztesszoftver-összetevők tipikus használati eseteit biztosítják.
 
Egy adott kártyához bármely firmware-alkalmazás gyorsan elkészíthető a Templates és Templates_LL könyvtárakban elérhető sablonprojektek segítségével.
minden exampa felépítésük megegyezik:
- Egy \Inc mappa, amely tartalmazza az összes fejlécet files.
 - Egy \Src mappa a forráskód számára.
 - \EWARM, \MDK-ARM és \STM32CubeIDE mappák, amelyek minden eszközlánchoz előre konfigurált projektet tartalmaznak.
 - A readme.txt file leírva az exampviselkedési és környezeti követelményeket, hogy működjön.
 - Egy *.ioc file, amely lehetővé teszi a felhasználók számára, hogy megnyitják a legtöbb firmware-t, plample az STM32CubeMX-en belül (az STM32CubeMX 6.11-től kezdve).
 
3. táblázat: Examples minden táblára
| Szint | NUCLEO-U031R8 | NUCLEO-U083RC | STM32U083C-DK | Teljes | 
| Alkalmazások | 2 | 8 | 9 | 19 | 
| Demonstráció | 0 | 0 | 1 | 1 | 
| Examples | 28 | 104 | 30 | 162 | 
| Examples_LL | 3 | 78 | 1 | 82 | 
| Examples_MIX | 0 | 14 | 0 | 14 | 
| Sablonok | 1 | 1 | 1 | 3 | 
| Templates_LL | 1 | 1 | 1 | 3 | 
| Összes projekt | 35 | 206 | 43 | 284 | 
Amint a fenti 3. táblázatban látható, az STM32CubeU0 csomag 284 plamp3 táblán szállítjuk, amelyek közül 193 egyedi examples.
Az STM32CubeU0 használatának megkezdése
Az első ex futtatásaample
Ez a rész elmagyarázza, hogyan kell futtatni egy első example egy STM32U0 sorozatú kártyán, átkapcsolva a NUCLEO-U083RC kártyán lévő LED-et.
Jegyzet
- Töltse le az STM32CubeU0 MCU csomagot, és bontsa ki egy külön könyvtárba anélkül, hogy a 3. ábrán látható módon módosítaná a csomag szerkezetét. Másolja a csomagot a lehető legközelebb a gyökérkötethez (pl.ample C:\Eval vagy G:\Tests), mert egyes IDE-k problémákba ütközhetnek, ha az elérési út túl hosszú.
 - Tallózzon a \Projects\NUCLEO-U083RC\Examples.
 - Nyissa meg a \GPIO mappát, majd a \GPIO_EXTI mappát.
 - Nyissa meg a projektet egy preferált eszközlánccal. Gyors végeview hogyan lehet megnyitni, felépíteni és futtatni egy ex-tample a támogatott szerszámláncokkal alább látható.
 - Építsd újra az összeset files és töltse be a képet a célmemóriába.
 - Fuss az example: a FELHASZNÁLÓ nyomógomb minden egyes megnyomásakor a LED1 átvált (további részletekért lásd a pl.ample readme file).
 
Egy ex megnyitásához, létrehozásához és futtatásáhozample a támogatott szerszámláncokkal, kövesse az alábbi lépéseket.
EWARM
- Nyissa meg a \EWARM almappát az example mappa.
 - Indítsa el a Project.eww munkaterületet.
 - A munkaterület neve eltérhet egy plample másikra.
 
Jegyzet
- Építsd újra az összeset files: [Project]> [Rebuild all].
 - Projektkép betöltése: [Project]>[Debug].
 - Futtassa a programot: [Debug]> [Go (F5)].
 
MDK-ARM:
- Nyissa meg az \MDK-ARM almappát az example mappa. Indítsa el a Projektet. uvprojx munkaterület.
 - A munkaterület neve eltérhet egy plample másikra.
 - Építsd újra az összeset files: [Project]>[Rebuild all target files].
 - A projekt képének betöltése: [Project]> [Start/Stop Debug Session].
 - Futtassa a programot: [Debug]> [Futtatás (F5)].
 
STM32CubeIDE
- Nyissa meg az STM32CubeIDE eszközláncot.
 - Kattintson a [File]>[Switch Workspace]>[Other], és tallózással keresse meg az STM32CubeIDE munkaterület könyvtárát.
 - Kattintson a [File]>[Importálás], válassza az [Általános]>[Meglévő projektek a munkaterületre] lehetőséget, majd kattintson a [Tovább] gombra.
 - Keresse meg az STM32CubeIDE munkaterület-könyvtárat, és válassza ki a projektet.
 - Építsd újra az összes projektet files: válassza ki a projektet a Project Explorer ablakban, majd kattintson a [Project]>[Build Project] menüre.
 - Futtassa a programot: [Futtatás]> [Debug (F11)].
 
Egyedi alkalmazás fejlesztése
Az STM32CubeMX használata alkalmazás fejlesztésére vagy frissítésére
Az STM32CubeU0 MCU csomagban minden plampA projekteket az STM32CubeMX eszközzel generálják a rendszer, a perifériák és a köztes szoftver inicializálására.
Egy meglévő ex közvetlen felhasználásaampAz STM32CubeMX eszközből származó projekthez STM32CubeMX 6.11 vagy újabb verzió szükséges.
- Az STM32CubeMX telepítése után nyissa meg, és szükség esetén frissítse a javasolt projektet. Egy meglévő projekt megnyitásának leggyorsabb módja, ha duplán kattintunk a *.ioc fájlra file így az STM32CubeMX automatikusan megnyitja a projektet és annak forrását files.
 - Az ilyen projektek inicializálási forráskódját az STM32CubeMX állítja elő; a fő alkalmazás forráskódját a USER CODE BEGIN és a USER CODE END megjegyzések tartalmazzák. Ha az IP-választás és a beállítások módosulnak, az STM32CubeMX frissíti a kód inicializálási részét, de megőrzi a fő alkalmazás forráskódját.
 
Egyéni projekt fejlesztéséhez STM32CubeMX-ben kövesse ezt a lépésről lépésre:
- Válassza ki a szükséges perifériakészletnek megfelelő STM32 mikrovezérlőt.
 - Konfigurálja a szükséges beágyazott szoftvert egy pinout-konfliktus megoldó, egy órafa-beállító segítő, egy energiafogyasztás-kalkulátor, valamint a segédprogramot teljesítő MCU perifériakonfiguráció (például GPIO vagy USART) és köztes szoftververemek (például USB) segítségével.
 - A kiválasztott konfiguráció alapján hozza létre az inicializálási C kódot. Ez a kód több fejlesztői környezetben is használható. A felhasználói kód a következő kódgenerációnál megmarad.
 
Az STM32CubeMX-ről további információkért tekintse meg az STM32CubeMX felhasználói kézikönyvet az STM32 konfigurálásához és inicializálásához C kód generáláshoz (UM1718).
Az elérhető plampAz STM32CubeU0 projektjeit lásd az alkalmazási megjegyzésben, az STM32Cube firmware example az STM32U0 sorozathoz (AN6063).
HAL alkalmazás
Ez a szakasz leírja az egyéni HAL-alkalmazás STM32CubeU0 használatával történő létrehozásához szükséges lépéseket.
- Hozzon létre egy projektet
Új projekt létrehozásához kezdje el a sablonprojektet, amely minden táblához biztosított a \Projects\ mappában. \Sablonok, vagy bármely elérhető projektből a \Projects\ mappában \Voltamples vagy \ Projektek\ \Applications (hol a tábla nevére utal, például NUCLEO-U32RC).
A sablonprojekt csak egy üres főhurok funkciót biztosít, ami jó kiindulópont az STM32CubeU0 projektbeállítások megértéséhez. A sablon a következő jellemzőkkel rendelkezik:- Tartalmazza a HAL-forráskódot és a CMSIS-t, valamint a BSP-illesztőprogramokat, amelyek egy adott kártyán a kód fejlesztéséhez szükséges minimális összetevőket alkotják.
 - Tartalmazza az összes firmware-összetevő belefoglalási útvonalát.
 - Meghatározza a támogatott STM32U0 sorozatú eszközöket, lehetővé téve a CMSIS és HAL illesztőprogramok konfigurálását.
 - Használatra kész felhasználót biztosít files amelyek az alábbiak szerint vannak előre konfigurálva:
 - A HAL az alapértelmezett időalappal inicializálva az Arm® mag SysTick segítségével.
 - SysTick ISR implementálva a HAL_Delay() célra.
 - Ha egy meglévő projektet más helyre másol, győződjön meg arról, hogy az összes belefoglalási útvonal frissítve van.
 
 - Adja hozzá a szükséges köztes szoftvert a projekthez (opcionális)
Az elérhető köztesszoftver-veremek az USBX-könyvtár, az Azure® RTOS és az érintésérzékelő. A forrás azonosítására files hozzá kell adni a projekthez file listában, tekintse meg az egyes köztesszoftver-összetevők dokumentációját. Tekintse meg az alkalmazásokat a \Projects\STM32xxx_yyy\Applications\ mappában. (ahol a köztes szoftververemre, például az USBX-re utal, hogy megtudja, melyik forrás files és tartalmazza a hozzáadandó elérési utakat. - Konfigurálja a firmware-összetevőket
A HAL és a köztes szoftver összetevők egy sor felépítési konfigurációs beállítást kínálnak, fejlécben deklarált makrók (#define) használatával. file. Egy sablon konfiguráció file minden olyan összetevőben megtalálható, amelyet a projekt mappájába kell másolni (általában a konfiguráció file a neve xxx_conf_template.h, és a szó
A „_template” elemet el kell távolítani, amikor a projekt mappába másolja). A konfiguráció file elegendő információt nyújt az egyes konfigurációs opciók hatásának megértéséhez. Részletesebb információk az egyes komponensekhez mellékelt dokumentációban találhatók. - Indítsa el a HAL könyvtárat
A főprogramra ugrás után az alkalmazáskódnak meg kell hívnia a HAL_Init() API-t a HAL könyvtár inicializálásához, amely a következő feladatokat hajtja végre:- A flash memória előzetes letöltésének és a SysTick megszakítási prioritásnak a konfigurálása (az stm3 2u0xx_hal_conf.h fájlban meghatározott makrók segítségével).
 - A SysTick konfigurálása úgy, hogy ezredmásodpercenként megszakítást generáljon a TICK_INT_PRIORITY SysTick megszakítási prioritáson, az stm32u0xx_hal_conf.h fájlban definiálva, amelyet az MSI órajelez (ezen stage, az óra még nincs konfigurálva, és a rendszer a belső 16 MHz-es MSI-ről fut).
 - Az NVIC csoport prioritásának beállítása 0-ra.
 - Az stm32u0xx_hal_msp.c felhasználóban definiált HAL_MspInit() visszahívási függvény meghívása file globális alacsony szintű hardver inicializálások végrehajtására.
 
 - Állítsa be a rendszerórát
A rendszeróra konfigurálása az alábbiakban ismertetett két API meghívásával történik:
– HAL_RCC_OscConfig(): ez az API konfigurálja a belső és/vagy külső oszcillátorokat, valamint a PLL-forrást és a tényezőket. A felhasználó választhat egy vagy az összes oszcillátor konfigurálását. Kihagyhatják a PLL konfigurációt, ha nincs szükség a rendszer magas frekvenciájú futtatására.
– HAL_RCC_ClockConfig(): ez az API konfigurálja a rendszeróra forrását, a flash memória késleltetését,
AHB óvodások, és az APB óvodások.
Inicializálja a perifériát- Először írja be a perifériás HAL_PPP_MspInit függvényt az alábbiak szerint:
 - Engedélyezze a periféria órát.
 - Konfigurálja a perifériás GPIO-kat.
 - Konfigurálja a DMA csatornát és engedélyezze a DMA megszakítást (ha szükséges).
 - Perifériás megszakítás engedélyezése (ha szükséges).
 - Szerkessze az stm32xxx_it.c fájlt a szükséges megszakításkezelők (perifériák és DMA) meghívásához, ha szükséges.
 - Írja be a folyamat teljes visszahívási függvényeit, ha perifériás megszakítást vagy DMA-t kíván használni.
 - A main.c fájlban inicializálja a periféria leíró szerkezetét, majd hívja meg a HAL_PPP_Init() függvényt a periféria inicializálásához.
 
 - Alkalmazás fejlesztése
Ezen stage, a rendszer készen áll, és elindulhat a felhasználói alkalmazás kódjának fejlesztése.- A HAL intuitív és használatra kész API-kat biztosít a periféria konfigurálásához. Támogatja a lekérdezést, a megszakításokat és a DMA programozási modellt, hogy megfeleljen az alkalmazási követelményeknek. Az egyes perifériák használatával kapcsolatos további részletekért tekintse meg a gazdag exampAz STM32CubeU0 MCU csomagban található készlet.
 - Ha az alkalmazás valós idejű megszorításokkal rendelkezik, az STM32CubeU0 egy nagy készletet biztosít plampbemutatja, hogyan kell használni a FreeRTOS™-t és integrálni az összes köztes szoftververembe, így jó kiindulópont az alkalmazások fejlesztéséhez
 
 
Vigyázat
Vigyázat: Az alapértelmezett HAL megvalósításban egy SysTick időzítőt használnak időbázisként; rendszeres időközönként megszakításokat generál. Ha a HAL_Delay() a perifériás ISR folyamatból kerül meghívásra, győződjön meg arról, hogy a SysTick megszakítás prioritása magasabb (számszerűen alacsonyabb), mint a perifériás megszakításé. Ellenkező esetben a hívó ISR folyamata blokkolva lesz. Az időbázis konfigurációkat befolyásoló függvények __gyengeként vannak deklarálva, hogy lehetővé tegyék a felülírást a felhasználó más implementációi esetén file (általános célú időzítő vagy más időforrás használatával). További részletekért tekintse meg a HAL_TimeBase example.
Alkalmazás
- Ez a szakasz az STM32CubeU0 használatával egyéni LL-alkalmazások létrehozásához szükséges lépéseket ismerteti.
 
Hozzon létre egy projektet
Új projekt létrehozásához vagy a \Projects\ \Templates_LL mappában található Templates_LL projektből induljon, vagy a \Projects\ mappában lévő bármely elérhető projektből. \Voltample s_LL ( a tábla nevére utal, például NUCLEO-U32RC).
A sablonprojekt egy üres főhurok funkciót biztosít, ami jó kiindulópont az STM32CubeU0 projektbeállítások megértéséhez. A sablon a következő jellemzőkkel rendelkezik:
- Az LL és CMSIS meghajtók forráskódjait tartalmazza, amelyek az adott kártyán a kód fejlesztéséhez szükséges minimális komponenskészletet alkotják.
 - Tartalmazza az összes szükséges firmware-összetevő beépítési útvonalát.
 - Kiválasztja a támogatott STM32U0 sorozatú eszközt, és lehetővé teszi a CMSIS és LL illesztőprogramok helyes konfigurálását.
 - Használatra kész felhasználót biztosít files, amelyek a következők szerint vannak előre konfigurálva:
- main.h: LED és USER_BUTTON definíciós absztrakciós réteg.
 - main.c: rendszeróra konfiguráció a maximális frekvenciához.
 
 
Portál egy meglévő projektet egy másik kártyára
- Kezdje az egyes táblákhoz biztosított Templates_LL projekttel, amely a \Projects\ mappában érhető el. \Templates_LL mappa.
 - Válasszon egy LL example.
 
Jegyzet: Megkeresni azt a táblát, amelyen LL example van telepítve, lásd az LL examples az STM32CubePro jectsList.html-ben.
Port az LL example
- Másolja/illessze be a Templates_LL mappát a kezdeti forrás megtartásához, vagy közvetlenül frissítsen egy meglévő Template es_LL projektet.
 - Cserélje ki a Templates_LL files az Ex-elamples_LL célzott projekt files.
 - Őrizze meg az összes táblaspecifikus alkatrészt. Az áttekinthetőség érdekében a táblaspecifikus részek a következő jellemzőkkel lettek megjelölve tags:
 

A portolás fő lépései a következők:
- Cserélje ki az stm32u0xx_it.h fájlt file.
 - Cserélje ki az stm32u0xx_it.c fájlt file.
 - Cserélje ki a fő.h file és frissítse. Tartsa meg a LED-et és a felhasználói gomb definícióját az LL sablonban a „PÁLASZTÁRSASÁGI KONFIGURÁCIÓ” alatt. tags.
 - Cserélje ki a fő.c file és frissítsd:
- Tartsa meg a SystemClock_Config() LL sablonfüggvény órakonfigurációját a
„PÁRTYA SPECIFIKUS KONFIGURÁCIÓ” tags. - A LED definíciójától függően cserélje ki az egyes LEDx előfordulásokat a főmenüben elérhető másik LEDy-re.h file.
Ezekkel a módosításokkal az exampmost már futhat a megcélzott táblán. 
 - Tartsa meg a SystemClock_Config() LL sablonfüggvény órakonfigurációját a
 
STM32CubeU0 kiadási frissítések beszerzése
Az STM32CubeU0 MCU csomaghoz tartozik egy frissítő segédprogram, az STM32CubeUpdater, amely menüként is elérhető az STM32CubeMX kódgeneráló eszközben.
A frissítő megoldás észleli az új firmware-kiadásokat és -javításokat, amelyek elérhetők, és javasolja azok letöltését a felhasználó számítógépére.
Az STM32CubeUpdater program telepítése és futtatása
Kövesse az alábbi lépéseket az STM32CubeUpdater telepítéséhez és futtatásához.
- Kattintson duplán a SetupSTM32CubeUpdater.exe fájlra file a telepítés elindításához.
 - Fogadja el a licencfeltételeket, és kövesse a különböző telepítési lépéseket.
 - Sikeres telepítés után az STM32CubeUpdater STMicroelectronics programként elérhetővé válik a Programban Files mappába, és automatikusan elindul. Az STM32CubeUpdater ikon megjelenik a tálcán.
 - Kattintson a jobb gombbal a frissítő ikonjára, és válassza a [Frissítő beállításai] lehetőséget a frissítő kapcsolatának konfigurálásához, valamint a kézi vagy automatikus ellenőrzések végrehajtásához.
 
A frissítő konfigurálásával kapcsolatos további részletekért tekintse meg az STM3CubeMX felhasználói kézikönyv 32. szakaszát az STM32 konfigurációjához és az inicializálási C kód generálásához (UM1718).
GYIK
Mi az STM32CubeU0 MCU-csomag licencrendszere?
A HAL nem korlátozó BSD (berkeley szoftverterjesztés) licenc alatt kerül terjesztésre. Az STMicroelectronics által készített köztesszoftver-veremek (USB-eszközkönyvtárak, STM32_TouchSensing) olyan licencmodellel rendelkeznek, amely lehetővé teszi az egyszerű újrahasználatot, feltéve, hogy STMicroelectronics-eszközön fut. A jól ismert nyílt forráskódú megoldásokon (FreeRTOS™ és FatFS) alapuló köztesszoftver-összetevők felhasználóbarát licencfeltételekkel rendelkeznek. További részletekért tekintse meg a megfelelő köztes szoftver licencszerződését.
Milyen kártyákat támogat az STM32CubeU0 MCU csomag?
Az STM32CubeU0 MCU csomag BSP illesztőprogramokat és használatra kész plampa következő STM32CubeU0 sorozatú kártyákhoz: • NUCLEO-U031R8 • NUCLEO-U083RC • STM32U083C-DK
Vannak olyan exampa használatra kész eszközkészlet-projektekkel?
Igen. Az STM32CubeU0 gazdag készletet kínál plamples és alkalmazások. Előre konfigurált projekteket tartalmaznak az IAR Embedded Workbench®, Keil® és STM32CubeIDE számára.
Vannak-e linkek szabványos periféria-könyvtárakhoz?
Az STM32CubeU0 HAL és LL meghajtók helyettesítik a szabványos periféria könyvtárat: • A HAL illesztőprogramok magasabb absztrakciós szintet kínálnak a szabványos periféria API-khoz képest. A hardver helyett a perifériák közös jellemzőire összpontosítanak. A felhasználóbarát API-k készlete magasabb absztrakciós szintet tesz lehetővé, és könnyen hordozhatóvá teszi őket egyik termékről a másikra. • Az LL illesztőprogramok alacsony rétegű, regiszter szintű API-kat kínálnak. Egyszerűbb és áttekinthetőbb módon vannak felszerelve, hogy elkerüljék a közvetlen nyilvántartáshoz való hozzáférést. Az LL-illesztőprogramok perifériás inicializálási API-kat is tartalmaznak, amelyek az SPL-hez képest jobban optimalizáltak, miközben funkcionálisan hasonlóak. A HAL-illesztőprogramokhoz képest ezek az LL inicializálási API-k egyszerű migrációt tesznek lehetővé az SPL-ről az STM32CubeU0 LL-illesztőprogramokra, mivel minden SPL API rendelkezik a megfelelő LL API-val.
A HAL réteg haladtage megszakítások vagy DMA? Hogyan lehet ezt ellenőrizni?
Igen. A HAL réteg három API programozási modellt támogat: lekérdezést, megszakítást és DMA-t (megszakítás generálással vagy anélkül).
Hogyan kezelik a termék-/perifériára jellemző funkciókat?
A HAL illesztőprogramok kiterjesztett API-kat kínálnak, amelyek a közös API-hoz kiegészítőként biztosított speciális funkciók, amelyek csak bizonyos termékeken/vonalakon elérhető funkciókat támogatnak.
Hogyan tud STM32CubeMX kódot generálni beágyazott szoftver alapján?
Az STM32CubeMX beépített ismeretekkel rendelkezik az STM32 mikrokontrollerekről, beleértve azok perifériáit és szoftvereit. Grafikus megjelenítést biztosít a felhasználó számára, és *.h és *.c generálására képes files a felhasználói konfigurációval.
Hogyan kaphat rendszeres frissítéseket a legújabb STM32CubeU0 MCU-csomag kiadásokról?
Az STM32CubeU0 MCU csomaghoz tartozik egy frissítő segédprogram, az STM32CubeUpdater, amely konfigurálható az új firmware-csomagok (új kiadások és javítások) automatikus vagy igény szerinti ellenőrzésére. Az STM32CubeUpdater az STM32CubeMX eszközbe integrálva van. Ha ezt az eszközt az STM32U0 konfigurálására és inicializálási C kód generálására használja, a felhasználó az STM32CubeU0 automatikus frissítései, valamint az STM32CubeU0 MCU csomag frissítései előnyeit élvezi. További részletekért lásd: 5.3. szakasz: Az STM32CubeU0 kiadás frissítéseinek beszerzése.
Mikor kell használni a HAL versus LL illesztőprogramokat?
A HAL illesztőprogramok magas szintű és funkcióorientált API-kat kínálnak, magas szintű hordozhatósággal. A termék/IP összetettsége rejtett a végfelhasználók elől. Az LL-illesztőprogramok alacsony szintű regiszterszintű API-kat kínálnak, jobb optimalizálással, de kevésbé hordozhatóak. Mélyreható ismereteket igényelnek a termék/IP specifikációkról.
Hogyan lehet LL illesztőprogramokat belefoglalni egy meglévő környezetbe? Van LL konfiguráció? file, mint a HAL-hoz?
Nincs konfiguráció file. A forráskódnak közvetlenül tartalmaznia kell a szükséges stm32u0xx_ll_ppp.h fájlt file(s).
Használhatók együtt a HAL és LL meghajtók? Ha igen, mik a korlátok?
Lehetőség van HAL és LL meghajtók használatára is. Használja a HAL illesztőprogramokat az IP inicializálási fázishoz, és kezelje az I/O műveleteket az LL illesztőprogramokkal. A fő különbség a HAL és az LL között az, hogy a HAL illesztőprogramok kezeléséhez kezelőelemeket kell létrehozni és használni, míg az LL meghajtók közvetlenül a periféria regisztereken működnek. A HAL és LL keverését az Examples_MIX plample.
Vannak olyan LL API-k, amelyek nem érhetők el a HAL-al?
Igen, vannak. Néhány Cortex® API hozzáadásra került az stm32u0xx_ll_cortex.h fájlhoz, például az SCB vagy SysTick regiszterek eléréséhez.
Miért nincsenek engedélyezve a SysTick megszakítások az LL illesztőprogramokon?
Ha az LL-illesztőprogramokat önálló módban használja, nincs szükség a SysTick megszakítások engedélyezésére, mivel azokat nem használják az LL API-kban, míg a HAL-funkciók SysTick megszakításokat igényelnek az időtúllépések kezeléséhez.
Hogyan engedélyezettek az LL inicializálási API-k?
Az LL inicializálási API-k és a kapcsolódó erőforrások (struktúrák, literálok és prototípusok) meghatározását a SE_FULL_LL_DRIVER fordítási kapcsoló határozza meg. Az LL inicializálási API-k használatához adja hozzá ezt a kapcsolót az eszközlánc-fordító előfeldolgozójához.
Revíziótörténet
4. táblázat: Dokumentum felülvizsgálati előzmények
| Dátum | Felülvizsgálat | Változások | 
| 31-jan-2024 | 1 | Kezdeti kiadás. | 
FONTOS MEGJEGYZÉS – OLVASSA EL FIGYELMESEN
Az STMicroelectronics NV és leányvállalatai („ST”) fenntartják a jogot, hogy bármikor, előzetes értesítés nélkül módosítsák, javítsák, bővítsék, módosítsák és tökéletesítsék az ST-termékeket és/vagy ezt a dokumentumot. A vásárlóknak meg kell szerezniük a legfrissebb releváns információkat az ST-termékekről a rendelés leadása előtt. Az ST termékek értékesítése a megrendelés visszaigazolásakor érvényes ST értékesítési feltételek szerint történik.
Kizárólag a vásárlók felelősek az ST-termékek kiválasztásáért, kiválasztásáért és használatáért, és az ST nem vállal felelősséget az alkalmazási segítségért vagy a vásárlók termékeinek tervezéséért.
Az ST jelen dokumentumban semmilyen szellemi tulajdonjogra nem ad kifejezett vagy hallgatólagos licencet.
Az ST-termékeknek az itt leírtaktól eltérő rendelkezésekkel történő viszonteladása érvénytelenít minden, az ST által az ilyen termékre adott garanciát.
Az ST és az ST logó az ST védjegyei. Az ST védjegyekkel kapcsolatos további információkért lásd: www.st.com/trademarks. Minden egyéb termék- vagy szolgáltatásnév a megfelelő tulajdonosok tulajdona.
A jelen dokumentumban szereplő információk felülírják és felváltják a jelen dokumentum bármely korábbi verziójában korábban megadott információkat.
© 2024 STMicroelectronics – Minden jog fenntartva
Dokumentumok / Források
![]()  | 
						Az STMicroelectronics STM32U0 sorozatú eredeti kezdeményezése javítja a tervezők termelékenységét [pdf] Felhasználói kézikönyv Az STM32U0 sorozatú eredeti kezdeményezés a tervezők termelékenységének javítása, az eredeti kezdeményezés a tervezők termelékenységének javítása, a tervezők termelékenységének javítása, a tervezők termelékenységének javítása  | 

