Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 9158|Jawab: 0

Zigbee Journey (2): Program CC2430 pertama - eksperimen berkedip lampu LED

[Salin tautan]
Diposting pada 30/10/2014 23.15.39 | | | |
1. Menghubungkan tingkat atas dan bawah

     Pada artikel sebelumnyaPerjalanan Zigbee (1): Mendobrak Tanah, kami memperkenalkan secara singkat Zigbee dan lingkungan pengembangannya. Oke, sekarang setelah alatnya selesai, muncul pertanyaan: bagaimana cara menggunakan perangkat lunak dan perangkat keras ini untuk menulis program yang dapat dijalankan?

     Artikel ini pada dasarnya untuk menjawab pertanyaan-pertanyaan di atas: Ambil percobaan kecil "lampu LED berkedip" sebagai contoh untuk memperkenalkan cara mengkonfigurasi IAR agar cocok untuk mengembangkan program berbasis CC2430, dan cara menggunakannyaIARTulis dan debug program online.

2. Konfigurasi IAR

     IAR adalah platform pengembangan tertanam yang kuat yang mendukung berbagai macam chip. Setiap proyek di IAR dapat memiliki konfigurasinya sendiri, termasuk jenis perangkat, tumpukan/tumpukan, linker, debugger, dll.

(1) Membuat Ruang Kerja dan Proyek baru

     Pertama, buat folder baru ledtest. Buka IAR dan pilih menu utama File -> New -> Workspace untuk membuat ruang kerja baru.

     Pilih Project -> Create New Project -> Empty Project, klik OK, dan simpan file project ke folder ledtest, bernama ledtest.ewp (seperti yang ditunjukkan di bawah).

(2) Konfigurasikan Opsi Umum

       Pengaturan target: Perangkat: CC2430;

                         Mode Kode: Dekat;

                         Model data: Besar;

                         Memanggil konvensi:XDATA stack reetrant

     Pengaturan penunjuk data: Jumlah DPTR: 1

     Pengaturan tumpukan/tumpukan: Ukuran tumpukan XDATA: 0x1FF

(3) Pengaturan penghubung

     File perintah linker: Pilih lnk51ew_cc2430.xcl

(4) Pengaturan debugger:

     Driver: Texas Instruments (Eksperimen ini adalah debugging mesin nyata, jadi pilih TI; Jika program lain ingin menggunakan simulator IAR, Anda dapat memilih Simulator)
     File Deskripsi Perangkat:CC2430.ddf

      Pada titik ini, konfigurasi IAR untuk eksperimen ini pada dasarnya telah berakhir, dan berikut ini adalah pengantar implementasi pengkodeannya.

3. Menulis kode program(1) Membuat dokumen prosedural baru

      Pilih File->New->File dan buat file baru main.c.

(2) Perkenalkan file header

      Program berbasis CC2430 harus menyertakan referensi ke ioCC2430.h, yang mendefinisikan pemetaan alamat dari berbagai register fungsi khusus (SFR) CC2430.

#include         //引入CC2430所对应的头文件(包含各SFR的定义)

      File ini dibangun ke dalam IAR (mirip dengan stdio.h), arahkan kursor ke baris kode ini, klik kanan, pilihOPen "ioCC2430.h"untuk melihat konten lengkap file header ini.

(3) Tentukan pin LED

     Lihat diagram sirkuit papan pengembangan sebagai berikut:

     Dapat dilihat bahwa LED1~4 dikendalikan oleh pin masing-masing P1_0~P4_0, sehingga LED1, LED2, LED3, dan LED4 masing-masing dapat didefinisikan sebagai pin P1_0, P2_0, P3_0, dan P4_0.

#define LED1 P1_0 // Tentukan LED1 sebagai kontrol port P1_0
#define LED2 P1_1 // Tentukan LED2 sebagai kontrol port P1_1
#define LED3 P1_2 // Tentukan LED3 sebagai kontrol port P1_2
#define LED4 P1_3 // Tentukan LED4 sebagai kontrol port P1_3

(4) Fungsi utama

     Selanjutnya, mulailah menulis fungsi utama.

     Pertama-tama, sebelum menggunakan port P1.0 ~ P1.4, perlu untuk mengatur mode kerja dan arah input/output, yang melibatkan dua SFR: P1SEL dan P1DIR.

  P1SEL = 0x00;          Atur P1 ke port I/O normal
  P1DIR |= 0x0F;          Atur P1.0, P1.1, P1.2, P1.3 sebagai output

