LPC810メモ:C++11を使ってみる例

LPCXpressoでも設定すれば普通にC++11の文法が使えることに気付いたので実験。
というか、これまでできないと思っていて損していた模様。

  • [Project][Property][C/C++Build][Settings]で[Tool Settings]タブ選択。
  • [MCU C++ Compiler][Dialect]で、ISO C++1y(-std=c++1y)を選択

共通の準備にも追記。

とりあえず、むりやりラムダ式を使った例。内容的にはここと全く同じLチカ。

サンプルコード

#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);

    // PIO0_0の出力をtoggleするラムダ
    // UM10601 7.6.9 GPIO port toggle registers
    auto ledToggle = [] { LPC_GPIO_PORT->NOT0 |= (1<<0); };

    // 適当にループして間隔をあけるラムダ
    auto waitingLoop = [] (int l) { for(volatile int i{0}; i < l; i++) {} };

    // 出力をon/offしてLEDを点滅させる
    while(1) {
    	ledToggle();
    	waitingLoop(200000);
    }
    return 0 ;
}

接続

ここと同じため省略。

補足/雑感

  • できたバイナリが660byteで、元の例とまったく変わらなかったのがうれしい。

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