Mbedを使った電子工作プログラミング(Nucleo-F446RE)

割り込み / InterruptInクラスとTimeoutクラスとを併用してスイッチ入力をディバウンスする

pp.41-45 今度はスイッチ入力をディバウンスしたうえで前回と同じことをする。外部割り込みがかかったらTimeoutクラスのインスタンスをコールし、一定時間が経過してタイムアウトしたら(=バウンスが収まったら)何かを実行する。 テキストは、コピーコンスト…

割り込み / 外部割り込み / InterruptIn

参考: InterruptIn - API references and tutorials | Mbed OS 6 Documentation ISRの中でMbed BusOutインスタンスをインクリメントしようとするとmutexエラーが出てしまうため、ISRはフラグを立てるだけにした。このへんのしくみはわからない。 下のプログ…

割り込み / staticなメンバー函数としてISRをクラス内に記述する

pp.39-40 前回と同じことを今度はstaticなメンバー函数として記述する。前回と違うのは★印をつけたところである。このへんのしくみはよくわからない。 #include "mbed.h" class MyTimeout{ typedef Kernel::Clock::duration_u32 chrono_t; private: static u…

割り込み / 通常のメンバー函数としてISRをクラス内に記述する

pp.37-39 前回はISRをグローバル函数として記述したが、それと同じことを今度はクラスのメンバー函数として記述してみる。 テキストによれば、通常のメンバー函数として記述する方法と、staticなメンバー函数として記述する方法とがあるとの由。まずは通常の…

割り込み / 一定の時間が経過したら何かをする / Timeoutクラス

参考: Mbed OS Reference | TimeoutBase Class Reference Mbed Studioはバージョン1.2.1になった。 PA_10に接続したLEDでLチカをしていて、5秒経過したらwhile()を抜ける。 #include "mbed.h" Timeout timeout; DigitalOut led(PA_10); uint8_t on = 1; void…

割り込み / 一定の周期で何かをする / Tickerクラス

参考: mbed電子工作レシピ, pp.119-120 PA10に接続したLEDを500msごとに点滅させる。 #include "mbed.h" DigitalOut led(PA_10); Ticker tick; void toggle(){ led = !led; } int main(){ tick.attach(&toggle, 500ms); // 500msごとにtoggle()函数をコール…

Lチカ / 外づけLED / 出力モードを切り換えるためのグローバル函数

pp.32-36 出力モードの切り換えが簡単にできるよう、著者がヘッダーSetOutputPortType.hppを用意している。それを使ってみる。下のプログラムは、テキストと違って赤色LEDしか使っていないので、オープンドレインだろうがプッシュプルだろうが区別がつかない…

Lチカ / 外づけLED / オープンドレイン

pp.26-31 今度は出力回路をオープンドレインにする。テキストと違って赤色LEDしか使っていないのでプッシュプルのときと区別がつかない。 #include "mbed.h" #define BLINKING_RATE 100ms int main(){ BusOut leds(PA_10, PB_3, PB_5, PB_4, PB_10, PA_8, PA…

Lチカ / 外づけLED / プッシュプル

pp.12-15 今度は、外づけしたLEDでLチカをする。テキストと同じくマイコン側をsinkにした。デフォルトのままなので出力回路はプッシュプルである。PA_10, PB_3, ... といったGPIOのアドレスはPinNames.hの中でenumしてあった。 #include "mbed.h" #define BL…

Lチカ / サンプルプログラムでNucleoのオンボードLEDを点滅させる

テキストはクラウド版のMbed IDEを使っているが、以降特に断らない限りMbed Studioを使う。現時点での最新バージョンは1.2.0である。 まずはテキストとは無関係にMbed OS Blinky tutorial - Getting started | Mbed Studio DocumentationのとおりにLチカをし…