|
1. Att koppla ihop de övre och undre nivåerna I föregående artikelZigbee-resan (1): Att bryta marken, introducerar vi kort Zigbee och dess utvecklingsmiljö. Okej, nu när verktygen är klara uppstår en fråga: hur använder man denna mjukvara och hårdvara för att skriva ett program som kan köras? Den här artikeln är i grunden för att besvara ovanstående frågor: Ta det lilla experimentet med "LED-ljusblinkning" som exempel för att introducera hur man konfigurerar IAR för att vara lämpligt för utveckling av CC2430-baserade program, och hur man använder detIARSkriv och felsök program online. 2. IAR-konfiguration IAR är en kraftfull inbäddad utvecklingsplattform som stödjer en mängd olika chip. Varje projekt i IAR kan ha sin egen konfiguration, inklusive enhetstyp, stack/stack, länkare, felsökare med mera. (1) Skapa en ny arbetsyta och projekt Skapa först en ny mappledtest. Öppna IAR och välj huvudmenyn Fil -> Ny -> Arbetsyta för att skapa en ny arbetsyta. Välj Projekt -> Skapa nytt projekt -> Tomt projekt, klicka OK och spara projektfilen i mappen ledtest, kallad ledtest.ewp (som visas nedan).
(2) Konfigurera allmänna alternativ Målinställning: Enhet: CC2430; Kodläge: Nära; Datamodell: Stor; Anropskonvention:XDATA-stack reetrant
Datapekarinställning: Antal DPTR:er: 1
Stack/Heap-inställning: XDATA-stackstorlek: 0x1FF
(3) Linkerinställningar Linker-kommandofil: Välj lnk51ew_cc2430.xcl
(4) Debugger-inställningar: Drivrutin: Texas Instruments (Detta experiment är en riktig maskinfelsökning, så välj TI; Om andra program vill använda IAR-simulatorn kan du välja Simulator) Enhetsbeskrivningsfil:CC2430.ddf
Vid denna punkt är IAR-konfigurationen för detta experiment i princip över, och följande är en introduktion till dess kodningsimplementation. 3. Skriva programkod(1) Skapa ett nytt processuellt dokument Välj Fil->Ny->Fil och skapa en ny fil main.c. (2) Introducera headerfiler Program baserade på CC2430 måste inkludera en referens till ioCC2430.h, som definierar adressmappningen av CC2430:s olika specialfunktionsregister (SFR). #include //引入CC2430所对应的头文件(包含各SFR的定义)
Denna fil är inbyggd i IAR (liknande stdio.h), håll muspekaren över denna kodrad, högerklicka, väljOPen "ioCC2430.h"för att se hela innehållet i denna headerfil. (3) Definiera LED-stiften Se utvecklingskortets kretsdiagram enligt följande:
Det kan ses att LED1~4 styrs av stift P1_0~P4_0 respektive, så LED1, LED2, LED3 och LED4 kan definieras som stift P1_0, P2_0, P3_0 respektive P4_0. #define LED1 P1_0 // Definiera LED1 som P1_0 portstyrning #define LED2 P1_1 // Definiera LED2 som P1_1 portstyrning #define LED3 P1_2 // Definiera LED3 som P1_2 portkontroll #define LED4 P1_3 // Definiera LED4 som P1_3 portstyrning
(4) huvudfunktion Börja sedan skriva huvudfunktionen. För det första, innan man använder P1.0~P1.4-porten, är det nödvändigt att ställa in dess arbetsläge och in-/utmatningsriktning, vilket involverar två SFR:er: P1SEL och P1DIR. P1SEL = 0x00; Ställ in P1 som den vanliga I/O-porten P1DIR |= 0x0F; Sätt P1.0, P1.1, P1.2, P1.3 som utgång
Zigbee-tips CC2430 har:P0_0 ~ P0_7 , P1_0~P1_7 , P2_0~P2_7Totalt 21 I/O-portar. De kan användas som allmänna digitala I/O:er eller för att ansluta kringutrustnings-IO:er såsom ADC:er, timing/räknare eller USART:er. Det finns tre klasser av register i CC2430:s SFR som kan användas för att konfigurera dessa IO-portar: (1)PxSEL(x är 0/1/2) :P 0/P1/P2 portfunktionsval 0: Universell numerisk IO, 1: Periferiär IO, standard är 0 (2)PxDIR(x är 0/1/2) :P 0/P1/P2 portriktning 0: ingång, 1: utmatning, standardvärdet är 0 (3)PxINP(x är 0/1) :P 0/P1-portens ingångsläge 0: Dra upp/dra ner, 1: Tre tillstånd, standardvärdet är 0 Den måste konfigureras när IO-porten används, och om den är standard tas systemets standardvärde. Initialiserar sedan de 4 LED-lamporna och ställer in dem på att alla släcks: led1 = 1; led2 = 1; led3 = 1; led4 = 1;
Slutligen, skriv LED-ljusblinkande effektkoden: led1 = 0; LED1 blinkar Delay(10); led1 = 1; Delay(10);
led2 = 0; LED2-blinkar Delay(10); led2 = 1; Delay(10);
led3 = 0; LED3 blinkar Delay(10); led3 = 1; Delay(10);
led4 = 0; LED4-blinkande Delay(10); led4 = 1; Delay(10);
Den involverar en fördröjningsdelfunktion Delay (osignerat tecken n): void Delay (osignerad tecken n) { osignerad char i; osignerad int J; för(i = 0; I < n; i++) för(j = 1; j; j++) ; }
(5) Kodöversikt Kombinera ovanstående kod till en enda helhet, enligt följande: //引入头文件
#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口控制 //延时子程序
tomrumFördröjning(osignerad charn) {
osignerad chari;
osignerad intj;
för(i =0; I < n; i++)
för(j =1; j; j++) ;
}
tomrumhuvud(tomrum)
{ P1SEL =0x00; Ställ in P1 som den vanliga I/O-porten P1DIR |=0x0F; Sätt P1.0, P1.1, P1.2, P1.3 som utgång
led1 =1; //初始化,4个led灯全熄 led2 =1; led3 =1; led4 =1;
medan(1) //开始循环 { led1 =0; //led1闪烁 Fördröjning(10); led1 =1; Fördröjning(10);
led2 =0; //led2闪烁 Fördröjning(10); led2 =1; Fördröjning(10);
led3 =0; //led3闪烁 Fördröjning(10); led3 =1; Fördröjning(10);
led4 =0; //led4闪烁 Fördröjning(10); led4 =1; Fördröjning(10); }
}
Okej, koden för det här lilla experimentet är skriven, är det inte väldigt enkelt, hehe~ 4. Kompilering och felsökning Välj Projekt -> Make, kompilera koden, och om det lyckas visas följande utdata:
PressZigbee Development Board → Debugger → USB-gränssnitt för PCoch välj sedan Project -> Debug, och programmet laddas automatiskt ner till tavlan. Välj sedan Debug -> Gå för att starta programmet, och du kommer att se fyra LED-lampor blinka i tur och ordning! Även om detta är ett litet experiment som är för enkelt för att vara enkelt, blev jag ändå lite exalterad när författaren lyckades genomföra det~ hehe! 5. Slutsats Baserat på "LED-ljusblinkexperimentet" introducerar denna artikel hela implementeringsprocessen från konfigurationen av IAR, skrivandet av programkod till processen för kompilering och felsökning. I nästa artikel, baserat på förståelsen av den grundläggande processen för att utveckla programmet, kommer vi att introducera flera grundläggande experiment för CC2430-utvecklingenTimer、Seriell kommunikation、AD-konvertering、Systematisk sömn samt vakthundarosv., så håll utkik!
|