|
1. Üst ve alt katların birbirine bağlanması Önceki makaledeZigbee Yolculuğu (1): Zemini Açmak, Zigbee ve geliştirme ortamını kısaca tanıtıyoruz. Tamam, araçlar tamamlandığında bir soru ortaya çıkıyor: bu yazılım ve donanımları çalıştırabilecek bir program için nasıl kullanılır? Bu makale temelde yukarıdaki soruları yanıtlamak içindir: "LED ışık yanıbıştırma" adlı küçük deneyi örnek olarak incelenerek IAR'nin CC2430 tabanlı programlar geliştirmeye uygun şekilde nasıl yapılandırılacağını ve nasıl kullanılacağını tanıtınIARProgramları çevrimiçi yazın ve hata ayıklayın. 2. IAR yapılandırması IAR, çok çeşitli çipleri destekleyen güçlü bir gömülü geliştirme platformudur. IAR'deki her projenin cihaz türü, yığın/yığın, linker, hata ayıklayıcı vb. dahil olmak üzere kendi yapılandırması olabilir. (1) Yeni bir Çalışma Alanı ve Proje Oluşturun Öncelikle, yeni bir klasör ledtesti oluşturun. IAR'ı açın ve ana menüden File -> Yeni -> Çalışma Alanı seçeneğini seçerek yeni bir çalışma alanı oluşturun. Project -> Create New Project -> Empty Project seçeneğini seçin, OK'ye tıklayın ve proje dosyasını ledtest.ewp adlı klasöre kaydedin (aşağıda gösterildiği gibi).
(2) Genel Seçenekleri Yapılandırmak Hedef belirleme: Cihaz: CC2430; Kod Modu: Yakın; Veri modeli:Büyük; Convention:XDATA stack reetrant çağrısı
Veri işaretçisi ayarı: DPTR sayısı: 1
Yığın/Yığın ayarı: XDATA yığın boyutu: 0x1FF
(3) Linker ayarları Linker komut dosyası: lnk51ew_cc2430.xcl seçin
(4) Hata ayıklayıcı ayarları: Sürücü: Texas Instruments (Bu deney gerçek bir makine hata ayıklamasıdır, bu yüzden TI'yi seçin; Başka programlar IAR simülatörü kullanmak isterse, Simulator'u seçebilirsiniz) Cihaz Açıklama dosyası:CC2430.ddf
Bu noktada, bu deney için IAR yapılandırması temelde sona ermiş ve aşağıda kodlama uygulamasına giriş verilmiştir. 3. Program kodu yazmak(1) Yeni bir prosedürel belge oluşturun File->New->File seçin ve yeni bir main.c dosyası oluşturun. (2) Başlık dosyalarını tanıtın CC2430 tabanlı programlar, CC2430'un çeşitli özel fonksiyon kayıtlarının (SFR) adres eşlemesini tanımlayan ioCC2430.h referansı içermelidir. #include //引入CC2430所对应的头文件(包含各SFR的定义)
Bu dosya IAR'ye entegre edilmiştir (stdio.h'ye benzer), bu kod satırının üzerine gelin, sağ tıklayın, seçinOPen "ioCC2430.h"Bu başlık dosyasının tam içeriğini görmek için. (3) LED pinlerini tanımlayın Geliştirme kartı devre diyagramını aşağıdaki şekilde inceleyin:
LED1~4'ün sırasıyla P1_0~P4_0 pinlerle kontrol edildiği görülebilir; bu nedenle LED1, LED2, LED3 ve LED4 sırasıyla P1_0, P2_0, P3_0 ve P4_0 pinleri olarak tanımlanabilir. #define LED1 P1_0 // LED1'i P1_0 port kontrolü olarak tanımlayın #define LED2 P1_1 // LED2'yi P1_1 port kontrolü olarak tanımlayın #define LED3 P1_2 // LED3'ü P1_2 port kontrolü olarak tanımlayın #define LED4 P1_3 // LED4'ü P1_3 port kontrolü olarak tanımlayın
(4) Ana işlev Sonra, ana fonksiyonu yazmaya başlayın. Öncelikle, P1.0~P1.4 portunu kullanmadan önce, çalışma modunu ve giriş/çıkış yönünü ayarlamak gerekir; bu iki SFR içerir: P1SEL ve P1DIR. P1SEL = 0x00; P1'i normal I/O portuna ayarla P1DIR |= 0x0F; Çıkış olarak P1.0, P1.1, P1.2, P1.3'ü ayarlayın
Zigbee Uçları CC2430'da şunlar vardır:P0_0 ~ P0_7 , P1_0~P1_7 , P2_0~P2_7Toplamda 21 G/O portu var. Genel amaçlı dijital G/Ç olarak kullanılabilirler veya ADC, zamanlama/sayaç veya USART gibi çevresel işletim sistemlerini bağlamak için kullanılabilirler. CC2430'un SFR'sinde bu IO portlarını yapılandırmak için kullanılabilecek üç kayıt sınıfı vardır: (1)PxSEL(x 0/1/2'dir) :P 0/P1/P2 port fonksiyon seçimi 0: Evrensel sayısal IO, 1: Çevresel IO, varsayılan 0'dır (2)PxDIR(x 0/1/2'dir) :P 0/P1/P2 port yönü 0: giriş, 1: çıkış, varsayılan 0 (3)PxINP(x 0/1'dir) :P 0/P1 port giriş modu 0: Yukarı/aşağı çek, 1: Üç durum, varsayılan 0 IO portu kullanılırken yapılandırılması gerekir ve varsayılan ise, sistemin varsayılan değeri alınır. Sonra 4 LED'i başlatın ve hepsini söndürmeye ayarlayın: led1 = 1; led2 = 1; led3 = 1; led4 = 1;
Son olarak, LED ışık yanıb-sönme efekt kodunu yazın: led1 = 0; LED1 yanıp sönüyor Delay(10); led1 = 1; Delay(10);
led2 = 0; LED2 yanıp söner Delay(10); led2 = 1; Delay(10);
led3 = 0; LED3 yanıp sönüyor Delay(10); led3 = 1; Delay(10);
led4 = 0; LED4 yanıp sönüyor Delay(10); led4 = 1; Delay(10);
Bu, gecikme alt fonksiyonu olan Delay(işaretsiz karakter n) içerir: void Delay (işaretsiz karakter n) { imzasız Char I; imzasız int j; for(i = 0; I < n; i++) for(j = 1; j; j++) ; }
(5) Kod genel görünümü Yukarıdaki kodu aşağıdaki gibi tek bir bütüne birleştirin: //引入头文件
#include //引入CC2430所对应的头文件(包含各SFR的定义)
//定义LED引脚
#define lead1 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口控制 //延时子程序
VoidGecikme(imzasız charn) {
imzasız chari;
imzasız intj;
için(i =0; I < n; i++)
için(j =1; j; j++) ;
}
Voidmain(Void)
{ P1SEL =0x00; P1'i normal I/O portuna ayarla P1DIR |=0x0F; Çıkış olarak P1.0, P1.1, P1.2, P1.3'ü ayarlayın
led1 =1; //初始化,4个led灯全熄 led2 =1; led3 =1; led4 =1;
while(1) //开始循环 { led1 =0; //led1闪烁 Gecikme(10); led1 =1; Gecikme(10);
led2 =0; //led2闪烁 Gecikme(10); led2 =1; Gecikme(10);
led3 =0; //led3闪烁 Gecikme(10); led3 =1; Gecikme(10);
led4 =0; //led4闪烁 Gecikme(10); led4 =1; Gecikme(10); }
}
Tamam, bu küçük deneyin kodu yazıldı, çok basit değil mi, hehe~ 4. Derleme ve hata ayıklama Project -> Make seçeneğini seçin, kodu derleyin ve başarılı olursa aşağıdaki çıktı görünecektir:
BasınZigbee Geliştirme Kartı → PC için USB arayüzü → hata ayıklayıcıve ardından Project -> Debug'u seçin, program otomatik olarak anakarta indirilir. Sonra Debug -> Programı başlatmak için git seçeneğini seç, sırayla 4 LED ışığın yanıp söndüğünü göreceksiniz! Bu küçük bir deney ve basit olamayacak kadar basit olsa da, yazar bunu başarıyla gerçekleştirdiğinde yine de biraz heyecanlıydım~ hehe! 5. Sonuç "LED ışık yanıb-sönme deneyi"ne dayanan bu makale, IAR'ın yapılandırmasından program kodunun yazılmasına, derleme ve hata ayıklama sürecine kadar tüm uygulama sürecini tanıtmaktadır. Bir sonraki makalede, programın temel geliştirme sürecini anlamaya dayanarak, CC2430 geliştirme için birkaç temel deneyi tanıtacağızZamanlayıcı、Seri iletişim、AD Dönüşümü、Sistematik uyku ve gözetmen köpeklerivb., o yüzden takipte kalın!
|