Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 9158|Yanıt: 0

Zigbee Journey (2): İlk CC2430 programı - LED ışık yanıp sönme deneyi

[Bağlantıyı kopyala]
Yayınlandı 30.10.2014 23:15:39 | | | |
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şimAD DönüşümüSistematik uyku ve gözetmen köpeklerivb., o yüzden takipte kalın!






Önceki:Zigbee Yolculuğu (1): Zemini Açmak
Önümüzdeki:Zigbee Yolculuğu (3): Birkaç önemli CC2430 temel deneyi - dış kesinti
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com