|
1. Sammenkobling av øvre og nedre nivåer I forrige artikkelZigbee Journey (1): Å bryte grunnlaget, introduserer vi kort Zigbee og dets utviklingsmiljø. OK, nå som verktøyene er ferdige, oppstår et spørsmål: hvordan bruke denne programvaren og maskinvaren til å skrive et program som kan kjøre? Denne artikkelen er i hovedsak for å svare på spørsmålene ovenfor: Ta det lille eksperimentet med «LED-lysblinking» som et eksempel for å introdusere hvordan man konfigurerer IAR til å være egnet for utvikling av CC2430-baserte programmer, og hvordan man bruker detIARSkriv og feilsøk programmer online. 2. IAR-konfigurasjon IAR er en kraftig innebygd utviklingsplattform som støtter et bredt utvalg av brikker. Hvert prosjekt i IAR kan ha sin egen konfigurasjon, inkludert enhetstype, stakk/stakk, lenker, feilsøker osv. (1) Opprett et nytt arbeidsområde og prosjekt Først, opprett en ny mappe-ledtest. Åpne IAR og velg hovedmenyen Fil -> Nytt -> Arbeidsområde for å opprette et nytt arbeidsområde. Velg Project -> Create New Project -> Empty Project, klikk OK, og lagre prosjektfilen i mappen ledtest, kalt ledtest.ewp (som vist nedenfor).
(2) Konfigurer generelle alternativer Målsetting: Enhet: CC2430; Kodemodus: Nær; Datamodell: Stor; Kallekonvensjon:XDATA-stakk reetrant
Datapekerinnstilling: Antall DPTR-er: 1
Stabel/Heap-innstilling: XDATA-stakkstørrelse: 0x1FF
(3) Linkerinnstillinger Linker-kommandofil: Velg lnk51ew_cc2430.xcl
(4) Debugger-innstillinger: Driver: Texas Instruments (Dette eksperimentet er en ekte maskinfeilsøking, så velg TI; Hvis andre programmer vil bruke IAR-simulatoren, kan du velge Simulator) Enhetsbeskrivelsesfil:CC2430.ddf
På dette tidspunktet er IAR-konfigurasjonen for dette eksperimentet i praksis over, og følgende er en introduksjon til kodingsimplementeringen. 3. Skrive programkode(1) Opprette et nytt prosedyredokument Velg File->New->File og opprett en ny fil main.c. (2) Introdusere header-filer CC2430-baserte programmer må inkludere en referanse til ioCC2430.h, som definerer adressekartleggingen av CC2430s ulike spesialfunksjonsregistre (SFR). #include //引入CC2430所对应的头文件(包含各SFR的定义)
Denne filen er innebygd i IAR (lik stdio.h), hold musepekeren over denne kodelinjen, høyreklikk, velgOPen "ioCC2430.h"for å se hele innholdet i denne headerfilen. (3) Definer LED-pinnene Se kretsdiagrammet for utviklingskortet som følger:
Det kan sees at LED1~4 styres av pinner P1_0~P4_0 henholdsvis, så LED1, LED2, LED3 og LED4 kan defineres som pinner P1_0, P2_0, P3_0 og P4_0 henholdsvis. #define LED1 P1_0 // Definer LED1 som P1_0 portkontroll #define LED2 P1_1 // Definer LED2 som P1_1 portkontroll #define LED3 P1_2 // Definer LED3 som P1_2 portkontroll #define LED4 P1_3 // Definer LED4 som P1_3 portkontroll
(4) hovedfunksjon Deretter begynner du å skrive hovedfunksjonen. Først og fremst, før man bruker P1.0~P1.4-porten, er det nødvendig å sette arbeidsmodus og inn-/utgangsretning, noe som involverer to SFR-er: P1SEL og P1DIR. P1SEL = 0x00; Sett P1 til den vanlige I/O-porten P1DIR |= 0x0F; Sett P1.0, P1.1, P1.2, P1.3 som utgang
Zigbee-tips CC2430 har:P0_0 ~ P0_7 , P1_0~P1_7 , P2_0~P2_7Totalt 21 I/O-porter. De kan brukes som generelle digitale I/O-er eller brukes til å koble til perifere IO-er som ADC-er, timing/tellere eller USART-er. Det finnes tre klasser av registre i CC2430s SFR som kan brukes til å konfigurere disse IO-portene: (1)PxSEL(x er 0/1/2) :P 0/P1/P2 portfunksjonsvalg 0: Universell numerisk IO, 1: Perifer IO, standard er 0 (2)PxDIR(x er 0/1/2) :P 0/P1/P2 portretning 0: input, 1: output, standard er 0 (3)PxINP(x er 0/1) :P 0/P1-port inngangsmodus 0: Pull up/pull down, 1: Tre tilstander, standard er 0 Den må konfigureres når IO-porten brukes, og hvis den er standard, tas systemets standardverdi. Deretter initialiserer du de 4 LED-ene og setter dem til å slukke alle: led1 = 1; led2 = 1; led3 = 1; led4 = 1;
Til slutt, skriv LED-lysblinkende effektkoden: led1 = 0; LED1 blinker Forsinkelse(10); led1 = 1; Forsinkelse(10);
led2 = 0; LED2 blinker Forsinkelse(10); led2 = 1; Forsinkelse(10);
led3 = 0; LED3 blinker Forsinkelse(10); led3 = 1; Forsinkelse(10);
led4 = 0; LED4-blink Forsinkelse(10); led4 = 1; Forsinkelse(10);
Den involverer en forsinkelsesdelfunksjon Delay (usignert tegn n): ugyldig forsinkelse (usignert tegn n) { usignert Char I; Usignert Int J; for(i = 0; I < N; i++) for(j = 1; j; j++) ; }
(5) Kodeoversikt Kombiner koden ovenfor til én helhet, som følger: //引入头文件
#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口控制 //延时子程序
TomromForsinkelse(Usignert Charn) {
Usignert Chari;
Usignert Intj;
for(i =0; I < N; i++)
for(j =1; j; j++) ;
}
Tomromhoved(Tomrom)
{ P1SEL =0x00; Sett P1 til den vanlige I/O-porten P1DIR |=0x0F; Sett P1.0, P1.1, P1.2, P1.3 som utgang
led1 =1; //初始化,4个led灯全熄 led2 =1; led3 =1; led4 =1;
mens(1) //开始循环 { led1 =0; //led1闪烁 Forsinkelse(10); led1 =1; Forsinkelse(10);
led2 =0; //led2闪烁 Forsinkelse(10); led2 =1; Forsinkelse(10);
led3 =0; //led3闪烁 Forsinkelse(10); led3 =1; Forsinkelse(10);
led4 =0; //led4闪烁 Forsinkelse(10); led4 =1; Forsinkelse(10); }
}
OK, koden for dette lille eksperimentet er skrevet, er det ikke veldig enkelt, hehe~ 4. Kompilering og feilsøking Velg Prosjekt -> Lag, kompiler koden, og hvis det lykkes, vil følgende utdata vises:
PresseZigbee Development Board → Debugger → USB-grensesnitt for PCog velg deretter Project -> Debug, og programmet vil automatisk bli lastet ned til brettet. Velg deretter Debug -> Go for å starte programmet, og du vil se 4 LED-lys blinke etter tur! Selv om dette er et lite eksperiment som er for enkelt til å være enkelt, ble jeg fortsatt litt spent da forfatteren klarte det~ hehe! 5. Konklusjon Basert på "LED-lysblinkeksperimentet" introduserer denne artikkelen hele implementeringsprosessen fra konfigurasjonen av IAR, skriving av programkode, og prosessen med kompilering og feilsøking. I neste artikkel, basert på forståelsen av den grunnleggende prosessen med å utvikle programmet, vil vi introdusere flere grunnleggende eksperimenter for utvikling av CC2430Timer、Seriell kommunikasjon、AD-konvertering、Systematisk søvn så vel som vakthunderosv., så følg med!
|