#analog
#norelated
#contents
* LEDチカチカ(非RTOS) [#i8a730b4]

** 構成 [#x8b981a1]
LPC1769には、基板上に最初からLEDがついています。~
なので、これを点滅させてみましょう。~

LPC1769のピンアサインについては、インストールされた中にある、Getting StartedのPDFを見てください。~
後半の方(P31〜P33あたり)のページに、LPC1769のピンアサインが載っています。~

LEDの記載を見ると、P0[22]と書いてあるのがわかります。~
これは、ポート0の22番ピンということになります。~

//#ref(LEDTest.png,left,nowrap,LEDサンプル)
//
//本当は抵抗が必要なはずだが、まぁいい。~
//とりあえずは光ればいい。~
//
#ref(ledpin.png,left,nowrap,LEDピンアサイン)

このピンの出力を、周期的に変化させてやれば、LEDチカチカが実現できることになります。~


//#u2b(fc-vW6RD1Co,w=480,h=385)
//

** ソースコード [#q9761726]

** プロジェクト [#n24a5191]
まずは、新規プロジェクトを作りましょう。~
QuickStartPanelのNew projectから、LPC176Xの「C Project」を選択して、適当なプロジェクト名をつけます。~
ここでは、「ledtest01」としました。~

MCUはLPC1769を選び、CMSIS Library to link project toは、CMSISv2p00_LPC17XXが選択されていることを確認してください。~
Code Read Protectについては、コードを読み出されないようにするためのセキュリティ設定ですので、ここは外しておいて構いません。~

#ref(ledproject.png,left,nowrap,LEDプロジェクト設定)

プロジェクトが作成されたら、右クリックからプロパティを開きます。~
「Project References」は、CMSISv2p00_LPC17xxと、DriverLibの両方にチェックを入れておきましょう。~
これで、変数や関数の定義を、プロジェクトをまたいで遡ることが出来ます。~

#ref(prjref.png,left,nowrap,プロジェクト参照)

次に、「C/C++ General」の「Paths and Symbols」を開いて、includeとライブラリの設定をします。~

まず、IncludesタブのLanguagesがGNU Cのところを選択すると、既に/CMSISv2p00_LPC17xx/incの設定が入っているかと思います。~
ここに、/DriverLib/incも追加します。~

#ref(includs.png,left,nowrap,Includeパス設定)

次にLibrariesタブの設定ですが、ここもすでに、CMSISv2p00_LPC17xxの設定が入っていると思います。~
同様に、DriverLibを追加します。~
ここは、「DriverLib」と記載するだけにしておいて下さい。~

#ref(libraries.png,left,nowrap,ライブラリ設定)

最後に、Libraries Pathsの設定も同様にします。~

#ref(libpaths.png,left,nowrap,ライブラリパス設定)

ここまでで、プロジェクトの設定は終わりですので、反映させて一旦ビルドをかけてみましょう。~
QuickStartPanelからBuildを実行して、ledtest01.axfが出来上がればOKです。

「Project References」で指定した、CMSISv2p00_LPC17xxと、DriverLibのそれぞれのインクリメンタルビルドが行われてから、ledtest01のビルドが行われます。~


** ソースコード [#g8126864]
以下、ソースコード。~

// #include <avr/io.h>
// #include <util/delay.h>
// 
// void delay_ms( int time )
// {
// 	// 指定ms分ループ
// 	while( time-- ){
// 		_delay_ms( 1 );
// 	}
// }
// 
// int main( void )
// {
// 	DDRD	= 0b11111111;	// ポートDの方向レジスタを、全て出力に
// 	PORTD	= 0b00000000;	// ポートDの出力レジスタを、全てLowに
// 
// 	char count	= 0;	// 0〜7まで
// 	char binc	= 1;	// インクリメントモードかデクリメントモードか
// 
// 	while( 1 ){
// 		PORTD = ( 1 << count );	// ポートDのカウント数位置の出力レジスタのみをHighに
// 		if( binc ){	// インクリメントモード
// 			count++;
// 			if( 7 <= count ){	// 端までいったのでデクリメントモードへ
// 				binc = 0;
// 			}
// 		} else {	// デクリメントモード
// 			count--;
// 			if( 0 >= count ){	// 最初まで戻ったのでインクリメントモードへ
// 				binc = 1;
// 			}
// 		}
// 		delay_ms( 50 );	// 50ms待ち
// 	}
// 
// 	return 0;
// }


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS