A modified version of the hello world program to run using RTOS threads. Also, it cycles through seven colors on the RGB LED while it's doing its thing.

Fork of frdm_helloworld by NXP

Committer:
bjepson
Date:
Tue Aug 23 01:31:09 2016 +0000
Revision:
4:f52f79d2f703
Parent:
3:fd99fd0c7e60
All three functions (led cycle, two buttons) are in threads now.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kojto 0:4f3ac9922229 1 #include "mbed.h"
bjepson 3:fd99fd0c7e60 2 #include "rtos.h"
Kojto 0:4f3ac9922229 3
Kojto 0:4f3ac9922229 4 DigitalOut led_red(LED_RED);
Kojto 0:4f3ac9922229 5 DigitalOut led_green(LED_GREEN);
bjepson 3:fd99fd0c7e60 6 DigitalOut led_blue(LED_BLUE);
bjepson 4:f52f79d2f703 7
Kojto 0:4f3ac9922229 8 DigitalIn sw2(SW2);
Kojto 0:4f3ac9922229 9 DigitalIn sw3(SW3);
bjepson 4:f52f79d2f703 10
Kojto 0:4f3ac9922229 11 Serial pc(USBTX, USBRX);
Kojto 0:4f3ac9922229 12
bjepson 4:f52f79d2f703 13 void check_sw2_thread()
Kojto 0:4f3ac9922229 14 {
bjepson 3:fd99fd0c7e60 15 while(true) {
bjepson 3:fd99fd0c7e60 16 if (sw2 == 0) {
bjepson 3:fd99fd0c7e60 17 pc.printf("SW2 button pressed. \n");
bjepson 4:f52f79d2f703 18 while(sw2 == 0) { // debounce
bjepson 4:f52f79d2f703 19 Thread::wait(.3);
bjepson 4:f52f79d2f703 20 }
bjepson 4:f52f79d2f703 21 }
bjepson 4:f52f79d2f703 22 Thread::wait(.3);
bjepson 4:f52f79d2f703 23 }
bjepson 4:f52f79d2f703 24 }
bjepson 4:f52f79d2f703 25
bjepson 4:f52f79d2f703 26 void check_sw3_thread()
bjepson 4:f52f79d2f703 27 {
bjepson 4:f52f79d2f703 28 while(true) {
bjepson 4:f52f79d2f703 29 if (sw3 == 0) {
bjepson 4:f52f79d2f703 30 pc.printf("SW3 button pressed. \n");
bjepson 4:f52f79d2f703 31 pc.printf("5 characters will be echoed. Start typing. \n");
bjepson 4:f52f79d2f703 32 for (uint32_t i = 0; i < 5; i++) {
bjepson 4:f52f79d2f703 33 pc.putc(pc.getc());
bjepson 4:f52f79d2f703 34 }
bjepson 4:f52f79d2f703 35 pc.putc(13); /* CR */
bjepson 4:f52f79d2f703 36 pc.putc(10); /* LF */
bjepson 3:fd99fd0c7e60 37 }
bjepson 3:fd99fd0c7e60 38 Thread::wait(.3);
Kojto 0:4f3ac9922229 39 }
Kojto 0:4f3ac9922229 40 }
Kojto 0:4f3ac9922229 41
bjepson 4:f52f79d2f703 42 // Cycle through seven colors
bjepson 4:f52f79d2f703 43 void strobe_led_thread()
Kojto 0:4f3ac9922229 44 {
bjepson 4:f52f79d2f703 45 while(true) {
bjepson 4:f52f79d2f703 46 for (int i = 0; i < 8; i++) {
bjepson 4:f52f79d2f703 47 led_red = !(i & 0x01);
bjepson 4:f52f79d2f703 48 led_green = !(i & 0x02);
bjepson 4:f52f79d2f703 49 led_blue = !(i & 0x04);
bjepson 4:f52f79d2f703 50 wait(0.5);
Kojto 0:4f3ac9922229 51 }
Kojto 0:4f3ac9922229 52 }
Kojto 0:4f3ac9922229 53 }
Kojto 0:4f3ac9922229 54
bjepson 3:fd99fd0c7e60 55 int main()
bjepson 3:fd99fd0c7e60 56 {
Kojto 0:4f3ac9922229 57 pc.baud(115200);
Kojto 0:4f3ac9922229 58 pc.printf("Hello World from FRDM-K64F board.\n");
Kojto 0:4f3ac9922229 59
bjepson 4:f52f79d2f703 60 Thread sw2thread;
bjepson 4:f52f79d2f703 61 osStatus err = sw2thread.start(&check_sw2_thread);
bjepson 4:f52f79d2f703 62 if (err) {
bjepson 4:f52f79d2f703 63 pc.printf("%d", err);
bjepson 4:f52f79d2f703 64 }
bjepson 4:f52f79d2f703 65
bjepson 4:f52f79d2f703 66 Thread sw3thread;
bjepson 4:f52f79d2f703 67 err = sw3thread.start(&check_sw3_thread);
bjepson 4:f52f79d2f703 68 if (err) {
bjepson 4:f52f79d2f703 69 pc.printf("%d", err);
bjepson 4:f52f79d2f703 70 }
bjepson 3:fd99fd0c7e60 71
bjepson 4:f52f79d2f703 72 Thread strobethread;
bjepson 4:f52f79d2f703 73 err = strobethread.start(&strobe_led_thread);
bjepson 4:f52f79d2f703 74 if (err) {
bjepson 4:f52f79d2f703 75 pc.printf("%d", err);
bjepson 4:f52f79d2f703 76 }
bjepson 3:fd99fd0c7e60 77
bjepson 4:f52f79d2f703 78 // wait for threads to terminate
bjepson 4:f52f79d2f703 79 sw2thread.join();
bjepson 4:f52f79d2f703 80 sw3thread.join();
bjepson 4:f52f79d2f703 81 strobethread.join();
Kojto 0:4f3ac9922229 82 }