2016年8月15日月曜日

Nucleo F401REでmbedのInterruptInが動作しない。

タクトスイッチのプログラミングをしようと思ったら、PinDetectクラスが動作しない。

OfficialのInteruptInクラスも動作しないようだ。



#include "mbed.h"

DigitalOut led1(LED1);
InterruptIn sw1(D2);

volatile bool isSw1Pushed = false;

void sw1Pushed()
{
    isSw1Pushed = true;
}

int main()
{
    printf("\n\n*** InterruptIn example ***\n");
    
    sw1.mode(PullUp);
    sw1.fall(&sw1Pushed);

    while (true) {
        led1 = !led1;
        printf("%d\r\n", isSw1Pushed);
        isSw1Pushed = false;
        wait(0.1);
    }
}

main()関数内の
sw1.fall(&sw1Pushed);
で割込みハンドラをsw1Pushed()に指定すると、プルアップされなくなる(←テスタで測定)

めんどくさいけど、割り込みではなくDigitalInでPollingするクラスを作ろうか(@@;

以前は動いていたので(参考:「NucleoF401REでQEIライブラリを使う。http://dad8893.blogspot.jp/2016/05/nucleof401reqei.html」)mbed OS 5になったのが原因かなぁ。