Zigbee Tips
CC2430 memiliki:P0_0 ~ P0_7 , P1_0~P1_7 , P2_0~P2_7Sebanyak 21 port I/O. Mereka dapat digunakan sebagai I/O digital tujuan umum atau dapat digunakan untuk menghubungkan IO periferal seperti ADC, waktu/penghitung, atau USART.
Ada tiga kelas register di SFR CC2430 yang dapat digunakan untuk mengonfigurasi port IO ini:
(1)PxSEL(x adalah 0/1/2) :P pemilihan fungsi port 0/P1/P2
                                0: IO numerik universal, 1: IO periferal, defaultnya adalah 0
(2)PxDIR(x adalah 0/1/2) :P arah port 0/P1/P2
                                0: masukan, 1: keluaran, defaultnya adalah 0
(3)PxINP(x adalah 0/1) :P mode input port 0/P1
                                0: Tarik ke atas/tarik ke bawah, 1: Tiga status, defaultnya adalah 0
Itu perlu dikonfigurasi saat menggunakan port IO, dan jika default, nilai default sistem diambil.

     Kemudian inisialisasi 4 LED dan atur ke semua padam:

  led1 = 1;   
  led2 = 1;
  led3 = 1;
  led4 = 1;

     Terakhir, tulis kode efek berkedip lampu LED:

    led1 = 0;  LED1 berkedip
    Penundaan(10);
    led1 = 1;
    Penundaan(10);
   
    led2 = 0;  LED2 berkedip
    Penundaan(10);
    led2 = 1;
    Penundaan(10);
   
    led3 = 0;  LED3 berkedip
    Penundaan(10);
    led3 = 1;
    Penundaan(10);
   
    led4 = 0;  LED4 berkedip
    Penundaan(10);
    led4 = 1;
    Penundaan(10);


     Ini melibatkan subfungsi penundaan Penundaan (karakter tidak ditandatangani n):

void Delay(char n)  {
  char i yang tidak ditandatangani;
  tidak ditandatangani int j;
  for(i = 0; saya < n; i++)
    untuk(j = 1; j; j++)
    ;
}   


(5) Ikhtisar kode

      Gabungkan kode di atas menjadi satu keseluruhan, sebagai berikut:

//引入头文件
#include         //引入CC2430所对应的头文件(包含各SFR的定义)

//定义LED引脚
#define led1 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口控制 //延时子程序
kosongPenundaan(tidak ditandatangani arangn)  {
  tidak ditandatangani arangi;
  tidak ditandatangani intj;
  untuk(i =0; saya < n; i++)
    untuk(j =1; j; j++)
    ;
}

kosongutama(kosong)
{
  P1SEL =0x00;         Atur P1 ke port I/O normal
  P1DIR |=0x0F;         Atur P1.0, P1.1, P1.2, P1.3 sebagai output
  
  led1 =1;   //初始化,4个led灯全熄
  led2 =1;
  led3 =1;
  led4 =1;
  
  sementara(1)     //开始循环
  {
    led1 =0;  //led1闪烁
    Penundaan(10);
    led1 =1;
    Penundaan(10);
   
    led2 =0;  //led2闪烁
    Penundaan(10);
    led2 =1;
    Penundaan(10);
   
    led3 =0;  //led3闪烁
    Penundaan(10);
    led3 =1;
    Penundaan(10);
   
    led4 =0;  //led4闪烁
    Penundaan(10);
    led4 =1;
    Penundaan(10);
  }
}

     Oke, kode untuk eksperimen kecil ini sudah ditulis, bukankah itu sangat sederhana, hehe ~

4. Kompilasi dan debugging

     Pilih Project -> Make, kompilasi kode, dan jika berhasil, output berikut akan muncul:

     TekanPapan Pengembangan Zigbee → Debugger → antarmuka USB untuk PClalu pilih Project -> Debug, dan program akan secara otomatis diunduh ke papan.

     Kemudian pilih Debug -> Go untuk memulai program, dan Anda akan melihat 4 lampu LED berkedip secara bergantian! Meskipun ini adalah eksperimen kecil yang terlalu sederhana untuk menjadi sederhana, ketika penulis berhasil menyadarinya, saya masih sedikit bersemangat ~ hehe!

5. Kesimpulan

     Berdasarkan "Eksperimen berkedip lampu LED", makalah ini memperkenalkan seluruh proses implementasi dari konfigurasi IAR, penulisan kode program, dan proses kompilasi dan debugging. Pada artikel berikutnya, berdasarkan pemahaman proses dasar pengembangan program, kami akan memperkenalkan beberapa eksperimen dasar untuk pengembangan CC2430Pengatur waktuKomunikasi serialKonversi ADTidur sistematis serta pengawasdll., jadi pantau terus!






Mantan:Perjalanan Zigbee (1): Mendobrak Tanah
Depan:Perjalanan Zigbee (3): Beberapa eksperimen dasar CC2430 penting - interupsi eksternal
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com