|
1. Het verbinden van de boven- en benedenverdiepingen In het vorige artikelZigbee Reis (1): De grond breken, introduceren we kort Zigbee en de bijbehorende ontwikkelomgeving. Oké, nu de tools compleet zijn, rijst de vraag: hoe gebruik je deze software en hardware om een programma te schrijven dat kan draaien? Dit artikel is in wezen bedoeld om bovenstaande vragen te beantwoorden: Neem het kleine experiment van "LED-lichtknipperen" als voorbeeld om te introduceren hoe je IAR kunt configureren zodat het geschikt is voor het ontwikkelen van CC2430-gebaseerde programma's, en hoe je het gebruiktIARSchrijf en debug programma's online. 2. IAR-configuratie IAR is een krachtig embedded ontwikkelplatform dat een breed scala aan chips ondersteunt. Elk project in IAR kan zijn eigen configuratie hebben, waaronder apparaattype, stack/stack, linker, debugger, enzovoort. (1) Een nieuwe werkruimte en project aanmaken Maak eerst een nieuwe map ledtest aan. Open IAR en selecteer het hoofdmenu Bestand -> Nieuw -> Werkruimte om een nieuwe werkruimte aan te maken. Selecteer Project -> Nieuw Project aanmaken -> Leeg Project, klik op OK en sla het projectbestand op in de map ledtest, genaamd ledtest.ewp (zoals hieronder weergegeven).
(2) Algemene opties configureren Doelwit: Apparaat: CC2430; Codemodus: Nabij; Datamodel: Groot; Aanroepconventie:XDATA-stack reetrant
Datapointerinstelling: Aantal DPTR's: 1
Stack/Heap-instelling: XDATA-stackgrootte: 0x1FF
(3) Linker-instellingen Linker-commandobestand: Selecteer lnk51ew_cc2430.xcl
(4) Debugger-instellingen: Driver: Texas Instruments (Dit experiment is een echte machine debugging, dus kies TI; Als andere programma's de IAR-simulator willen gebruiken, kun je kiezen voor Simulator) Apparaatbeschrijvingsbestand:CC2430.ddf
Op dit punt is de IAR-configuratie voor dit experiment in feite voorbij, en het volgende is een introductie tot de coderingsimplementatie. 3. Programmacode schrijven(1) Een nieuw procedureel document aanmaken Selecteer File->New->File en maak een nieuw bestand main.c. (2) Introduceer headerbestanden CC2430-gebaseerde programma's moeten een verwijzing bevatten naar ioCC2430.h, die de adresmapping van de verschillende special function registers (SFR's) van de CC2430 definieert. #include //引入CC2430所对应的头文件(包含各SFR的定义)
Dit bestand is ingebouwd in IAR (vergelijkbaar met stdio.h), beweeg met de muis over deze regel code, klik met de rechtermuisknop en selecteerOPen "ioCC2430.h"om de volledige inhoud van dit headerbestand te zien. (3) Definieer de LED-pinnen Bekijk het circuitschema van de ontwikkelplaat als volgt:
Hieruit blijkt dat LED1~4 wordt aangestuurd door pinnen P1_0~P4_0 respectievelijk, dus LED1, LED2, LED3 en LED4 kunnen respectievelijk worden gedefinieerd als pinnen P1_0, P2_0, P3_0 en P4_0. #define LED1 P1_0 // Definieer LED1 als de P1_0 poortbesturing #define LED2 P1_1 // Definieer LED2 als P1_1 poortbesturing #define LED3 P1_2 // Definieer LED3 als P1_2 poortbesturing #define LED4 P1_3 // Definieer LED4 als P1_3 poortbesturing
(4) hoofdfunctie Begin vervolgens met het schrijven van de hoofdfunctie. Allereerst is het, voordat je de P1.0~P1.4-poort gebruikt, noodzakelijk om de werkmodus en invoer-/uitvoerrichting in te stellen, wat twee SFR's omvat: P1SEL en P1DIR. P1SEL = 0x00; Stel P1 in op de normale I/O-poort P1DIR |= 0x0F; Stel P1.0, P1.1, P1.2, P1.3 als uitgang in
Zigbee Tips De CC2430 heeft:P0_0 ~ P0_7 , P1_0~P1_7 , P2_0~P2_7In totaal 21 I/O-poorten. Ze kunnen worden gebruikt als algemene digitale I/O's of om randapparatuur IO's zoals ADC's, timing/counters of USARTs aan te sluiten. Er zijn drie klassen registers in de SFR van de CC2430 die gebruikt kunnen worden om deze IO-poorten te configureren: (1)PxSEL(x is 0/1/2) :P 0/P1/P2 poortfunctiekeuze 0: Universele numerieke IO, 1: Periferie IO, de standaard is 0 (2)PxDIR(x is 0/1/2) :P 0/P1/P2 poortrichting 0: input, 1: output, de standaard is 0 (3)PxINP(x is 0/1) :P 0/P1-poort invoermodus 0: Pull up/pull down, 1: Drie toestanden, de standaard is 0 Het moet worden geconfigureerd bij gebruik van de IO-poort, en als het standaard is, wordt de standaardwaarde van het systeem genomen. Hiermee initialiseer je de 4 LED's en stel je ze allemaal uit: led1 = 1; led2 = 1; led3 = 1; led4 = 1;
Schrijf tenslotte de LED-lichtflitsende effectcode: led1 = 0; LED1 knippert Vertraging(10); led1 = 1; Vertraging(10);
led2 = 0; LED2 flitst Vertraging(10); led2 = 1; Vertraging(10);
led3 = 0; LED3 knippert Vertraging(10); led3 = 1; Vertraging(10);
led4 = 0; LED4-knipperend Vertraging(10); led4 = 1; Vertraging(10);
Het omvat een vertragingsubfunctie Delay(onondertekend teken n): Void Vertraging (onondertekend teken n) { onondertekende karakter I; Ongetekend Int J; for(i = 0; I < N; i++) for(j = 1; j; j++) ; }
(5) Codeoverzicht Combineer bovenstaande code tot één geheel, als volgt: //引入头文件
#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口控制 //延时子程序
leegteVertraging(Onondertekend charn) {
Onondertekend charIk;
Onondertekend intj;
voor(i =0; I < N; i++)
voor(j =1; j; j++) ;
}
leegtehoofd(leegte)
{ P1SEL =0x00; Stel P1 in op de normale I/O-poort P1DIR |=0x0F; Stel P1.0, P1.1, P1.2, P1.3 als uitgang in
led1 =1; //初始化,4个led灯全熄 led2 =1; led3 =1; led4 =1;
terwijl(1) //开始循环 { led1 =0; //led1闪烁 Vertraging(10); led1 =1; Vertraging(10);
led2 =0; //led2闪烁 Vertraging(10); led2 =1; Vertraging(10);
led3 =0; //led3闪烁 Vertraging(10); led3 =1; Vertraging(10);
led4 =0; //led4闪烁 Vertraging(10); led4 =1; Vertraging(10); }
}
Oké, de code voor dit kleine experiment is geschreven, is het niet heel simpel, hehe~ 4. Compilatie en debugging Selecteer Project -> Make, compileer de code, en als het lukt, verschijnt de volgende uitvoer:
PersZigbee Development Board → Debugger → USB-interface voor pcen selecteer vervolgens Project -> Debug, en het programma wordt automatisch op het bord gedownload. Selecteer vervolgens Debug -> Go om het programma te starten, en je ziet vier LED-lampjes achter elkaar knipperen! Hoewel dit een klein experiment is dat te simpel is om simpel te zijn, was ik toch een beetje enthousiast toen de auteur het succesvol realiseerde~ hehe! 5. Conclusie Gebaseerd op het "LED-lichtflitsexperiment" introduceert dit artikel het hele implementatieproces, van de configuratie van IAR, het schrijven van programmacode en het proces van compileren en debuggen. In het volgende artikel, gebaseerd op het begrijpen van het basisproces van het ontwikkelen van het programma, introduceren we verschillende basisexperimenten voor de ontwikkeling van CC2430Timer、Seriële communicatie、AD-conversie、Systematische slaap en waakhondenenzovoort, dus blijf op de hoogte!
|