架构师_程序员_码农网

K Parolayı al
Kayıt Olun

QQ登录

Başlamak için sadece bir adım

Arama
架构师_程序员_码农网 "架构师 ' 管理专区&Yönetim Alanı ' Şikayetler ve Öneriler ' 回收站 ' 【转】Zigbee之旅(二):第一个CC2430程序-- . -LED'ler yanıp sönüyor ...
Görüntüleme:6245|Yanıt: 0
打印 上一主题 下一主题

Zigbee Yolculuğu (II): İlk CC2430 programı - LED yanıp sönme deneyi

[Bağlantıyı kopyala]
D 跳转到指定楼层
bina sahibi
发表于 2014-10-30 23:15:39|只看该作者回帖奖励|TersGözat|Okuma Modu
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++) &nbsp


; 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:

2011021320413789.jpg
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!






Önceki: [Referans] Zigbee yolculuğu (I): dünyanın başlangıcı
Sonraki: [Rapor]Zigbee Yolculuğu (III): Birkaç önemli CC2430 temel deneyi - harici kesmeler
Çiftçi ağı kodu, sadece uygulama sürecinde yayınlandı, teknik zorluklarla karşılaştı, başkalarını yanıltmayın.
Geri gönderi yapabilmeniz için giriş yapmanız gerekmektedir Giriş Yap | Kayıt Ol

İntegral kurallarının bu versiyonu


YASAL UYARI: Code Farmer tarafından yayınlanan tüm yazılım, programlama materyalleri veya makaleler sadece öğrenme ve araştırma amaçlı kullanılmak üzere sınırlandırılmıştır; yukarıdaki içerikler ticari veya yasadışı amaçlarla kullanılamaz, aksi takdirde tüm sonuçlar kullanıcıların kendileri tarafından karşılanacaktır. Bu site bilgileri ağdan alınmıştır, telif hakkı anlaşmazlığının bu site ile hiçbir ilgisi yoktur. Yukarıdaki içeriği indirdikten sonraki 24 saat içinde bilgisayarınızdan tamamen kaldırmalısınız. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kaydı satın alın ve daha iyi orijinal hizmet alın. Herhangi bir ihlal varsa, bununla ilgilenmek için lütfen bizimle e-posta yoluyla iletişime geçin.

Posta To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

GMT+8, 2024-9-17 14:48

Hızlı YanıtBaşadön Listeye dön