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