| I. Vi fortsætter, hvor vi slap I den forrige artikel , "Zigbee Journey (I): The Beginning", introducerede vi kort Zigbee og dets udviklingsmiljø, OK, nu hvor værktøjerne er komplette, opstår der et spørgsmål: Hvordan bruger man softwaren og hardwaren til at skrive et program, der kan køre? Denne artikel skal grundlæggende besvare ovenstående spørgsmål: at "LED light blinking" som et eksempel på et lille eksperiment, hvordan man konfigurerer IAR til udvikling af CC2430-baserede programmer, hvordan man bruger IAR til at skrive og debugge programmet online. Konfiguration af IAR IAR er en kraftfuld indlejret udviklingsplatform, der understøtter mange slags chips, og hvert projekt i IAR kan have sin egen konfiguration, herunder Device type, Heap/Stack, Linker, Debugger osv. (1) Nyt arbejdsområde og projekt Først og fremmest skal du oprette en ny mappe ledtest, åbne IAR, vælge hovedmenuen File -> New -> Workspace for at oprette et nyt arbejdsområde. Vælg Project -> Create New Project -> Empty Project, klik på OK, og gem projektfilen i mappen ledtest med navnet: ledtest.ewp (som nedenfor). (2) Konfigurer generelle indstillinger Målindstilling: Enhed: CC2430; Kodetilstand: Nær; Datamodel: Stor; Opkaldskonvention: XDATA-stak reetrant
Indstilling af datapointer: Antal DPTR'er: 1
Stack/Heap-indstilling: XDATA-stackstørrelse: 0x1FF (3) Linker-indstillinger Linker-kommandofil: select lnk51ew_cc2430.xcl
(4) Indstillinger for debuggeren: Driver: Texas Instruments (dette eksperiment for den rigtige maskindebugging, så vælg TI; hvis andre procedurer for at bruge IAR-emulatoren, valgfri Simulator) Device Beskrivelsesfil: CC2430.ddf
På dette tidspunkt er IAR-konfigurationen til dette eksperiment stort set overstået, og i det følgende introduceres kodningsimplementeringen. For det tredje forberedelse af programkoden(1) Ny programfil Vælg File->New->File, opret en ny fil main.c. (2) Indfør header-filer CC2430-baserede programmer skal indeholde en henvisning til ioCC2430.h, som definerer adressemapping af de forskellige typer specialfunktionsregistre (SFR'er) på CC2430. #include //Introducer headerfilen, der svarer til CC2430 (indeholder definitionen af hvert SFR) Denne fil er indbygget i IAR (svarende til stdio.h), musen til denne kodelinje, højreklik, vælg OPen "ioCC2430.h", du kan se det fulde indhold af denne headerfil . (3) Definer LED-stifterne Tjek kredsløbsdiagrammet for udviklingskortet, som vist nedenfor:
Det er kendt, at led1~4 styres af pins P1_0~P4_0 henholdsvis, så vi kan definere led1, led2, led3, led4 som pins P1_0, P2_0, P3_0, P4_0 henholdsvis. #define led1 P1_0 //define LED1 som P1_0-portstyring #define led2 P1_1
//define led2 as P1_1 port control #define led3 P1_2 //define led3 as P1_2 port control #define led4 P1_3 //definer led4 til P1_3-portstyring (4) Hovedfunktion Nu skal du i gang med at skrive hovedfunktionen. Først og fremmest skal du, før du bruger P1.0~P1.4-portene, konfigurere deres arbejdstilstand og input/output-retning, hvilket involverer to SFR'er: P1SEL, P1DIR. P1SEL = 0x00; //Sæt P1 som en almindelig I/O-port P1DIR |= 0x0F; & nbsp; //Sæt P1.0 P1.1 P1.2 P1.3 som udgange Zigbee-tips CC2430 har P0_0 ~ P0_7, P1_0~P1_7 , P2_0~P2_7 i alt 21 I/O-porte . De kan bruges som generelle digitale I/O'er eller til tilslutning af perifere IO'er som ADC, timer/tæller eller USART. Der er tre typer registre i CC2430's SFR, som kan bruges til at konfigurere disse IO-porte: ①PxSEL (x er 0/1/2): Valg af P0/P1/P2-portens funktion PxSEL (x er 0/1/2): Valg af P0/P1/P2-portens funktion nbsp;0: generel digital IO, 1: perifer IO, standard er 0 ② PxDIR (x er 0/1/2): P0/P1/P2-portens retning & nbsp;0: input, 1: output, standard standard er 0 ③PxINP (x er 0/1): P0/P1-portindgangstilstand 0: op, 1: udgang, standard er 0 nbsp;0: pull-up/down, 1: tri-state, standard er 0 Konfiguration er påkrævet, når du bruger IO-porten, hvis standard, så tag systemets standard. Initialiser derefter de 4 LED'er, sæt dem til alle ud:
led1 = 1; led2 = 1; led3 = 1; led4 = 1. Skriv til sidst koden til LED-blinkende effekt:
led1 = 0; //led1 blinker Delay(10); led1 = 1; Delay(10); led2
= 0; //led2 blinker Delay(10); led2 = 1; Delay(10); led3 = 0; //led3 blinker Delay(10); //led3 blinker Delay(10); /
//led3 blinker Delay(10); led3 = 1; Delay(10); led4 = 0; //led4 blinker &
nbsp; Delay(10); led4 = 1; Delay(10);
Dette involverer en forsinkelsesunderfunktion 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) Oversigt over koden Kombiner ovenstående kode som en helhed som vist nedenfor: //Introducer header-filer #include //introducer headerfilen, der svarer til CC2430 (inklusive definitionen af hver SFR)
// Definer LED-pindene #define led1 P1_0 //definer LED1 til styring af P1_0-porten #define led2 P1_1 //definer LED2 som P1_1-portkontrol #define led3 P1_2 //definer LED3 som P1_2-portkontrol #define led4 P1_3 //define LED4 for P1_3 port control //delay subroutine 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; //Sæt P1 som normal I/O-port P1DIR |= 0x0F; //Sæt P1.0 P1.1 P1.2 P1.3 som udgange led1 = 1; //initialiser, alle 4 led-lys slukket led2 = 1; //initialiser, alle 4 led'er slukket led3 = 1; led4 = 1; //initialiser, alle 4 led's slukket led2 = 1; led3 = 1; led4 = 1; //initialise, all 4 led lights off while(1 ) //start cyklus { led1 = 0; //led1 blinker Delay (10 ); //Delay (10 ); //Delay (10 ); //Delay (10 ) delay(10); led1 = 1; //led1 blinker Delay (10). led2 = 0; //led2 blinker Delay (10 ); led2 = 1; //led2 blinker led2 = 1; //led2 blinker Delay (10). led3 = 0; //led3 blinker Delay (10 ); led3 = 1; //led3 blinker led3 = 1; //led3 blinker Delay (10). led4 = 0; //led4 blinker Delay (10 ); led4 = 1; //led4 blinker led4 = 1; //led4 blinker Delay (10 ); //Delay (10 ) } }
OK, koden til dette lille eksperiment er skrevet, er ikke særlig enkel ah, hehe~! For det fjerde, kompilere og fejlsøge Vælg Project -> Make, kompilér koden, og hvis det lykkes, vises følgende output:
c
Tilslut Zigbee-enheden i rækkefølgen Zigbee-udviklingskort → Debugger → PC'ens USB-port, og vælg derefter Project -> Debug, så bliver programmet automatisk downloadet til udviklingskortet. Vælg derefter Debug -> Go for at starte programmet, og du vil se de 4 LED'er blinke i rækkefølge! Selv om dette er et simpelt kan ikke være mere simpelt lille eksperiment, men da det lykkedes mig at opnå det, eller en lille begejstret ~ huh! V. Konklusion I denne artikel introducerer "LED-lysblink-eksperimentet" som grundlag henholdsvis fra konfigurationen af IAR, forberedelsen af programkoden samt kompilerings- og fejlsøgningsprocessen hele implementeringsprocessen. Den næste vil handle om forståelsen af de grundlæggende udviklingsprocedurer baseret på introduktionen af flere CC2430-udviklinger af grundlæggende eksperimenter, der involverer timere, seriel kommunikation, AD-konvertering, systemdvale og watchdog , etc., så hold øje! |