#include "mbed.h" #include "rtos.h" #define TICKER_PERIOD (0.5) Ticker toggle_pin_ticker; Timer timer; DigitalOut led(LED1); //RTOSを使ったプログラムでSerialオブジェクトを実体化すると割り込み(toggle_pin())が効かなくなる。 //Thread(led_thread())は動作する。 //Serial pc(SERIAL_TX, SERIAL_RX); void led_thread(void const *argument) { while (true) { Thread::signal_wait(0x1); //Serialのメソッドではなくstdioのprintf()を使う。 printf("in led_thread: %f\r\n", timer.read()); } } void toggle_pin() { led = !led; //ISR内でprintf()は使わないこと。 //printf("in toggle_pin() isr: %f\r\n", timer.read()); } int main() { Thread thread(led_thread); timer.start(); toggle_pin_ticker.attach(&toggle_pin, TICKER_PERIOD); while (true) { Thread::wait(1000); thread.signal_set(0x1); } }
2016年5月22日日曜日
mbedのRTOSとprintf(メモ)
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