Image Writer
/
Nucleo_ondelay_onshot
Ondelay OneShot timer example
main.cpp@1:2416bbc70934, 2018-11-28 (annotated)
- 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?
User | Revision | Line number | New 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 | } |