- ST-LINK V2
- STM32CubeMX
- Potrebni materiali
- Shema vezja in povezave
- Ustvarjanje in zapisovanje programa v STM32 z uporabo Keil uVision in ST-Link
- Izhod iz programirane plošče Keil STM32
- Program
Mikrokrmilniki STM32, ki uporabljajo arhitekturo ARM Cortex M, postajajo danes priljubljeni in se uporabljajo v številnih aplikacijah zaradi svojih lastnosti, stroškov in zmogljivosti. STM32F103C8 smo programirali z uporabo Arduino IDE v naših prejšnjih vadnicah. Programiranje STM32 z Arduino IDE je preprosto, saj je na voljo veliko knjižnic za različne senzorje za izvajanje katere koli naloge, le te knjižnice moramo dodati v program. To je enostaven postopek in morda ne boste podrobno spoznali procesorjev ARM. Zdaj prehajamo na naslednjo stopnjo programiranja, imenovano ARM programiranje. S tem lahko ne samo izboljšamo svojo strukturo kode, temveč lahko prihranimo tudi pomnilniški prostor, tako da ne uporabljamo nepotrebnih knjižnic.
STMicroelectronics je predstavil orodje, imenovano STM32Cube MX, ki generira osnovno kodo glede na zunanje naprave in izbrano ploščo STM32. Zato nam ni treba skrbeti za kodiranje osnovnih gonilnikov in zunanjih naprav. Nadalje je to ustvarjeno kodo mogoče uporabiti v Keil uVision za urejanje v skladu z zahtevami. In na koncu se koda zažge v STM32 z uporabo programerja ST-Link podjetja STMicroelectronics.
V tej vadnici bomo izvedeli, kako programirati STM32F103C8 s pomočjo Keil uVision in STM32CubeMX, tako da izvedemo preprost projekt povezovanja gumba in LED s ploščo STM32F103C8 Blue Pill. Kodo bomo ustvarili s pomočjo STM32Cube MX, nato jo bomo uredili in naložili v STM32F103C8 s pomočjo Keil uVision. Preden se podrobneje seznanimo, se bomo najprej seznanili s programatorjem ST-LINK in programskim orodjem STM32CubeMX.
ST-LINK V2
ST-Link / V2 je v vezju razhroščevalnik in programer za mikrokrmilnik družine STM8 in STM32. Z uporabo te ST-LINK lahko naložimo kodo na STM32F103C8 in druge mikrokrmilnike STM8 & STM32. Enožični vmesniški modul (SWIM) in vmesniki JTAG / zaporedno odpravljanje napak (SWD) se uporabljajo za komunikacijo s katerim koli mikrokrmilnikom STM8 ali STM32, ki se nahaja na aplikacijski plošči. Ker aplikacije STM32 uporabljajo vmesnik USB s polno hitrostjo za komunikacijo z integriranimi razvojnimi okolji Atollic, IAR, Keil ali TASKING, tako lahko s to strojno opremo programiramo mikrokrmilnike STM 8 in STM32.
Zgoraj je slika ključa ST-LINK V2 podjetja STMicroelectronics, ki podpira celoten nabor vmesnikov za odpravljanje napak STM32 SWD, preprost 4-žični vmesnik (vključno z napajanjem), hiter in stabilen. Na voljo je v različnih barvah. Telo je izdelano iz aluminijeve zlitine. Ima modro LED indikacijo, saj se uporablja za opazovanje delovnega stanja ST-LINK. Imena lukenj so na lupini jasno označena, kot lahko vidimo na zgornji sliki. Lahko se poveže s programsko opremo Keil, kjer je program mogoče razširiti na mikrokrmilnike STM32. Torej, poglejmo v tej vadnici, kako lahko s pomočjo programerja ST-LINK programiramo mikrokrmilnik STM32. Spodnja slika prikazuje nožice modula ST-LINK V2.
Opomba: Pri prvi povezavi ST-Link z računalnikom. Za namestitev potrebujemo gonilnik naprave. Gonilnike naprav najdete na tej povezavi glede na vaš operacijski sistem.
STM32CubeMX
Orodje STM32CubeMX je del STMicroelectronics STMCube. To programsko orodje olajša razvoj z zmanjšanjem razvojnih naporov, časa in stroškov. STM32Cube vključuje STM32CubeMX, ki je grafično orodje za konfiguracijo programske opreme, ki omogoča generiranje inicializacijske kode C z uporabo grafičnih čarovnikov. To kodo lahko uporabljate v različnih razvojnih okoljih, kot so keil uVision, GCC, IAR itd. To orodje lahko prenesete z naslednje povezave.
STM32CubeMX ima naslednje funkcije
- Razreševalnik pin-konfliktov
- Pomočnik za nastavitev drevesa ure
- Kalkulator porabe energije
- Pripomoček za izvajanje zunanje konfiguracije MCU, kot so zatiči GPIO, USART itd
- Pripomoček, ki izvaja MCU periferno konfiguracijo za vmesne programe, kot so USB, TCP / IP itd
Potrebni materiali
Strojna oprema
- STM32F103C8 plošča modre tablete
- ST-LINK V2
- Pritisni gumb
- LED
- Breadboard
- Jumper žice
Programska oprema
- Orodje za generiranje kode STM32CubeMX (povezava)
- Keil uVision 5 (povezava)
- Gonilniki za ST-Link V2 (povezava)
Shema vezja in povezave
Spodaj je diagram vezja za preprosto povezavo LED s ploščo STM32 s pomočjo gumba.
Povezava med ST-LINK V2 in STM32F103C8
Tu se plošča STM32 Blue Pill napaja iz povezave ST-LINK, ki je priključena na vrata USB računalnika. Zato nam ni treba napajati STM32 ločeno. Spodnja tabela prikazuje povezavo med ST-Link in Blue tabletami.
STM32F103C8 |
ST-Link V2 |
GND |
GND |
SWCLK |
SWCLK |
SWDIO |
SWDIO |
3V3 |
3.3V |
LED in gumb
LED se uporablja za prikaz izhoda plošče Blue Pill, ko pritisnete gumb. Anoda LED je priključena na zatič PC13 plošče Blue Pill in katoda je ozemljena.
Tipka je povezan z prispevati k pin PA1 Blue Pill krovu. Uporabiti moramo tudi vlečni upor vrednosti 10k, ker lahko zatič plava brez kakršnega koli vhoda, ko pritisnete gumb. En konec gumba je povezan z ozemljitvijo, drugi konec pa z zatičem PA1, vlečni upor 10 k pa je povezan tudi s 3,3 V plošče Blue Pill.
Ustvarjanje in zapisovanje programa v STM32 z uporabo Keil uVision in ST-Link
1. korak: - Najprej namestite vse gonilnike naprav za ST-LINK V2, programska orodja STM32Cube MX & Keil uVision in namestite potrebne pakete za STM32F103C8.
2. korak: - Drugi korak je Open >> STM32Cube MX
3. korak: - Nato kliknite Nov projekt
4. korak: - Po tem iskanju in izberite naš mikrokrmilnik STM32F103C8
5. korak: - Zdaj se prikaže skica STM32F103C8, tukaj lahko nastavimo konfiguracije pinov. V skladu z našim projektom lahko tudi izberemo nožice v razdelku za zunanje naprave.
6. korak: - Lahko tudi kliknete na zatič neposredno in prikaže se seznam, zdaj izberite želeno konfiguracijo zatiča.
7. korak: - Za naš projekt smo izbrali PA1 kot GPIO INPUT, PC13 kot odpravljanje napak GPIO OUTPUT & SYS kot SERIAL WIRE, tukaj le povežemo zatiča ST-LINK SWCLK & SWDIO. Izbrani in konfigurirani zatiči so prikazani v ZELENI barvi. To lahko opazite na spodnji sliki.
8. korak: - Nato na zavihku Konfiguracija izberite GPIO, da nastavite konfiguracije pinov GPIO za izbrane nožice.
9. korak: - Nato lahko v tem polju za konfiguracijo zatiča nastavimo uporabniško oznako za zatiče, ki jih uporabljamo, to so uporabniško določena imena zatičev.
10. korak: - Po tem kliknite Projekt >> Ustvari kodo .
11. korak: - Zdaj se prikaže pogovorno okno z nastavitvami projekta. V tem polju izberite ime in lokacijo vašega projekta ter izberite razvojno okolje. Uporabljamo Keil, zato izberite MDK-ARMv5 kot IDE.
Korak 12: - Naslednja pod Code Generator kartici, izberite Kopiraj samo potrebne knjižnične datoteke in kliknite V redu.
Korak 13: - Zdaj se prikaže pogovorno okno za ustvarjanje kode. Izberite Odpri projekt, da samodejno odprete ustvarjeno kodo v Keil uvsion.
14. korak: - Zdaj se odpre orodje Keil uVision z našo generirano kodo v STM32CubeMx z istim imenom projekta z potrebno knjižnico in kodami, ki so konfigurirane za izbrane nožice.
Korak 15: - Zdaj moramo vključiti logiko, da izvedemo nekaj dejanj na izhodni LED (pin PC13), ko pritisnemo gumb in spustimo na vhodu GPIO (pin PA1). Torej izberite naš glavni program.c, da vključite nekaj kod.
Korak 16: - Zdaj dodajte kodo v zanko while (1) , glejte spodnjo sliko, kjer sem poudaril ta odsek, da bo koda neprekinjeno tekla.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => pritisne se gumb DETECTS {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Če želimo, da je izhod visok, ko pritisnete gumb}} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Če naj bo izhod nizek, ko pritisnete gumb}}
Korak 17: - Ko končate z urejanjem kode, kliknite ikono Možnosti za cilj pod zavihkom za odpravljanje napak in izberite razhroščevalec ST-LINK
Kliknite tudi gumb Nastavitve in nato na zavihku Flash Download potrdite polje Reset and Run in kliknite 'ok'.
Korak 18: - Zdaj kliknite ikono Rebuild, da obnovite vse ciljne datoteke.
Korak 19: - Zdaj lahko ST-LINK priključite na računalnik s pripravljenimi vezji in kliknete ikono PRENESI ali pritisnite F8, da utripa STM32F103C8 s kodo, ki ste jo ustvarili in uredili.
20. korak: - Na dnu okna keil uVision lahko opazite utripajočo indikacijo.
Izhod iz programirane plošče Keil STM32
Zdaj, ko pritisnemo gumb, se LED vklopi in ko ga spustimo, se LED izklopi.
Program
Glavni del, ki smo ga dodali v ustvarjeni program, je prikazan spodaj. To spodaj potrebe kode, ki se vključijo v while (1 ) za main.c programa, ki ga ustvarja STM32CubeMX. Lahko se vrnete na korak 15 do korak 17, če želite izvedeti, kako ga je treba dodati v program main.c.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => pritisne se gumb DETECTS {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Če želimo, da je izhod visok, ko pritisnete gumb}} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Če naj bo izhod nizek, ko pritisnete gumb}}
Celoten postopek ustvarjanja in nalaganja projekta na ploščo STM32 je razložen tudi v videoposnetku na koncu. Spodaj je navedena tudi celotna koda datoteke main.c, vključno z zgoraj navedeno kodo.
Poleg tega lahko tukaj najdete celoten nabor projektov STM32.