| I. Συνεχίζοντας από εκεί που σταματήσαμε Στο προηγούμενο άρθρο , "Zigbee Journey (I): The Beginning", παρουσιάσαμε εν συντομία το Zigbee και το περιβάλλον ανάπτυξής του, Εντάξει, τώρα που τα εργαλεία είναι πλήρη, τίθεται ένα ερώτημα: πώς να χρησιμοποιήσετε το λογισμικό και το υλικό για να γράψετε ένα πρόγραμμα που μπορεί να τρέξει; Αυτό το άρθρο είναι βασικά για να απαντήσει στο παραπάνω ερώτημα: στο "LED light blinking" ως παράδειγμα ενός μικρού πειράματος, πώς να ρυθμίσετε το IAR για την ανάπτυξη προγραμμάτων που βασίζονται στο CC2430, πώς να χρησιμοποιήσετε το IAR για να γράψετε και να κάνετε αποσφαλμάτωση του προγράμματος online. Διαμόρφωση του IAR Το IAR είναι μια ισχυρή πλατφόρμα ανάπτυξης ενσωματωμένων προγραμμάτων που υποστηρίζει πολλά είδη τσιπ και κάθε έργο στο IAR μπορεί να έχει τη δική του διαμόρφωση, συμπεριλαμβανομένου του τύπου συσκευής, του Heap/Stack, του Linker, του Debugger κ.λπ. (1) Νέος χώρος εργασίας και έργο Πρώτα απ' όλα, δημιουργήστε ένα νέο φάκελο ledtest, ανοίξτε το IAR, επιλέξτε το κύριο μενού File -> New -> Workspace για να δημιουργήσετε ένα νέο χώρο εργασίας. Επιλέξτε Project -> Create New Project -> Empty Project, κάντε κλικ στο OK και αποθηκεύστε το αρχείο του έργου στο φάκελο ledtest, με όνομα: ledtest.ewp (όπως παρακάτω). (2) Διαμόρφωση των γενικών επιλογών Ρύθμιση στόχου: Συσκευή: CC2430, Λειτουργία κωδικού: Κοντά, Μοντέλο δεδομένων: Large, Σύμβαση κλήσης: Στοίβα XDATA reetrant
Ρύθμιση δείκτη δεδομένων: Αριθμός DPTR: 1
Ρύθμιση στοίβας/συσσωρευτή: Μέγεθος στοίβας XDATA: 0x1FF (3) Ρυθμίσεις συνδέσμου Αρχείο εντολών συνδέσμου: select lnk51ew_cc2430.xcl
(4) Ρυθμίσεις αποσφαλμάτωσης: Driver: Texas Instruments (αυτό το πείραμα για την πραγματική αποσφαλμάτωση μηχανής, οπότε επιλέξτε TI; αν άλλες διαδικασίες για να χρησιμοποιήσετε τον εξομοιωτή IAR, προαιρετικό προσομοιωτή) Συσκευή Αρχείο περιγραφής: CC2430.ddf
Σε αυτό το σημείο, η διαμόρφωση του IAR για αυτό το πείραμα έχει ουσιαστικά τελειώσει, τα παρακάτω για να εισαγάγουμε την υλοποίηση της κωδικοποίησής του. Τρίτον, η προετοιμασία του κώδικα προγράμματος(1) Νέο αρχείο προγράμματος Επιλέξτε File->New->File, δημιουργήστε ένα νέο αρχείο main.c. (2) Εισαγωγή αρχείων επικεφαλίδων Τα προγράμματα που βασίζονται στον CC2430 πρέπει να περιλαμβάνουν μια αναφορά στο αρχείο ioCC2430.h, το οποίο ορίζει την αντιστοίχιση διευθύνσεων των διαφόρων τύπων καταχωρητών ειδικών λειτουργιών (SFRs) του CC2430. #include //Εισάγετε το αρχείο κεφαλίδας που αντιστοιχεί στον CC2430 (περιέχει τον ορισμό κάθε SFR) Αυτό το αρχείο είναι ενσωματωμένο στο IAR (παρόμοιο με το stdio.h), το ποντίκι σε αυτή τη γραμμή κώδικα, δεξί κλικ, επιλέξτε OPen "ioCC2430.h", μπορείτε να δείτε το πλήρες περιεχόμενο αυτού του αρχείου κεφαλίδας. (3) Ορίστε τις ακίδες LED Ελέγξτε το διάγραμμα κυκλώματος της πλακέτας ανάπτυξης, όπως φαίνεται παρακάτω:
Είναι γνωστό ότι τα led1~4 ελέγχονται από τις ακίδες P1_0~P4_0 αντίστοιχα, οπότε μπορούμε να ορίσουμε τα led1, led2, led3, led4 ως ακίδες P1_0, P2_0, P3_0, P4_0 αντίστοιχα. #define led1 P1_0 //ορίζουμε το LED1 ως έλεγχο της θύρας P1_0 #define led2 P1_1
//define led2 ως έλεγχος θύρας P1_1 #define led3 P1_2 //define led3 ως έλεγχος θύρας P1_2 #define led4 P1_3 //define led4 για έλεγχο θύρας P1_3 (4) Κύρια λειτουργία Στη συνέχεια, ξεκινήστε τη συγγραφή της κύριας συνάρτησης. Πρώτα απ' όλα, προτού χρησιμοποιήσετε τις θύρες P1.0~P1.4, πρέπει να ρυθμίσετε τον τρόπο λειτουργίας και την κατεύθυνση εισόδου/εξόδου της, που περιλαμβάνει δύο SFRs: P1SEL, P1DIR. P1SEL = 0x00; //Ορισμός της P1 ως συνηθισμένης θύρας εισόδου/εξόδου P1DIR |= 0x0F; & nbsp; //Set P1.0 P1.1 P1.2 P1.3 ως έξοδοι Συμβουλές Zigbee Το CC2430 διαθέτει P0_0 ~ P0_7, P1_0~P1_7, P2_0~P2_7 συνολικά 21 θύρες I/O. Μπορούν να χρησιμοποιηθούν ως ψηφιακές I/O γενικής χρήσης ή για τη σύνδεση περιφερειακών IOs όπως ADC, χρονιστής/μετρητής ή USART. Υπάρχουν τρεις τύποι καταχωρητών στο SFR του CC2430 που μπορούν να χρησιμοποιηθούν για τη διαμόρφωση αυτών των θυρών IO: ①PxSEL (x είναι 0/1/2): επιλογή λειτουργίας θύρας P0/P1/P2 PxSEL (x είναι 0/1/2): επιλογή λειτουργίας θύρας P0/P1/P2 nbsp;0: ψηφιακή IO γενικής χρήσης, 1: περιφερειακή IO, προεπιλογή η προεπιλογή είναι 0 ② PxDIR (x είναι 0/1/2): κατεύθυνση θύρας P0/P1/P2 & nbsp;0: είσοδος, 1: έξοδος, η προεπιλογή είναι 0 ③PxINP (x είναι 0/1): Λειτουργία εισόδου θύρας P0/P1 0: επάνω, 1: έξοδος, προεπιλογή προεπιλογή 0 nbsp;0: pull-up/down, 1: tri-state, προεπιλογή η προεπιλογή είναι 0 Απαιτείται διαμόρφωση όταν χρησιμοποιείται η θύρα IO, εάν είναι προεπιλεγμένη, τότε πάρτε την προεπιλογή του συστήματος. Στη συνέχεια, αρχικοποιήστε τις 4 λυχνίες LED, ρυθμίστε τις σε όλες τις σβηστές:
led1 = 1, led2 = 1, led3 = 1, led4 = 1. Τέλος, γράψτε τον κώδικα για το εφέ αναβοσβήνει των LED:
led1 = 0; //led1 αναβοσβήνει Delay(10); led1 = 1; Delay(10); led2
= 0; //led2 αναβοσβήνει Delay(10); led2 = 1; Delay(10); led3 = 0; //led3 αναβοσβήνει Delay(10); /
//led3 αναβοσβήνει Delay(10); led3 = 1; Delay(10); led4 = 0; //led4 αναβοσβήνει &
nbsp; Delay(10); led4 = 1; Delay(10),
Πρόκειται για μια υπο-λειτουργία καθυστέρησης Delay(unsigned char n):
unsigned int j; for(i = 0; i < n; i++)  
; for(j = 1; j; j++) ; } (5) Επισκόπηση κώδικα Συνδυάστε τον παραπάνω κώδικα στο σύνολό του όπως φαίνεται παρακάτω: //Εισαγωγή των αρχείων κεφαλίδων #include //εισαγωγή του αρχείου κεφαλίδας που αντιστοιχεί στο CC2430 (συμπεριλαμβανομένου του ορισμού κάθε SFR)
// Ορισμός των ακροδεκτών LED #define led1 P1_0 //define LED1 για τον έλεγχο της θύρας P1_0 #define led2 P1_1 //define LED2 για τον έλεγχο της θύρας P1_1 #define led3 P1_2 //define LED3 ως έλεγχος θύρας P1_2 #define led4 P1_3 //define LED4 για έλεγχο θύρας P1_3 //υπορουτίνα καθυστέρησης void Delay (unsigned char n) { unsigned char i. unsigned int j. for (i = 0; i < n; i++) for (j = 1; j; j++) ; }
void main (void ) { P1SEL = 0x00; //Ορισμός της P1 ως κανονικής θύρας εισόδου/εξόδου P1DIR |= 0x0F; //Set P1.0 P1.1 P1.2 P1.3 ως έξοδοι led1 = 1; //αρχικοποίηση, και οι 4 λυχνίες led σβήνουν led2 = 1; //αρχικοποίηση, και τα 4 led σβηστά led3 = 1; led4 = 1; //αρχικοποίηση, και τα 4 led σβηστά led2 = 1, led3 = 1, led4 = 1, //αρχικοποίηση, και τα 4 φώτα led σβηστά while(1 ) //έναρξη κύκλου { led1 = 0; //led1 αναβοσβήνει Delay (10 ); //Delay (10 ); //Delay (10 ); //Delay (10 ); //Delay (10 ) delay(10); led1 = 1; //led1 αναβοσβήνει Delay (10 ). led2 = 0; //led2 αναβοσβήνει Delay (10 ); led2 = 1; //led2 αναβοσβήνει led2 = 1; //led2 αναβοσβήνει Delay (10 ). led3 = 0; //led3 αναβοσβήνει Delay (10 ); led3 = 1; //led3 αναβοσβήνει led3 = 1; //led3 αναβοσβήνει Delay (10 ). led4 = 0; //led4 αναβοσβήνει Delay (10 ); led4 = 1; //led4 αναβοσβήνει led4 = 1; //led4 αναβοσβήνει Delay (10 ); //Delay (10 ) } }
Εντάξει, ο κώδικας για αυτό το μικρό πείραμα είναι γραμμένο, δεν είναι πολύ απλό αχ, hehe~! Τέταρτον, μεταγλώττιση και αποσφαλμάτωση Επιλέξτε Project -> Make, μεταγλωττίσετε τον κώδικα, εάν είναι επιτυχής, θα εμφανιστεί η ακόλουθη έξοδος:
c
Συνδέστε τη συσκευή Zigbee με τη σειρά Zigbee development board → Debugger → θύρα USB του υπολογιστή και, στη συνέχεια, επιλέξτε Project -> Debug, το πρόγραμμα θα μεταφορτωθεί αυτόματα στην αναπτυξιακή πλακέτα. Στη συνέχεια, επιλέξτε Debug -> Go για να ξεκινήσετε το πρόγραμμα και θα δείτε τις 4 λυχνίες LED να αναβοσβήνουν διαδοχικά! Αν και αυτό είναι ένα απλό δεν μπορεί να είναι πιο απλό μικρά πειράματα, αλλά όταν κατάφερα να το επιτύχω, ή ένα μικρό ενθουσιασμένο ~ huh! V. Συμπέρασμα Σε αυτό το έγγραφο, το "πείραμα αναβοσβήνει φως LED" ως βάση, αντίστοιχα, από τη διαμόρφωση του IAR, την προετοιμασία του κώδικα του προγράμματος, καθώς και τη διαδικασία μεταγλώττισης και αποσφαλμάτωσης εισάγει ολόκληρη τη διαδικασία υλοποίησης. Το επόμενο, θα είναι στην κατανόηση της βασικής διαδικασίας των διαδικασιών ανάπτυξης με βάση την εισαγωγή αρκετών CC2430 ανάπτυξη των βασικών πειραμάτων που αφορούν χρονοδιακόπτες, σειριακές επικοινωνίες, μετατροπή AD, ύπνου συστήματος και watchdog , κλπ., οπότε μείνετε συντονισμένοι! |