It shows how to use Threads

Dependencies:   mbed-rtos mbed

Committer:
StefanoArrigoni
Date:
Fri Nov 09 11:14:54 2018 +0000
Revision:
2:15c0c28bbd10
Parent:
1:9c7885dd481e
The comment * Organization: Perlatecnica no-profit organization * ha been removed

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 *****************************************************/
perlatecnica 0:88bde4947c00 6
perlatecnica 0:88bde4947c00 7 #include "mbed.h"
perlatecnica 1:9c7885dd481e 8 #include "rtos.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 1:9c7885dd481e 29 }// if button
perlatecnica 1:9c7885dd481e 30 }
perlatecnica 0:88bde4947c00 31 }
perlatecnica 0:88bde4947c00 32
perlatecnica 0:88bde4947c00 33 int main() {
perlatecnica 0:88bde4947c00 34 // Threads start here
perlatecnica 0:88bde4947c00 35 Thread button_th(button_thread);
perlatecnica 0:88bde4947c00 36
perlatecnica 0:88bde4947c00 37 // Blinking led
perlatecnica 0:88bde4947c00 38 while(true) {
perlatecnica 0:88bde4947c00 39 myled = !myled;
perlatecnica 0:88bde4947c00 40 wait(delay);
perlatecnica 0:88bde4947c00 41 }
perlatecnica 0:88bde4947c00 42 }