Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
10 years, 5 months ago.
1114FN28のRTOSについて
RTOSを試してみました。すべてコンパイラはオンラインコンパイラ上です。 以下のコードはmbedライブラリ、mbed-rtosライブラリをインポートしています。 CODE1
#include "mbed.h" #include "rtos.h" DigitalOut led1(LED1); DigitalOut led2(LED2); void led2_thread(void const *argument) { while (true) { led2 = !led2; Thread::wait(1000); } } int main() { Thread thread(led2_thread); while (true) { led1 = !led1; Thread::wait(500); } }
上記ではLED1,2とも出力しません。
同じライブラリをおいている状態で以下のコードも同じく出力しません。 CODE2
#include "mbed.h" //#include "rtos.h" DigitalOut led1(LED1); //DigitalOut led2(LED2); /*void led2_thread(void const *argument) { while (true) { led2 = !led2; Thread::wait(1000); } } */ int main() { // Thread thread(led2_thread); while (true) { led1 = !led1; // Thread::wait(500); wait_ms(500); } }
上記の2コードを出力するとバイナリサイズはincludeされているCODE1は13860byte,includeされてないCODE2は6160byteです。 そして、コード上からCODE2のようにコメントアウトするだけでなく、ターゲットのプログラムツリーの中からRTOSライブラリ(フォルダ)そのものを削除しCODE2でコンパイルするとサイズは1588byteです。そしてその場合は動作し出力します。
この状況は私だけでしょうか?上記のCODE2であればRTOSライブラリがオンラインコンパイラのプログラムのターゲットボードのプログラムツリーの中に存在していても、includeしていないので動くものと思います。
何か考えられる事があればご教示いただければ幸いです。
1 Answer
Assigned to
10 years, 5 months ago.This means that the question has been accepted and is being worked on.