| I. Продовження з того місця, на якому ми зупинилися У попередній статті , "Подорож по Zigbee (I): Початок", ми коротко представили Zigbee і його середовище розробки, добре, тепер, коли інструменти завершені, виникає питання: як використовувати програмне і апаратне забезпечення для написання програми, яка може працювати? Ця стаття в основному відповідає на вищезазначене питання: як "блимає світлодіод" як приклад невеликого експерименту, як налаштувати IAR для розробки програм на базі CC2430, як використовувати IAR для написання та налагодження програми в режимі он-лайн. Конфігурація IAR IAR - це потужна вбудована платформа для розробки, яка підтримує багато типів мікросхем, і кожен проект в IAR може мати власну конфігурацію, включаючи тип пристрою, купу/стек, лінкер, відладчик і т.д. (1) Нова робоча область і проект Перш за все, створіть нову теку ledtest, відкрийте IAR, виберіть головне меню File -> New -> Workspace, щоб створити нову робочу область. Виберіть Проект -> Створити новий проект -> Порожній проект, натисніть ОК і збережіть файл проекту в папці ledtest з назвою: ledtest.ewp (як показано нижче). (2) Налаштування загальних параметрів Налаштування цілі: Пристрій: CC2430; Режим коду: Близький; Модель даних: Велика; Угода про виклик: стек XDATA reetrant
Налаштування вказівника даних: Кількість DPTR: 1
Налаштування стеку/купки: розмір стеку XDATA: 0x1FF (3) Налаштування лінкера Командний файл лінкера: вибрати 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 #define led3 P1_2 //визначити led3 як керування портом P1_2 #define led4 P1_3 //визначити led4 для керування портом P1_3 (4) Головна функція Далі приступаємо до написання головної функції. Перш за все, перед використанням портів P1.0~P1.4 необхідно встановити режим їх роботи та напрямок вводу/виводу, для чого використовуються два SFR: P1SEL, P1DIR. P1SEL = 0x00; //Встановити P1 як звичайний порт вводу/виводу P1DIR |= 0x0F; & nbsp; //Встановити P1.0 P1.1 P1.2 P1.3 як виходи Поради щодо Zigbee CC2430 має P0_0 ~ P0_7, P1_0~P1_7, P2_0~P2_7, загалом 21 порт вводу/виводу. Їх можна використовувати як універсальні цифрові входи/виходи або для підключення периферійних входів/виходів, таких як АЦП, таймер/лічильник або USART. В SFR CC2430 є три типи регістрів, які можна використовувати для конфігурації цих портів вводу-виводу: ①PxSEL (x дорівнює 0/1/2): вибір функції порту P0/P1/P2 PxSEL (x дорівнює 0/1/2): вибір функції порту P0/P1/P2 nbsp;0: цифровий ввід/вивід загального призначення, 1: периферійний ввід/вивід, за замовчуванням - 0 ② PxDIR (x = 0/1/2): напрямок порту P0/P1/P2 & nbsp;0: вхід, 1: вихід, за замовчуванням 0 PxINP (x = 0/1): режим входу портів P0/P1 nbsp;0: вгору, 1: вниз, за замовчуванням за замовчуванням 0 nbsp;0: підтягування/опускання, 1: тристан, за замовчуванням - 0 Конфігурація потрібна при використанні порту вводу-виводу, якщо за замовчуванням, то прийміть значення за замовчуванням системи. Потім ініціалізуйте 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 блимає &
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 //визначити світлодіод 2 для керування портом P1_1 #define led3 P1_2 //визначити світлодіод 3 для керування портом P1_2 #define led4 P1_3 //визначити світлодіод 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 блимає Delay (10 ); //Затримка (10 ); //Затримка (10 ); //Затримка (10 ) delay(10); led1 = 1; //led1 блимає Delay (10 ). led2 = 0; //led2 блимає Delay (10 ); led2 = 1; //led2 блимає led2 = 1; //led2 блимає Delay (10 ). led3 = 0; //led3 блимає Delay (10 ); led3 = 1; //led3 блимає led3 = 1; //led3 блимає Delay (10 ). led4 = 0; //світлодіод led4 блимає Delay (10 ); led4 = 1; //led4 блимає led4 = 1; //led4 блимає Delay (10 ); //Затримка (10 ) } }
Гаразд, код для цього невеликого експерименту написаний, не дуже-то він простий, ага, хе-хе~! По-четверте, компіляція та налагодження Вибираємо Project -> Make, компілюємо код, в разі успіху з'явиться наступний вивід:
c
Підключіть Zigbee-пристрій в порядку: Zigbee-платформа → Налагоджувач → USB-порт ПК , а потім виберіть Проект -> Налагодження, програма буде завантажена на платформу автоматично. Потім виберіть Debug -> Go, щоб запустити програму, і ви побачите, що 4 світлодіоди блимають послідовно! Хоч це і простий не може бути більш простий невеликий експеримент, але коли мені вдавалося досягти його, або невеликого збудження ~ ха! V. Висновок В даній роботі на прикладі "експерименту з миготінням світлодіодів", як основи, відповідно з конфігурації ІАР, підготовки програмного коду, а також процесу компіляції та налагодження, було представлено весь процес реалізації. Наступна стаття буде присвячена розумінню базового процесу розробки на основі впровадження декількох базових експериментів з CC2430, що включають таймери, послідовний зв'язок, перетворення АЦП, сплячий режим системи та сторожовий тай мер і т.д., тому слідкуйте за нашими новинами! |