![](/media/cache/group/nucleo401re.jpg.50x50_q85.jpg)
It shows how to use Threads
main.cpp@1:9c7885dd481e, 2015-11-19 (annotated)
- 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?
User | Revision | Line number | New 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 | } |