It shows how to use Threads

Dependencies:   mbed-rtos mbed

Committer:
perlatecnica
Date:
Mon Nov 02 13:58:17 2015 +0000
Revision:
0:88bde4947c00
Child:
1:9c7885dd481e
v1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
perlatecnica 0:88bde4947c00 1 /****************************************************
perlatecnica 0:88bde4947c00 2 * FAST PROTOTYPING WITH NUCLEO *
perlatecnica 0:88bde4947c00 3 * Example Code 07: Thread usage *
perlatecnica 0:88bde4947c00 4 * Author: Mauro D'Angelo *
perlatecnica 0:88bde4947c00 5 * Organization: Perlatecnica no-profit organization *
perlatecnica 0:88bde4947c00 6 *****************************************************/
perlatecnica 0:88bde4947c00 7
perlatecnica 0:88bde4947c00 8 #include "mbed.h"
perlatecnica 0:88bde4947c00 9
perlatecnica 0:88bde4947c00 10 // Instanzia un oggetto DigitalIn a cui viene associato lo User Button
perlatecnica 0:88bde4947c00 11 DigitalIn mybutton(USER_BUTTON);
perlatecnica 0:88bde4947c00 12
perlatecnica 0:88bde4947c00 13 // Instanzia un oggetto di tipo DigitalOut
perlatecnica 0:88bde4947c00 14 DigitalOut myled(LED1);
perlatecnica 0:88bde4947c00 15
perlatecnica 0:88bde4947c00 16 // Variabile alla quale viene assegnato il tempo tra l'accensione e lo spegnimento
perlatecnica 0:88bde4947c00 17 float delay = 0;
perlatecnica 0:88bde4947c00 18
perlatecnica 0:88bde4947c00 19 // Implementa la funzione associata al Thread
perlatecnica 0:88bde4947c00 20 // Quando viene premuto il pulsante (mybutton == 0)
perlatecnica 0:88bde4947c00 21 // viene impostato il nuovo valore della variabile delay
perlatecnica 0:88bde4947c00 22 void button_thread(void const *args) {
perlatecnica 0:88bde4947c00 23 while(true) {
perlatecnica 0:88bde4947c00 24 if (mybutton == 0) { // Button is pressed
perlatecnica 0:88bde4947c00 25 if (delay == 1.0)
perlatecnica 0:88bde4947c00 26 delay = 0.2; // 200 ms
perlatecnica 0:88bde4947c00 27 else
perlatecnica 0:88bde4947c00 28 delay = 1.0; // 1 sec
perlatecnica 0:88bde4947c00 29 }
perlatecnica 0:88bde4947c00 30 }
perlatecnica 0:88bde4947c00 31
perlatecnica 0:88bde4947c00 32 int main() {
perlatecnica 0:88bde4947c00 33 // Threads start here
perlatecnica 0:88bde4947c00 34 Thread button_th(button_thread);
perlatecnica 0:88bde4947c00 35
perlatecnica 0:88bde4947c00 36 // Blinking led
perlatecnica 0:88bde4947c00 37 while(true) {
perlatecnica 0:88bde4947c00 38 myled = !myled;
perlatecnica 0:88bde4947c00 39 wait(delay);
perlatecnica 0:88bde4947c00 40 }
perlatecnica 0:88bde4947c00 41 }