|
1. Σύνδεση του ανώτερου και του κατώτερου επιπέδου Στο προηγούμενο άρθροΤαξίδι με Zigbee (1): Σπάζοντας τα θεμέλια, παρουσιάζουμε εν συντομία το Zigbee και το περιβάλλον ανάπτυξής του. Εντάξει, τώρα που τα εργαλεία έχουν ολοκληρωθεί, τίθεται ένα ερώτημα: πώς να χρησιμοποιήσετε αυτό το λογισμικό και το υλικό για να γράψετε ένα πρόγραμμα που μπορεί να εκτελεστεί; Αυτό το άρθρο είναι βασικά για να απαντήσει στις παραπάνω ερωτήσεις: Πάρτε το μικρό πείραμα του "LED light flashing" ως παράδειγμα για να εισαγάγετε πώς να ρυθμίσετε το IAR ώστε να είναι κατάλληλο για την ανάπτυξη προγραμμάτων που βασίζονται σε CC2430 και πώς να το χρησιμοποιήσετεΑΣΕΓράψτε και διορθώστε προγράμματα στο διαδίκτυο. 2. Διαμόρφωση IAR Το IAR είναι μια ισχυρή ενσωματωμένη πλατφόρμα ανάπτυξης που υποστηρίζει μια μεγάλη ποικιλία τσιπ. Κάθε έργο στο IAR μπορεί να έχει τη δική του διαμόρφωση, συμπεριλαμβανομένου του τύπου συσκευής, στοίβα/στοίβα, συνδέσμου, εντοπισμού σφαλμάτων κ.λπ. (1) Δημιουργήστε έναν νέο χώρο εργασίας και έργο Αρχικά, δημιουργήστε έναν νέο φάκελο ledtest. Ανοίξτε το IAR και επιλέξτε το κύριο μενού Αρχείο -> Νέος -> Χώρος εργασίας για να δημιουργήσετε έναν νέο χώρο εργασίας. Επιλέξτε Project -> Create New Project -> Empty Project, κάντε κλικ στο OK και αποθηκεύστε το αρχείο έργου στο φάκελο ledtest, με το όνομα ledtest.ewp (όπως φαίνεται παρακάτω).
(2) Διαμόρφωση γενικών επιλογών Ρύθμιση στόχου: Συσκευή: CC2430; Λειτουργία κώδικα: Κοντά; Μοντέλο δεδομένων: Μεγάλο; Σύμβαση κλήσης: XDATA stack reetrant
Ρύθμιση δείκτη δεδομένων: Αριθμός DPTR: 1
Ρύθμιση στοίβας/σωρού: Μέγεθος στοίβας XDATA: 0x1FF
(3) Ρυθμίσεις σύνδεσης Αρχείο εντολών Linker: Επιλέξτε lnk51ew_cc2430.xcl
(4) Ρυθμίσεις εντοπισμού σφαλμάτων: Πρόγραμμα οδήγησης: Texas Instruments (Αυτό το πείραμα είναι ένας πραγματικός εντοπισμός σφαλμάτων μηχανής, οπότε επιλέξτε TI; Εάν άλλα προγράμματα θέλουν να χρησιμοποιήσουν τον προσομοιωτή IAR, μπορείτε να επιλέξετε Προσομοιωτής) Αρχείο περιγραφής συσκευής:CC2430.ddf
Σε αυτό το σημείο, η διαμόρφωση IAR για αυτό το πείραμα έχει ουσιαστικά τελειώσει και ακολουθεί μια εισαγωγή στην εφαρμογή κωδικοποίησης. 3. Σύνταξη κώδικα προγράμματος1) Δημιουργία νέου διαδικαστικού εγγράφου Επιλέξτε File->New->File και δημιουργήστε ένα νέο αρχείο main.c. (2) Εισαγάγετε αρχεία κεφαλίδας Τα προγράμματα που βασίζονται στο CC2430 πρέπει να περιλαμβάνουν μια αναφορά στο ioCC2430.h, το οποίο ορίζει την αντιστοίχιση διευθύνσεων των διαφόρων καταχωρητών ειδικών λειτουργιών (SFR) του 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 // Ορίστε το LED2 ως έλεγχο θύρας P1_1 #define LED3 P1_2 // Ορίστε το LED3 ως P1_2 έλεγχο θύρας #define LED4 P1_3 // Ορίστε το LED4 ως P1_3 έλεγχο θύρας
(4) κύρια λειτουργία Στη συνέχεια, ξεκινήστε να γράφετε την κύρια λειτουργία. Πρώτα απ 'όλα, πριν χρησιμοποιήσετε τη θύρα P1.0~P1.4, είναι απαραίτητο να ρυθμίσετε τον τρόπο λειτουργίας και την κατεύθυνση εισόδου/εξόδου, η οποία περιλαμβάνει δύο SFR: P1SEL και P1DIR. P1SEL = 0x00; Ρυθμίστε το P1 στην κανονική θύρα I/O P1DIR |= 0x0F; Ορίστε τα 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. Μπορούν να χρησιμοποιηθούν ως ψηφιακές είσοδοι/έξοδοι γενικής χρήσης ή μπορούν να χρησιμοποιηθούν για τη σύνδεση περιφερειακών IO όπως ADC, χρονισμός/μετρητές ή USART. Υπάρχουν τρεις κατηγορίες καταχωρητών στο SFR του CC2430 που μπορούν να χρησιμοποιηθούν για τη διαμόρφωση αυτών των θυρών IO: (1)ΠxΣΕΛ(το x είναι 0/1/2) :P επιλογή λειτουργίας θύρας 0/P1/P2 0: Καθολική αριθμητική IO, 1: Περιφερειακή IO, η προεπιλογή είναι 0 (2)PxDIR(το x είναι 0/1/2) :P κατεύθυνση θύρας 0/P1/P2 0: είσοδος, 1: έξοδος, η προεπιλογή είναι 0 (3)PxINP(το x είναι 0/1) :P λειτουργία εισόδου θύρας 0/P1 0: Τραβήξτε προς τα πάνω/τραβήξτε προς τα κάτω, 1: Τρεις καταστάσεις, η προεπιλογή είναι 0 Πρέπει να ρυθμιστεί κατά τη χρήση της θύρας IO και, εάν είναι προεπιλεγμένη, λαμβάνεται η προεπιλεγμένη τιμή του συστήματος. Στη συνέχεια, αρχικοποιήστε τα 4 LED και ρυθμίστε τα να σβήνουν όλα: LED1 = 1; LED2 = 1; LED3 = 1; LED4 = 1;
Τέλος, γράψτε τον κωδικό εφέ φωτός LED που αναβοσβήνει: LED1 = 0; Η λυχνία LED1 αναβοσβήνει Καθυστέρηση(10); LED1 = 1; Καθυστέρηση(10);
LED2 = 0; Η λυχνία LED2 αναβοσβήνει Καθυστέρηση(10); LED2 = 1; Καθυστέρηση(10);
LED3 = 0; LED3 που αναβοσβήνει Καθυστέρηση(10); LED3 = 1; Καθυστέρηση(10);
LED4 = 0; LED4 που αναβοσβήνει Καθυστέρηση(10); LED4 = 1; Καθυστέρηση(10);
Περιλαμβάνει μια υπολειτουργία καθυστέρησης Καθυστέρηση(ανυπόγραφος χαρακτήρας n): void Καθυστέρηση(ανυπόγραφος χαρακτήρας) { ανυπόγραφο char i; ανυπόγραφο int j; for(i = 0; i < n; i++) for(j = 1; j; j++) ; }
(5) Επισκόπηση κώδικα Συνδυάστε τον παραπάνω κώδικα σε ένα ενιαίο σύνολο, ως εξής: //引入头文件
#include //引入CC2430所对应的头文件(包含各SFR的定义)
//定义LED引脚
#define LED1 P1_0 //定义LED1为P1_0口控制
#define LED2 P1_1 //定义LED2为P1_1口控制
#define LED3 P1_2 //定义LED3为P1_2口控制
#define LED4 P1_3 //定义LED4为P1_3口控制 //延时子程序
άκυροΚαθυστέρηση(ανυπόγραφο κάρβουνοn) {
ανυπόγραφο κάρβουνοi;
ανυπόγραφο Διεθνέςj;
Για(i =0; i < n; i++)
Για(j =1; j; j++) ;
}
άκυροmain(άκυρο)
{ Ρ1ΣΕΛ =0x00; Ρυθμίστε το P1 στην κανονική θύρα I/O P1DIR |=0x0F; Ορίστε τα P1.0, P1.1, P1.2, P1.3 ως έξοδο
LED1 =1; //初始化,4个led灯全熄 LED2 =1; LED3 =1; LED4 =1;
ενώ(1) //开始循环 { LED1 =0; //led1闪烁 Καθυστέρηση(10); LED1 =1; Καθυστέρηση(10);
LED2 =0; //led2闪烁 Καθυστέρηση(10); LED2 =1; Καθυστέρηση(10);
LED3 =0; //led3闪烁 Καθυστέρηση(10); LED3 =1; Καθυστέρηση(10);
LED4 =0; //led4闪烁 Καθυστέρηση(10); LED4 =1; Καθυστέρηση(10); }
}
Εντάξει, ο κώδικας για αυτό το μικρό πείραμα έχει γραφτεί, δεν είναι πολύ απλό, χεχε~ 4. Μεταγλώττιση και εντοπισμός σφαλμάτων Επιλέξτε Project -> Make, μεταγλωττίστε τον κώδικα και, εάν είναι επιτυχής, θα εμφανιστεί η ακόλουθη έξοδος:
ΤύποςZigbee Development Board → Debugger → διασύνδεση USB για υπολογιστήκαι, στη συνέχεια, επιλέξτε Project -> Εντοπισμός σφαλμάτων και το πρόγραμμα θα ληφθεί αυτόματα στον πίνακα. Στη συνέχεια, επιλέξτε Εντοπισμός σφαλμάτων -> Go για να ξεκινήσετε το πρόγραμμα και θα δείτε 4 λυχνίες LED να αναβοσβήνουν με τη σειρά τους! Αν και αυτό είναι ένα μικρό πείραμα που είναι πολύ απλό για να είναι απλό, όταν ο συγγραφέας το συνειδητοποίησε με επιτυχία, ήμουν ακόμα λίγο ενθουσιασμένος~ χεχε! 5. Συμπέρασμα Με βάση το «πείραμα που αναβοσβήνει φως LED», αυτή η εργασία εισάγει ολόκληρη τη διαδικασία υλοποίησης από τη διαμόρφωση του IAR, τη σύνταξη κώδικα προγράμματος και τη διαδικασία μεταγλώττισης και εντοπισμού σφαλμάτων. Στο επόμενο άρθρο, με βάση την κατανόηση της βασικής διαδικασίας ανάπτυξης του προγράμματος, θα εισαγάγουμε αρκετά βασικά πειράματα για την ανάπτυξη CC2430Χρονοδιακόπτης、Σειριακή επικοινωνία、Μετατροπή AD、Συστηματικός ύπνος καθώς και φύλακεςκ.λπ., οπότε μείνετε συντονισμένοι!
|