ocrobot:kit:arduino_star_kit:tutorial028
差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版 | |||
ocrobot:kit:arduino_star_kit:tutorial028 [2017/10/04 08:06] – 弘毅 | ocrobot:kit:arduino_star_kit:tutorial028 [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ======多线程使用入门====== | ||
+ | <WRAP center round info 100%> | ||
+ | 这个例程展示了如何通过驱动六颗LED让其以不同的速度闪烁来简单学习一下NilRTOS的基本用法 | ||
+ | </ | ||
+ | RTOS英文全称Real-Time Operating Systems,中文叫做实时操作系统。 | ||
+ | NilRTOS就是这么一个可以运行在OCROBOT控制板中的简单的操作系统。 | ||
+ | |||
+ | 在NilRTOS中,不能使用标准的delay(),这个会导致操作系统异常。需要使用nilThdSleepMilliseconds来替代delay(),这个需要切记。 | ||
+ | |||
+ | =====搭建电路===== | ||
+ | {{: | ||
+ | =====代码===== | ||
+ | <code cpp> | ||
+ | #include < | ||
+ | |||
+ | int LED_PIN[6] ={ 2,3,4,5,6,7 }; | ||
+ | int Delay[6] ={ 100, | ||
+ | /*线程1*/ | ||
+ | NIL_WORKING_AREA(waThread1, | ||
+ | NIL_THREAD(Thread1, | ||
+ | digitalWrite(LED_PIN[0], | ||
+ | while (TRUE) { | ||
+ | digitalWrite(LED_PIN[0], | ||
+ | nilThdSleepMilliseconds(Delay[0]); | ||
+ | digitalWrite(LED_PIN[0], | ||
+ | nilThdSleepMilliseconds(Delay[0]); | ||
+ | } | ||
+ | } | ||
+ | /*线程2*/ | ||
+ | NIL_WORKING_AREA(waThread2, | ||
+ | NIL_THREAD(Thread2, | ||
+ | digitalWrite(LED_PIN[1], | ||
+ | while (TRUE) { | ||
+ | digitalWrite(LED_PIN[1], | ||
+ | nilThdSleepMilliseconds(Delay[1]); | ||
+ | digitalWrite(LED_PIN[1], | ||
+ | nilThdSleepMilliseconds(Delay[1]); | ||
+ | } | ||
+ | } | ||
+ | /*线程3*/ | ||
+ | NIL_WORKING_AREA(waThread3, | ||
+ | NIL_THREAD(Thread3, | ||
+ | digitalWrite(LED_PIN[2], | ||
+ | while (TRUE) { | ||
+ | digitalWrite(LED_PIN[2], | ||
+ | nilThdSleepMilliseconds(Delay[2]); | ||
+ | digitalWrite(LED_PIN[2], | ||
+ | nilThdSleepMilliseconds(Delay[2]); | ||
+ | } | ||
+ | } | ||
+ | /*线程4*/ | ||
+ | NIL_WORKING_AREA(waThread4, | ||
+ | NIL_THREAD(Thread4, | ||
+ | digitalWrite(LED_PIN[3], | ||
+ | while (TRUE) { | ||
+ | digitalWrite(LED_PIN[3], | ||
+ | nilThdSleepMilliseconds(Delay[3]); | ||
+ | digitalWrite(LED_PIN[3], | ||
+ | nilThdSleepMilliseconds(Delay[3]); | ||
+ | } | ||
+ | } | ||
+ | /*线程5*/ | ||
+ | NIL_WORKING_AREA(waThread5, | ||
+ | NIL_THREAD(Thread5, | ||
+ | digitalWrite(LED_PIN[4], | ||
+ | while (TRUE) { | ||
+ | digitalWrite(LED_PIN[4], | ||
+ | nilThdSleepMilliseconds(Delay[4]); | ||
+ | digitalWrite(LED_PIN[4], | ||
+ | nilThdSleepMilliseconds(Delay[4]); | ||
+ | } | ||
+ | } | ||
+ | /*线程6*/ | ||
+ | NIL_WORKING_AREA(waThread6, | ||
+ | NIL_THREAD(Thread6, | ||
+ | digitalWrite(LED_PIN[5], | ||
+ | while (TRUE) { | ||
+ | digitalWrite(LED_PIN[5], | ||
+ | nilThdSleepMilliseconds(Delay[5]); | ||
+ | digitalWrite(LED_PIN[5], | ||
+ | nilThdSleepMilliseconds(Delay[5]); | ||
+ | } | ||
+ | } | ||
+ | / | ||
+ | NIL_THREADS_TABLE_BEGIN() | ||
+ | NIL_THREADS_TABLE_ENTRY(" | ||
+ | NIL_THREADS_TABLE_ENTRY(" | ||
+ | NIL_THREADS_TABLE_ENTRY(" | ||
+ | NIL_THREADS_TABLE_ENTRY(" | ||
+ | NIL_THREADS_TABLE_ENTRY(" | ||
+ | NIL_THREADS_TABLE_ENTRY(" | ||
+ | NIL_THREADS_TABLE_END() | ||
+ | |||
+ | void setup() { | ||
+ | for( int i = 0;i< 6; i++ ) | ||
+ | { | ||
+ | pinMode(LED_PIN[i], | ||
+ | } | ||
+ | // Start Nil RTOS. | ||
+ | nilSysBegin(); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | // Not used. | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | {{youku> | ||
+ | <WRAP center round download 100%> | ||
+ | =====下载===== | ||
+ | 库:{{: | ||
+ | </ | ||
+ | |||
+ | |||
+ | [[ocrobot: |