| I. Tęsiame tai, ką baigėme Ankstesniame straipsnyje "Zigbee kelionė (I): pradžia" trumpai pristatėme "Zigbee" ir jos kūrimo aplinką, gerai, dabar, kai įrankiai baigti, kyla klausimas: kaip panaudoti programinę ir techninę įrangą, kad parašytume paleidžiamą programą? Šiame straipsnyje iš esmės siekiama atsakyti į minėtą klausimą: į "LED lemputės mirksėjimą" kaip nedidelio eksperimento pavyzdį, kaip sukonfigūruoti IAR CC2430 pagrįstoms programoms kurti, kaip naudoti IAR programai rašyti ir derinti internete. IAR konfigūravimas IAR yra galinga įterptųjų programų kūrimo platforma, palaikanti daugelio rūšių lustus, o kiekvienas IAR projektas gali turėti savo konfigūraciją, įskaitant įrenginio tipą, Heap/Stack, Linker, Debugger ir t. t. (1) Nauja darbo erdvė ir projektas Pirmiausia sukurkite naują aplanką ledtest, atidarykite IAR, pasirinkite pagrindinį meniu File (Failas) -> New (Naujas) -> Workspace (Darbo vieta), kad sukurtumėte naują darbo vietą. Pasirinkite Project (projektas) -> Create New Project (sukurti naują projektą) -> Empty Project (tuščias projektas), spustelėkite OK ir išsaugokite projekto failą aplanke ledtest, pavadintą taip: ledtest.ewp (kaip nurodyta toliau). (2) Sukonfigūruokite bendrąsias parinktis Tikslinės nuostatos: Įrenginys: CC2430; Kodo režimas: Netoli; Duomenų modelis: Didelis; Iškvietimo konvencija: XDATA stekas reetrantas
Duomenų rodyklės nustatymas: DPTR skaičius: 1
Stack/Heap nustatymas: XDATA kamino dydis: 0x1FF (3) Susiejimo nustatymai Susiejimo komandos failas: select lnk51ew_cc2430.xcl
(4) Derintuvo nustatymai: Jei norite naudoti IAR emuliatorių, pasirinktinai Simuliatorius) Įrenginys Aprašymo failas: CC2430.ddf
Šiuo metu IAR konfigūracija šiam eksperimentui iš esmės baigta, toliau pristatomas jos kodavimo įgyvendinimas. Trečia, programos kodo parengimas(1) Naujas programos failas Pasirinkite File->New->File, sukurkite naują failą main.c. (2) Įveskite antraštinius failus CC2430 pagrindu sukurtose programose turi būti nuoroda į ioCC2430.h, kurioje apibrėžiamas įvairių tipų CC2430 specialiųjų funkcijų registrų (SFR) adresų atvaizdavimas. #include //Įveskite CC2430 atitinkantį antraštės failą (jame yra kiekvieno SFR apibrėžimas) Šis failas yra integruotas į IAR (panašiai kaip stdio.h), pelės žymekliu palieskite šią kodo eilutę, spustelėkite dešinįjį pelės klavišą, pasirinkite OPen "ioCC2430.h", galėsite pamatyti visą šio antraštinio failo turinį. (3) Apibrėžkite šviesos diodų kaiščius Patikrinkite kūrimo plokštės principinę schemą, kaip parodyta toliau:
Yra žinoma, kad led1~4 yra valdomi atitinkamai kaiščiais P1_0~P4_0, todėl galime apibrėžti led1, led2, led3, led4 atitinkamai kaip kaiščius P1_0, P2_0, P3_0, P4_0. #define led1 P1_0 //apibrėžkite LED1 kaip P1_0 prievado valdymą #define led2 P1_1
//define led2 kaip P1_1 prievado valdymas #define led3 P1_2 //define led3 kaip P1_2 prievado valdymas #define led4 P1_3 //define led4 P1_3 prievado valdymui (4) Pagrindinė funkcija Toliau pradėkite rašyti pagrindinę funkciją. Pirmiausia, prieš naudojant P1.0~P1.4 prievadus, reikia nustatyti jų darbo režimą ir įvesties/išvesties kryptį, o tam reikia dviejų SFR: P1SEL, P1DIR. P1SEL = 0x00; /Nustatykite P1 kaip įprastą įvesties ir išvesties prievadą P1DIR |= 0x0F; & nbsp; /Nustatyti P1.0 P1.1 P1.2 P1.3 kaip išėjimus Zigbee patarimai CC2430 turi P0_0 ~ P0_7, P1_0~P1_7, P2_0~P2_7, iš viso 21 įvesties / išvesties prievadą. Juos galima naudoti kaip bendrosios paskirties skaitmenines įvesties/išvesties jungtis arba prijungti periferines įvesties/išvesties operacijas, pavyzdžiui, ADC, laikmatį/skaitiklį arba USART. CC2430 SFR yra trijų tipų registrai, kuriuos galima naudoti šiems IO prievadams konfigūruoti: ①PxSEL (x yra 0/1/2 ): P0/P1/P2 prievado funkcijos pasirinkimas PxSEL (x yra 0/1/2): P0/P1/P2 prievado funkcijos pasirinkimas nbsp;0: bendrosios paskirties skaitmeninis IO, 1: periferinis IO, numatytoji reikšmė pagal nutylėjimą yra 0 ② PxDIR (x yra 0/1/2): P0/P1/P2 prievado kryptis & nbsp;0: įvestis, 1: išvestis, numatytoji reikšmė yra 0 ③PxINP (x yra 0/1): P0/P1 prievado įvesties režimas 0: įvestis, 1: išvestis, numatytoji reikšmė 0 nbsp;0: ištraukiamasis / žeminamasis, 1: trijų būsenų, numatytoji reikšmė pagal nutylėjimą yra 0 Konfigūracija reikalinga naudojant IO prievadą, jei numatytoji reikšmė, tuomet imkite sistemos numatytąją reikšmę. Tada inicializuokite 4 šviesos diodus, nustatykite, kad jie visi būtų išjungti:
led1 = 1; led2 = 1; led3 = 1; led4 = 1. Galiausiai parašykite LED mirksėjimo efekto kodą:
led1 = 0; //led1 mirksi Delay(10); led1 = 1; Delay(10); led2
= 0; //led2 mirksi Delay(10); led2 = 1; Delay(10); led3 = 0; //led3 mirksi Delay(10); /
//led3 mirksi Delay(10); led3 = 1; Delay(10); led4 = 0; //led4 mirksi &
nbsp; Delay(10); led4 = 1; Delay(10);
Tai apima uždelsimo subfunkciją 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) Kodo apžvalga Sujunkite pirmiau pateiktą kodą į visumą, kaip parodyta toliau: //Įveskite antraštinius failus #include //įveskite CC2430 atitinkantį antraštinį failą (įskaitant kiekvieno SFR apibrėžimą)
// Apibrėžkite šviesos diodų kaiščius #define led1 P1_0 //apibrėžkite LED1, skirtą P1_0 prievadui valdyti #define led2 P1_1 //definuokite LED2 kaip P1_1 prievado valdymą #define led3 P1_2 //definuokite LED3 kaip P1_2 prievado valdymą #define led4 P1_3 //define LED4 P1_3 prievado valdymui //delay paprogramė void Delay (unsigned char n) { unsigned char i. unsigned int j. for (i = 0; i < n; i++) for (j = 1; j; j; j++) ; }
void main (void ) { P1SEL = 0x00; /Nustatykite P1 kaip įprastą įvesties/išvesties prievadą P1DIR |= 0x0F; /Nustatyti P1.0 P1.1 P1.2 P1.3 kaip išėjimus led1 = 1; //iniciacija, visos 4 LED lemputės išjungtos led2 = 1; //inicializuoti, visi 4 šviesos diodai išjungti led3 = 1; led4 = 1; //inicializuoti, visi 4 led žibintai išjungti led2 = 1; led3 = 1; led4 = 1; //inicializuoti, visos 4 LED lemputės išjungtos while(1) //pradėti ciklą { led1 = 0; //led1 mirksi Delay (10 ); //Delay (10); //Delay (10); //Delay(10 ); //Delay (10 ) delay(10); led1 = 1; //led1 mirksi Delay (10). led2 = 0; //led2 mirksi Delay (10 ); led2 = 1; //led2 mirksi led2 = 1; //led2 mirksi Delay (10). led3 = 0; //led3 mirksi Delay (10 ); led3 = 1; //led3 mirksi led3 = 1; //led3 mirksi Delay (10). led4 = 0; //led4 mirksi Delay (10 ); led4 = 1; //led4 mirksi led4 = 1; //led4 mirksi Delay (10); //Delay (10 ); //Delay (10) } }
Gerai, šio nedidelio eksperimento kodas yra parašytas, nėra labai paprastas ach, hehe~! Ketvirta, kompiliavimas ir derinimas Pasirinkite Project -> Make, kompiliuokite kodą, jei pavyks, pasirodys tokia išvestis:
c
Prijunkite "Zigbee" įrenginį tokia tvarka: " Zigbee" kūrimo plokštė → derintuvas → kompiuterio USB prievadas , tada pasirinkite Project -> Debug, programa bus automatiškai atsisiųsta į kūrimo plokštę. Tada pasirinkite Debug -> Go, kad paleistumėte programą, ir pamatysite, kaip paeiliui mirksi 4 šviesos diodai! Nors tai yra paprastas negali būti daugiau paprastų mažų eksperimentų, bet kai man pavyko jį pasiekti, arba mažas susijaudinęs ~ huh! V. Išvada Šiame straipsnyje "LED šviesos diodų mirksėjimo eksperimentas" kaip pagrindas, atitinkamai, nuo IAR konfigūracijos, programos kodo parengimo, taip pat kompiliavimo ir derinimo proceso pristato visą įgyvendinimo procesą. Kitame, tai bus supratimas apie pagrindinį kūrimo procedūrų procesą, pagrįstą kelių CC2430 kūrimo pagrindinių eksperimentų, susijusių su laikmačiais, nuosekliuoju ryšiu, AD konvertavimu, sistemos miego ir sarginio šuns, ir t. t., todėl likite su mumis! |