架构师_程序员_码农网

ユーザー名 パスワード取得
会員登録

QQ登录

ワンステップ

検索
閲覧:6245|返信: 0
打印 上一主题 下一主题

Zigbee Journey (II): 最初のCC2430プログラム - LED点滅実験

[コピーリンク]
リフトで直接跳转到指定楼层
ビルのオーナー
I. 前回の続き

前回の記事「Zigbeeの旅(I):はじめに」では、Zigbeeとその開発環境について簡単に紹介した。

この記事は、基本的に上記の質問に答えるためのものです。小さな実験の例として「LEDライトの点滅」を取り上げ、CC2430ベースのプログラム開発のためにIARをどのように設定するか、 IARを使って プログラムを書き、オンラインでデバッグする方法について説明します。

IAR の設定

IAR の各プロジェクトは、デバイスタイプ、ヒープ/スタック、リンカ、デバッガなど独自の設定を持つことができます。

(1) 新しいワークスペースとプロジェクト

まず、ledtest フォルダを新規作成し、IAR を起動し、メインメニュー File -> New -> Workspace を選択し、新しいワークスペースを作成します。

Project -> Create New Project -> Empty Projectを選択し、OKをクリックして、プロジェクトファイルをledtestフォルダにledtest.ewpという名前で保存します。

(2) 一般オプションの設定

ターゲット設定:デバイス:CC2430;

コードモード: Near;

データモデル:Large

呼び出し規約:XDATAスタック再入力

データポインタ設定: DPTR数: 1

スタック/ヒープ設定: XDATA スタックサイズ: 0x1FF

(3) リンカの設定

リンカコマンドファイル: select lnk51ew_cc2430.xcl

(4) デバッガの設定:


ドライバ:テキサス・インスツルメンツ(この実験は実機デバッグ用なのでTIを選択、他の手順でIARエミュレータを使用する場合はオプションでシミュレータ) デバイス説明ファイル: CC2430.ddf

この時点で、本実験のためのIARの設定は基本的に終了し、次にそのコーディング実装を紹介する。

第三に、プログラムコードの準備(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 //P1_3ポート制御用にled4を定義

(4) メイン関数

次に、メイン関数を書き始める。

まず、P1.0~P1.4ポートを使う前に、動作モードと入出力方向を設定する必要があります。それには、P1SELとP1DIRの2つのSFRが必要です。


P1SEL = 0x00; //P1を通常のI/Oポートに設定する P1DIR |= 0x0F; &P1.0 P1.1 P1.2 P1.3 を出力に設定する。

Zigbeeのヒント
CC2430には、 P0_0~P0_7P1_0~P1_7P2_0~P2_7 、合計21個のI/Oポートがあります。これらは汎用のデジタルI/Oとして、あるいはADC、タイマ/カウンタ、USARTなどの周辺I/Oを接続するために使用できます。
CC2430のSFRには、これらのI/Oポートを設定するために使用できる3種類のレジスタがあります:
PxSEL(xは0/1/2):P0/P1/P2ポート機能選択
PxSEL(xは0/1/2):P0/P1/P2ポート機能選択nbsp;0:汎用デジタルIO、1:周辺IO、デフォルトは0
PxDIR(xは0/1/2):P0/P1/P2ポートの方向指定
 0:入力、1:出力、デフォルトは0
PxINP(xは0/1):P0/P1ポート入力モード
nbsp;0:アップ、1:出力、デフォルトは 0nbsp;0:プルアップ/ダウン、1:トライステート、デフォルトは 0
IOポートを使用する場合は設定が必要で、デフォルトの場合はシステムデフォルトを使用する。

次に、4つのLEDを初期化し、すべて消灯に設定する:




LED1 = 1; LED2 = 1; LED3 = 1; LED4 = 1。

最後に、LED点滅エフェクト・コードを書く:






led1 = 0; //led1 点滅 Delay(10); led1 = 1; Delay(10); led2




= 0; //led2 blinking Delay(10); led2 = 1; Delay(10); led3 = 0; //led3 blinking Delay(10); /





//led3点滅 Delay(10); led3 = 1; Delay(10); led4 = 0; //led4点滅 &.


nbsp; Delay(10); led4 = 1; Delay(10);


これは、遅延サブ関数Delay(unsigned char n)を含む:





void Delay(unsigned char n) { unsigned char i; unsigned int j; for(i = 0; i < n; i++) &nbsp


f or(j = 1; j; j++) ; }(5) コード概要

(5) コード概要

上記のコードを全体として以下のようにまとめる:

//ヘッダーファイルの導入
#include //CC2430に対応するヘッダファイルを導入する(各SFRの定義を含む)

// LEDピンの定義
#define led1 P1_0 //P1_0ポート制御用LED1を定義する
#define led2 P1_1 //P1_1ポート制御用にLED2を定義する
#define led3 P1_2 //P1_2 ポート制御 LED3 の定義
#define led4 P1_3 //P1_3ポート制御用LED4を定義 //遅延サブルーチン
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; //P1を通常のI/Oポートに設定する
P1DIR |= 0x0F; //P1.0、P1.1、P1.2、P1.3を出力に設定する

led1 = 1; //初期化、4つのLEDライトすべて消灯
led2 = 1; //初期化、4つのLEDすべて消灯
led3 = 1; led4 = 1; //初期化、4つのLEDすべて消灯
led2 = 1; led3 = 1; led4 = 1; //初期化、4つのLEDライトすべて消灯

while(1) //スタート・サイクル
{
led1 = 0; //led1点滅
delay(10); //遅延(10); //遅延(10); //遅延(10)
delay(10); led1 = 1; //led1点滅
delay(10).

led2 = 0; //led2が点滅する
Delay(10); led2 = 1; //led2が点滅
led2 = 1; //led2が点滅
Delay(10)。

led3 = 0; //led3が点滅中
Delay(10); led3 = 1; //led3が点滅
led3 = 1; //led3が点滅している
Delay(10)。

led4 = 0; //led4が点滅している
Delay(10); led4 = 1; //led4が点滅
led4 = 1; //led4が点滅している
Delay(10); //遅延(10)
}
}

