| I. Melanjutkan pembahasan sebelumnya Pada artikel sebelumnya , "Zigbee Journey (I): The Beginning", kami secara singkat memperkenalkan Zigbee dan lingkungan pengembangannya, oke, sekarang setelah alatnya lengkap, muncul pertanyaan: bagaimana cara menggunakan perangkat lunak dan perangkat keras untuk menulis program yang dapat berjalan? Artikel ini pada dasarnya untuk menjawab pertanyaan di atas: untuk "lampu LED berkedip" sebagai contoh percobaan kecil, cara mengkonfigurasi IAR untuk pengembangan program berbasis CC2430, cara menggunakan IAR untuk menulis dan men-debug program secara online. Konfigurasi IAR IAR adalah platform pengembangan tertanam yang kuat yang mendukung berbagai jenis chip, dan setiap Proyek dalam IAR dapat memiliki konfigurasinya sendiri, termasuk jenis Perangkat, Heap/Stack, Linker, Debugger, dll. (1) Ruang Kerja dan Proyek Baru Pertama-tama, buatlah folder ledtest baru, buka IAR, pilih menu utama File -> New -> Workspace untuk membuat ruang kerja baru. Pilih Project -> Create New Project -> Empty Project, klik OK, dan simpan file proyek ke folder ledtest, dengan nama: ledtest.ewp (seperti di bawah ini). (2) Konfigurasi Opsi Umum Pengaturan target: Perangkat: CC2430; Mode Kode: Dekat; Model data: Besar; Konvensi pemanggilan: Tumpukan XDATA reetrant
Pengaturan penunjuk data: Jumlah DPTR: 1
Pengaturan Stack/Heap: Ukuran tumpukan XDATA: 0x1FF (3) Pengaturan penghubung File perintah linker: pilih lnk51ew_cc2430.xcl
(4) Pengaturan debugger: Driver: Texas Instruments (percobaan ini untuk debugging mesin yang sebenarnya, jadi pilihlah TI; jika prosedur lain untuk menggunakan emulator IAR, Simulator opsional) Perangkat File deskripsi: CC2430.ddf
Pada titik ini, konfigurasi IAR untuk percobaan ini pada dasarnya telah selesai, berikut ini adalah implementasi pengkodeannya. Ketiga, persiapan kode program(1) File program baru Pilih File->New->File, buat file baru main.c. (2) Memperkenalkan file header Program berbasis CC2430 harus menyertakan referensi ke ioCC2430.h, yang mendefinisikan pemetaan alamat berbagai jenis register fungsi khusus (SFR) CC2430. #include //Memperkenalkan file header yang sesuai dengan CC2430 (berisi definisi setiap SFR) File ini dibangun ke dalam IAR (mirip dengan stdio.h), mouse ke baris kode ini, klik kanan, pilih BUKA "ioCC2430.h", Anda dapat melihat konten lengkap file header ini. (3) Tentukan pin LED Periksa diagram sirkuit papan pengembangan, seperti yang ditunjukkan di bawah ini:
Diketahui bahwa led1 ~ 4 dikendalikan oleh pin P1_0 ~ P4_0, sehingga kita dapat mendefinisikan led1, led2, led3, led4 masing-masing sebagai pin P1_0, P2_0, P3_0, P4_0. #define led1 P1_0 //define LED1 sebagai kontrol port P1_0 #define led2 P1_1
//define led2 sebagai kontrol port P1_1 #define led3 P1_2 //define led3 sebagai kontrol port P1_2 #define led4 P1_3 / / tentukan led4 untuk kontrol port P1_3 (4) Fungsi utama Selanjutnya, mulailah menulis fungsi utama. Pertama-tama, sebelum menggunakan port P1.0 ~ P1.4, Anda perlu mengatur mode kerja dan arah input/output, yang melibatkan dua SFR: P1SEL, P1DIR. P1SEL = 0x00; //Setel P1 sebagai port I/O biasa P1DIR |= 0x0F; & Set P1.0 P1.1 P1.2 P1.3 sebagai output Tips Zigbee CC2430 memiliki P0_0 ~ P0_7, P1_0 ~ P1_7, P2_0 ~ P2_7 total 21 port I / O. Mereka dapat digunakan sebagai I / O digital tujuan umum atau untuk menghubungkan I / O periferal seperti ADC, timer / penghitung atau USART. Ada tiga jenis register dalam SFR CC2430 yang dapat digunakan untuk mengonfigurasi port IO ini: ①PxSEL (x adalah 0/1/2): Pemilihan fungsi port P0/P1/P2 PxSEL (x adalah 0/1/2): Pemilihan fungsi port P0/P1/P2 0: IO digital tujuan umum, 1: IO periferal, default default adalah 0 PxDIR (x adalah 0/1/2): Arah port P0/P1/P2 & 0: input, 1: output, default default adalah 0 PxINP (x adalah 0/1): Mode input port P0/P1 0: naik, 1: output, default default 0 0: pull-up / down, 1: tri-state, default default adalah 0 Konfigurasi diperlukan saat menggunakan port IO, jika default, maka ambil default sistem. Kemudian inisialisasi 4 LED, atur ke semua:
led1 = 1; led2 = 1; led3 = 1; led4 = 1. Terakhir, tulis kode efek kedipan LED:
led1 = 0; //led1 berkedip Delay(10); led1 = 1; Delay(10); led2
= 0; //led2 berkedip Tunda(10); led2 = 1; Tunda(10); led3 = 0; //led3 berkedip Tunda(10); /
//led3 berkedip Tunda(10); led3 = 1; Tunda(10); led4 = 0; //led4 berkedip &
Delay(10); led4 = 1; Delay(10);
Ini melibatkan sub-fungsi penundaan Delay(unsigned char n):
v oid Delay(unsigned char n) { unsigned char i; unsigned int j; for(i = 0; i < n; i++)  
; for(j = 1; j; j++) ; } (5) Gambaran Umum Kode Gabungkan kode di atas secara keseluruhan seperti yang ditunjukkan di bawah ini: //Memperkenalkan file header # include // perkenalkan file header yang sesuai dengan CC2430 (termasuk definisi setiap SFR)
// Tentukan pin LED #define led1 P1_0 / / mendefinisikan LED1 untuk kontrol port P1_0 #define led2 P1_1 / / tentukan LED2 sebagai kontrol port P1_1 #define led3 P1_2 / / mendefinisikan LED3 sebagai kontrol port P1_2 #define led4 P1_3 //define LED4 sebagai kontrol port P1_3 //subrutin penundaan void Delay (unsigned char n) { unsigned char i. unsigned int j. for (i = 0; i < n; i++) for (j = 1; j; j++) ; }
void main (void ) { P1SEL = 0x00; //Set P1 sebagai port I/O normal P1DIR |= 0x0F; //Set P1.0 P1.1 P1.2 P1.3 sebagai output led1 = 1; //inisialisasi, keempat lampu led mati led2 = 1; //inisialisasi, semua 4 led mati led3 = 1; led4 = 1; //inisialisasi, semua 4 led mati led2 = 1; led3 = 1; led4 = 1; //inisialisasi, semua 4 lampu led mati while(1 ) //mulai siklus { led1 = 0; //led1 berkedip Delay (10 ); //Delay (10 ); //Delay (10 ); //Delay (10 ) delay(10); led1 = 1; //led1 berkedip Tunda (10 ). led2 = 0; //led2 berkedip Delay (10 ); led2 = 1; //led2 berkedip led2 = 1; //led2 berkedip Tunda (10 ). led3 = 0; //led3 berkedip Delay (10 ); led3 = 1; //led3 berkedip led3 = 1; //led3 berkedip Tunda (10 ). led4 = 0; //led4 berkedip Delay (10 ); led4 = 1; //led4 berkedip led4 = 1; //led4 berkedip Delay (10 ); //Tunda (10 ) } }
Oke, kode untuk percobaan kecil ini sudah selesai ditulis, tidak terlalu sederhana ya, hehe~! Keempat, kompilasi dan debugging Pilih Project -> Make, compile kode tersebut, jika berhasil akan muncul output berikut:
c
Hubungkan perangkat Zigbee dengan urutan Zigbee development board → Debugger → Port USB PC , lalu pilih Project -> Debug, program akan diunduh ke dalam development board secara otomatis. Kemudian pilih Debug -> Go untuk memulai program, dan Anda akan melihat 4 LED berkedip secara berurutan! Meskipun ini adalah eksperimen kecil yang sederhana, tetapi ketika saya berhasil mencapainya, saya sangat senang ~ ya! V. Kesimpulan Dalam makalah ini, "percobaan berkedip lampu LED" sebagai dasar, masing-masing, dari konfigurasi IAR, persiapan kode program, serta proses kompilasi dan debugging memperkenalkan seluruh proses implementasi. Selanjutnya, akan dibahas mengenai pemahaman proses dasar prosedur pengembangan berdasarkan pengenalan beberapa pengembangan CC2430 yang melibatkan pengatur waktu, komunikasi serial, konversi AD, sistem tidur dan pengawas , dll., Jadi, nantikan terus! |