今までLPCXpresso IDEやFlash Magicのインストールやツールの使い方など開発環境の構築を中心に記事を書いてきましたが、実際のプログラミングの内容に入っていきたいと思います。まず今回は、入出力の基本となるIO設定とGPIO制御についての説明となります。
IO設定は、CMSIS に従った表記では、モジュールからのポインタを使用する書き方になります。具体的には、GPIOの場合、LPC_GPIO# というポインタを使用してレジスタを指定します。
(例)PIO0_7 を出力に設定。GPIO0 モジュールの DIR レジスタの7ビット目を”1″とする
1 |
LPC_GPIO0->DIR |= 0x080; |
(例)PIO0_7 のトグル(出力ピンに設定の場合)
1 |
LPC_GPIO0->DATA ^= 0x80; |
これらの設定や制御は、サンプルプログラム中のdriverディレクトリにある、gpio.h、gpio.cを利用しても行う事ができます。
(例)PIO0_7 を出力に設定し、L出力にする。
1 2 |
GPIOSetDir(PORT0,7,1); GPIOSetValue(PORT0,7,0); |
ちなみにドライバの中は、この様になっています。
1 2 3 4 5 |
void GPIOSetDir( uint32_t portNum, uint32_t bitPosi, uint32_t dir ) { if ( dir ) LPC_GPIO[portNum]->DIR |= 1<<bitPosi; else LPC_GPIO[portNum]->DIR &= ~(1<<bitPosi); } |
またピンの基本的な属性設定は、LPC_IOCONで行います。
(例)PIO0_8のLPC_IOCONを下記の様に設定。
Bit[2:0]=FUNC={00}:Function PIO0_8
Bit[4:3]=MODE={00}:Inactive(no pull-down/pull-up resistor enabled)
Bit[5]=HYS={0}:Hysteresis Disable
Bit[7:6]=Reserved={11}:-
1 |
LPC_IOCON->PIO0_8=0xC0; |
IOの設定や制御に関しては、ユーザーマニュアルを参照して設定を行いましょう。以下のサイトからダウンロードできます。
LPC User Manual
LPC1114の場合は、UM10398がユーザーマニュアルで、IO設定などに関する詳しい情報が記載されています。
Sponsored Link