LowPowerTimeout
 LowPowerTimeout class hierarchy
LowPowerTimeout class hierarchy
Use the LowPowerTimeout interface to set up an interrupt to call a function after a specified delay. You can create any number of LowPowerTimeout objects. This allows multiple outstanding interrupts at the same time.
Notes
- No blocking code in ISR: Avoid any call to wait, infinite while loop or blocking calls in general.
- No printf, malloc or new in ISR: Avoid any call to bulky library functions. In particular, certain library functions (such as printf, malloc and new) are not re-entrant, and their behavior could be corrupted when called from an ISR.
LowPowerTimeout class reference
| Public Types | |
| using | clock = LowPowerClock | 
| Clock to use with attach_absolute, guaranteeing running only while attached or manually locked.  More... | |
| using | steady_clock = LowPowerClock | 
| Clock to use with attach_absolute, running always.  More... | |
| Public Member Functions | |
| LowPowerClock::time_point | scheduled_time () const | 
| template<class F > | |
| void | attach_absolute (F &&func, LowPowerClock::time_point abs_time) | 
| Attach a function to be called by the Timeout, specifying the absolute time.  More... | |
| std::chrono::microseconds | remaining_time () const | 
| Return time remaining until callback.  More... | |
| template<typename F > | |
| MBED_FORCEINLINE void | attach (F &&func, float t) | 
| Attach a function to be called by the Ticker, specifying the interval in seconds.  More... | |
| void | attach (Callback< void()> func, std::chrono::microseconds t) | 
| Attach a function to be called by the Ticker, specifying the interval in microseconds.  More... | |
| void | attach_us (Callback< void()> func, us_timestamp_t t) | 
| Attach a function to be called by the Ticker, specifying the interval in microseconds.  More... | |
| void | detach () | 
| Detach the function.  More... | |
LowPowerTimeout example
Set up a time out to invert an LED after a given time:
/*
 * Copyright (c) 2020 Arm Limited and affiliates.
 * SPDX-License-Identifier: Apache-2.0
 */
#include "mbed.h"
LowPowerTimeout flipper;
DigitalOut led1(LED1);
DigitalOut led2(LED2);
void flip()
{
    led2 = !led2;
}
int main()
{
    led2 = 1;
    flipper.attach(&flip, 2.0); // setup flipper to call flip after 2 seconds
    // spin in a main loop. flipper will interrupt it to call flip
    while (1) {
        led1 = !led1;
        ThisThread::sleep_for(200);
    }
}