| I. Продължаваме оттам, където спряхме В предишната статия, "Пътешествие по Zigbee (I): Началото", представихме накратко Zigbee и неговата среда за разработка, Добре, сега, когато инструментите са завършени, възниква въпросът: как да използваме софтуера и хардуера, за да напишем програма, която може да се изпълнява? Тази статия основно има за цел да отговори на горния въпрос: на "Мигане на LED светлина" като пример за малък експеримент, как да конфигурираме IAR за разработване на програми, базирани на CC2430, как да използваме IAR, за да напишем и дебъгваме програмата онлайн. Конфигуриране на IAR IAR е мощна платформа за разработка на вградени устройства, която поддържа много видове чипове, и всеки проект в IAR може да има собствена конфигурация, включително тип устройство, Heap/Stack, Linker, Debugger и др. (1) Ново работно пространство и проект На първо място, създайте нова папка ledtest, отворете IAR, изберете главното меню File (Файл) -> New (Нов) -> Workspace (Работно пространство), за да създадете ново работно пространство. Изберете Project (Проект) -> Create New Project (Създаване на нов проект) -> Empty Project (Празен проект), щракнете върху OK и запишете файла на проекта в папката ledtest, наречен така: ledtest.ewp (както е показано по-долу). (2) Конфигуриране на общите опции Целева настройка: Устройство: CC2430; Режим на кода: Близък; Модел на данните: Голям; Конвенция за извикване: стека XDATA ретранслатор
Настройка на указателя на данни: Брой DPTR: 1
Настройка на стека/списъка: размер на стека XDATA: 0x1FF (3) Настройки на свързващото устройство Команден файл на свързващото устройство: select lnk51ew_cc2430.xcl
(4) Настройки на дебъгъра: Драйвер: Texas Instruments (този експеримент за дебъгване на реалната машина, така че изберете TI; ако други процедури за използване на емулатора IAR, по избор Simulator) Устройство Файл с описание: CC2430.ddf
На този етап конфигурацията на IAR за този експеримент по същество е приключила, следва да се представи нейното изпълнение с кодиране. Трето, подготовка на програмния код(1) Нов програмен файл Изберете File->New->File (Файл->Нов файл), създайте нов файл main.c. (2) Въвеждане на заглавни файлове Програмите, базирани на CC2430, трябва да включват препратка към ioCC2430.h, който определя адресното съпоставяне на различните видове специални функционални регистри (SFR) на CC2430. #include //Въвеждане на заглавния файл, съответстващ на CC2430 (съдържа дефиниция на всеки SFR) Този файл е вграден в IAR (подобно на stdio.h), мишката до този ред код, щракнете с десния бутон на мишката, изберете OPen "ioCC2430.h", можете да видите пълното съдържание на този заглавен файл. (3) Дефинирайте изводите на светодиода Проверете електрическата схема на развойната платка, както е показано по-долу:
Известно е, че led1~4 се управляват съответно от изводите P1_0~P4_0, така че можем да дефинираме led1, led2, led3, led4 като изводи P1_0, P2_0, P3_0, P4_0 съответно. #define led1 P1_0 //дефинирайте LED1 като порт за управление P1_0 #define led2 P1_1
//дефинирайте led2 като P1_1 port control #define led3 P1_2 //дефинирайте led3 като P1_2 port control #define led4 P1_3 //дефинирайте led4 за управление на порт P1_3 (4) Основна функция След това започнете да пишете главната функция. На първо място, преди да използвате портовете P1.0~P1.4, трябва да зададете техния режим на работа и посока на вход/изход, което включва два SFRs: P1SEL, P1DIR. P1SEL = 0x00; /Задайте P1 като обикновен входно-изходен порт P1DIR |= 0x0F; & nbsp; //Set P1.0 P1.1 P1.2 P1.3 като изходи Съвети за Zigbee CC2430 има P0_0 ~ P0_7, P1_0~P1_7, P2_0~P2_7 общо 21 порта за вход/изход. Те могат да се използват като цифрови входове/изходи с общо предназначение или за свързване на периферни входно-изходни устройства, като например ADC, таймер/брояч или USART. В SFR на CC2430 има три вида регистри, които могат да се използват за конфигуриране на тези IO портове: ①PxSEL (x е 0/1/2): избор на функцията на портовете P0/P1/P2 PxSEL (x е 0/1/2): избор на функция на порт P0/P1/P2 nbsp;0: цифров IO с общо предназначение, 1: периферен IO, по подразбиране е 0 ② PxDIR (x е 0/1/2): посока на порта P0/P1/P2 & nbsp;0: вход, 1: изход, по подразбиране е 0 ③PxINP (x е 0/1): режим на вход на порт P0/P1 0: нагоре, 1: изход, по подразбиране е 0 nbsp;0: издърпване надолу/нагоре, 1: трисъставно състояние, по подразбиране е 0 Конфигурацията е необходима, когато се използва портът IO, ако е по подразбиране, тогава вземете системата по подразбиране. След това инициализирайте 4-те светодиода, задайте им всички стойности:
led1 = 1; led2 = 1; led3 = 1; led4 = 1. Накрая напишете кода за ефекта на мигане на светодиодите:
led1 = 0; //led1 мига Delay(10); led1 = 1; Delay(10); led2
= 0; //led2 мига Delay(10); led2 = 1; Delay(10); led3 = 0; //led3 мига Delay(10); /
//led3 мига Delay(10); led3 = 1; Delay(10); led4 = 0; //led4 мига &
nbsp; Delay(10); led4 = 1; Delay(10);
Това включва подфункция за забавяне 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) Преглед на кода Комбинирайте горния код като цяло, както е показано по-долу: //Въвеждане на заглавните файлове #include //въведете заглавния файл, съответстващ на CC2430 (включително дефиницията на всеки SFR)
// Дефинирайте изводите на светодиода #define led1 P1_0 //дефинирайте LED1 за управление на порт P1_0 #define led2 P1_1 //дефинирайте LED2 за управление на порт P1_1 #define led3 P1_2 //дефинирайте LED3 за управление на порт P1_2 #define led4 P1_3 //define LED4 за управление на порт P1_3 //подпрограма за забавяне 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; /Задайте P1 като нормален входно-изходен порт P1DIR |= 0x0F; /Задайте P1.0 P1.1 P1.2 P1.3 като изходи led1 = 1; //инициализация, всички 4 светодиода са изключени led2 = 1; //инициализация, всички 4 светодиода са изключени led3 = 1; led4 = 1; //инициализация, всички 4 светодиода са изключени led2 = 1; led3 = 1; led4 = 1; //инициализация, всички 4 светодиода са изключени while(1) //започва цикъл { led1 = 0; //led1 мига Забавяне (10); //Забавяне (10); //Забавяне (10 ); //Забавяне (10) delay(10); led1 = 1; //led1 мига Delay (10 ). led2 = 0; //led2 мига Delay (10 ); led2 = 1; //led2 мига led2 = 1; //led2 мига Забавяне (10). led3 = 0; //led3 мига Delay (10 ); led3 = 1; //led3 мига led3 = 1; //led3 мига Забавяне (10). led4 = 0; //led4 мига Delay (10 ); led4 = 1; //led4 мига led4 = 1; //led4 мига Delay (10 ); //Delay (10 ) } }
Добре, кодът за този малък експеримент е написан, не е много прост ах, хехе~! Четвърто, компилиране и отстраняване на грешки Изберете Project -> Make, компилирайте кода, ако е успешен, ще се появи следният изход:
c
Свържете устройството Zigbee в реда Zigbee развойна платка → Debugger → USB порт на компютъра и след това изберете Project -> Debug, програмата ще бъде изтеглена в развойната платка автоматично. След това изберете Debug -> Go, за да стартирате програмата, и ще видите как 4-те светодиода мигат последователно! Въпреки че това е просто не може да бъде по-прости малки експерименти, но когато успях да го постигне, или малък развълнуван ~ Huh! V. Заключение В тази статия "експериментът с мигащата светлина на светодиодите" като основа, съответно от конфигурацията на IAR, подготовката на програмния код, както и процеса на компилиране и отстраняване на грешки, представя целия процес на изпълнение. Следващата, тя ще бъде в разбирането на основния процес на процедурите за разработване на базата на въвеждането на няколко CC2430 развитие на основни експерименти, включващи таймери, серийни комуникации, AD преобразуване, система сън и watchdog , и т.н., така че останете на линия! |