- Ρύθμιση και απαίτηση υλικού
- Κύκλωμα διασύνδεσης LED και πλήκτρου N76E003
- Διάγραμμα Pin-Out N76E003
- Απλό πρόγραμμα ελέγχου GPIO για N76E003
- Προγραμματισμός N76E003 και επαλήθευση εξόδου
Στο προηγούμενο σεμινάριό μας, χρησιμοποιήσαμε ένα βασικό πρόγραμμα LED που αναβοσβήνει ως ξεκίνημα με τον οδηγό N76E003, μάθαμε ήδη πώς να διαμορφώσουμε το Keil IDE και να ρυθμίσουμε το περιβάλλον για τον προγραμματισμό της μονάδας μικροελεγκτή nuvoton N76E003. Είναι η ώρα να προχωρήσουμε λίγο περισσότερο και να χρησιμοποιήσουμε τη βασική διεπαφή GPIO για τον έλεγχο πρόσθετου υλικού. Εάν ενδιαφέρεστε, μπορείτε επίσης να δείτε και άλλα μαθήματα GPIO μικροελεγκτή που παρατίθενται παρακάτω-
- STM32 Nucleo64 με έλεγχο CubeMx και TrueSTUDIO - LED
- STM8S με Cosmic C GPIO Control
- PIC με MPLABX LED Blink Tutorial
- MSP430 με Code Composer Studio - Απλός έλεγχος LED
Δεδομένου ότι στο προηγούμενο σεμινάριό μας, χρησιμοποιήσαμε μόνο ένα LED για να αναβοσβήνει χρησιμοποιώντας μια καρφίτσα IO ως έξοδο. Σε αυτό το σεμινάριο, θα μάθουμε πώς να χρησιμοποιούμε έναν άλλο πείρο IO ως είσοδο και να ελέγξουμε ένα επιπλέον LED. Χωρίς να χάσουμε πολύ χρόνο, ας αξιολογήσουμε τι είδους εγκατάσταση υλικού χρειαζόμαστε.
Ρύθμιση και απαίτηση υλικού
Καθώς ένας διακόπτης πρέπει να χρησιμοποιηθεί ως είσοδος, το πρώτο πράγμα που χρειαζόμαστε είναι ένα κουμπί. Απαιτούμε επίσης ένα επιπλέον LED να ελέγχεται από αυτό το κουμπί. Εκτός από αυτά τα δύο, χρειαζόμαστε επίσης μια αντίσταση για να περιορίσουμε το ρεύμα LED και μια επιπλέον αντίσταση για σκοπούς pull-down κατά μήκος του μπουτόν. Αυτό θα αποδειχθεί περαιτέρω στη σχηματική ενότητα. Τα στοιχεία που απαιτούμε -
- Ένα μπουτόν (ειδικά για κάθε είδους στιγμιαίο διακόπτη - διακόπτης αφής)
- Οποιοδήποτε χρώμα των LED
- 4.7k αντίσταση για pull-down σκοπούς
- Αντίσταση 100R
Για να μην αναφέρουμε, εκτός από τα παραπάνω στοιχεία, χρειαζόμαστε την πλακέτα ανάπτυξης με βάση τον μικροελεγκτή N76E003, καθώς και τον προγραμματιστή Nu-Link. Επιπρόσθετα, απαιτούνται σύρματα αρτοποιίας και σύνδεσης για τη σύνδεση όλων των εξαρτημάτων, όπως φαίνεται παρακάτω.
Κύκλωμα διασύνδεσης LED και πλήκτρου N76E003
Όπως μπορούμε να δούμε στο παρακάτω σχήμα, το LED δοκιμής που βρίσκεται μέσα στην πλακέτα ανάπτυξης συνδέεται στη θύρα 1.4 και ένα επιπλέον LED συνδέεται στη θύρα 1.5. Η αντίσταση R3 χρησιμοποιείται για τον περιορισμό του ρεύματος LED.
Στην ακίδα 1.6, συνδέεται ένα κουμπί με το όνομα SW. Κάθε φορά που πατάτε το κουμπί, ο πείρος θα αυξάνεται. Διαφορετικά, θα μειωθεί από την 4,7Κ αντίσταση pull-down R1. Μπορείτε να μάθετε περισσότερα σχετικά με τις αντιστάσεις pull-up και pull-down εάν είστε νέοι σε αυτήν την ιδέα.
Η καρφίτσα είναι επίσης μια καρφίτσα που σχετίζεται με το πρόγραμμα στην οποία έχει πρόσβαση ο προγραμματιστής. Χρησιμοποιείται για την αποστολή δεδομένων προγράμματος. Ωστόσο, θα δούμε τον λόγο πίσω από την επιλογή αυτών των καρφιτσών καθώς και τη λήψη δίκαιων πληροφοριών σχετικά με τη χαρτογράφηση καρφιτσών του N76E003.
Διάγραμμα Pin-Out N76E003
Το διάγραμμα ακίδων του N76E003 φαίνεται στην παρακάτω εικόνα-
Όπως μπορούμε να δούμε, κάθε πείρος έχει πολλές λειτουργίες και μπορεί να χρησιμοποιηθεί για διαφορετικούς σκοπούς. Ας πάρουμε ένα παράδειγμα. Ο πείρος 1.7 μπορεί να χρησιμοποιηθεί ως διακοπή, ή αναλογική είσοδος ή ως λειτουργία εισόδου-εξόδου γενικής χρήσης. Επομένως, εάν οποιοσδήποτε πείρος χρησιμοποιείται ως καρφίτσες I / O, τότε η αντίστοιχη λειτουργικότητα δεν θα είναι διαθέσιμη.
Λόγω αυτού, ο πείρος 1.5 που χρησιμοποιείται ως πείρος εξόδου LED, θα χάσει το PWM και άλλες λειτουργίες. Αλλά αυτό δεν είναι πρόβλημα καθώς δεν απαιτείται άλλη λειτουργικότητα για αυτό το έργο. Ο λόγος πίσω από την επιλογή του pin 1.5 ως έξοδο και του pin 1.6 ως εισόδου, λόγω της πλησιέστερης διαθεσιμότητας των καρφιτσών GND και VDD για εύκολη σύνδεση.
Ωστόσο, σε αυτόν τον μικροελεγκτή από 20 ακίδες, 18 ακίδες μπορούν να χρησιμοποιηθούν ως ακίδα GPIO. Ο πείρος 2.0 χρησιμοποιείται αποκλειστικά για επαναφορά εισόδου και δεν μπορεί να χρησιμοποιηθεί ως έξοδος. Εκτός από αυτόν τον πείρο, όλες οι ακίδες μπορούν να διαμορφωθούν με τον παρακάτω τρόπο λειτουργίας.
Σύμφωνα με το φύλλο δεδομένων, τα PxM1.n και PxM2.n είναι δύο καταχωρητές που χρησιμοποιούνται για τον προσδιορισμό της λειτουργίας ελέγχου της θύρας I / O. Τώρα, το να γράφεις και να διαβάζεις μια θύρα GPIO είναι ένα εντελώς διαφορετικό πράγμα. Επειδή η εγγραφή σε ένα μητρώο ελέγχου θύρας αλλάζει την κατάσταση μανδάλωσης της θύρας, ενώ η ανάγνωση της θύρας λαμβάνει την κατάσταση της λογικής κατάστασης. Αλλά για την ανάγνωση μιας θύρας, πρέπει να ρυθμιστεί σε λειτουργία εισαγωγής.
Απλό πρόγραμμα ελέγχου GPIO για N76E003
Το πλήρες πρόγραμμα που χρησιμοποιείται σε αυτό το σεμινάριο βρίσκεται στο κάτω μέρος αυτής της σελίδας, η εξήγηση του κώδικα έχει ως εξής.
Ρύθμιση του πείρου ως είσοδο
Ας ξεκινήσουμε πρώτα με την εισαγωγή. Όπως συζητήθηκε λίγο πριν, για να διαβάσετε την κατάσταση μιας θύρας, πρέπει να οριστεί ως είσοδος. Επομένως, καθώς επιλέξαμε το P1.6 ως πείρο διακόπτη εισόδου, το έχουμε δηλώσει μέσω της παρακάτω γραμμής αποσπάσματος κώδικα.
# ορίστε SW P16
Αυτός ο ίδιος πείρος πρέπει να οριστεί ως είσοδος. Έτσι, στη λειτουργία ρύθμισης, ο πείρος ορίζεται ως είσοδος χρησιμοποιώντας την παρακάτω γραμμή.
ρύθμιση κενού (κενό) {P14_Quasi_Mode; P15_Quasi_Mode; P16_Input_Mode; }
Αυτή η γραμμή P16_Input_Mode; ορίζεται στο αρχείο κεφαλίδας Function_define.h στο "BSP include library" που ορίζει το bit bit ως P1M1- = SET_BIT6; P1M2 & = ~ SET_BIT6 . Το SET_BIT6 ορίζεται επίσης στο ίδιο αρχείο κεφαλίδας ως-
# καθορισμός SET_BIT6 0x40
Ρύθμιση των ακίδων ως έξοδος
Όπως και ο πείρος εισόδου, ο πείρος εξόδου που χρησιμοποιείται από το ενσωματωμένο LED δοκιμής και το εξωτερικό LED1 ορίζεται επίσης στην πρώτη ενότητα του κώδικα με τους αντίστοιχους κωδικούς PIN.
# καθορισμός δοκιμής_LED P14 # καθορισμός LED1 P15
Αυτές οι καρφίτσες ορίζονται ως έξοδος στη λειτουργία εγκατάστασης χρησιμοποιώντας τις παρακάτω γραμμές.
ρύθμιση κενού (κενό) { P14_Quasi_Mode; // Έξοδος P15_Quasi_Mode; // Έξοδος P16_Input_Mode; }
Αυτές οι γραμμές ορίζονται επίσης στο αρχείο κεφαλίδας Function_define.h όπου ορίζει το bit bit ως P1M1 & = ~ SET_BIT4; P1M2 & = ~ SET_BIT4 . Το SET_BIT6 ορίζεται επίσης στο ίδιο αρχείο κεφαλίδας ως-
# καθορισμός SET_BIT4 0x10
Απεριόριστος ενώ βρόχος
Ένα υλικό, εάν είναι συνδεδεμένο με τη δύναμη και λειτουργεί τέλεια που πρέπει να παρέχει συνεχή έξοδο, η εφαρμογή δεν σταματά ποτέ. Κάνει το ίδιο πράγμα για άπειρους χρόνους. Εδώ έρχεται η λειτουργία ενός άπειρου βρόχου. Η εφαρμογή μέσα στο loop loop λειτουργεί απεριόριστα.
ενώ (1) { Test_LED = 0; sw_delay (150); Δοκιμή_LED = 1; sw_delay (150); εάν (SW == 1) {LED1 = 0; } αλλιώς {LED1 = 1; }}}
Το παραπάνω ενώ ο βρόχος αναβοσβήνει το led σύμφωνα με την τιμή sw_delay και ελέγχει επίσης την κατάσταση του SW. Εάν πατηθεί ο διακόπτης, το P1.6 θα είναι υψηλό, και επομένως όταν πατηθεί, η κατάσταση ανάγνωσης θα είναι 1. Σε αυτήν την περίπτωση, προς το παρόν, ο διακόπτης πιέζεται και η θύρα P1.6 παραμένει υψηλή, η Το LED1 θα ανάψει.
Προγραμματισμός N76E003 και επαλήθευση εξόδου
Στο ξεκίνημα με το σεμινάριο N76E003, μάθαμε πώς να προγραμματίζουμε ήδη το N76E003, οπότε θα επαναλάβουμε τα ίδια βήματα εδώ για να προγραμματίσουμε τον πίνακα. Ο κωδικός συντάχθηκε με επιτυχία και επέστρεψε 0 προειδοποίηση και 0 Σφάλματα και αναβοσβήνει χρησιμοποιώντας την προεπιλεγμένη μέθοδο αναβοσβήνει από το Keil.
Όπως μπορείτε να δείτε στην παραπάνω εικόνα, το εξωτερικό LED ανάβει όταν πατάω το κουμπί. Η πλήρης εργασία του έργου βρίσκεται στο παρακάτω βίντεο. Ελπίζω να απολαύσατε το σεμινάριο και να μάθετε κάτι χρήσιμο αν έχετε οποιεσδήποτε ερωτήσεις, αφήστε το στην παρακάτω ενότητα σχολίων. Μπορείτε επίσης να χρησιμοποιήσετε τα φόρουμ μας για να θέσετε άλλες τεχνικές ερωτήσεις.