| I. Riprendere da dove abbiamo lasciato Nell'articolo precedente , "Zigbee Journey (I): The Beginning", abbiamo introdotto brevemente Zigbee e il suo ambiente di sviluppo, OK, ora che gli strumenti sono completi, sorge una domanda: come utilizzare il software e l'hardware per scrivere un programma che possa funzionare? Questo articolo si propone essenzialmente di rispondere alla domanda di cui sopra: "lampeggiamento della luce LED" come esempio di un piccolo esperimento, come configurare IAR per lo sviluppo di programmi basati su CC2430, come utilizzare IAR per scrivere ed eseguire il debug del programma online. Configurazione di IAR IAR è una potente piattaforma di sviluppo embedded che supporta molti tipi di chip e ogni progetto in IAR può avere una propria configurazione, tra cui tipo di dispositivo, Heap/Stack, Linker, Debugger, ecc. (1) Nuovo spazio di lavoro e progetto Prima di tutto, creare una nuova cartella ledtest, aprire IAR, selezionare il menu principale File -> New -> Workspace per creare un nuovo spazio di lavoro. Selezionare Progetto -> Crea nuovo progetto -> Progetto vuoto, fare clic su OK e salvare il file di progetto nella cartella ledtest, denominato: ledtest.ewp (come di seguito). (2) Configurare le opzioni generali Impostazione target: Dispositivo: CC2430; Modalità codice: Vicino; Modello dati: Large; Convenzione di chiamata: XDATA stack reetrant
Impostazione del puntatore dati: Numero di DPTR: 1
Impostazione dello stack/Heap: dimensione dello stack XDATA: 0x1FF (3) Impostazioni del linker File di comando del linker: select lnk51ew_cc2430.xcl
(4) Impostazioni del debugger: Driver: Texas Instruments (questo esperimento per il debug della macchina reale, quindi scegliere TI; se altre procedure per utilizzare l'emulatore IAR, opzionale Simulatore) Dispositivo File di descrizione: CC2430.ddf
A questo punto, la configurazione di IAR per questo esperimento è sostanzialmente conclusa, di seguito si introdurrà la sua implementazione di codifica. Terzo, la preparazione del codice del programma(1) Nuovo file di programma Scegliere File->Nuovo->File, creare un nuovo file main.c. (2) Introdurre i file di intestazione I programmi basati su CC2430 devono includere un riferimento a ioCC2430.h, che definisce la mappatura degli indirizzi dei vari tipi di registri speciali di funzione (SFR) del CC2430. #include //Introduce il file di intestazione corrispondente al CC2430 (contiene la definizione di ogni SFR) Questo file è incorporato in IAR (simile a stdio.h); con il mouse su questa riga di codice, fare clic con il tasto destro del mouse, selezionare OPen "ioCC2430.h", per visualizzare il contenuto completo di questo file di intestazione. (3) Definire i pin del LED Controllare lo schema elettrico della scheda di sviluppo, come mostrato di seguito:
È noto che i led1~4 sono controllati rispettivamente dai pin P1_0~P4_0, quindi possiamo definire led1, led2, led3, led4 come pin P1_0, P2_0, P3_0, P4_0 rispettivamente. #define led1 P1_0 //define LED1 come controllo della porta P1_0 #define led2 P1_1
//definire led2 come controllo della porta P1_1 #define led3 P1_2 //definire led3 come controllo della porta P1_2 #define led4 P1_3 //definire led4 per il controllo della porta P1_3 (4) Funzione principale Si inizia quindi a scrivere la funzione principale. Prima di tutto, prima di utilizzare le porte P1.0~P1.4, è necessario impostarne la modalità di funzionamento e la direzione di ingresso/uscita, che coinvolge due SFR: P1SEL, P1DIR. P1SEL = 0x00; //Impostare P1 come porta di I/O ordinaria P1DIR |= 0x0F; & nbsp; //Impostare P1.0 P1.1 P1.2 P1.3 come uscite Suggerimenti per Zigbee Il CC2430 dispone di P0_0 ~ P0_7, P1_0~P1_7, P2_0~P2_7, per un totale di 21 porte di I/O. Possono essere utilizzate come I/O digitali generici o per collegare IO periferici come ADC, timer/counter o USART. Per configurare queste porte di I/O è possibile utilizzare tre tipi di registri nell'SFR del CC2430: ①PxSEL (x è 0/1/2): selezione della funzione della porta P0/P1/P2 PxSEL (x è 0/1/2): selezione della funzione della porta P0/P1/P2 nbsp;0: IO digitale generico, 1: IO periferico, l'impostazione predefinita è 0 ② PxDIR (x è 0/1/2): direzione della porta P0/P1/P2 & nbsp;0: ingresso, 1: uscita, l'impostazione predefinita è 0 ③PxINP (x è 0/1): modalità di ingresso della porta P0/P1 0: up, 1: output, valore predefinito 0 nbsp;0: pull-up/down, 1: tri-state, l'impostazione predefinita è 0 La configurazione è necessaria quando si utilizza la porta IO, se è predefinita, prendere l'impostazione predefinita del sistema. Quindi inizializzare i 4 LED, impostandoli tutti su out:
led1 = 1; led2 = 1; led3 = 1; led4 = 1. Infine, scrivere il codice dell'effetto lampeggiante dei LED:
led1 = 0; //led1 lampeggia Ritardo(10); led1 = 1; Ritardo(10); led2
= 0; //led2 lampeggia Delay(10); led2 = 1; Delay(10); led3 = 0; //led3 lampeggia Delay(10); /
//led3 lampeggiante Ritardo(10); led3 = 1; Ritardo(10); led4 = 0; //led4 lampeggiante &
nbsp; Ritardo(10); led4 = 1; Ritardo(10);
Si tratta di una sottofunzione di ritardo 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) Panoramica del codice Combinate il codice precedente come mostrato di seguito: //Introdurre i file di intestazione #include //introduce il file di intestazione corrispondente al CC2430 (inclusa la definizione di ogni SFR)
//Definire i pin del LED #define led1 P1_0 //define LED1 per il controllo della porta P1_0 #define led2 P1_1 //define LED2 per il controllo della porta P1_1 #define led3 P1_2 //definizione del LED3 come controllo della porta P1_2 #define led4 P1_3 //define LED4 per il controllo della porta P1_3 //delay subroutine void Delay (unsigned char n) { carattere non firmato i. unsigned int j. for (i = 0; i < n; i++) for (j = 1; j; j++) ; }
void main (void ) { P1SEL = 0x00; /Imposta P1 come normale porta di I/O P1DIR |= 0x0F; //Impostare P1.0 P1.1 P1.2 P1.3 come uscite led1 = 1; //inizializzazione, tutti e 4 i led spenti led2 = 1; //inizializzazione, tutti e 4 i led spenti led3 = 1; led4 = 1; //inizializzazione, tutti e 4 i led spenti led2 = 1; led3 = 1; led4 = 1; //inizializzazione, tutti e 4 i led spenti while(1 ) //inizia il ciclo { led1 = 0; //led1 lampeggia Ritardo (10 ); //ritardo (10 ); //ritardo (10 ); //ritardo (10 ) ritardo(10); led1 = 1; //led1 lampeggia Ritardo (10 ). led2 = 0; //led2 lampeggia Ritardo (10 ); led2 = 1; //led2 lampeggia led2 = 1; //led2 lampeggia Ritardo (10 ). led3 = 0; //led3 lampeggia Ritardo (10 ); led3 = 1; //led3 lampeggia led3 = 1; //led3 sta lampeggiando Ritardo (10 ). led4 = 0; //led4 sta lampeggiando Ritardo (10 ); led4 = 1; //led4 lampeggia led4 = 1; //led4 sta lampeggiando Ritardo (10 ); //ritardo (10 ) } }
OK, il codice per questo piccolo esperimento è scritto, non è molto semplice ah, hehe~! Quarto, compilazione e debug Selezionate Project -> Make, compilate il codice e, in caso di successo, apparirà il seguente output:
c
Collegare il dispositivo Zigbee nell'ordine scheda di sviluppo Zigbee → Debugger → porta USB del PC , quindi selezionare Progetto -> Debug, il programma verrà scaricato automaticamente nella scheda di sviluppo. Quindi selezionare Debug -> Go per avviare il programma, e si vedranno i 4 LED lampeggiare in sequenza! Anche se questo è un semplice non può essere più semplice piccoli esperimenti, ma quando sono riuscito a raggiungere, o un piccolo eccitato ~ eh! V. Conclusione In questo articolo, l'"esperimento di lampeggiamento della luce LED" come base, rispettivamente, dalla configurazione di IAR, la preparazione del codice del programma, così come il processo di compilazione e debug introduce l'intero processo di implementazione. Il prossimo articolo sarà dedicato alla comprensione del processo di base delle procedure di sviluppo basate sull'introduzione di diversi esperimenti di base sullo sviluppo di CC2430 che coinvolgono timer, comunicazioni seriali, conversione AD, sleep e watchdog del sistema , ecc. |