Ondelay OneShot timer example

Dependencies:   mbed

Committer:
ImageWriter
Date:
Wed Nov 28 07:43:11 2018 +0000
Revision:
1:2416bbc70934
Parent:
0:d31d989a13fc
Nucleo ondeley oneshot example for F411RE and F746ZG

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ImageWriter 0:d31d989a13fc 1 // Nucleo OnDeley Oneshot
ImageWriter 0:d31d989a13fc 2 #include "mbed.h"
ImageWriter 0:d31d989a13fc 3
ImageWriter 0:d31d989a13fc 4 // IO instance
ImageWriter 1:2416bbc70934 5 #if defined (TARGET_NUCLEO_F746ZG)
ImageWriter 0:d31d989a13fc 6 DigitalOut myled(PB_0); // Green
ImageWriter 0:d31d989a13fc 7 DigitalOut myled2(PB_7); // Blue
ImageWriter 0:d31d989a13fc 8 DigitalOut myled3(PB_14); // Red
ImageWriter 0:d31d989a13fc 9 DigitalIn mySw(PC_13); // User button
ImageWriter 0:d31d989a13fc 10 #define MYSWLOGIC 1
ImageWriter 0:d31d989a13fc 11 #endif
ImageWriter 0:d31d989a13fc 12
ImageWriter 1:2416bbc70934 13 #if defined (TARGET_NUCLEO_F411RE)
ImageWriter 0:d31d989a13fc 14 DigitalOut myled(D13); // LED
ImageWriter 0:d31d989a13fc 15 DigitalOut myled2(D12); //
ImageWriter 0:d31d989a13fc 16 DigitalOut myled3(D11); //
ImageWriter 0:d31d989a13fc 17 DigitalIn mySw(PC_13); // User button
ImageWriter 0:d31d989a13fc 18 #define MYSWLOGIC 0
ImageWriter 0:d31d989a13fc 19 #endif
ImageWriter 0:d31d989a13fc 20
ImageWriter 0:d31d989a13fc 21
ImageWriter 0:d31d989a13fc 22 // Timer instance
ImageWriter 0:d31d989a13fc 23 Timeout delay1;
ImageWriter 0:d31d989a13fc 24 Timeout oneShot1;
ImageWriter 0:d31d989a13fc 25
ImageWriter 0:d31d989a13fc 26 // Timer flag
ImageWriter 0:d31d989a13fc 27 bool swon = false; // Switch status. Set true when press. Set false when Time up and release.
ImageWriter 0:d31d989a13fc 28 bool tmon = false; // Timer status. Set to the true when the OneShot timer starts. Set to the false when time up.
ImageWriter 0:d31d989a13fc 29
ImageWriter 0:d31d989a13fc 30 // Function prototype
ImageWriter 0:d31d989a13fc 31 void upDelay1();
ImageWriter 0:d31d989a13fc 32 void upOneShot1();
ImageWriter 0:d31d989a13fc 33
ImageWriter 0:d31d989a13fc 34 // Functions
ImageWriter 0:d31d989a13fc 35 // Up time from delay timer.
ImageWriter 0:d31d989a13fc 36 void upDelay1(){
ImageWriter 0:d31d989a13fc 37 myled2 = 1; // LED on
ImageWriter 0:d31d989a13fc 38 oneShot1.attach_us(&upOneShot1, 50000); // Set oneShot
ImageWriter 0:d31d989a13fc 39 tmon = true; // tmon flag set.
ImageWriter 0:d31d989a13fc 40 }
ImageWriter 0:d31d989a13fc 41
ImageWriter 0:d31d989a13fc 42 // Up time from oneShot timeer.
ImageWriter 0:d31d989a13fc 43 void upOneShot1(){
ImageWriter 0:d31d989a13fc 44 myled2 = 0; // LED off
ImageWriter 0:d31d989a13fc 45 delay1.detach(); // Timeout::detach
ImageWriter 0:d31d989a13fc 46 oneShot1.detach(); // Timeout::detach
ImageWriter 0:d31d989a13fc 47 tmon = false; // tmon flag reset.
ImageWriter 0:d31d989a13fc 48 }
ImageWriter 0:d31d989a13fc 49
ImageWriter 0:d31d989a13fc 50 int main() {
ImageWriter 0:d31d989a13fc 51 while(1) {
ImageWriter 0:d31d989a13fc 52 myled3 = !myled3;
ImageWriter 0:d31d989a13fc 53 if (mySw == MYSWLOGIC){ // If sw on,
ImageWriter 0:d31d989a13fc 54 myled = 1; // Monitor LED ON
ImageWriter 0:d31d989a13fc 55 if(myled2 == 0 && swon == false){ // If timer is not started,
ImageWriter 0:d31d989a13fc 56 swon = true; // flag on
ImageWriter 1:2416bbc70934 57 printf("Button is pushed.\r\n");
ImageWriter 0:d31d989a13fc 58 delay1.attach_us(&upDelay1, 50000); // Start delay timer.
ImageWriter 0:d31d989a13fc 59 }
ImageWriter 0:d31d989a13fc 60 }else{ // If sw off,
ImageWriter 0:d31d989a13fc 61 myled = 0; // LED is OFF // Monitor LED off
ImageWriter 0:d31d989a13fc 62 if(tmon == false){ // If timer is completed,
ImageWriter 0:d31d989a13fc 63 swon = false; // frag reset.
ImageWriter 0:d31d989a13fc 64 delay1.detach(); // Cansel the on delay timer.
ImageWriter 0:d31d989a13fc 65 }
ImageWriter 0:d31d989a13fc 66 }
ImageWriter 0:d31d989a13fc 67 }
ImageWriter 0:d31d989a13fc 68 }