| I. Nadaljevanje tam, kjer smo končali V prejšnjem članku "Potovanje Zigbee (I): Začetek" smo na kratko predstavili Zigbee in njegovo razvojno okolje, OK, zdaj, ko so orodja dokončana, se pojavi vprašanje: kako uporabiti programsko in strojno opremo za pisanje programa, ki ga je mogoče zagnati? Ta članek je v bistvu odgovoriti na zgornje vprašanje: na "utripanje luči LED" kot primer majhnega poskusa, kako konfigurirati IAR za razvoj programov na osnovi CC2430, kako uporabiti IAR za pisanje in razhroščevanje programa na spletu. Konfiguracija programa IAR IAR je zmogljiva vgrajena razvojna platforma, ki podpira številne vrste čipov, vsak projekt v IAR pa ima lahko svojo konfiguracijo, vključno s tipom naprave, kupom/skladom, povezovalnikom, razhroščevalnikom itd. (1) Nov delovni prostor in projekt Najprej ustvarite novo mapo ledtest, odprite program IAR, izberite glavni meni Datoteka -> Novo -> Delovni prostor, da ustvarite nov delovni prostor. Izberite Project -> Create New Project -> Empty Project, kliknite OK in shranite projektno datoteko v mapo ledtest z imenom: ledtest.ewp (kot spodaj). (2) Konfigurirajte splošne možnosti Ciljna nastavitev: Naprava: CC2430; Način kodiranja: blizu; Podatkovni model: Velik; Konvencija za klicanje: XDATA stack reetrant
Nastavitev podatkovnega kazalca: Število DPTR: 1
Nastavitev sklada/sklopa: velikost sklada XDATA: 0x1FF (3) Nastavitve povezovalnika Datoteka z ukazom povezovalnika: select lnk51ew_cc2430.xcl
(4) Nastavitve programa za odpravljanje napak: (ta eksperiment za pravo strojno razhroščevanje, zato izberite TI; če so drugi postopki za uporabo emulatorja IAR, neobvezno Simulator) Naprava Opisna datoteka: CC2430.ddf
Na tej točki je konfiguracija IAR za ta poskus v bistvu končana, v nadaljevanju pa predstavimo njeno kodno izvajanje. Tretjič, priprava programske kode(1) Nova programska datoteka Izberite File->New->File in ustvarite novo datoteko main.c. (2) Uvedite datoteke glave Programi, ki temeljijo na CC2430, morajo vsebovati sklic na datoteko ioCC2430.h, ki opredeljuje mapiranje naslovov različnih vrst posebnih funkcijskih registrov (SFR) CC2430. #include //Uvedite naglavno datoteko, ki ustreza CC2430 (vsebuje definicijo vsakega SFR) Ta datoteka je vgrajena v IAR (podobno kot stdio.h), z miško se približajte tej vrstici kode, kliknite z desno tipko miške, izberite OPen "ioCC2430.h", vidite lahko celotno vsebino te datoteke glave. (3) Opredelite nožice LED Preverite shemo vezja razvojne plošče, kot je prikazano spodaj:
Znano je, da led1~4 nadzorujejo nožice P1_0~P4_0, zato lahko led1, led2, led3, led4 definiramo kot nožice P1_0, P2_0, P3_0, P4_0. #define led1 P1_0 //opredeli LED1 kot krmilnik vrat P1_0 #define led2 P1_1
//definirajte led2 kot P1_1 nadzor vrat #define led3 P1_2 //definirajte led3 kot P1_2 nadzor vrat #define led4 P1_3 //definiraj led4 za nadzor vrat P1_3 (4) Glavna funkcija Nato začnite pisati glavno funkcijo. Najprej morate pred uporabo vrat P1.0~P1.4 nastaviti njihov način delovanja in smer vhoda/izhoda, kar vključuje dva SFR: P1SEL, P1DIR. P1SEL = 0x00; //Nastavite P1 kot običajna vhodno-izhodna vrata P1DIR |= 0x0F; & nbsp; //Nastavi P1.0 P1.1 P1.2 P1.3 kot izhode Nasveti za Zigbee CC2430 ima P0_0 ~ P0_7, P1_0 ~ P1_7, P2_0 ~ P2_7 skupaj 21 vhodno-izhodnih vrat. Uporabljajo se lahko kot splošni digitalni I/O ali za priključitev perifernih IO, kot so ADC, časovnik/števec ali USART. V SFR CC2430 so trije tipi registrov, ki se lahko uporabljajo za konfiguracijo teh vhodnih vhodov: ①PxSEL (x je 0/1/2 ): izbira funkcije vrat P0/P1/P2 PxSEL (x je 0/1/2): izbira funkcije vrat P0/P1/P2 nbsp;0: splošni digitalni IO, 1: periferni IO, privzeto je 0 ② PxDIR (x je 0/1/2): smer vrat P0/P1/P2 & nbsp;0: vhod, 1: izhod, privzeto je 0 ③PxINP (x je 0/1): vhodni način vrat P0/P1 0: navzgor, 1: izhod, privzeto je privzeto 0 nbsp;0: pull-up/down, 1: tristanje, privzeto privzeto je 0 Konfiguracija je potrebna pri uporabi vhodnih vhodnih vrat, če so privzeta, potem vzemite sistemsko privzeto nastavitev. Nato inicializirajte 4 LED diode, nastavite jih na vse izklopljene:
led1 = 1; led2 = 1; led3 = 1; led4 = 1. Na koncu napišite kodo za učinek utripanja LED:
led1 = 0; //led1 utripa Delay(10); led1 = 1; Delay(10); led2
= 0; //led2 utripa Delay(10); led2 = 1; Delay(10); led3 = 0; //led3 utripa Delay(10); /
//led3 utripa Delay(10); led3 = 1; Delay(10); led4 = 0; //led4 utripa &
nbsp; Delay(10); led4 = 1; Delay(10);
To vključuje podfunkcijo zamude Delay(unsigned char n):
v oid Delay(unsigned char n) { unsigned char i; unsigned int j; for(i = 0; i < n; i++)  
; for(j = 1; j; j++) ; } (5) Pregled kode Zgornjo kodo združite v celoto, kot je prikazano spodaj: //Uvedite datoteke glave #include //uvedite datoteke glave, ki ustrezajo CC2430 (vključno z definicijo vsakega SFR)
// Opredelite nožice LED #define led1 P1_0 //define LED1 za nadzor vrat P1_0 #define led2 P1_1 //define LED2 za nadzor vrat P1_1 #define led3 P1_2 //define LED3 kot krmilnik vrat P1_2 #define led4 P1_3 //define LED4 za krmiljenje vrat P1_3 //podprogram za zakasnitev 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; //Nastavite P1 kot običajna vhodno-izhodna vrata P1DIR |= 0x0F; /Nastavi P1.0 P1.1 P1.2 P1.3 kot izhode led1 = 1; //inicializacija, vse 4 led luči so ugasnjene led2 = 1; //inicializacija, vse 4 led luči so ugasnjene led3 = 1; led4 = 1; //inicializacija, vse 4 led luči so ugasnjene led2 = 1; led3 = 1; led4 = 1; //inicializacija, vse 4 led luči ugasnjene while(1) //začetek cikla { led1 = 0; //led1 utripa Zakasnitev (10); //Zakasnitev (10); //Zakasnitev (10 ); //Zakasnitev (10) delay(10); led1 = 1; //led1 utripa Zakasnitev (10). led2 = 0; //led2 utripa Zakasnitev (10); led2 = 1; //led2 utripa led2 = 1; //led2 utripa Zakasnitev (10). led3 = 0; //led3 utripa Zakasnitev (10); led3 = 1; //led3 utripa led3 = 1; //led3 utripa Zakasnitev (10). led4 = 0; //led4 utripa Zakasnitev (10); led4 = 1; //led4 utripa led4 = 1; //led4 utripa Delay (10); //Delay (10 ) } }
V redu, koda za ta majhen poskus je napisana, ni zelo preprosta ah, hehe~! Četrtič, sestavljanje in razhroščevanje Izberite Project -> Make, sestavite kodo, če je uspešna, se prikaže naslednji izpis:
c
Priključite napravo Zigbee v vrstnem redu razvojna plošča Zigbee → Debugger → vrata USB računalnika in nato izberite Project -> Debug, program se bo samodejno prenesel v razvojno ploščo. Nato izberite Debug -> Go, da zaženete program, in videli boste, da 4 LED diode zaporedno utripajo! Čeprav je to preprost ne more biti bolj preprost mali poskusi, ampak ko mi je uspelo doseči, ali majhen navdušen ~ huh! V. Zaključek V tem članku je "eksperiment z utripanjem luči LED" kot osnova oziroma od konfiguracije IAR, priprave programske kode ter postopka sestavljanja in razhroščevanja predstavi celoten postopek izvajanja. Naslednji, to bo v razumevanju osnovnega procesa razvojnih postopkov, ki temelji na uvedbi več CC2430 razvoj osnovnih poskusov, ki vključujejo časovnike, serijske komunikacije, AD pretvorbo, spanje sistema in watchdog , itd, zato ostanite z nami! |