|
1. Forbindelse mellem øvre og nedre niveauer I den forrige artikelZigbee-rejsen (1): At bryde vejen ned, introducerer vi kort Zigbee og dets udviklingsmiljø. OK, nu hvor værktøjerne er færdige, opstår et spørgsmål: hvordan bruger man denne software og hardware til at skrive et program, der kan køre? Denne artikel er grundlæggende for at besvare ovenstående spørgsmål: Tag det lille eksperiment med "LED-lysblink" som eksempel for at introducere, hvordan man konfigurerer IAR til at være egnet til udvikling af CC2430-baserede programmer, og hvordan man bruger detIARSkriv og fejlfind programmer online. 2. IAR-konfiguration IAR er en kraftfuld indlejret udviklingsplatform, der understøtter en bred vifte af chips. Hvert projekt i IAR kan have sin egen konfiguration, herunder enhedstype, stak/stak, linker, debugger osv. (1) Opret et nyt arbejdsområde og projekt Først opretter du en ny mappe-ledtest. Åbn IAR og vælg hovedmenuen Fil -> Nyt -> Workspace for at oprette et nyt workspace. Vælg Projekt -> Opret nyt projekt -> Tomt projekt, klik OK, og gem projektfilen i mappen ledtest, kaldet ledtest.ewp (som vist nedenfor).
(2) Konfigurér generelle indstillinger Målindstilling: Enhed: CC2430; Kodetilstand: Nær; Datamodel: Stor; Kaldekonvention: XDATA-stak reetrant
Datapointerindstilling: Antal DPTR'er: 1
Stak/Heap-indstilling: XDATA stakstørrelse: 0x1FF
(3) Linker-indstillinger Linker-kommandofil: Vælg lnk51ew_cc2430.xcl
(4) Debugger-indstillinger: Driver: Texas Instruments (Dette eksperiment er en rigtig maskin-fejlsøgning, så vælg TI; Hvis andre programmer vil bruge IAR-simulatoren, kan du vælge Simulator) Enhedsbeskrivelsesfil:CC2430.ddf
På dette tidspunkt er IAR-konfigurationen for dette eksperiment stort set afsluttet, og følgende er en introduktion til dets kodningsimplementering. 3. Skrivning af programkode(1) Oprette et nyt proceduredokument Vælg File->New->File og opret en ny fil main.c. (2) Introducer headerfiler CC2430-baserede programmer skal inkludere en reference til ioCC2430.h, som definerer adressekortlægningen af CC2430's forskellige specialfunktionsregistre (SFR'er). #include //引入CC2430所对应的头文件(包含各SFR的定义)
Denne fil er indbygget i IAR (lignende stdio.h), hold musen over denne kodelinje, højreklik, vælgOPen "ioCC2430.h"for at se det fulde indhold af denne headerfil. (3) Definer LED-benene Se udviklingskortets kredsløbsdiagram som følger:
Det kan ses, at LED1~4 styres af ben P1_0~P4_0 henholdsvis, så LED1, LED2, LED3 og LED4 kan defineres som ben P1_0, P2_0, P3_0 og P4_0 henholdsvis. #define LED1 P1_0 // Definér LED1 som P1_0 portkontrol #define LED2 P1_1 // Definér LED2 som P1_1 portkontrol #define LED3 P1_2 // Definér LED3 som P1_2 portkontrol #define LED4 P1_3 // Definér LED4 som P1_3 portkontrol
(4) hovedfunktion Dernæst, begynd at skrive hovedfunktionen. Først og fremmest, før man bruger P1.0~P1.4-porten, er det nødvendigt at indstille dens arbejdstilstand og input/output-retning, hvilket involverer to SFR'er: P1SEL og P1DIR. P1SEL = 0x00; Sæt P1 til den normale I/O-port P1DIR |= 0x0F; Indstil P1.0, P1.1, P1.2, P1.3 som output
Zigbee-tips CC2430 har:P0_0 ~ P0_7 , P1_0~P1_7 , P2_0~P2_7I alt 21 I/O-porte. De kan bruges som generelle digitale I/O'er eller til at forbinde perifere IO'er såsom ADC'er, timing/tællere eller USART'er. Der er tre klasser af registre i CC2430's SFR, som kan bruges til at konfigurere disse IO-porte: (1)PxSEL(x er 0/1/2) :P valg af 0/P1/P2-portfunktion 0: Universel numerisk IO, 1: Perifer IO, standard er 0 (2)PxDIR(x er 0/1/2) :P 0/P1/P2 portretning 0: input, 1: output, standarden er 0 (3)PxINP(x er 0/1) :P 0/P1 port indgangstilstand 0: Træk op/træk ned, 1: Tre tilstande, standard er 0 Den skal konfigureres, når IO-porten bruges, og hvis den er standard, tages systemets standardværdi. Initialiser derefter de 4 LED'er og sæt dem til alle at slukke: led1 = 1; led2 = 1; led3 = 1; led4 = 1;
Til sidst 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 blinker Forsinkelse(10); led4 = 1; Forsinkelse(10);
Det involverer en forsinkelsesunderfunktion Delay(unsigned char n): ugyldig forsinkelse (usigneret tegn n) { usigneret char i; usigneret int j; for(i = 0; I < N; i++) for(j = 1; j; j++) ; }
(5) Kodeoversigt Kombiner ovenstående kode til en samlet helhed 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口控制 //延时子程序
tomrumForsinkelse(Usigneret Charn) {
Usigneret CharJeg;
Usigneret intj;
for(i =0; I < N; i++)
for(j =1; j; j++) ;
}
tomrumhoved(tomrum)
{ P1SEL =0x00; Sæt P1 til den normale I/O-port P1DIR |=0x0F; Indstil P1.0, P1.1, P1.2, P1.3 som output
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 til dette lille eksperiment er skrevet, er det ikke meget simpelt, hehe~ 4. Kompilering og fejlfinding Vælg Projekt -> Lave, kompiler koden, og hvis det lykkes, vil følgende output vises:
PresseZigbee Development Board → Debugger → USB-interface til PCog vælg derefter Projekt -> Debug, og programmet vil automatisk blive downloadet til boardet. Vælg derefter Debug -> Gå for at starte programmet, og du vil se 4 LED-lys blinke i rækkefølge! Selvom dette er et lille eksperiment, der er for simpelt til at være simpelt, var jeg stadig lidt begejstret, da forfatteren lykkedes med det~ hehe! 5. Konklusion Baseret på "LED-lysblinkeksperimentet" introducerer denne artikel hele implementeringsprocessen fra konfigurationen af IAR, skrivning af programkode og processen med kompilering og fejlfinding. I den næste artikel, baseret på forståelsen af den grundlæggende proces for at udvikle programmet, vil vi introducere flere grundlæggende eksperimenter for udvikling af CC2430Timer、Seriel kommunikation、AD-konvertering、Systematisk søvn samt vagthundeosv., så følg med!
|