| I. Kaldığımız yerden devam ediyoruz Bir önceki makalede , "Zigbee Yolculuğu (I): Başlangıç", Zigbee ve geliştirme ortamını kısaca tanıttık, Tamam, şimdi araçlar tamamlandığına göre, bir soru ortaya çıkıyor: çalışabilecek bir program yazmak için yazılım ve donanım nasıl kullanılır? Bu makale temel olarak yukarıdaki soruyu cevaplamak içindir: küçük bir deney örneği olarak "LED ışık yanıp sönmesi", CC2430 tabanlı programların geliştirilmesi için IAR'ın nasıl yapılandırılacağı, programı çevrimiçi yazmak ve hata ayıklamak için IAR 'ın nasıl kullanılacağı. IAR'ın Yapılandırılması IAR, birçok yonga türünü destekleyen güçlü bir gömülü geliştirme platformudur ve IAR'daki her Proje, Cihaz türü, Yığın / Yığın, Bağlayıcı, Hata Ayıklayıcı vb. dahil olmak üzere kendi yapılandırmasına sahip olabilir. (1) Yeni Çalışma Alanı ve Proje Öncelikle yeni bir ledtest klasörü oluşturun, IAR'ı açın, yeni bir çalışma alanı oluşturmak için File -> New -> Workspace ana menüsünü seçin. Proje -> Yeni Proje Oluştur -> Boş Proje'yi seçin, Tamam'a tıklayın ve proje dosyasını ledtest klasörüne kaydedin, ledtest.ewp olarak adlandırın (aşağıdaki gibi). (2) Genel Seçenekleri Yapılandırma Hedef ayarı: Cihaz: CC2430; Kod Modu: Yakın; Veri modeli: Büyük; Çağrı kuralı: XDATA yığını reetrant
Veri işaretçisi ayarı: DPTR sayısı: 1
Yığın/Heap ayarı: XDATA yığın boyutu: 0x1FF (3) Bağlayıcı ayarları Bağlayıcı komut dosyası: select lnk51ew_cc2430.xcl
(4) Hata ayıklayıcı ayarları: Sürücü: Texas Instruments (bu deney gerçek makinede hata ayıklama içindir, bu nedenle TI'yi seçin; IAR emülatörünü kullanmak için başka prosedürler varsa, isteğe bağlı Simülatör) Cihaz Açıklama dosyası: CC2430.ddf
Bu noktada, bu deney için IAR yapılandırması temelde bitmiştir, aşağıda kodlama uygulaması tanıtılacaktır. Üçüncü olarak, program kodunun hazırlanması(1) Yeni program dosyası File->New->File'ı seçin, 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'ler) adres eşlemesini tanımlayan ioCC2430.h'ye bir referans içermelidir. #include //CC2430'a karşılık gelen başlık dosyasını tanıtın (her SFR'nin tanımını içerir) Bu dosya IAR'da yerleşiktir (stdio.h'ye benzer), fareyi bu kod satırına getirin, sağ tıklayın, OPen "ioCC2430.h" yi seçin, bu başlık dosyasının tüm içeriğini görebilirsiniz. (3) LED pinlerini tanımlayın Aşağıda gösterildiği gibi geliştirme kartının devre şemasını kontrol edin:
Led1~4'ün sırasıyla P1_0~P4_0 pinleri tarafından kontrol edildiği bilinmektedir, bu nedenle led1, led2, led3, led4'ü sırasıyla P1_0, P2_0, P3_0, P4_0 pinleri olarak tanımlayabiliriz. #define led1 P1_0 //define LED1 as P1_0 port control #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 //P1_3 port kontrolü için led4 tanımlayın (4) Ana işlev Ardından, ana fonksiyonu yazmaya başlayın. Her şeyden önce, P1.0~P1.4 portlarını kullanmadan önce, iki SFR içeren çalışma modunu ve giriş/çıkış yönünü ayarlamanız gerekir: P1SEL, P1DIR. P1SEL = 0x00; //Set P1 sıradan bir I/O portu olarak P1DIR |= 0x0F; & nbsp; //Set P1.0 P1.1 P1.2 P1.3 çıkış olarak Zigbee İpuçları CC2430, P0_0 ~ P0_7, P1_0 ~ P1_7, P2_0 ~ P2_7 toplam 21 I / O portuna sahiptir. Bunlar genel amaçlı dijital I/O'lar olarak veya ADC, zamanlayıcı/sayıcı veya USART gibi çevresel IO'ları bağlamak için kullanılabilirler. CC2430'un SFR'sinde bu IO portlarını yapılandırmak için kullanılabilecek üç tip kayıt vardır: ①PxSEL (x 0/1/2'dir): P0/P1/P2 port fonksiyon seçimi PxSEL (x 0/1/2'dir): P0/P1/P2 port fonksiyon seçimi nbsp;0: genel amaçlı dijital IO, 1: çevresel IO, varsayılan değer 0'dır ② PxDIR (x 0/1/2'dir): P0/P1/P2 bağlantı noktası yönü & nbsp;0: giriş, 1: çıkış, varsayılan değer 0'dır ③PxINP (x 0/1'dir): P0/P1 port giriş modu 0: yukarı, 1: çıkış, varsayılan varsayılan 0 nbsp;0: pull-up/down, 1: tri-state, varsayılan değer 0'dır IO portu kullanılırken yapılandırma gereklidir, varsayılan ise sistem varsayılanını alın. Ardından 4 LED'i başlatın, hepsini sönük olarak ayarlayın:
led1 = 1; led2 = 1; led3 = 1; led4 = 1. Son olarak, LED yanıp 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önüyor Delay(10); led2 = 1; Delay(10); led3 = 0; //led3 yanıp sönüyor Delay(10); /
//led3 yanıp sönüyor Gecikme(10); led3 = 1; Gecikme(10); led4 = 0; //led4 yanıp sönüyor &
nbsp; Gecikme(10); led4 = 1; Gecikme(10);
Bu bir gecikme alt fonksiyonu Delay(unsigned char n) içerir:
v oid Delay(u nsigned char n) { unsigned char i; unsigned int j; for(i = 0; i < n; i++)  
; for(j = 1; j; j++) ; } (5) Koda Genel Bakış Yukarıdaki kodu aşağıda gösterildiği gibi bir bütün olarak birleştirin: //Başlık dosyalarını tanıtın #include //C2430'a karşılık gelen başlık dosyasını tanıtın (her SFR'nin tanımı dahil)
// LED pinlerini tanımlayın #define led1 P1_0 //P1_0 port kontrolü için LED1 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 //define LED4 for P1_3 port control //delay subroutine void Gecikme (unsigned char n) { işaretsiz char i. unsigned int j. for (i = 0; i < n; i++) for (j = 1; j; j++) ; }
void main (void ) { P1SEL = 0x00; //P1'i normal I/O bağlantı noktası olarak ayarlayın P1DIR |= 0x0F; //Set P1.0 P1.1 P1.2 P1.3 çıkış olarak led1 = 1; //başlangıç, 4 led ışığın tümü kapalı led2 = 1; //başlangıç, 4 ledin tümü kapalı led3 = 1; led4 = 1; //başlangıç, 4 ledin tümü kapalı led2 = 1; led3 = 1; led4 = 1; //başlangıç, 4 led ışığının tümü kapalı while(1 ) //döngüyü başlat { led1 = 0; //led1 yanıp sönüyor Gecikme (10 ); //Gecikme (10 ); //Gecikme (10 ); //Gecikme (10 ) delay(10); led1 = 1; //led1 yanıp söner Gecikme (10 ). led2 = 0; //led2 yanıp sönüyor Delay (10 ); led2 = 1; //led2 yanıp söner led2 = 1; //led2 yanıp sönüyor Gecikme (10 ). led3 = 0; //led3 yanıp sönüyor Delay (10 ); led3 = 1; //led3 yanıp söner led3 = 1; //led3 yanıp sönüyor Gecikme (10 ). led4 = 0; //led4 yanıp sönüyor Delay (10 ); led4 = 1; //led4 yanıp söner led4 = 1; //led4 yanıp sönüyor Gecikme (10 ); //Gecikme (10 ) } }
Tamam, bu küçük deney için kod yazıldı, çok basit değil ah, hehe~! Dördüncü olarak, derleme ve hata ayıklama Proje -> Yap'ı seçin, kodu derleyin, başarılı olursa aşağıdaki çıktı görünecektir:
c
Zigbee cihazını Zigbee geliştirme kartı → Hata Ayıklayıcı → PC'nin USB portu sırasına göre bağlayın ve ardından Proje -> Hata Ayıklama'yı seçin, program otomatik olarak geliştirme kartına indirilecektir. Ardından programı başlatmak için Hata Ayıklama -> Git'i seçin ve 4 LED'in sırayla yanıp söndüğünü göreceksiniz! Bu basit bir deney olmasına rağmen, daha basit küçük deneyler olamaz, ancak bunu başardığımda ya da biraz heyecanlandığımda ~ huh! V. Sonuç Bu makalede, "LED ışık yanıp sönme deneyi" temel olarak, sırasıyla, IAR'ın yapılandırılmasından, program kodunun hazırlanmasının yanı sıra derleme ve hata ayıklama süreci tüm uygulama sürecini tanıtmaktadır. Bir sonraki, zamanlayıcılar, seri iletişim, AD dönüşümü, sistem uykusu ve bekçi köpeği vb. içeren temel deneylerin birkaç CC2430 geliştirmesinin tanıtımına dayanan geliştirme prosedürlerinin temel sürecinin anlaşılmasında olacaktır, bu yüzden bizi izlemeye devam edin! |