|
1. Połączenie górnego i dolnego poziomu W poprzednim artykulePodróż Zigbee (1): Przełamywanie podstaw, krótko przedstawiamy Zigbee i jego środowisko rozwojowe. OK, skoro narzędzia są już gotowe, pojawia się pytanie: jak użyć tego oprogramowania i sprzętu, aby napisać program, który będzie działał? Ten artykuł ma zasadniczo odpowiedzieć na powyższe pytania: Weźmy mały eksperyment z "miganiem światła LED" jako przykład, aby pokazać, jak skonfigurować IAR odpowiedni do tworzenia programów opartych na CC2430 oraz jak go używaćIARPisz i debuguj programy online. 2. Konfiguracja IAR IAR to potężna platforma do tworzenia wbudowanych systemów rozwojowych, która obsługuje szeroką gamę układów scalonych. Każdy projekt w IAR może mieć własną konfigurację, obejmującą typ urządzenia, stos/stos, linker, debugger itd. (1) Utworzenie nowej przestrzeni roboczej i projektu Najpierw stwórz nowy folder ledtest. Otwórz IAR i wybierz główne menu Plik -> Nowy -> Workspace, aby utworzyć nową przestrzeń roboczą. Wybierz Projekt -> Utwórz nowy projekt -> Pusty projekt, kliknij OK i zapisz plik projektu do folderu ledtest, nazwanego ledtest.ewp (jak pokazano poniżej).
(2) Konfiguruj opcje ogólne Ustawienie celu: Urządzenie: CC2430; Tryb kodu: Blisko; Model danych: Duży; Wywoływanie konwencji:XDATA stack reetrant
Ustawienie wskaźnika danych: Liczba DPTR: 1
Ustawienia stosu/kopca: Rozmiar stosu XDATA: 0x1FF
(3) Ustawienia linkera Plik poleceń linker: Wybierz lnk51ew_cc2430.xcl
(4) Ustawienia debugera: Sterownik: Texas Instruments (Ten eksperyment to prawdziwe debugowanie maszynowe, więc wybierz TI; Jeśli inne programy chcą korzystać z symulatora IAR, możesz wybrać Simulator) Plik opisu urządzenia: CC2430.ddf
W tym momencie konfiguracja IAR dla tego eksperymentu jest praktycznie zakończona, a poniżej przedstawiono wprowadzenie do implementacji kodowania. 3. Pisanie kodu programu(1) Utworzenie nowego dokumentu proceduralnego Wybierz File->New->File i utwórz nowy plik main.c. (2) Wprowadzenie plików nagłówków Programy oparte na CC2430 muszą zawierać odniesienie do ioCC2430.h, które definiuje mapowanie adresów różnych specjalnych rejestrów funkcji (SFR) CC2430. #include //引入CC2430所对应的头文件(包含各SFR的定义)
Ten plik jest wbudowany w IAR (podobnie jak stdio.h), najedź kursorem na tę linię kodu, kliknij prawym przyciskiem, wybierzOPen "ioCC2430.h"aby zobaczyć pełną zawartość tego pliku nagłówka. (3) Zdefiniuj piny LED Zobacz schemat obwodu płyty rozwojowej w następujący sposób:
Widać, że LED1~4 jest sterowany odpowiednio przez piny P1_0~P4_0, więc LED1, LED2, LED3 i LED4 można zdefiniować jako piny P1_0, P2_0, P3_0 i P4_0 odpowiednio. #define LED1 P1_0 // Zdefiniuj LED1 jako kontrolę portu P1_0 #define LED2 P1_1 // Zdefiniuj LED2 jako P1_1 sterowanie portem #define LED3 P1_2 // Zdefiniuj LED3 jako P1_2 kontrolę portów #define LED4 P1_3 // Zdefiniuj LED4 jako P1_3 sterowanie portem
(4) Główna funkcja Następnie zacznij pisać główną funkcję. Przede wszystkim, przed użyciem portu P1.0~P1.4, należy ustawić tryb pracy oraz kierunku wejścia/wyjścia, który obejmuje dwa SFR: P1SEL i P1DIR. P1SEL = 0x00; Ustaw P1 na normalny port I/O P1DIR |= 0x0F; Ustaw P1.0, P1.1, P1.2, P1.3 jako wyjście
Porady Zigbee CC2430 posiada:P0_0 ~ P0_7 , P1_0~P1_7 , P2_0~P2_7Łącznie 21 portów I/O. Mogą być używane jako uniwersalne cyfrowe I/O lub do łączenia peryferyjnych IO, takich jak ADC, liczniki czasowe lub USART. W SFR CC2430 istnieją trzy klasy rejestrów, które można wykorzystać do konfiguracji tych portów IO: (1)PxSEL(x to 0/1/2) :P wybór funkcji portu 0/P1/P2 0: Uniwersalny numeryczny IO, 1: Peripheral IO, domyślnie 0 (2)PxDIR(x to 0/1/2) :P kierunku portów 0/P1/P2 0: wejście, 1: wyjście, domyślnie 0 (3)PxINP(x to 0/1) :P tryb wejścia portu 0/P1 0: Podciągnij/pociągnij w dół, 1: Trzy stany, domyślnie 0 Trzeba go skonfigurować podczas korzystania z portu IO, a jeśli jest domyślny, przyjmuje się domyślną wartość systemu. Następnie inicjalizuj 4 diody LED i ustaw je na gaśnięcie: led1 = 1; led2 = 1; LED3 = 1; led4 = 1;
Na koniec zapisz kod efektu światła LED: led1 = 0; Błyski LED1 Delay(10); led1 = 1; Delay(10);
led2 = 0; Błyski LED2 Delay(10); led2 = 1; Delay(10);
led3 = 0; LED3 Delay(10); LED3 = 1; Delay(10);
led4 = 0; LED4 Delay(10); led4 = 1; Delay(10);
Dotyczy podfunkcji opóźnienia Delay(znak unsigned znak: n): void Delay(niepodpisany znak n) { niepodpisany char i; nieznakomitym int j; dla(i = 0; I < n; i++) for(j = 1; j; j++) ; }
(5) Przegląd kodeksu Połącz powyższy kod w jedną całość, w następujący sposób: //引入头文件
#include //引入CC2430所对应的头文件(包含各SFR的定义)
//定义LED引脚
#define prowadził1 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口控制 //延时子程序
pustkaOpóźnienie(Niepodpisany charn) {
Niepodpisany chari;
Niepodpisany intj;
dla(i =0; I < n; i++)
dla(j =1; j; j++) ;
}
pustkamain(pustka)
{ P1SEL =0x00; Ustaw P1 na normalny port I/O P1DIR |=0x0F; Ustaw P1.0, P1.1, P1.2, P1.3 jako wyjście
led1 =1; //初始化,4个led灯全熄 led2 =1; led3 =1; led4 =1;
podczas gdy(1) //开始循环 { led1 =0; //led1闪烁 Opóźnienie(10); led1 =1; Opóźnienie(10);
led2 =0; //led2闪烁 Opóźnienie(10); led2 =1; Opóźnienie(10);
led3 =0; //led3闪烁 Opóźnienie(10); led3 =1; Opóźnienie(10);
led4 =0; //led4闪烁 Opóźnienie(10); led4 =1; Opóźnienie(10); }
}
OK, kod do tego małego eksperymentu został napisany, czyż nie jest bardzo prosty, hehe~ 4. Kompilacja i debugowanie Wybierz Projekt -> Stwórz, skompiluj kod i jeśli się powiedzie, pojawi się następujący wynik:
PrasaZigbee Development Board → Debugger → interfejs USB dla PCa następnie wybierz Projekt -> Debug, a program zostanie automatycznie pobrany na tablicę. Następnie wybierz Debug -> Przejdź do uruchomienia programu i zobaczysz 4 diody LED po drodze! Chociaż to mały eksperyment, zbyt prosty, by był prosty, gdy autor skutecznie go zrealizował, byłem trochę podekscytowany~ hehe! 5. Podsumowanie Opierając się na "eksperymencie z miganiem światła LED", artykuł ten wprowadza cały proces implementacji, od konfiguracji IAR, przez pisanie kodu programowego, aż po proces kompilacji i debugowania. W kolejnym artykule, opierając się na zrozumieniu podstawowego procesu tworzenia programu, przedstawimy kilka podstawowych eksperymentów dotyczących rozwoju CC2430Timer、Komunikacja szeregowa、Przejście na AD、Systematyczny sen oraz psy strażniczeitd., więc bądźcie czujni!
|