- „ST-LINK V2“
- STM32CubeMX
- Reikalingos medžiagos
- Grandinės schema ir jungtys
- Programos sukūrimas ir įrašymas į STM32 naudojant „Keil uVision“ ir „ST-Link“
- „Keil“ užprogramuotos STM32 plokštės išvestis
- Programa
STM32 mikrovaldikliai, kurie naudoja „ ARM Cortex M“ architektūrą, dabar tampa populiarūs ir naudojami daugelyje programų dėl savo ypatybių, kainos ir našumo. Mes užprogramavome STM32F103C8 naudodami „Arduino IDE“ ankstesnėse mokymo programose. STM32 programavimas su „Arduino IDE“ yra paprastas, nes yra daugybė bibliotekų, skirtų įvairiems jutikliams atlikti bet kokią užduotį, tereikia pridėti tas bibliotekas į programą. Tai lengva procedūra ir jūs negalite gilintis į ARM procesorius. Taigi dabar pereiname į kitą programavimo lygį, vadinamą ARM programavimu. Tokiu būdu galime ne tik pagerinti savo kodo struktūrą, bet ir sutaupyti vietos atmintyje nenaudodami nereikalingų bibliotekų.
STMicroelectronics pristatė įrankį STM32Cube MX, kuris generuoja pagrindinį kodą pagal periferinius įrenginius ir pasirinktą STM32 plokštę. Taigi mums nereikia jaudintis dėl pagrindinių tvarkyklių ir išorinių įrenginių kodavimo. Be to, šis sugeneruotas kodas gali būti naudojamas „Keil uVision“ redaguoti pagal reikalavimus. Galiausiai kodas įrašomas į STM32 naudojant ST-Link programuotoją iš STMicroelectronics.
Šioje pamokoje sužinosime, kaip programuoti STM32F103C8 naudojant „Keil uVision “ ir „STM32CubeMX“, atlikdami paprastą mygtuką, kuriame susiejamas mygtukas ir šviesos diodas su STM32F103C8 „Blue Pill“ plokšte. Kodą sugeneruosime naudodami STM32Cube MX, tada redaguosime ir įkelsime kodą į STM32F103C8 naudodami „Keil uVision“. Prieš pradėdami detaliau, pirmiausia sužinosime apie ST-LINK programuotoją ir programinės įrangos įrankį STM32CubeMX.
„ST-LINK V2“
ST-LINK / V2 yra in-grandinės Debugger ir programuotojas už STM8 ir STM32 mikrovaldiklių šeimos. Naudodami šią ST-LINK, mes galime įkelti kodą į STM32F103C8 ir kitus STM8 ir STM32 mikrovaldiklius. Vieno laido sąsajos modulis (SWIM) ir JTAG / serijinio laido derinimo (SWD) sąsajos yra naudojamos bendraujant su bet kuriuo STM8 arba STM32 mikrovaldikliu, esančiu programos plokštėje. Kadangi „STM32“ programos naudoja viso greičio USB sąsają, kad galėtų bendrauti su „Atollic“, IAR, „Keil“ ar „TASKING“ integruotomis kūrimo aplinkomis, todėl šią aparatūrą galime naudoti programuodami „STM 8“ ir „STM32“ mikrovaldiklius.
Aukščiau pateiktas „STMicroelectronics“ „ST-LINK V2“ raktų atvaizdas, palaikantis visą STM32 SWD derinimo sąsajos diapazoną, paprastą 4 laidų sąsają (įskaitant maitinimą), greitas ir stabilus. Jis yra įvairių spalvų. Korpusas pagamintas iš aliuminio lydinio. Jis turi mėlyną LED indikatorių, nes jis naudojamas ST-LINK darbinei būklei stebėti. Kaiščių pavadinimai yra aiškiai pažymėti ant apvalkalo, kaip matome aukščiau esančiame paveikslėlyje. Jį galima susieti su „Keil“ programine įranga, kur programą galima perkelti į STM32 mikrovaldiklius. Taigi šioje pamokoje pažiūrėkime, kaip šį ST-LINK programuotoją galima naudoti programuojant STM32 mikrovaldiklį. Žemiau esančiame paveikslėlyje parodyti ST-LINK V2 modulio kaiščiai.
Pastaba: Pirmą kartą jungdami „ST-Link“ prie kompiuterio. Mums reikia įdiegti įrenginio tvarkyklę. Įrenginio tvarkykles galite rasti šioje nuorodoje pagal savo operacinę sistemą.
STM32CubeMX
„STM32CubeMX“ įrankis yra „STMicroelectronics STMCube“ dalis. Šis programinės įrangos įrankis palengvina kūrimą, nes sumažina kūrimo pastangas, laiką ir išlaidas. „STM32Cube“ apima „STM32CubeMX“, kuris yra grafinės programinės įrangos konfigūravimo įrankis, leidžiantis generuoti C inicializavimo kodą naudojant grafinius vedlius. Tas kodas gali būti naudojamas įvairiose kūrimo aplinkose, tokiose kaip „keil uVision“, GCC, IAR ir kt. Šį įrankį galite atsisiųsti iš šios nuorodos.
STM32CubeMX turi šias funkcijas
- Prisegti konfliktų sprendimo priemonę
- Laikrodžio medžio nustatymo pagalbininkas
- Energijos suvartojimo skaičiuoklė
- Naudingoji programa, atliekanti MCU periferinę konfigūraciją, pvz., GPIO kaiščiai, USART ir kt
- Programinė įranga, atliekanti MCU periferinę konfigūraciją tarpinėms programinės įrangos paketams, tokiems kaip USB, TCP / IP ir kt
Reikalingos medžiagos
Aparatinė įranga
- STM32F103C8 „Blue Pill“ lenta
- „ST-LINK V2“
- Paspauskite mygtuką
- LED
- Bandomoji Lenta
- Šuolių laidai
Programinė įranga
- STM32CubeMX kodo generavimo įrankis (nuoroda)
- „Keil uVision 5“ (nuoroda)
- „ST-Link V2“ tvarkyklės (nuoroda)
Grandinės schema ir jungtys
Žemiau pateikiama grandinės schema, leidžianti tiesiog prijungti šviesos diodą su STM32 plokšte, naudojant mygtuką.
Ryšys tarp ST-LINK V2 ir STM32F103C8
Čia „STM32 Blue Pill“ plokštė maitinama iš „ST-LINK“, prijungto prie kompiuterio USB prievado. Taigi nereikia atskirai maitinti STM32. Žemiau esančioje lentelėje parodytas ryšys tarp ST-Link ir „Blue“ tablečių plokštės.
STM32F103C8 |
„ST-Link V2“ |
BND |
BND |
SWCLK |
SWCLK |
SWDIO |
SWDIO |
3V3 |
3.3V |
LED ir mygtukas
Šviesos diodas naudojamas nurodyti „Blue Pill“ plokštės išvestį, kai paspaudžiamas mygtukas. Šviesos diodų anodas yra prijungtas prie „Blue Pill“ plokštės kaiščio PC13, o katodas yra įžemintas.
Mygtukas prijungtas prie prisidėti prie pin Pa1 Blue Pill lentos. Taip pat turime naudoti 10k vertės traukimo rezistorių, nes kaištis gali būti plūduriuojantis be jokio įėjimo, kai atleidžiamas mygtukas. Vienas mygtuko galas yra sujungtas su žeme, o kitas galas - su kaiščiu PA1, o 10 k traukimo rezistorius taip pat prijungtas prie 3,3 V „Blue Pill“ plokštės.
Programos sukūrimas ir įrašymas į STM32 naudojant „Keil uVision“ ir „ST-Link“
1 žingsnis: - Pirmiausia įdiekite visas „ ST-LINK V2 “ įrenginio tvarkykles, programinės įrangos įrankius „STM32Cube MX & Keil uVision“ ir įdiekite reikiamus STM32F103C8 paketus.
2 žingsnis: - Antrasis žingsnis yra atidarytas >> STM32Cube MX
3 žingsnis: - Tada spustelėkite Naujas projektas
4 žingsnis: - Po to ieškokite ir pasirinkite mūsų mikrovaldiklį STM32F103C8
5 žingsnis: - Dabar pasirodys „ STM32F103C8“ eskizas, čia mes galime nustatyti kaiščių konfigūracijas. Pagal savo projektą periferinių įrenginių skyriuje taip pat galime pasirinkti kaiščius.
6 žingsnis: - Taip pat galite spustelėti kaištį tiesiogiai ir pasirodys sąrašas, dabar pasirinkite reikiamą smeigtuko konfigūraciją.
7 žingsnis: - Savo projektui pasirinkome PA1 kaip GPIO INPUT, PC13 kaip GPIO OUTPUT ir SYS derinimą kaip SERIAL WIRE, čia tik mes sujungiame ST-LINK SWCLK & SWDIO kaiščius. Pasirinkti ir sukonfigūruoti kaiščiai rodomi ŽALIA spalva. Galite tai pažymėti žemiau esančiame paveikslėlyje.
8 žingsnis: - Toliau skirtuke „Konfigūracija “ pasirinkite GPIO, kad nustatytumėte pasirinktų kaiščių GPIO kaiščių konfigūracijas.
9 žingsnis: - Toliau šiame smeigtukų konfigūravimo laukelyje galime sukonfigūruoti naudotojų smeigtukų vartotojo etiketes , tai yra vartotojo apibrėžtus smeigtukų pavadinimus.
10 žingsnis: - Po to spustelėkite Projektas >> Generuoti kodą .
11 žingsnis: - Dabar pasirodys projekto nustatymų dialogo langas. Šiame laukelyje pasirinkite savo projekto pavadinimą ir vietą bei kūrimo aplinką. Mes naudojame „Keil“, todėl kaip IDE pasirinkite MDK-ARMv5.
12 žingsnis: - Sekantis pagal kodo generatorius kortelėje, pasirinkite kopijuoti tik būtinų bibliotekos failus ir tada spustelėkite Gerai.
13 žingsnis: - Dabar pasirodo kodo generavimo dialogo langas. Pasirinkite „ Atidaryti projektą“, jei norite automatiškai atidaryti sugeneruotą kodą „Keil uvsion“.
14 veiksmas: - Dabar atidaromas „Keil uVision“ įrankis su sugeneruotu kodu STM32CubeMx su tuo pačiu projekto pavadinimu su reikiama biblioteka ir kodais, kurie sukonfigūruoti mūsų pasirinktiems kaiščiams.
15 žingsnis: - Dabar mes tiesiog turime įtraukti logiką, kad atliktume tam tikrus veiksmus su išėjimo šviesos diodu (kaištis PC13), kai mygtukas paspaudžiamas ir atleidžiamas prie GPIO įvesties (kaištis PA1). Taigi pasirinkite mūsų main.c programą, kad įtrauktumėte keletą kodų.
16 žingsnis: - Dabar pridėkite kodą „ while“ (1) kilpoje, žiūrėkite žemiau esantį vaizdą, kuriame paryškinau tą skyrių, kad galėčiau nuolat vykdyti kodą.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Mygtukas DETECTS yra paspaustas {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Kad išvestis būtų aukšta, kai paspaudžiamas mygtukas d} kita {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Paspaudus mygtuką, kad išvestis būtų maža}}
17 veiksmas: - Baigę redaguoti kodą, spustelėkite piktogramą Tikslinės parinktys, esančią derinimo skirtuke, pasirinkite ST-LINK Debugger
Taip pat spustelėkite mygtuką Nustatymai, tada skirtuke „ Flash atsisiuntimas “ pažymėkite žymės langelį Atkurti ir paleisti ir spustelėkite „Gerai“.
18 žingsnis: - Dabar spustelėkite „ Atkurti“ piktogramą, kad atkurtumėte visus tikslinius failus.
19 žingsnis: - Dabar galite prijungti „ST-LINK“ prie kompiuterio, kai grandinės jungtys yra paruoštos, ir spustelėkite piktogramą ATSISIŲSTI arba paspauskite F8, kad mirksėtumėte STM32F103C8 su sugeneruotu ir redaguotu kodu.
20 žingsnis: - Keil uVision lango apačioje galite pastebėti mirksinčią indikaciją.
„Keil“ užprogramuotos STM32 plokštės išvestis
Dabar, kai paspaudžiame mygtuką, šviesos diodas įsijungia, o atleidus jį, LED išsijungia.
Programa
Pagrindinė dalis, kurią pridėjome sugeneruotoje programoje, parodyta žemiau. Tai code reikia įtraukti į while (1 ) buvo main.c programos generuoja STM32CubeMX. Galite grįžti prie 15 ir 17 žingsnių, kad sužinotumėte, kaip tai turėtų būti įtraukta į main.c programą.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Mygtukas DETECTS yra paspaustas {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Kad išvestis būtų aukšta, kai paspaudžiamas mygtukas d} kita {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Paspaudus mygtuką, kad išvestis būtų maža}}
Pilnas projekto kūrimo ir įkėlimo į STM32 plokštę procesas taip pat paaiškintas pabaigoje pateiktame vaizdo įraše. Taip pat žemiau pateikiamas visas main.c failo kodas, įskaitant aukščiau nurodytą kodą.
Be to, visą mūsų STM32 projektų rinkinį rasite čia.