Sample code for Mechatronics class

Committer:
ykuroda
Date:
Thu Oct 17 09:10:11 2019 +0000
Revision:
7:49b71bc18049
Parent:
5:476186ff82cf
1;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ykuroda 7:49b71bc18049 1 // たぶん一番簡単な時間管理プログラム - OS5
ykuroda 7:49b71bc18049 2 // 2019.10.17 ... Y.Kuroda
emilmont 1:6a8fcc666593 3 #include "mbed.h"
mab5449 5:476186ff82cf 4 Thread thread;
ykuroda 7:49b71bc18049 5 DigitalOut p1(LED1);
ykuroda 7:49b71bc18049 6 #define CYC_FLAG 1
emilmont 1:6a8fcc666593 7
ykuroda 7:49b71bc18049 8 void my_thread() // スレッドにする関数.正確な時間間隔で起こされる
ykuroda 7:49b71bc18049 9 {
emilmont 1:6a8fcc666593 10 while (true) {
ykuroda 7:49b71bc18049 11 ThisThread::flags_wait_all(CYC_FLAG); // 起こされるまで寝ている
ykuroda 7:49b71bc18049 12 //
ykuroda 7:49b71bc18049 13 p1 = !p1; // ユーザコードはここに書く
ykuroda 7:49b71bc18049 14 //
emilmont 1:6a8fcc666593 15 }
emilmont 1:6a8fcc666593 16 }
emilmont 1:6a8fcc666593 17
ykuroda 7:49b71bc18049 18 int main (void) { // mainスレッド
ykuroda 7:49b71bc18049 19 thread.start(callback(my_thread)); // 関数をスレッドとして起動する
Bartek Szatkowski 4:fc60c5b6c104 20
ykuroda 7:49b71bc18049 21 while (true) { // スレッドの一つとして走る
ykuroda 7:49b71bc18049 22 wait(0.01); // 待つことしかしてないのでかなり正確
ykuroda 7:49b71bc18049 23 thread.flags_set(CYC_FLAG); // 寝ているスレッドを起こす.この処理は一瞬
emilmont 1:6a8fcc666593 24 }
emilmont 1:6a8fcc666593 25 }
ykuroda 7:49b71bc18049 26