mbed library sources. Supersedes mbed-src.

Fork of mbed-dev by mbed official

Committer:
screamer
Date:
Tue Aug 02 14:07:36 2016 +0000
Revision:
144:423e1876dc07
Parent:
15:a81a8d6c1dfe
Added targets.json file for the supported targets in the release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 15:a81a8d6c1dfe 1 #ifndef CYCLE_COUNTER_H_INCLUDED
mbed_official 15:a81a8d6c1dfe 2 #define CYCLE_COUNTER_H_INCLUDED
mbed_official 15:a81a8d6c1dfe 3
mbed_official 15:a81a8d6c1dfe 4 #include <compiler.h>
mbed_official 15:a81a8d6c1dfe 5 #include <clock.h>
mbed_official 15:a81a8d6c1dfe 6
mbed_official 15:a81a8d6c1dfe 7 #ifdef __cplusplus
mbed_official 15:a81a8d6c1dfe 8 extern "C" {
mbed_official 15:a81a8d6c1dfe 9 #endif
mbed_official 15:a81a8d6c1dfe 10
mbed_official 15:a81a8d6c1dfe 11 /**
mbed_official 15:a81a8d6c1dfe 12 * \name Convenience functions for busy-wait delay loops
mbed_official 15:a81a8d6c1dfe 13 *
mbed_official 15:a81a8d6c1dfe 14 * @{
mbed_official 15:a81a8d6c1dfe 15 */
mbed_official 15:a81a8d6c1dfe 16
mbed_official 15:a81a8d6c1dfe 17 /**
mbed_official 15:a81a8d6c1dfe 18 * \brief Delay loop to delay n number of cycles
mbed_official 15:a81a8d6c1dfe 19 * Delay program execution for at least the specified number of CPU cycles.
mbed_official 15:a81a8d6c1dfe 20 *
mbed_official 15:a81a8d6c1dfe 21 * \param n Number of cycles to delay
mbed_official 15:a81a8d6c1dfe 22 */
mbed_official 15:a81a8d6c1dfe 23 static inline void delay_cycles(
mbed_official 15:a81a8d6c1dfe 24 const uint32_t n)
mbed_official 15:a81a8d6c1dfe 25 {
mbed_official 15:a81a8d6c1dfe 26 if (n > 0) {
mbed_official 15:a81a8d6c1dfe 27 SysTick->LOAD = n;
mbed_official 15:a81a8d6c1dfe 28 SysTick->VAL = 0;
mbed_official 15:a81a8d6c1dfe 29
mbed_official 15:a81a8d6c1dfe 30 while (!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk)) {
mbed_official 15:a81a8d6c1dfe 31 };
mbed_official 15:a81a8d6c1dfe 32 }
mbed_official 15:a81a8d6c1dfe 33 }
mbed_official 15:a81a8d6c1dfe 34
mbed_official 15:a81a8d6c1dfe 35 void delay_cycles_us(uint32_t n);
mbed_official 15:a81a8d6c1dfe 36
mbed_official 15:a81a8d6c1dfe 37 void delay_cycles_ms(uint32_t n);
mbed_official 15:a81a8d6c1dfe 38
mbed_official 15:a81a8d6c1dfe 39 /**
mbed_official 15:a81a8d6c1dfe 40 * \brief Delay program execution for at least the specified number of microseconds.
mbed_official 15:a81a8d6c1dfe 41 *
mbed_official 15:a81a8d6c1dfe 42 * \param delay number of microseconds to wait
mbed_official 15:a81a8d6c1dfe 43 */
mbed_official 15:a81a8d6c1dfe 44 #define cpu_delay_us(delay) delay_cycles_us(delay)
mbed_official 15:a81a8d6c1dfe 45
mbed_official 15:a81a8d6c1dfe 46 /**
mbed_official 15:a81a8d6c1dfe 47 * \brief Delay program execution for at least the specified number of milliseconds.
mbed_official 15:a81a8d6c1dfe 48 *
mbed_official 15:a81a8d6c1dfe 49 * \param delay number of milliseconds to wait
mbed_official 15:a81a8d6c1dfe 50 */
mbed_official 15:a81a8d6c1dfe 51 #define cpu_delay_ms(delay) delay_cycles_ms(delay)
mbed_official 15:a81a8d6c1dfe 52
mbed_official 15:a81a8d6c1dfe 53 /**
mbed_official 15:a81a8d6c1dfe 54 * \brief Delay program execution for at least the specified number of seconds.
mbed_official 15:a81a8d6c1dfe 55 *
mbed_official 15:a81a8d6c1dfe 56 * \param delay number of seconds to wait
mbed_official 15:a81a8d6c1dfe 57 */
mbed_official 15:a81a8d6c1dfe 58 #define cpu_delay_s(delay) delay_cycles_ms(1000 * delay)
mbed_official 15:a81a8d6c1dfe 59
mbed_official 15:a81a8d6c1dfe 60 /**
mbed_official 15:a81a8d6c1dfe 61 * @}
mbed_official 15:a81a8d6c1dfe 62 */
mbed_official 15:a81a8d6c1dfe 63
mbed_official 15:a81a8d6c1dfe 64 #ifdef __cplusplus
mbed_official 15:a81a8d6c1dfe 65 }
mbed_official 15:a81a8d6c1dfe 66 #endif
mbed_official 15:a81a8d6c1dfe 67
mbed_official 15:a81a8d6c1dfe 68 #endif /* CYCLE_COUNTER_H_INCLUDED */