| I. Продолжаем то, на чем остановились В предыдущей статье "Путешествие по Zigbee (I): начало" мы кратко познакомились с Zigbee и средой разработки. Теперь, когда инструменты готовы, возникает вопрос: как использовать программное и аппаратное обеспечение для написания программы, которую можно запустить? Эта статья, по сути, и призвана ответить на поставленный вопрос: на примере небольшого эксперимента "Мигание светодиода", как настроить IAR для разработки программ на базе CC2430, как использовать IAR для написания и отладки программы в режиме онлайн. Конфигурация IAR IAR - это мощная платформа для разработки встраиваемых систем, которая поддерживает множество видов микросхем, и каждый проект в IAR может иметь свою собственную конфигурацию, включая тип устройства, кучу/стек, линкер, отладчик и т. д. (1) Новая рабочая область и проект Прежде всего, создайте новую папку ledtest, откройте IAR, выберите главное меню File -> New -> Workspace для создания нового рабочего пространства. Выберите Project -> Create New Project -> Empty Project, нажмите OK и сохраните файл проекта в папке ledtest с именем: ledtest.ewp (как показано ниже). (2) Настройка общих параметров Настройка цели: Устройство: CC2430; Режим кодирования: Ближний; Модель данных: Large; Соглашение о вызове: Стек 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
//define led2 as P1_1 port control #define led3 P1_2 //define led3 as P1_2 port control #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 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 //определить светодиод 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 ) //start cycle { 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 мигает 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 ); //Delay (10 ) } }
Хорошо, код для этого небольшого эксперимента написан, не очень простой а, хехе~! В-четвертых, компиляция и отладка Выберите Project -> Make, скомпилируйте код, в случае успеха появится следующий вывод:
c
Подключите Zigbee-устройство в порядке Zigbee-плата разработки → Отладчик → USB-порт ПК , а затем выберите Проект -> Отладка, программа будет загружена в плату разработки автоматически. Затем выберите Debug -> Go, чтобы запустить программу, и вы увидите, как 4 светодиода мигают в последовательности! Хотя это простой не может быть более простым небольшие эксперименты, но когда мне удалось достичь его, или небольшой взволнован ~ ха! V. Заключение В этой статье, "светодиодный мигающий свет эксперимент" в качестве основы, соответственно, от конфигурации IAR, подготовка программного кода, а также компиляции и отладки процесса вводит весь процесс реализации. Следующая статья будет посвящена пониманию базового процесса разработки процедур, основанных на внедрении нескольких CC2430 разработки базовых экспериментов с участием таймеров, последовательных коммуникаций, AD преобразования, системного сна и сторожевого таймера и т.д., так что следите за новостями! |