It shows how to use Threads

Dependencies:   mbed-rtos mbed

Committer:
perlatecnica
Date:
Thu Nov 19 09:20:46 2015 +0000
Revision:
1:9c7885dd481e
Parent:
0:88bde4947c00
Child:
2:15c0c28bbd10
v1.1 bug fixing. Mancava la libreria frtos ed una parentesi nella funziona puntata dal thread nel fail main.cpp

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 1:9c7885dd481e 9 #include "rtos.h"
perlatecnica 0:88bde4947c00 10
perlatecnica 0:88bde4947c00 11 // Instanzia un oggetto DigitalIn a cui viene associato lo User Button
perlatecnica 0:88bde4947c00 12 DigitalIn mybutton(USER_BUTTON);
perlatecnica 0:88bde4947c00 13
perlatecnica 0:88bde4947c00 14 // Instanzia un oggetto di tipo DigitalOut
perlatecnica 0:88bde4947c00 15 DigitalOut myled(LED1);
perlatecnica 0:88bde4947c00 16
perlatecnica 0:88bde4947c00 17 // Variabile alla quale viene assegnato il tempo tra l'accensione e lo spegnimento
perlatecnica 0:88bde4947c00 18 float delay = 0;
perlatecnica 0:88bde4947c00 19
perlatecnica 0:88bde4947c00 20 // Implementa la funzione associata al Thread
perlatecnica 0:88bde4947c00 21 // Quando viene premuto il pulsante (mybutton == 0)
perlatecnica 0:88bde4947c00 22 // viene impostato il nuovo valore della variabile delay
perlatecnica 0:88bde4947c00 23 void button_thread(void const *args) {
perlatecnica 0:88bde4947c00 24 while(true) {
perlatecnica 0:88bde4947c00 25 if (mybutton == 0) { // Button is pressed
perlatecnica 0:88bde4947c00 26 if (delay == 1.0)
perlatecnica 0:88bde4947c00 27 delay = 0.2; // 200 ms
perlatecnica 0:88bde4947c00 28 else
perlatecnica 0:88bde4947c00 29 delay = 1.0; // 1 sec
perlatecnica 1:9c7885dd481e 30 }// if button
perlatecnica 1:9c7885dd481e 31 }
perlatecnica 0:88bde4947c00 32 }
perlatecnica 0:88bde4947c00 33
perlatecnica 0:88bde4947c00 34 int main() {
perlatecnica 0:88bde4947c00 35 // Threads start here
perlatecnica 0:88bde4947c00 36 Thread button_th(button_thread);
perlatecnica 0:88bde4947c00 37
perlatecnica 0:88bde4947c00 38 // Blinking led
perlatecnica 0:88bde4947c00 39 while(true) {
perlatecnica 0:88bde4947c00 40 myled = !myled;
perlatecnica 0:88bde4947c00 41 wait(delay);
perlatecnica 0:88bde4947c00 42 }
perlatecnica 0:88bde4947c00 43 }