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.
11 years, 4 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 11 years, 4 months ago.
This means that the question has been accepted and is being worked on.