2016年5月24日火曜日

Nucleo F401RE(mbed)でDebounceInライブラリを使う。

Nucleo F401REではDebounceInクラスのexampleが動作しない。

DebounceInをグローバル・スコープで実体化すると内部のTimer割込みで使われているコールバック関数が呼び出されないようだ。

#include "mbed.h"
#include "DebounceIn.h"

DebounceIn d(D2);
DigitalOut led1(LED1);

int main()
{
    d.set_debounce_us(1000);   
    d.mode(PullUp);
    while(1) {
        led1 = !d;
     }
}

main関数内でDebouceIn::set_debouce_us()を呼び出してやれば動作した(コールバック関数が登録されなおす)。DebouceInのコンストラクタをローカルスコープで呼び出しても動作する。

参考:https://developer.mbed.org/forum/mbed/topic/5234/