- ST-LINK V2
- STM32CubeMX
- Απαιτούμενα υλικά
- Διάγραμμα κυκλώματος και συνδέσεις
- Δημιουργία και εγγραφή προγράμματος σε STM32 χρησιμοποιώντας το Keil uVision και το ST-Link
- Έξοδος του Keil Programm STM32 Board
- Πρόγραμμα
Οι μικροελεγκτές STM32 που χρησιμοποιούν την αρχιτεκτονική ARM Cortex M γίνονται πλέον δημοφιλείς και χρησιμοποιούνται σε πολλές εφαρμογές λόγω του χαρακτηριστικού, του κόστους και της απόδοσής του. Έχουμε προγραμματίσει το STM32F103C8 χρησιμοποιώντας το Arduino IDE στα προηγούμενα σεμινάρια μας. Ο προγραμματισμός του STM32 με το Arduino IDE είναι απλός, καθώς υπάρχουν πολλές βιβλιοθήκες διαθέσιμες για διάφορους αισθητήρες για την εκτέλεση οποιασδήποτε εργασίας, απλώς πρέπει να προσθέσουμε αυτές τις βιβλιοθήκες στο πρόγραμμα. Αυτή είναι μια εύκολη διαδικασία και μπορεί να μην μάθετε σε βάθος σχετικά με τους επεξεργαστές ARM. Τώρα λοιπόν μπαίνουμε στο επόμενο επίπεδο προγραμματισμού που ονομάζεται προγραμματισμός ARM. Με αυτό μπορούμε, όχι μόνο να βελτιώσουμε τη δομή του κώδικα, αλλά και να εξοικονομήσουμε χώρο μνήμης, χρησιμοποιώντας μη απαραίτητες βιβλιοθήκες.
Η STMicroelectronics παρουσίασε ένα εργαλείο που ονομάζεται STM32Cube MX, το οποίο δημιουργεί βασικό κώδικα σύμφωνα με τα περιφερειακά και την επιλεγμένη πλακέτα STM32. Επομένως, δεν χρειάζεται να ανησυχούμε για την κωδικοποίηση βασικών προγραμμάτων οδήγησης και περιφερειακών. Επιπλέον, αυτός ο δημιουργημένος κώδικας μπορεί να χρησιμοποιηθεί στο Keil uVision για επεξεργασία σύμφωνα με τις απαιτήσεις. Και τέλος ο κώδικας εγγράφεται σε STM32 χρησιμοποιώντας προγραμματιστή ST-Link από την STMicroelectronics.
Σε αυτό το σεμινάριο θα μάθουμε πώς να προγραμματίζουμε το STM32F103C8 χρησιμοποιώντας το Keil uVision & STM32CubeMX κάνοντας ένα απλό έργο διασύνδεσης ενός κουμπιού και LED με την πλακέτα Blue Pill STM32F103C8. Θα δημιουργήσουμε τον κωδικό χρησιμοποιώντας το STM32Cube MX και μετά θα επεξεργαστούμε και θα ανεβάσουμε τον κωδικό στο STM32F103C8 χρησιμοποιώντας το Keil uVision. Πριν αναφερθούμε σε λεπτομέρειες, θα μάθουμε πρώτα για τον προγραμματιστή ST-LINK και το λογισμικό STM32CubeMX
ST-LINK V2
Το ST-LINK / V2 είναι ένας προγραμματιστής εντοπισμού σφαλμάτων και προγραμματιστής για τις οικογένειες μικροελεγκτών STM8 και STM32. Μπορούμε να ανεβάσουμε κώδικα στους STM32F103C8 και σε άλλους μικροελεγκτές STM8 & STM32 χρησιμοποιώντας αυτό το ST-LINK. Οι διεπαφές μονάδας διασύνδεσης μονής σύνδεσης (SWIM) και JTAG / σειριακό καλώδιο εντοπισμού σφαλμάτων (SWD) χρησιμοποιούνται για την επικοινωνία με οποιονδήποτε μικροελεγκτή STM8 ή STM32 που βρίσκεται σε μια πλακέτα εφαρμογών. Καθώς οι εφαρμογές STM32 χρησιμοποιούν τη διεπαφή πλήρους ταχύτητας USB για επικοινωνία με περιβάλλοντα ανάπτυξης Atollic, IAR, Keil ή TASKING, έτσι μπορούμε να χρησιμοποιήσουμε αυτό το υλικό για να προγραμματίσουμε τους μικροελεγκτές STM 8 & STM32.
Πάνω είναι η εικόνα του ST-LINK V2 dongle από την STMicroelectronics που υποστηρίζει το πλήρες εύρος της διεπαφής εντοπισμού σφαλμάτων STM32 SWD, μια απλή διεπαφή 4 καλωδίων (συμπεριλαμβανομένης της ισχύος), γρήγορη και σταθερή. Διατίθεται σε διάφορα χρώματα. Το σώμα είναι κατασκευασμένο από κράμα αλουμινίου. Έχει ένδειξη μπλε LED καθώς χρησιμοποιείται για την παρακολούθηση της κατάστασης λειτουργίας του ST-LINK. Τα ονόματα των πινέλων είναι σαφώς σημειωμένα στο κέλυφος όπως μπορούμε να δούμε στην παραπάνω εικόνα. Μπορεί να διασυνδεθεί με το λογισμικό Keil όπου το πρόγραμμα μπορεί να αναβοσβήνει στους μικροελεγκτές STM32. Ας δούμε λοιπόν σε αυτό το σεμινάριο πώς αυτός ο προγραμματιστής ST-LINK μπορεί να χρησιμοποιηθεί για τον προγραμματισμό μικροελεγκτή STM32. Η παρακάτω εικόνα δείχνει τις καρφίτσες της μονάδας ST-LINK V2.
Σημείωση: Κατά τη σύνδεση του ST-Link με τον υπολογιστή για πρώτη φορά. Χρειαζόμαστε εγκατάσταση προγράμματος οδήγησης συσκευής. Τα προγράμματα οδήγησης συσκευών βρίσκονται σε αυτόν τον σύνδεσμο σύμφωνα με το λειτουργικό σας σύστημα.
STM32CubeMX
Το εργαλείο STM32CubeMX είναι μέρος του STMicroelectronics STMCube. Αυτό το εργαλείο λογισμικού διευκολύνει την ανάπτυξη μειώνοντας την προσπάθεια ανάπτυξης, το χρόνο και το κόστος. Το STM32Cube περιλαμβάνει STM32CubeMX, το οποίο είναι ένα γραφικό εργαλείο διαμόρφωσης λογισμικού που επιτρέπει τη δημιουργία κώδικα αρχικοποίησης C χρησιμοποιώντας γραφικούς οδηγούς. Αυτός ο κωδικός μπορεί να χρησιμοποιηθεί σε διάφορα περιβάλλοντα ανάπτυξης, όπως keil uVision, GCC, IAR κ.λπ. Μπορείτε να κατεβάσετε αυτό το εργαλείο από τον παρακάτω σύνδεσμο.
Το STM32CubeMX έχει τις ακόλουθες δυνατότητες
- Καρφίτσωμα επίλυσης σε διένεξη
- Βοηθός ρύθμισης ρολογιού
- Υπολογιστής κατανάλωσης ισχύος
- Ένα βοηθητικό πρόγραμμα που εκτελεί περιφερειακή διαμόρφωση MCU όπως καρφίτσες GPIO, USART κ.λπ.
- Ένα βοηθητικό πρόγραμμα που εκτελεί περιφερειακή διαμόρφωση MCU για στοίβες middleware όπως USB, TCP / IP κ.λπ.
Απαιτούμενα υλικά
Σκεύη, εξαρτήματα
- STM32F103C8 Πίνακας μπλε χαπιών
- ST-LINK V2
- Πλήκτρο
- LED
- Ψωμί
- Καλώδια αλτών
Λογισμικό
- Εργαλείο δημιουργίας κώδικα STM32CubeMX (Σύνδεσμος)
- Keil uVision 5 (σύνδεσμος)
- Προγράμματα οδήγησης για ST-Link V2 (σύνδεσμος)
Διάγραμμα κυκλώματος και συνδέσεις
Ακολουθεί το διάγραμμα κυκλώματος για απλή σύνδεση ενός LED με πλακέτα STM32 χρησιμοποιώντας ένα κουμπί.
Σύνδεση μεταξύ ST-LINK V2 & STM32F103C8
Εδώ ο πίνακας STM32 Blue Pill τροφοδοτείται από το ST-LINK που είναι συνδεδεμένο στη θύρα USB του υπολογιστή. Δεν χρειάζεται λοιπόν να τροφοδοτούμε το STM32 ξεχωριστά. Ο παρακάτω πίνακας δείχνει τη σύνδεση μεταξύ ST-Link και Blue χάπι.
STM32F103C8 |
ST-Link V2 |
GND |
GND |
ΔΙΑΚΟΠΗ |
ΔΙΑΚΟΠΗ |
SWDIO |
SWDIO |
3V3 |
3.3V |
Κουμπί LED & Push
Το LED χρησιμοποιείται για να δείξει την έξοδο από την πλακέτα Blue Pill όταν πατηθεί ένα κουμπί. Η άνοδος των LED συνδέεται με τον ακροδέκτη PC13 της πλακέτας Blue Pill και η κάθοδος είναι γειωμένη.
Ένα μπουτόν συνδέεται για να παρέχει είσοδο στον πείρο PA1 της πλακέτας Blue Pill. Πρέπει επίσης να χρησιμοποιήσουμε μια αντίσταση προς τα πάνω αξίας 10k επειδή ο πείρος μπορεί να επιπλέει χωρίς καμία είσοδο όταν απελευθερώνεται το κουμπί. Το ένα άκρο του μπουτόν συνδέεται στη γείωση και το άλλο άκρο στον πείρο PA1 και μια αντίσταση τραβήγματος 10k συνδέεται επίσης με 3.3V της πλακέτας Blue Pill.
Δημιουργία και εγγραφή προγράμματος σε STM32 χρησιμοποιώντας το Keil uVision και το ST-Link
Βήμα 1: - Εγκαταστήστε πρώτα όλα τα προγράμματα οδήγησης συσκευών για ST-LINK V2, εργαλεία λογισμικού STM32Cube MX & Keil uVision και εγκαταστήστε τα απαραίτητα πακέτα για το STM32F103C8.
Βήμα 2: - Το δεύτερο βήμα είναι Άνοιγμα >> STM32Cube MX
Βήμα 3: - Στη συνέχεια, κάντε κλικ στο Νέο έργο
Βήμα 4: - Μετά από αυτήν την αναζήτηση και επιλέξτε τον μικροελεγκτή STM32F103C8
Βήμα 5: - Τώρα εμφανίζεται το σκίτσο pin-out του STM32F103C8, εδώ μπορούμε να ορίσουμε τις διαμορφώσεις των pin. Μπορούμε επίσης να επιλέξουμε τις καρφίτσες μας στην ενότητα περιφερειακών σύμφωνα με το έργο μας.
Βήμα 6: - Μπορείτε επίσης να κάνετε κλικ απευθείας στην καρφίτσα και να εμφανιστεί μια λίστα, τώρα επιλέξτε την απαιτούμενη διαμόρφωση ακίδων.
Βήμα 7: - Για το έργο μας έχουμε επιλέξει PA1 ως GPIO INPUT, PC13 ως GPIO OUTPUT & SYS debug ως SERIAL WIRE, εδώ μόνο συνδέουμε τις καρφίτσες ST-LINK SWCLK & SWDIO. Οι επιλεγμένες & διαμορφωμένες καρφίτσες εμφανίζονται σε ΠΡΑΣΙΝΟ χρώμα. Μπορείτε να το σημειώσετε στην παρακάτω εικόνα.
Βήμα 8: - Στη συνέχεια, στην καρτέλα Διαμόρφωση , επιλέξτε GPIO για να ορίσετε διαμορφώσεις ακίδων GPIO για τις καρφίτσες που έχουμε επιλέξει.
Βήμα 9: - Στη συνέχεια, σε αυτό το πλαίσιο διαμόρφωσης καρφιτσών μπορούμε να διαμορφώσουμε την ετικέτα χρήστη για καρφίτσες που χρησιμοποιούμε, δηλαδή ονόματα καρφιτσών που ορίζονται από το χρήστη.
Βήμα 10: - Μετά από αυτό κάντε κλικ στο Project >> Δημιουργία κώδικα .
Βήμα 11: - Τώρα εμφανίζεται το παράθυρο διαλόγου ρυθμίσεων έργου. Σε αυτό το πλαίσιο επιλέξτε το όνομα και την τοποθεσία του έργου σας και επιλέξτε το περιβάλλον ανάπτυξης. Χρησιμοποιούμε το Keil, οπότε επιλέξτε MDK-ARMv5 ως IDE.
Βήμα 12: - Στη συνέχεια, στην καρτέλα Generator κώδικα , επιλέξτε Αντιγραφή μόνο των απαραίτητων αρχείων βιβλιοθήκης και, στη συνέχεια, κάντε κλικ στο OK.
Βήμα 13: - Τώρα εμφανίζεται το παράθυρο διαλόγου δημιουργίας κώδικα. Επιλέξτε Άνοιγμα έργου για να ανοίξετε αυτόματα το έργο που δημιουργήθηκε κωδικός στο Keil uvsion.
Βήμα 14: - Τώρα ανοίγει το εργαλείο Keil uVision με τον κώδικα που δημιουργήθηκε στο STM32CubeMx με το ίδιο όνομα έργου με την απαραίτητη βιβλιοθήκη και κωδικούς που έχουν διαμορφωθεί για τις καρφίτσες που επιλέξαμε.
Βήμα 15: - Τώρα πρέπει απλώς να συμπεριλάβουμε τη λογική για να εκτελέσουμε κάποια ενέργεια στο LED εξόδου (pin PC13) όταν το κουμπί πατηθεί και απελευθερωθεί στην είσοδο GPIO (pin PA1). Επιλέξτε λοιπόν το πρόγραμμα main.c για να συμπεριλάβετε ορισμένους κωδικούς.
Βήμα 16: - Τώρα προσθέστε τον κώδικα στο βρόχο while (1) , δείτε την παρακάτω εικόνα όπου έχω επισημάνει αυτήν την ενότητα για να εκτελέσετε τον κώδικα συνεχώς.
ενώ (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Πιέζεται το κουμπί DETECTS {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Για να αυξήσετε την έξοδο όταν πατήσετε το κουμπίd αλλιώς {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Για να μειώσετε την έξοδο όταν πατήσετε το κουμπί}}
Βήμα 17: - Αφού ολοκληρώσετε την επεξεργασία του κώδικα, κάντε κλικ στο εικονίδιο Επιλογές για στόχο στην καρτέλα εντοπισμού σφαλμάτων και επιλέξτε ST-LINK Debugger
Επίσης, κάντε κλικ στο κουμπί Ρυθμίσεις και, στη συνέχεια, στην καρτέλα Λήψη φλας, επιλέξτε το πλαίσιο ελέγχου Επαναφορά και εκτέλεση και κάντε κλικ στο 'ΟΚ'.
Βήμα 18: - Τώρα κάντε κλικ στο εικονίδιο Ανακατασκευή για να δημιουργήσετε ξανά όλα τα αρχεία προορισμού.
Βήμα 19: - Τώρα μπορείτε να συνδέσετε το ST-LINK σε υπολογιστή με τις συνδέσεις κυκλώματος έτοιμες και να κάνετε κλικ στο εικονίδιο ΛΗΨΗ ή πατήστε F8 για να αναβοσβήσετε το STM32F103C8 με τον κωδικό που έχετε δημιουργήσει και επεξεργαστεί.
Βήμα 20: - Μπορείτε να παρατηρήσετε την ένδειξη που αναβοσβήνει στο κάτω μέρος του παραθύρου keil uVision.
Έξοδος του Keil Programm STM32 Board
Τώρα όταν πατάμε το κουμπί, το LED ανάβει και όταν το αφήνουμε, το LED σβήνει.
Πρόγραμμα
Το κύριο μέρος που έχουμε προσθέσει στο παραγόμενο πρόγραμμα φαίνεται παρακάτω. Αυτός ο παρακάτω κωδικός πρέπει να συμπεριληφθεί στο (1 ) του main.c προγράμματος που δημιουργήθηκε από το STM32CubeMX. Μπορείτε να επιστρέψετε στο Βήμα 15 στο βήμα 17 για να μάθετε πώς πρέπει να προστεθεί στο πρόγραμμα main.c.
ενώ (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Πιέζεται το κουμπί DETECTS {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Για να αυξήσετε την έξοδο όταν πατήσετε το κουμπίd αλλιώς {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Για να μειώσετε την έξοδο όταν πατήσετε το κουμπί}}
Η πλήρης διαδικασία δημιουργίας και μεταφόρτωσης έργου στον πίνακα STM32 εξηγείται επίσης στο βίντεο που δίνεται στο τέλος. Επίσης, ο πλήρης κωδικός του αρχείου main.c δίνεται παρακάτω, συμπεριλαμβανομένου του παραπάνω δεδομένου κώδικα.
Επιπλέον, μπορείτε να βρείτε το πλήρες σύνολο έργων STM32 εδώ.