![](/media/cache/group/nucleo401re.jpg.50x50_q85.jpg)
It shows how to use Threads
main.cpp@0:88bde4947c00, 2015-11-02 (annotated)
- 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?
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 | 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 | } |