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 ; }
接続
ここと同じため省略。