|
1. Conectarea nivelurilor superioare și inferioare În articolul anteriorCălătoria Zigbee (1): Deschiderea terenurilor, prezentăm pe scurt Zigbee și mediul său de dezvoltare. OK, acum că uneltele sunt complete, apare o întrebare: cum să folosești aceste software și hardware pentru a scrie un program care să poată rula? Acest articol are ca scop de a răspunde la întrebările de mai sus: Luați ca exemplu experimentul mic "LED light flashing" pentru a introduce cum să configurați IAR pentru a fi potriviți pentru dezvoltarea programelor bazate pe CC2430 și cum să îl folosițiIARScrie și depanează programe online. 2. Configurația IAR IAR este o platformă puternică de dezvoltare integrată care suportă o gamă largă de cipuri. Fiecare proiect în IAR poate avea propria configurație, incluzând tipul de dispozitiv, stivă/stivă, linker, depanator etc. (1) Crearea unui nou spațiu de lucru și proiect Mai întâi, creează un folder nou ledtest. Deschide IAR și selectează meniul principal File -> New -> Workspace pentru a crea un nou spațiu de lucru. Selectează Project -> Create New Project -> Empty Project, apasă OK și salvează fișierul proiectului în folderul ledtest, numit ledtest.ewp (așa cum se arată mai jos).
(2) Configurarea opțiunilor generale Setare țintă: Dispozitiv: CC2430; Mod Cod: Aproape; Model de date: Mare; Apelarea convenției:XDATA stack reetrant
Setarea indicatorului de date: Numărul DPTR-urilor: 1
Setare stack/heap: Dimensiunea stack-ului XDATA: 0x1FF
(3) Setări pentru linker Fișier de comandă linker: Selectează lnk51ew_cc2430.xcl
(4) Setările depanatorului: Driver: Texas Instruments (Acest experiment este o depanare reală a mașinii, deci alege TI; Dacă alte programe doresc să folosească simulatorul IAR, poți alege Simulator) Fișier Descriere Dispozitiv:CC2430.ddf
În acest moment, configurația IAR pentru acest experiment este practic încheiată, iar următoarea este o introducere în implementarea sa de codare. 3. Scrierea codului de program(1) Crearea unui nou document procedural Selectează Fișier->Nou->Fișier și creează un fișier nou, main.c. (2) Introducerea fișierelor antetului Programele bazate pe CC2430 trebuie să includă o referință la ioCC2430.h, care definește maparea adreselor diferitelor registre speciale de funcții (SFR) ale CC2430. #include //引入CC2430所对应的头文件(包含各SFR的定义)
Acest fișier este integrat în IAR (similar cu stdio.h), treci cursorul peste această linie de cod, dă click dreapta, selecteazăOPen "ioCC2430.h"pentru a vedea conținutul complet al acestui fișier antet. (3) Definiți pinii LED-ului Vizualizați diagrama circuitului plăcii de dezvoltare după cum urmează:
Se poate observa că LED1~4 este controlat de pini P1_0~P4_0 respectiv, astfel încât LED1, LED2, LED3 și LED4 pot fi definite ca pini P1_0, P2_0, P3_0 și P4_0, respectiv. #define LED1 P1_0 // Definește LED1 ca controlul portului P1_0 #define LED2 P1_1 // Definește LED2 ca P1_1 control port #define LED3 P1_2 // Definește LED3 ca P1_2 control port #define LED4 P1_3 // Definește LED4 ca P1_3 control port
(4) funcția principală Apoi, începe să scrii funcția principală. În primul rând, înainte de a folosi portul P1.0~P1.4, este necesar să se seteze modul de lucru și direcția de intrare/ieșire, care implică două SFR-uri: P1SEL și P1DIR. P1SEL = 0x00; Setează P1 pe portul normal de I/O P1DIR |= 0x0F; Setează P1.0, P1.1, P1.2, P1.3 ca ieșire
Sfaturi Zigbee CC2430 are:P0_0 ~ P0_7 , P1_0~P1_7 , P2_0~P2_7Un total de 21 de porturi I/O. Ele pot fi folosite ca I/O-uri digitale cu scop general sau pot fi utilizate pentru a conecta IO-uri periferice precum ADC-uri, contoare de temporizare sau USART-uri. Există trei clase de registre în SFR-ul CC2430 care pot fi folosite pentru a configura aceste porturi IO: (1)PxSEL(x este 0/1/2) :P 0/P1/P2 selecția funcției portului 0: Universal numeric IO, 1: IO periferic, implicit este 0 (2)PxDIR(x este 0/1/2) :P direcția port 0/P1/P2 0: intrare, 1: ieșire, implicit este 0 (3)PxINP(x este 0/1) :P mod de intrare port 0/P1 0: Trage în sus/trage în jos, 1: Trei stări, implicit este 0 Trebuie configurat când se folosește portul IO, iar dacă este implicit, valoarea implicită a sistemului este preluată. Apoi inițializează cele 4 LED-uri și setează-le să se stingă toate: a condus1 = 1; a condus2 = 1; a condus3 = 1; a condus4 = 1;
În final, scrie codul efectului de intermitere a luminii LED: a condus1 = 0; LED1 clipește Întârziere(10); a condus1 = 1; Întârziere(10);
a condus2 = 0; LED2 clipiește Întârziere(10); a condus2 = 1; Întârziere(10);
a condus3 = 0; LED3 intermitent Întârziere(10); a condus3 = 1; Întârziere(10);
a condus4 = 0; Intermitere LED4 Întârziere(10); a condus4 = 1; Întârziere(10);
Implică o subfuncție de întârziere Întârziere (caractere nesemnată n): void Întârziere (personaj nesemnat) { Char I nesemnat; int nesemnat j; pentru (i = 0; Am < N; i++) pentru (j = 1; j; j++) ; }
(5) Prezentare generală a codului Combinați codul de mai sus într-un singur întreg, după cum urmează: //引入头文件
#include //引入CC2430所对应的头文件(包含各SFR的定义)
//定义LED引脚
#define condus 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口控制 //延时子程序
VoidÎntârziere(nesemnat Charn) {
nesemnat Chari;
nesemnat intj;
pentru(i =0; Am < N; i++)
pentru(j =1; j; j++) ;
}
Voidmain(Void)
{ P1SEL =0x00; Setează P1 pe portul normal de I/O P1DIR |=0x0F; Setează P1.0, P1.1, P1.2, P1.3 ca ieșire
a condus1 =1; //初始化,4个led灯全熄 led2 =1; led3 =1; led4 =1;
în timp ce(1) //开始循环 { a condus1 =0; //led1闪烁 Întârziere(10); a condus1 =1; Întârziere(10);
led2 =0; //led2闪烁 Întârziere(10); led2 =1; Întârziere(10);
led3 =0; //led3闪烁 Întârziere(10); led3 =1; Întârziere(10);
led4 =0; //led4闪烁 Întârziere(10); led4 =1; Întârziere(10); }
}
OK, codul acestui mic experiment a fost scris, nu-i așa că e foarte simplu, hehe~ 4. Compilare și depanare Selectează Project -> Make, compila codul și, dacă ai succes, va apărea următorul rezultat:
PresăInterfață USB → Zigbee Development Board → Debugger pentru PCapoi selectează Project -> Debug, iar programul va fi descărcat automat pe placă. Apoi selectează Debug -> Mergi să pornești programul și vei vedea 4 lumini LED care clipesc pe rând! Deși este un experiment mic, prea simplu ca să fie simplu, când autorul a reușit să-l realizeze, tot am fost puțin entuziasmat~ hehe! 5. Concluzie Bazându-se pe "experimentul de intermitere cu LED-uri", această lucrare introduce întregul proces de implementare, de la configurarea IAR, scrierea codului de program și procesul de compilare și depanare. În următorul articol, bazat pe înțelegerea procesului de bază de dezvoltare a programului, vom introduce mai multe experimente de bază pentru dezvoltarea CC2430Cronometrul、Comunicare serială、Conversia d.Hr.、Somnul sistematic, precum și supraveghereaetc., așa că rămâneți pe aproape!
|