架构师_程序员_码农网

N Recuperare parolă
Înregistrare

QQ登录

Un singur pas pentru a începe

Căutare
架构师_程序员_码农网 "架构师 ' 管理专区&Management Area ' Reclamații și sugestii ' 回收站 ' 【转】Zigbee之旅(二):第一个CC2430程序-- . -LED-urile clipesc ...
Vizualizare:6245|Replică: 0
打印 上一主题 下一主题

Călătoria Zigbee (II): Primul program CC2430 - Experiment de clipire a LED-urilor

[Copy link]
R 跳转到指定楼层
proprietarului clădirii
发表于 2014-10-30 23:15:39|只看该作者回帖奖励 | Răsfoire inversă|Mod de citire
I. Să reluăm de unde am rămas

În articolul anterior , "Zigbee Journey (I): The Beginning", am prezentat pe scurt Zigbee și mediul său de dezvoltare, OK, acum că instrumentele sunt complete, apare o întrebare: cum să utilizați software-ul și hardware-ul pentru a scrie un program care poate rula?

Acest articol este, în principiu, pentru a răspunde la întrebarea de mai sus: la "LED lumina clipește" ca un exemplu de un mic experiment, cum să configurați IAR pentru dezvoltarea de programe bazate pe CC2430, cum să utilizați IAR pentru a scrie și depanarea programului online.

Configurarea IAR

IAR este o platformă puternică de dezvoltare embedded care suportă multe tipuri de cipuri, iar fiecare proiect din IAR poate avea propria sa configurație, inclusiv tipul de dispozitiv, Heap/Stack, Linker, Debugger etc.

(1) Spațiu de lucru și proiect nou

Mai întâi de toate, creați un folder nou ledtest, deschideți IAR, selectați meniul principal File -> New -> Workspace pentru a crea un nou spațiu de lucru.

Selectați Project -> Create New Project -> Empty Project, faceți clic pe OK și salvați fișierul de proiect în folderul ledtest, denumit ca: ledtest.ewp (ca mai jos).

(2) Configurarea opțiunilor generale

Setare țintă: Dispozitiv: CC2430;

Mod cod: Aproape;

Model de date: Mare;

Convenție de apelare: XDATA stack reetrant

Setare pointer de date: Număr de DPTR-uri: 1

Setarea stivei/Heap: Dimensiunea stivei XDATA: 0x1FF

(3) Setări pentru Linker

Fișier de comandă Linker: select lnk51ew_cc2430.xcl

(4) Setările debuggerului:


Driver: Texas Instruments (acest experiment pentru depanarea mașinii reale, deci alegeți TI; dacă alte proceduri pentru a utiliza emulatorul IAR, Simulator opțional) Dispozitiv Fișier de descriere: CC2430.ddf

În acest moment, configurarea IAR pentru acest experiment este practic încheiată, urmând să introducem implementarea codului său.

În al treilea rând, pregătirea codului programului(1) Fișier de program nou

Alegeți File->New->File, creați un nou fișier main.c.

(2) Introduceți fișierele de antet

Programele bazate pe CC2430 trebuie să includă o referință la ioCC2430.h, care definește maparea adreselor diferitelor tipuri de registre cu funcții speciale (SFR) ale CC2430.

#include //Introduceți fișierul antet corespunzător CC2430 (conține definiția fiecărui SFR)

Acest fișier este încorporat în IAR (similar cu stdio.h), mouse-ul la această linie de cod, faceți clic dreapta, selectați OPen "ioCC2430.h", puteți vedea conținutul complet al acestui fișier antet.

(3) Definiți pinii LED

Verificați schema de circuit a plăcii de dezvoltare, după cum se arată mai jos:

Se știe că led1~4 sunt controlate de pinii P1_0~P4_0 respectiv, deci putem defini led1, led2, led3, led4 ca pinii P1_0, P2_0, P3_0, P4_0 respectiv.


#define led1 P1_0 //define LED1 ca port de control P1_0 #define led2 P1_1

//define led2 as P1_1 port control #define led3 P1_2 //define led3 as P1_2 port control #define led4
P1_3 //define led4 pentru controlul portului P1_3

(4) Funcția principală

În continuare, începeți să scrieți funcția principală.

În primul rând, înainte de a utiliza porturile P1.0~P1.4, trebuie să setați modul său de lucru și direcția de intrare/ieșire, care implică două SFR-uri: P1SEL, P1DIR.


P1SEL = 0x00; //Set P1 ca port I/O obișnuit P1DIR |= 0x0F; & nbsp; //Set P1.0 P1.1 P1.2 P1.3 ca ieșiri

Sfaturi Zigbee
CC2430 are P0_0 ~ P0_7, P1_0~P1_7, P2_0~P2_7 în total 21 porturi I/O. Acestea pot fi utilizate ca I/O digitale de uz general sau pentru conectarea IO-urilor periferice, cum ar fi ADC, timer/contor sau USART.
Există trei tipuri de registre în SFR al CC2430 care pot fi utilizate pentru a configura aceste porturi IO:
①PxSEL (x este 0/1/2): Selectarea funcției portului P0/P1/P2
PxSEL (x este 0/1/2): selectarea funcției portului P0/P1/P2 nbsp;0: IO digitală de uz general, 1: IO periferică, implicit este 0
PxDIR (x este 0/1/2): direcția portului P0/P1/P2
& nbsp;0: intrare, 1: ieșire, valoarea implicită este 0
③PxINP (x este 0/1): Mod intrare port P0/P1
 0: sus, 1: ieșire, implicit 0 nbsp;0: pull-up/down, 1: tri-state, implicit este 0
