- ST-LINK V2
- STM32CubeMX
- Mga Materyal na Kinakailangan
- Circuit Diagram at Mga Koneksyon
- Lumilikha at nasusunog ng isang programa sa STM32 gamit ang Keil uVision at ST-Link
- Output ng Keil Programmed STM32 Board
- Programa
Ang STM32 Microcontrollers na gumagamit ng arkitektura ng ARM Cortex M ay nagiging popular ngayon at ginagamit sa maraming mga application dahil sa tampok, gastos at pagganap nito. Na-program namin ang STM32F103C8 gamit ang Arduino IDE sa aming mga nakaraang tutorial. Ang Programming STM32 na may Arduino IDE ay simple, dahil maraming magagamit na mga aklatan para sa iba't ibang mga sensor upang maisagawa ang anumang gawain, kailangan lamang naming idagdag ang mga aklatan na iyon sa programa. Ito ay isang madaling pamamaraan at maaaring hindi ka makapasok sa malalim na pag-aaral tungkol sa mga processor ng ARM. Kaya't papasok kami sa susunod na antas ng pag-program na tinatawag na ARM program. Sa pamamagitan nito magagawa natin, hindi lamang mapabuti ang aming istraktura ng code ngunit maaari din makatipid ng puwang ng memorya sa pamamagitan ng hindi paggamit ng mga hindi kinakailangang aklatan.
Ang STMicroelectronics ay nagpakilala ng isang tool na tinatawag na STM32Cube MX, na bumubuo ng pangunahing code ayon sa mga peripheral at ang napiling board ng STM32. Kaya hindi namin kailangang mag-alala tungkol sa pag-coding para sa pangunahing mga driver at peripheral. Dagdag dito ang nabuong code ay maaaring magamit sa Keil uVision para sa pag-edit ayon sa kinakailangan. At sa wakas ang code ay sinunog sa STM32 gamit ang programmer ng ST-Link mula sa STMicroelectronics.
Sa tutorial na ito matututunan namin kung paano i-program ang STM32F103C8 gamit ang Keil uVision & STM32CubeMX sa pamamagitan ng paggawa ng isang simpleng proyekto ng pag- interfaces ng isang pindutan ng itulak at LED sa STM32F103C8 Blue Pill board. Lilikha kami ng code gamit ang STM32Cube MX pagkatapos ay i-edit at i-upload ang code sa STM32F103C8 gamit ang Keil uVision. Bago maging detalye, malalaman muna natin ang tungkol sa programmer ng ST-LINK at tool na software ng STM32CubeMX.
ST-LINK V2
Ang ST-LINK / V2 ay isang in-circuit debugger at programmer para sa mga pamilyang STM8 at STM32 microcontroller. Maaari kaming mag-upload ng code sa STM32F103C8 at iba pang mga microcontroller ng STM8 & STM32 gamit ang ST-LINK na ito. Ang solong wire interface module (SWIM) at JTAG / serial wire debugging (SWD) na mga interface ay ginagamit upang makipag-usap sa anumang STM8 o STM32 microcontroller na matatagpuan sa isang application board. Tulad ng mga aplikasyon ng STM32 na gumagamit ng interface ng full-speed na USB upang makipag-usap sa mga kapaligiran ng pag-unlad na may Atollic, IAR, Keil o TASKING, kaya magagamit namin ang hardware na ito upang mai-program ang mga microcontroller ng STM 8 & STM32.
Sa itaas ay ang imahe ng ST-LINK V2 dongle mula sa STMicroelectronics na sumusuporta sa buong saklaw ng STM32 SWD debugging interface, isang simpleng interface na 4-wire (kabilang ang lakas), mabilis at matatag. Magagamit ito sa iba't ibang mga kulay. Ang katawan ay gawa sa aluminyo na haluang metal. Mayroon itong asul na pahiwatig ng LED dahil ginagamit ito upang maobserbahan ang estado ng pagtatrabaho ng ST-LINK. Ang mga pangalan ng pin ay malinaw na minarkahan sa shell tulad ng nakikita natin sa imahe sa itaas. Maaari itong i- interfaced sa Keil software kung saan maaaring mai-flash ang programa sa mga microcontroller ng STM32. Kaya't tingnan natin sa tutorial na ito kung paano magagamit ang programmer ng ST-LINK na ito upang i-program ang STM32 microcontroller. Ipinapakita ng imahe sa ibaba ang mga pin ng module na ST-LINK V2.
Tandaan: Kapag kumokonekta sa ST-Link sa computer sa kauna-unahang pagkakataon. Kailangan naming mai-install ang driver ng aparato. Ang mga driver ng aparato ay matatagpuan sa link na ito alinsunod sa iyong operating system.
STM32CubeMX
Ang tool na STM32CubeMX ay bahagi ng STMicroelectronics STMCube. Ginagawa ng tool ng software na ito ang pag-unlad na madali sa pamamagitan ng pagbawas sa pagsisikap, oras at gastos sa pag-unlad. Ang STM32Cube ay may kasamang STM32CubeMX na isang tool na pag-configure ng grapiko na software na nagbibigay-daan sa pagbuo ng C initialization code gamit ang mga grapiko na wizard. Ang code na iyon ay maaaring magamit sa iba't ibang mga kapaligiran sa pag-unlad tulad ng keil uVision, GCC, IAR atbp. Maaari mong i-download ang tool na ito mula sa sumusunod na link.
Ang STM32CubeMX ay may mga sumusunod na tampok
- I-pin ang lalabas na hindi pagkakasundo
- Isang katulong sa setting ng orasan-puno
- Isang calculator ng paggamit ng kuryente
- Isang utility na gumaganap ng MCU paligid na pagsasaayos tulad ng mga GPIO pin, USART atbp
- Isang utility na gumaganap ng MCU peripheral configure para sa mga middleware stack tulad ng USB, TCP / IP atbp
Mga Materyal na Kinakailangan
Hardware
- STM32F103C8 Blue Pill board
- ST-LINK V2
- Push Button
- LED
- Breadboard
- Jumper Wires
Software
- STM32CubeMX Code Generation Tool (Link)
- Keil uVision 5 (link)
- Mga driver para sa ST-Link V2 (link)
Circuit Diagram at Mga Koneksyon
Nasa ibaba ang circuit diagram upang simpleng ikonekta ang isang LED na may STM32 board gamit ang isang pushbutton.
Koneksyon sa pagitan ng ST-LINK V2 & STM32F103C8
Narito ang board ng STM32 Blue Pill ay pinalakas mula sa ST-LINK na konektado sa USB port ng computer. Kaya't hindi namin kailangang i-power ang STM32 nang hiwalay. Ipinapakita ng talahanayan sa ibaba ang koneksyon sa pagitan ng ST-Link at Blue pill board.
STM32F103C8 |
ST-Link V2 |
GND |
GND |
SWCLK |
SWCLK |
SWDIO |
SWDIO |
3V3 |
3.3V |
LED & Push Button
Ginagamit ang LED upang ipahiwatig ang output mula sa Blue Pill board kapag pinindot ang isang pindutan ng push. Ang anode ng LED ay konektado sa pin PC13 ng Blue Pill board at ang cathode ay na-grounded.
Ang isang pindutan ng push ay konektado upang magbigay ng input sa pin PA1 ng Blue Pill board. Kailangan din naming gumamit ng isang pull up risistor ng halagang 10k dahil maaaring lumutang ang pin nang walang anumang input kapag ang pindutan ay pinakawalan. Ang isang dulo ng pindutan ng push ay konektado sa lupa at iba pang mga dulo upang i-pin ang PA1 & isang pull up risistor ng 10k ay konektado din sa 3.3V ng Blue Pill board.
Lumilikha at nasusunog ng isang programa sa STM32 gamit ang Keil uVision at ST-Link
Hakbang 1: - Una i-install ang lahat ng mga driver ng aparato para sa ST-LINK V2, mga tool sa software na STM32Cube MX & Keil uVision at i-install ang mga kinakailangang package para sa STM32F103C8.
Hakbang 2: - Ang pangalawang hakbang ay Bukas >> STM32Cube MX
Hakbang 3: - Pagkatapos Mag-click sa Bagong Project
Hakbang 4: - Pagkatapos ng paghahanap na iyon at piliin ang aming microcontroller STM32F103C8
Hakbang 5: - Ngayon lilitaw ang pin-out na sketch ng STM32F103C8, dito maaari naming itakda ang mga pagsasaayos ng pin. Maaari din naming piliin ang aming mga pin sa seksyon ng mga peripheral alinsunod sa aming proyekto.
Hakbang 6: - Maaari ka ring mag-click sa pin nang direkta at lilitaw ang isang listahan, ngayon piliin ang kinakailangang pagsasaayos ng pin.
Hakbang 7: - Para sa aming proyekto napili namin ang PA1 bilang GPIO INPUT, PC13 bilang GPIO OUTPUT & SYS debug bilang SERIAL WIRE, dito lamang namin ikinonekta ang mga ST-LINK SWCLK & SWDIO pin. Ang mga napili at naka-configure na mga pin ay lilitaw sa kulay GREEN. Maaari mong tandaan na sa ibaba ng imahe.
Hakbang 8: - Susunod sa ilalim ng tab na Pag- configure , piliin ang GPIO upang maitakda ang mga pagsasaayos ng GPIO pin para sa mga pin na pinili namin.
Hakbang 9: - Susunod sa kahon ng pagsasaayos ng pin na ito maaari naming mai- configure ang User Label para sa mga pin na ginagamit namin, iyon ang tinukoy ng mga gumagamit ng mga pin na pangalan.
Hakbang 10: - Pagkatapos ng pag-click sa Project >> Bumuo ng Code .
Hakbang 11: - Ngayon lalabas ang dialog box ng mga setting ng proyekto. Sa kahon na ito piliin ang pangalan ng iyong proyekto at lokasyon at piliin ang kapaligiran sa pag-unlad. Gumagamit kami ng Keil kaya piliin ang MDK-ARMv5 bilang IDE.
Hakbang 12: - Susunod sa ilalim ng tab na Tagabuo ng Code , piliin ang Kopyahin lamang ang mga kinakailangang file ng library at pagkatapos ay i-click ang OK.
Hakbang 13: - Ngayon lilitaw ang kahon ng dialogo ng pagbuo ng code. Piliin ang Buksan ang Proyekto upang awtomatikong buksan ang proyekto ang nabuong code sa Keil uvsion.
Hakbang 14: - Ngayon ang tool na Keil uVision ay bubukas sa aming nabuong code sa STM32CubeMx na may parehong pangalan ng proyekto na may kinakailangang library at mga code na na-configure para sa mga pin na pinili namin.
Hakbang 15: - Ngayon ay kailangan lamang naming isama ang lohika upang maisagawa ang ilang aksyon sa output LED (pin PC13) kapag ang pindutan ay pinindot at inilabas sa input ng GPIO (pin PA1). Kaya piliin ang aming main.c na programa upang magsama ng ilang mga code.
Hakbang 16: - Ngayon idagdag ang code sa habang (1) loop, tingnan ang larawan sa ibaba kung saan ko na-highlight ang seksyon na iyon upang magpatakbo ng code nang tuloy-tuloy.
habang (1) {kung (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Ang mga DETECTS Button ay Pinindot {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // To make output output when button pressesd} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Upang gawing Mababa ang output kapag ang pindutan ay pinindot}}
Hakbang 17: - Pagkatapos tapusin ang pag-edit ng code, i-click ang icon na Mga Pagpipilian para sa Target sa ilalim ng tab na pag-debug piliin ang ST-LINK Debugger
Gayundin, mag-click sa pindutan ng Mga Setting at pagkatapos sa ilalim ng tab na Pag- download ng Flash lagyan ng tsek ang I-reset at Patakbuhin ang check box at i-click ang 'ok'.
Hakbang 18: - Ngayon mag-click sa Muling pagbuo ng icon upang muling itayo ang lahat ng mga target na file.
Hakbang 19: - Maaari mo na ngayong mai-plug ang ST-LINK sa computer na handa na ang mga koneksyon sa circuit at mag- click sa icon na DOWNLOAD o pindutin ang F8 upang i-flash ang STM32F103C8 gamit ang code na iyong nabuo at na-edit.
Hakbang 20: - Maaari mong mapansin ang pahiwatig ng pag-flash sa ilalim ng window ng keil uVision.
Output ng Keil Programmed STM32 Board
Ngayon kapag pinindot namin ang pindutan ng push, LED Turn On at kapag pinakawalan namin ito, ang LED ay naka-Off.
Programa
Ang pangunahing bahagi na naidagdag namin sa nabuong programa ay ipinapakita sa ibaba. Ang code sa ibaba na ito ay kailangang isama sa habang (1 ) ng main.c na programa na nabuo ng STM32CubeMX. Maaari kang bumalik sa Hakbang 15 hanggang hakbang 17 upang malaman kung paano ito dapat maidagdag sa main.c na programa.
habang (1) {kung (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Ang mga DETECTS Button ay Pinindot {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // To make output output when button pressesd} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Upang gawing Mababa ang output kapag ang pindutan ay pinindot}}
Ang kumpletong proseso ng paglikha at pag-upload ng proyekto sa board ng STM32 ay ipinaliwanag din sa Video na ibinigay sa dulo. Gayundin ang kumpletong code ng main.c file ay ibinibigay sa ibaba kasama ang naibigay na code sa itaas.
Dagdag dito, mahahanap mo rito ang aming kumpletong hanay ng mga proyekto ng STM32.