| I. Anknüpfen, wo wir aufgehört haben Im vorangegangenen Artikel "Zigbee Journey (I): The Beginning" haben wir Zigbee und seine Entwicklungsumgebung kurz vorgestellt. Nun, da die Tools vollständig sind, stellt sich die Frage: Wie kann man die Software und Hardware nutzen, um ein lauffähiges Programm zu schreiben? Dieser Artikel soll im Wesentlichen die obige Frage beantworten: "LED-Licht blinken" als Beispiel für ein kleines Experiment, wie man das IAR für die Entwicklung von CC2430-basierten Programmen konfiguriert, wie man das IAR verwendet, um das Programm online zu schreiben und zu debuggen. Konfiguration von IAR IAR ist eine leistungsfähige Embedded-Entwicklungsplattform, die viele Arten von Chips unterstützt, und jedes Projekt in IAR kann seine eigene Konfiguration haben, einschließlich Gerätetyp, Heap/Stack, Linker, Debugger, etc. (1) Neuer Arbeitsbereich und neues Projekt Erstellen Sie zunächst einen neuen Ordner ledtest, öffnen Sie IAR und wählen Sie im Hauptmenü File -> New -> Workspace, um einen neuen Workspace zu erstellen. Wählen Sie Project -> Create New Project -> Empty Project, klicken Sie auf OK, und speichern Sie die Projektdatei im Ordner ledtest unter dem Namen ledtest.ewp (siehe unten). (2) Allgemeine Optionen konfigurieren Zieleinstellung: Gerät: CC2430; Code-Modus: Nah; Datenmodell: Large; Aufrufkonvention: XDATA-Stack reetrant
Datenzeiger-Einstellung: Anzahl der DPTRs: 1
Stack/Heap-Einstellung: XDATA-Stackgröße: 0x1FF (3) Linker-Einstellungen Linker-Befehlsdatei: select lnk51ew_cc2430.xcl
(4) Debugger-Einstellungen: Treiber: Texas Instruments (dieses Experiment für die reale Maschine Debugging, so wählen TI; wenn andere Verfahren zur Verwendung der IAR-Emulator, optional Simulator) Device Beschreibungsdatei: CC2430.ddf
An dieser Stelle ist die IAR-Konfiguration für dieses Experiment im Wesentlichen abgeschlossen, im Folgenden wird die Implementierung des Codes vorgestellt. Drittens, die Vorbereitung des Programmcodes(1) Neue Programmdatei Wählen Sie Datei->Neu->Datei, erstellen Sie eine neue Datei main.c. (2) Einführen von Header-Dateien CC2430-basierte Programme müssen einen Verweis auf die Datei ioCC2430.h enthalten, die die Adresszuordnung der verschiedenen Typen von Spezialfunktionsregistern (SFRs) des CC2430 definiert. #include //Einführen der dem CC2430 entsprechenden Header-Datei (enthält die Definition der einzelnen SFRs) Diese Datei ist in IAR integriert (ähnlich wie stdio.h). Klicken Sie mit der rechten Maustaste auf diese Codezeile und wählen Sie OPen "ioCC2430.h", um den vollständigen Inhalt dieser Header-Datei zu sehen. (3) Definieren Sie die LED-Pins Prüfen Sie den Schaltplan des Entwicklungsboards, wie unten gezeigt:
Es ist bekannt, dass led1~4 jeweils von den Pins P1_0~P4_0 gesteuert werden, also können wir led1, led2, led3, led4 jeweils als Pins P1_0, P2_0, P3_0, P4_0 definieren. #define led1 P1_0 //define LED1 als P1_0 Portsteuerung #define led2 P1_1
//define led2 als P1_1 port control #define led3 P1_2 //define led3 als P1_2 port control #define led4 P1_3 //define led4 für P1_3 Portsteuerung (4) Hauptfunktion Beginnen Sie nun mit dem Schreiben der Hauptfunktion. Bevor Sie die Ports P1.0~P1.4 verwenden können, müssen Sie zunächst den Arbeitsmodus und die Ein-/Ausgaberichtung festlegen, was zwei SFRs betrifft: P1SEL, P1DIR. P1SEL = 0x00; //Einstellung von P1 als gewöhnlicher E/A-Anschluss P1DIR |= 0x0F; & nbsp; //Setzen von P1.0 P1.1 P1.2 P1.3 als Ausgänge Zigbee-Tipps CC2430 hat P0_0 ~ P0_7, P1_0~P1_7, P2_0~P2_7 insgesamt 21 I/O Ports. Sie können als Allzweck-Digital-I/Os oder zum Anschluss von Peripherie-IOs wie ADC, Timer/Counter oder USART verwendet werden. Es gibt drei Arten von Registern im SFR des CC2430, die zur Konfiguration dieser IO-Ports verwendet werden können: ①PxSEL (x ist 0/1/2): P0/P1/P2 Port Funktionsauswahl PxSEL (x ist 0/1/2): Auswahl der Funktion des Ports P0/P1/P2 nbsp;0: Allzweck-Digital-IO, 1: Peripherie-IO, Standardwert ist 0 ② PxDIR (x ist 0/1/2): Richtung des P0/P1/P2-Anschlusses & nbsp;0: Eingang, 1: Ausgang, Standardeinstellung ist 0 ③PxINP (x ist 0/1): Eingangsmodus des Anschlusses P0/P1 0: oben, 1: Ausgang, Voreinstellung 0 nbsp;0: pull-up/down, 1: tri-state, Voreinstellung ist 0 Die Konfiguration ist erforderlich, wenn der IO-Port verwendet wird, wenn er voreingestellt ist, wird die Systemvorgabe übernommen. Dann initialisieren Sie die 4 LEDs, setzen Sie sie auf alle aus:
led1 = 1; led2 = 1; led3 = 1; led4 = 1. Schließlich schreiben Sie den Code für den Blinkeffekt der LEDs:
led1 = 0; //led1 blinkend Delay(10); led1 = 1; Delay(10); led2
= 0; //led2 blinkend Delay(10); led2 = 1; Delay(10); led3 = 0; //led3 blinkend Delay(10); /
//led3 blinkend Delay(10); led3 = 1; Delay(10); led4 = 0; //led4 blinkend &
nbsp; Verzögerung(10); led4 = 1; Verzögerung(10);
Dies beinhaltet eine Verzögerungsunterfunktion 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-Übersicht Kombinieren Sie den obigen Code als Ganzes wie unten gezeigt: //Einführung der Header-Dateien #include //Einführung der Header-Datei, die dem CC2430 entspricht (einschließlich der Definition der einzelnen SFR)
// Definieren Sie die LED-Pins #define led1 P1_0 //Definieren Sie LED1 für die Steuerung des Ports P1_0 #define led2 P1_1 //Definieren Sie LED2 für die Steuerung des Ports P1_1 #define led3 P1_2 //define LED3 als Portsteuerung P1_2 #define led4 P1_3 //define LED4 zur Steuerung des Ports P1_3 //delay subroutine void Verzögerung (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; //Einstellung von P1 als normaler E/A-Anschluss P1DIR |= 0x0F; //Setzen von P1.0 P1.1 P1.2 P1.3 als Ausgänge led1 = 1; //initialisieren, alle 4 Led-Leuchten aus led2 = 1; //initialisieren, alle 4 leds aus led3 = 1; led4 = 1; //initialisieren, alle 4 led's aus led2 = 1; led3 = 1; led4 = 1; //Initialisierung, alle 4 leds aus while(1 ) //Zyklus starten { led1 = 0; //led1 blinkt Verzögerung (10 ); //Verzögerung (10 ); //Verzögerung (10 ); //Verzögerung (10 ) delay(10); led1 = 1; //led1 blinkt Delay (10 ). led2 = 0; //led2 blinkt Delay (10 ); led2 = 1; //led2 blinkt led2 = 1; //led2 blinkt Delay (10 ). led3 = 0; //led3 blinkt Delay (10 ); led3 = 1; //led3 blinkt led3 = 1; //led3 blinkt Delay (10 ). led4 = 0; //led4 blinkt Delay (10 ); led4 = 1; //led4 blinkt led4 = 1; //led4 blinkt Verzögerung (10 ); //Verzögerung (10 ) } }
OK, der Code für dieses kleine Experiment ist geschrieben, ist nicht sehr einfach ah, hehe~! Viertens, kompilieren und debuggen Wählen Sie Project -> Make, kompilieren Sie den Code, wenn erfolgreich, erscheint die folgende Ausgabe:
c
Schließen Sie das Zigbee-Gerät in der Reihenfolge Zigbee-Entwicklungsboard → Debugger → USB-Port des PCs an und wählen Sie dann Projekt -> Debug, das Programm wird automatisch auf das Entwicklungsboard heruntergeladen. Wählen Sie dann Debug -> Go, um das Programm zu starten, und Sie werden die 4 LEDs nacheinander blinken sehen! Obwohl dies eine einfache kann nicht mehr einfache kleine Experimente, aber wenn es mir gelungen, es zu erreichen, oder eine kleine aufgeregt ~ huh! V. Schlussfolgerung In diesem Papier, das "LED-Licht blinkt Experiment" als Grundlage, bzw. von der Konfiguration des IAR, die Vorbereitung des Programms Code, sowie die Kompilierung und Debugging-Prozess führt die gesamte Umsetzung. Die nächste, wird es in das Verständnis der grundlegenden Prozess der Entwicklung Verfahren auf der Grundlage der Einführung von mehreren CC2430 Entwicklung der grundlegenden Experimente mit Timern, serielle Kommunikation, AD-Wandlung, System-Sleep-und Watchdog , etc. werden, so bleiben Sie dran! |