Mistake on this page?
Report an issue in GitHub or email us
wait_api functions


void wait (float s)
 Generic wait functions. More...
void wait_ms (int ms)
 Waits a number of milliseconds. More...
void wait_us (int us)
 Waits a number of microseconds. More...
void wait_ns (unsigned int ns)
 Waits a number of nanoseconds. More...

Detailed Description

Function Documentation

void wait ( float  s)

Generic wait functions.

These provide simple NOP type wait capabilities.


1 #include "mbed.h"
3 DigitalOut heartbeat(LED1);
5 int main() {
6  while (1) {
7  heartbeat = 1;
8  wait(0.5);
9  heartbeat = 0;
10  wait(0.5);
11  }
12 }

Waits for a number of seconds, with microsecond resolution (within the accuracy of single precision floating point).

snumber of seconds to wait
If the RTOS is present, this function spins to get the exact number of microseconds for microsecond precision up to 10 milliseconds. If delay is larger than 10 milliseconds and not in ISR, it is the same as wait_ms. We recommend wait_us and wait_ms over wait.
void wait_ms ( int  ms)

Waits a number of milliseconds.

msthe whole number of milliseconds to wait
If the RTOS is present, it calls ThisThread::sleep_for(), which is same as CMSIS osDelay(). You can't call this from interrupts, and it doesn't lock hardware sleep.
void wait_ns ( unsigned int  ns)

Waits a number of nanoseconds.

This function spins the CPU to produce a small delay. It should normally only be used for delays of 10us (10000ns) or less. As it is calculated based on the expected execution time of a software loop, it may well run slower than requested based on activity from other threads and interrupts. If greater precision is required, this can be called from inside a critical section.

nsthe number of nanoseconds to wait
wait_us() will likely give more precise time than wait_ns for large-enough delays, as it is based on a timer, but its set-up time may be excessive for the smallest microsecond counts, at which point wait_ns() is better.
Any delay larger than a millisecond (1000000ns) is liable to cause overflow in the internal loop calculation. You shouldn't normally be using this for such large delays anyway in real code, but be aware if calibrating. Make repeated calls for longer test runs.
You may call this function from ISR context.
void wait_us ( int  us)

Waits a number of microseconds.

usthe whole number of microseconds to wait
This function always spins to get the exact number of microseconds. This will affect power and multithread performance. Therefore, spinning for millisecond wait is not recommended, and wait_ms() should be used instead.
You may call this function from ISR context, but large delays may impact system stability - interrupt handlers should take less than 50us.
Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.