OK、この小さな実験のコードが書かれていますが、非常に単純ではありませんああ、へぇ~!

第四に、コンパイルとデバッグ

Project -> Makeを選択し、コードをコンパイルすると、成功すれば以下の出力が表示されます:

.gif")2011021320413789.jpg
c

Zigbee 開発ボード→デバッガ→PCのUSBポートの 順にZigbeeデバイスを接続し、プロジェクト→デバッグを選択すると、開発ボードにプログラムが自動的にダウンロードされます。

そして、Debug -> Goを選択してプログラムを開始すると、4つのLEDが順番に点滅するのが見えます!これ以上簡単な小実験はないが、成功したときは、ちょっと興奮した!

V. まとめ

本稿では、「LEDライト点滅実験」を基本として、それぞれIARの設定から、プログラムコードの準備だけでなく、コンパイルとデバッグのプロセスは、全体の実装プロセスを紹介します。次回は、タイマシリアル通信AD変換システムスリープ、ウォッチドッグなどを 含む基本的な実験のいくつかのCC2430開発の紹介に基づいて、開発手順の基本的なプロセスの理解になりますので、ご期待ください!






前の記事:【参考】Zigbeeの旅(I):世界の始まり
次へ:【レポート】Zigbeeの旅(III):いくつかの重要なCC2430の基本的な実験-外部割り込み
コードファーマーネットワークは、唯一の練習の過程で公開され、技術的な困難に遭遇し、他の人を誤解させないでください。
投稿するにはログインが必要です ログイン会員登録

このバージョンのインテグラルルール


免責事項:Code Farmerによって公開されたすべてのソフトウェア、プログラミング教材や記事は、学習と研究の目的のみに使用するために制限されています。上記のコンテンツは、商業的または違法な目的のために使用してはならない、そうでなければ、すべての結果は、ユーザー自身が負担するものとします。本サイトはネットワークからの情報であり、著作権紛争は本サイトとは関係ありません。上記のコンテンツはダウンロード後24時間以内にコンピュータから完全に削除する必要があります。もしあなたがこのプログラムを気に入ったら、正規のソフトウェアをサポートし、登録を購入し、より良い正規のサービスを受けてください。もし著作権侵害があれば、メールでご連絡ください。

メール To:help@itsvse.com

QQ|( 鲁ICP备14021824 号-2)|サイトマップ

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

クイック返信トップに戻る一覧に戻る