Configurarea este necesară atunci când se utilizează portul IO, dacă este implicită, atunci luați valoarea implicită a sistemului.

Apoi inițializați cele 4 LED-uri, setați-le la toate stinse:




led1 = 1; led2 = 1; led3 = 1; led4 = 1.

În cele din urmă, scrieți codul efectului de clipire a LED-urilor:






led1 = 0; //led1 clipește Delay(10); led1 = 1; Delay(10); led2




= 0; //led2 clipește Delay(10); led2 = 1; Delay(10); led3 = 0; //led3 clipește Delay(10); /





//led3 clipește Delay(10); led3 = 1; Delay(10); led4 = 0; //led4 clipește &


nbsp; Delay(10); led4 = 1; Delay(10);


Aceasta implică o subfuncție de întârziere Delay(unsigned char n):





v oid Delay(unsigned char n) { unsigned char i; unsigned int j; for(i = 0; i < n; i++) &nbsp


; for(j = 1; j; j++) ; }

(5) Prezentare generală a codului

Combinați codul de mai sus ca un întreg, după cum se arată mai jos:

//Introduceți fișierele de antet
#include //introduceți fișierul antet corespunzător CC2430 (inclusiv definiția fiecărui SFR)

// Definirea pinilor LED
#define led1 P1_0 //define LED1 pentru controlul portului P1_0
#define led2 P1_1 //define LED2 pentru controlul portului P1_1
#define led3 P1_2 //define LED3 ca P1_2 control port
#define led4 P1_3 //define LED4 pentru controlul portului P1_3 //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 ca port I/O normal
P1DIR |= 0x0F; //Set P1.0 P1.1 P1.2 P1.3 ca ieșiri

led1 = 1; //inițializare, toate cele 4 leduri stinse
led2 = 1; //inițializare, toate cele 4 led-uri stinse
led3 = 1; led4 = 1; //inițializare, toate cele 4 leduri stinse
led2 = 1; led3 = 1; led4 = 1; //inițializare, toate cele 4 leduri stinse

while(1 ) //începe ciclul
{
led1 = 0; //led1 clipește
Delay (10 ); //Delay (10 ); //Delay (10 ); //Delay (10 )
delay(10); led1 = 1; //led1 clipește
Delay (10 ).

led2 = 0; //led2 clipește
Delay (10 ); led2 = 1; //led2 clipește
led2 = 1; //led2 clipește
Delay (10 ).

led3 = 0; //led3 clipește
Delay (10 ); led3 = 1; //led3 clipește
led3 = 1; //led3 clipește
Delay (10 ).

led4 = 0; //led4 clipește
Delay (10 ); led4 = 1; //led4 clipește
led4 = 1; //led4 clipește
Delay (10 ); //Delay (10 )
}
}

OK, codul pentru acest mic experiment este scris, nu este foarte simplu ah, hehe~!

În al patrulea rând, compilarea și depanarea

Selectați Project -> Make, compilați codul, dacă reușiți, va apărea următoarea ieșire:

2011021320413789.jpg
c

Conectați dispozitivul Zigbee în ordinea Placa de dezvoltare Zigbee → Debugger → Portul USB al PC-ului , apoi selectați Project -> Debug, programul va fi descărcat automat în placa de dezvoltare.

Apoi selectați Debug -> Go pentru a porni programul și veți vedea cele 4 LED-uri clipind în succesiune! Deși acesta este un simplu nu poate fi mai simplu experimente mici, dar când am reușit să-l realizeze, sau un mic excitat ~ huh!

V. Concluzie

În această lucrare, "experimentul de clipire a luminii LED" ca bază, respectiv, de la configurarea IAR, pregătirea codului programului, precum și procesul de compilare și depanare introduce întregul proces de implementare. Următorul, va fi în înțelegerea procesului de bază al procedurilor de dezvoltare pe baza introducerii mai multor CC2430 de dezvoltare a experimentelor de bază care implică temporizatoare, comunicații seriale, conversie AD, sistem de somn și watchdog , etc., deci rămâneți pe recepție!






Anterior: [Referit] Zigbee călătorie (I): începutul lumii
Next: [Referat] Călătoria Zigbee (III): Câteva experimente de bază importante CC2430 - întreruperi externe
Rețeaua de fermieri de cod, publicat numai în procesul de practică, a întâmpinat dificultăți tehnice, nu induce în eroare pe alții.
Trebuie să vă conectați înainte de a putea posta înapoi Conectați-vă | Înregistrare

A ceastă versiune a regulilor integrale


DISCLAIMER: Toate software-ul, materialele de programare sau articolele publicate de Code Farmer sunt limitate pentru a fi utilizate numai în scopuri de învățare și cercetare; conținutul de mai sus nu trebuie să fie utilizat în scopuri comerciale sau ilegale, în caz contrar, toate consecințele vor fi suportate de utilizatorii înșiși. Informațiile de pe acest site provin din rețea, disputa privind drepturile de autor nu are nimic de-a face cu acest site. Trebuie să eliminați complet conținutul de mai sus din computerul dvs. în termen de 24 de ore de la descărcare. Dacă vă place programul, vă rugăm să sprijiniți software-ul autentic, să cumpărați înregistrarea și să obțineți servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail pentru a ne ocupa de ea.

E-mail To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

GMT+8, 2024-9-17 14:48

Răspuns rapidÎnapoi susÎnapoi la listă