happasukeの覚書

私がググらなくてもいいよう記事にします。またそのほかにも感じたことも書き綴りたいと思います。

lcpxpresso1769で3色LEDチカチカ

 先日製作してもらった基盤にはLEDがなく、なんとなく寂しかったので久しぶりのはんだ付けで3色LEDを取り付けることにし

ました。パーツはマルツから買ってきました。

 さて使用するピンは余っていた0[16]、0[15]、0[17]です。このピンだとMbedのコードを使うこともできますが、気分でレジスタを打ちます。

f:id:happasuke:20150313220512p:plain

 データシートによると、どうやら0[15]と0[16],0[17]ではピン設定で使用するレジスタが違うようです。

 

 まずはピンにどのような働きをさせるかを設定します。

f:id:happasuke:20150313222812p:plain

0[15]はPINSEL0の30,31ビット目を00とすることでGPIO出力できます。

なので、その部分だけを00にするために以下のようにレジスタを打ちます。

    LPC_PINCON->PINSEL0 &= ~(3<<30);

また他のピンは以下の表より

f:id:happasuke:20150313222819p:plain

同様に

    LPC_PINCON->PINSEL1 &= ~(3<<0);
    LPC_PINCON->PINSEL1 &= ~(3<<2);

とします。

 次にGPIOを入力として使用するのか、出力として使用するのかを設定します。そのためには以下の項目をみます。 

f:id:happasuke:20150313225127p:plain

 該当のピンを1とすることで出力になるようです。使用するのは0[15]~0[16]なので

LPC_GPIO0->FIODIR |= 1<<15;

LPC_GPIO0->FIODIR |= 1<<16;

LPC_GPIO0->FIODIR |= 1<<17;

  と設定します。これで初期化は完了です。ほかにも書き込み制限のマスクなどがあるのですが、ここでは初期設定で十分使用できるのでそのままにします。

 それで、ピンに信号を出力したいときは

LPC_GPIO0->FIOSET |= 1<<15;

で信号がHIGHになり、出力を消したいときには

LPC_GPIO0->FIOCLR |= 1<<15;

で信号がLOWになります。