|
1. 上層と下層の接続 前記事でジグビー・ジャーニー(1):ブレイキング・ザ・グラウンドここではZigbeeとその開発環境を簡単に紹介します。 さて、ツールが揃ったところで、次の疑問が生じます:これらのソフトウェアとハードウェアを使って、実行可能なプログラムをどう書くのか? この記事は基本的に上記の質問に答えることを目的としています。例えば、「LEDライトの点滅」という小さな実験を例に取り、CC2430ベースのプログラム開発に適したIARの設定方法とその使い方を紹介しますIARオンラインでプログラムを作成・デバッグしましょう。 2. IAR構成 IARは多様なチップをサポートする強力な組み込み開発プラットフォームです。 IARの各プロジェクトは、デバイスタイプ、スタック/スタック、リンカー、デバッガーなど独自の設定を持つことができます。 (1) 新しいワークスペースとプロジェクトの作成 まず、新しいフォルダledtestを作成します。 IARを開き、メインメニューの「File -> New -> Workspace を選択して新しいワークスペースを作成してください。」 Project -> Create New Project -> Empty Projectを選択し、OKをクリックして、ledtestフォルダ(ledtest.ewp)にプロジェクトファイルを保存してください(下記参照)。
(2) 一般オプションの設定 標的設定:装置:CC2430; コードモード:ニア; データモデル:大規模; 呼び出し規則:XDATAスタックリエトラント
データポインタ設定:DPTRの数:1
スタック/ヒープ設定:XDATA スタックサイズ:0x1FF
(3) リンカー設定 linkerコマンドファイル:lnk51ew_cc2430.xclを選択してください
(4) デバッガ設定: ドライバー:Texas Instruments(この実験は実際の機械デバッグなので、TIを選んでください; 他のプログラムがIARシミュレーターを使いたい場合は、Simulatorを選択できます) デバイス説明ファイル:CC2430.ddf
この時点で、この実験のIAR構成はほぼ終了しており、以下はその符号化実装の紹介です。 3. プログラムコードの作成(1) 新しい手続き文書の作成 File->New->Fileを選択し、新しいファイルmain.cを作成します。 (2) ヘッダーファイルを導入する CC2430ベースのプログラムには、ioCC2430.hへの参照が含まれていなければなりません。ioCC2430.hは、CC2430の各種特殊機能レジスタ(SFR)のアドレスマッピングを定義しています。 #include //引入CC2430所对应的头文件(包含各SFR的定义)
このファイルはIAR(stdio.hに似たもの)に組み込まれています。このコードにカーソルを合わせて右クリックし、選択しますOPen "ioCC2430.h"このヘッダーファイルの全内容を見るには。 (3) LEDピンの定義 開発ボードの回路図は以下の通りをご覧ください:
LED1~4はそれぞれピンP1_0~P4_0で制御されていることがわかります。したがって、LED1、LED2、LED3、LED4はそれぞれピンP1_0、P2_0、P3_0、P4_0として定義できます。 #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ポート制御として定義してください
(4) 主な機能 次に、メイン関数の書き始めましょう。 まず、P1.0~P1.4ポートを使用する前に、動作モードと入出力方向を設定する必要があり、これには2つのSFR、P1SELとP1DIRが含まれます。 P1SEL = 0x00; P1は通常のI/Oポートに設定してください P1DIR |= 0x0F; 出力としてP1.0、P1.1、P1.2、P1.3を設定します
ジグビーのヒント CC2430には以下の特徴があります:P0_0 ~ P0_7 , P1_0~P1_7 , P2_0~P2_7合計21のI/Oポートがあります。 汎用デジタルI/Oとして使用することも、ADC、タイミング/カウンター、USARTなどの周辺IO接続にも利用できます。 CC2430のSFRには、これらのIOポートの設定に使用できる3種類のレジスタがあります。 (1)PxSEL(x は 0/1/2) :P 0/P1/P2 ポート機能選択 0:ユニバーサル数値IO、1:周辺IO、デフォルトは0です (2)PxDIR(x は 0/1/2) :P 0/P1/P2 ポート方向 0:入力、1:出力、デフォルトは0です (3)PxINP(xは0/1) :P 0/P1ポート入力モード 0:プルアップ/プルダウン、1:3つの状態、デフォルトは0 IOポートを使う際に設定が必要で、デフォルトの場合はシステムのデフォルト値が使われます。 次に4つのLEDを初期化し、すべて消灯に設定します: LED1 = 1; led2 = 1; led3 = 1; LED4 = 1;
最後に、LEDの点滅効果コードを書きます: led1 = 0; LED1が点滅します 遅延(10); LED1 = 1; 遅延(10);
led2 = 0; LED2の点滅 遅延(10); led2 = 1; 遅延(10);
led3 = 0; LED3点滅 遅延(10); led3 = 1; 遅延(10);
led4 = 0; LED4の点滅 遅延(10); LED4 = 1; 遅延(10);
これは遅延部分関数 Delay(符号なし char n)を含みます: void delay(符号なし char n) { 署名なしのチャール1世; 未署名インターンJ; for(i = 0; 私は<N; i++) for(j = 1; j; j++) ; }
(5) コード概要 上記のコードを一つの全体にまとめます。以下の通りです: //引入头文件
#include //引入CC2430所对应的头文件(包含各SFR的定义)
//定义LED引脚
#define リード1 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口控制 //延时子程序
虚無遅延(署名なし チャーn) {
署名なし チャー私;
署名なし 知力j;
に対して(i =0; 私は<N; i++)
に対して(j =1; j; j++) ;
}
虚無メイン(虚無)
{ P1SEL =0x00; P1は通常のI/Oポートに設定してください P1DIR |=0x0F; 出力としてP1.0、P1.1、P1.2、P1.3を設定します
led1 =1; //初始化,4个led灯全熄 led2 =1; led3 =1; led4 =1;
ただし(1) //开始循环 { led1 =0; //led1闪烁 遅延(10); led1 =1; 遅延(10);
led2 =0; //led2闪烁 遅延(10); led2 =1; 遅延(10);
led3 =0; //led3闪烁 遅延(10); led3 =1; 遅延(10);
led4 =0; //led4闪烁 遅延(10); led4 =1; 遅延(10); }
}
よし、この小さな実験のコードは書かれた。とても簡単じゃないか、へへ~ 4. コンパイルとデバッグ Project -> Makeを選択し、コードをコンパイルすると、成功すると以下の出力が表示されます。
報道Zigbee 開発ボード → デバッガ → PC用USBインターフェースそして「Project -> Debug」を選択すると、プログラムが自動的にボードにダウンロードされます。 次に「Debug」を選択してください。> 「Go」を選んでプログラムを起動すると、4つのLEDライトが順番に点滅します! これは単純すぎて簡単とは言えない小さな実験ですが、作者が見事に実現したとき、私は少しワクワクしました~へへ! 5. 結論 「LED点滅実験」に基づき、本論文ではIARの設定、プログラムコードの作成、コンパイルおよびデバッグのプロセスまでの実装プロセス全体を紹介します。 次回の記事では、プログラム開発の基本プロセスを理解し、CC2430開発のためのいくつかの基本的な実験を紹介しますタイマー、シリアル通信、AD転換、システマティックスリープとウォッチドッグなど、ぜひご期待ください!
|