| I. Verder gaan waar we gebleven waren In het vorige artikel , "Zigbee Journey (I): The Beginning", hebben we kort Zigbee en de bijbehorende ontwikkelomgeving geïntroduceerd, OK, nu de tools compleet zijn rijst de vraag: hoe gebruik je de software en hardware om een programma te schrijven dat kan draaien? Dit artikel is eigenlijk om de bovenstaande vraag te beantwoorden: om "LED-licht knipperen" als een voorbeeld van een klein experiment, hoe de IAR configureren voor de ontwikkeling van CC2430-gebaseerde programma's, hoe de IAR gebruiken om het programma te schrijven en debuggen online. Configuratie van IAR IAR is een krachtig embedded ontwikkelplatform dat vele soorten chips ondersteunt, en elk Project in IAR kan zijn eigen configuratie hebben, inclusief Apparaattype, Heap/Stack, Linker, Debugger, enz. (1) Nieuwe werkruimte en project Maak eerst een nieuwe map ledtest aan, open IAR, selecteer het hoofdmenu Bestand -> Nieuw -> Werkruimte om een nieuwe werkruimte te maken. Selecteer Project -> Create New Project -> Empty Project, klik op OK en sla het projectbestand op in de map ledtest, met de naam: ledtest.ewp (zoals hieronder). (2) Algemene opties configureren Doelinstelling: Apparaat: CC2430; Code-modus: Dichtbij; Gegevensmodel: Groot; Aanroepconventie: XDATA-stapel reetrant
Instelling gegevensaanwijzer: Aantal DPTR's: 1
Stack/Heap instelling: XDATA stack grootte: 0x1FF (3) Linker instellingen Linker opdrachtbestand: selecteer lnk51ew_cc2430.xcl
(4) Debugger-instellingen: Stuurprogramma: Texas Instruments (dit experiment voor de echte machine debuggen, dus kies TI; als andere procedures om de IAR-emulator te gebruiken, optionele Simulator) Device Beschrijving bestand: CC2430.ddf
Op dit punt, de IAR configuratie voor dit experiment is in principe voorbij, de volgende om de uitvoering van de codering te introduceren. Ten derde, de voorbereiding van het programma code(1) Nieuw programma-bestand Kies Bestand->Nieuw->Bestand, maak een nieuw bestand main.c. (2) Introductie header-bestanden Op CC2430 gebaseerde programma's moeten een verwijzing naar ioCC2430.h bevatten, dat de adrestoewijzing van de verschillende typen speciale functieregisters (SFR's) van de CC2430 definieert. #include //Invoeren van het headerbestand dat overeenkomt met de CC2430 (bevat de definitie van elke SFR) Dit bestand is ingebouwd in IAR (vergelijkbaar met stdio.h), ga met de muis naar deze regel code, klik met de rechtermuisknop, selecteer OPen "ioCC2430.h", dan kun je de volledige inhoud van dit headerbestand zien. (3) Definieer de LED-pinnen Controleer het onderstaande schakelschema van de ontwikkelprintplaat:
Het is bekend dat led1~4 worden aangestuurd door pinnen P1_0~P4_0 respectievelijk, dus we kunnen led1, led2, led3, led4 definiëren als pinnen P1_0, P2_0, P3_0, P4_0 respectievelijk. #define led1 P1_0 //definieer led1 als 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 voor P1_3 poortbesturing (4) Hoofdfunctie Begin nu met het schrijven van de hoofdfunctie. Allereerst moet je, voordat je de P1.0~P1.4-poorten kunt gebruiken, de werkmodus en de ingangs-/uitgangsrichting instellen. Hiervoor zijn twee SFR's nodig: P1SEL, P1DIR. P1SEL = 0x00; //Set P1 in als een gewone I/O-poort P1DIR |= 0x0F; & nbsp; //Set P1.0 P1.1 P1.2 P1.3 in als uitgangen Zigbee tips CC2430 heeft P0_0 ~ P0_7, P1_0~P1_7, P2_0~P2_7 in totaal 21 I/O-poorten. Ze kunnen worden gebruikt als digitale I/O's voor algemene doeleinden of voor het aansluiten van perifere IO's zoals ADC, timer/counter of USART. Er zijn drie typen registers in de SFR van CC2430 die kunnen worden gebruikt om deze IO-poorten te configureren: ①PxSEL (x is 0/1/2): P0/P1/P2 poort functieselectie PxSEL (x is 0/1/2): P0/P1/P2 poort functieselectie nbsp;0: digitale IO voor algemene doeleinden, 1: perifere IO, standaard is 0 PxDIR (x is 0/1/2): P0/P1/P2 poortrichting & nbsp;0: ingang, 1: uitgang, standaard is 0 PxINP (x is 0/1): P0/P1 poort ingangsmodus 0: omhoog, 1: uitgang, standaard is 0 nbsp;0: pull-up/down, 1: tri-state, standaard is 0 Configuratie is vereist bij gebruik van de IO-poort, als deze standaard is, neem dan de systeemstandaard. Initialiseer dan de 4 LEDs, zet ze allemaal op uit:
led1 = 1; led2 = 1; led3 = 1; led4 = 1. Schrijf tenslotte de code voor het LED-knippereffect:
led1 = 0; //led1 knippert Delay(10); led1 = 1; Delay(10); led2
= 0; //led2 knippert Delay(10); led2 = 1; Delay(10); led3 = 0; //led3 knippert Delay(10); / /led3 knippert.
//led3 knippert Vertraging(10); led3 = 1; Vertraging(10); led4 = 0; //led4 knippert &
nbsp; Delay(10); led4 = 1; Delay(10);
Dit betreft een vertragings-subfunctie 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) Code Overzicht Combineer de bovenstaande code als een geheel zoals hieronder getoond: //Introduceer header-bestanden #include //Introduceer het headerbestand dat overeenkomt met CC2430 (inclusief de definitie van elke SFR)
//Definieer de LED-pinnen #define led1 P1_0 //definieer LED1 voor P1_0 poortbesturing #definieer 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 voor P1_3 poortbesturing //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; //Set P1 in als normale I/O poort P1DIR |= 0x0F; //Set P1.0 P1.1 P1.2 P1.3 in als uitgangen led1 = 1; //initialiseren, alle 4 de ledlampjes uit led2 = 1; //initialiseren, alle 4 de led's uit led3 = 1; led4 = 1; //initialiseren, alle 4 de led's uit led2 = 1; led3 = 1; led4 = 1; //initialiseren, alle 4 ledlampjes uit while(1 ) //start cyclus { led1 = 0; //led1 knippert Delay (10 ); //Delay (10 ); //Delay (10 ); //Delay (10 ) delay(10); led1 = 1; //led1 knippert Vertraging (10 ). led2 = 0; //led2 knippert Delay (10 ); led2 = 1; //led2 knippert led2 = 1; //led2 knippert Vertraging (10 ). led3 = 0; //led3 knippert Delay (10 ); led3 = 1; //led3 knippert led3 = 1; //led3 knippert Vertraging (10 ). led4 = 0; //led4 knippert Delay (10 ); led4 = 1; //led4 knippert led4 = 1; //led4 knippert Vertraging (10 ); //Vertraging (10 ) } }
OK, de code voor dit kleine experiment is geschreven, is niet erg eenvoudig ah, hehe~! Ten vierde, compileren en debuggen Selecteer Project -> Make, compileer de code, als het goed is verschijnt de volgende uitvoer:
c
Sluit het Zigbee apparaat aan in de volgorde Zigbee development board → Debugger → PC's USB poort , en selecteer vervolgens Project -> Debug, het programma wordt automatisch gedownload naar het development board. Selecteer vervolgens Debug -> Go om het programma te starten, en je zult de 4 LED's achter elkaar zien knipperen! Hoewel dit is een eenvoudige kan niet meer eenvoudige kleine experimenten, maar toen ik erin geslaagd om het te bereiken, of een kleine opgewonden ~ huh! V. Conclusie In deze paper, de "LED licht knipperen experiment" als de basis, respectievelijk, van de configuratie van de IAR, de voorbereiding van het programma code, evenals de compilatie en debugging proces introduceert het hele implementatieproces. De volgende, zal het in het begrip van het basisproces van de ontwikkeling van procedures op basis van de invoering van een aantal CC2430 ontwikkeling van fundamentele experimenten met betrekking tot timers, seriële communicatie, AD-conversie, systeem slaap-en waakhond , etc., dus stay tuned! |