LPC810メモ:GPIO出力(Lチカ)

前提とする環境はこちら→LPC810メモ 共通の準備

サンプルコード

#include "LPC8xx.h"

int main(void) {
    // GPIOに対してclockを有効化
    // UM10601 4.6.13 System clock control register
    LPC_SYSCON->SYSAHBCLKCTRL |= (1<<6);

    // PIO0_0(すなわち8番のpin)をoutputに設定
    // UM10601 27.1 Packages より、PIO0_0は8番
    // UM10601 7.6.3 GPIO port direction registers
    LPC_GPIO_PORT->DIR0 |= (1<<0);

    // 出力をon/offしてLEDを点滅させる
    while(1) {
        // PIO0_0の出力をtoggle
        // UM10601 7.6.9 GPIO port toggle registers
        LPC_GPIO_PORT->NOT0 |= (1<<0);

        // (補足) toggleではなくsetとclearなら以下
        // LPC_GPIO_PORT->SET0 |= (1<<0);
        // LPC_GPIO_PORT->CLR0 |= (1<<0);
        // UM10601 7.6.7 GPIO port set registers
        // UM10601 7.6.8 GPIO port clear registers

        // 適当にループして間隔をあける
        for(volatile int i = 0; i < 200000; i++) {}
    }
    return 0 ;
}

接続

  • PIO0_0は8番なので、8番(右上)にLEDをつなげる。

補足/雑感

  • とにかく何か動かせて満足。
  • 1.2Vの電池を3本使用。3.6vは許容範囲のはず。
  • binが660byteもある。不当に大きすぎる気がするが、初心者故に相場がわからない。いずれ最適化とか調べよう。
  • 10回点滅で6秒くらい。20万回の足し算のループが0.3秒というところか。

みっかぼの無料Androidアプリはこちら。