Simple LED blinking RTOS application with 3 threads

Dependencies:   mbed-rtos mbed

Fork of rtos_basic by mbed official

Committer:
icserny
Date:
Thu Jan 28 15:24:41 2016 +0000
Revision:
7:84b7291a746d
Parent:
3:c92e21f305d8
Firts version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
icserny 7:84b7291a746d 1 /** 09_rtos_basic
icserny 7:84b7291a746d 2 * RTOS LED blinking example running 3 threads
icserny 7:84b7291a746d 3 * (main and two additional threads)
icserny 7:84b7291a746d 4 *
icserny 7:84b7291a746d 5 * Hardware requirement:
icserny 7:84b7291a746d 6 * - FRDM-KL25Z board
icserny 7:84b7291a746d 7 */
icserny 7:84b7291a746d 8
emilmont 1:491820ee784d 9 #include "mbed.h"
emilmont 1:491820ee784d 10 #include "rtos.h"
emilmont 1:491820ee784d 11
emilmont 1:491820ee784d 12 DigitalOut led1(LED1);
emilmont 1:491820ee784d 13 DigitalOut led2(LED2);
icserny 7:84b7291a746d 14 DigitalOut led3(LED3);
emilmont 1:491820ee784d 15
emilmont 3:c92e21f305d8 16 void led2_thread(void const *args) {
emilmont 1:491820ee784d 17 while (true) {
emilmont 1:491820ee784d 18 led2 = !led2;
icserny 7:84b7291a746d 19 Thread::wait(2000);
icserny 7:84b7291a746d 20 }
icserny 7:84b7291a746d 21 }
icserny 7:84b7291a746d 22
icserny 7:84b7291a746d 23 void led3_thread(void const *args) {
icserny 7:84b7291a746d 24 while (true) {
icserny 7:84b7291a746d 25 led3 = !led3;
icserny 7:84b7291a746d 26 Thread::wait(4000);
emilmont 1:491820ee784d 27 }
emilmont 1:491820ee784d 28 }
emilmont 1:491820ee784d 29
emilmont 1:491820ee784d 30 int main() {
icserny 7:84b7291a746d 31 Thread thread2(led2_thread);
icserny 7:84b7291a746d 32 Thread thread3(led3_thread);
icserny 7:84b7291a746d 33
emilmont 1:491820ee784d 34 while (true) {
emilmont 1:491820ee784d 35 led1 = !led1;
icserny 7:84b7291a746d 36 Thread::wait(1000);
emilmont 1:491820ee784d 37 }
emilmont 1:491820ee784d 38 }