37#define RESET_CYCLE_COUNTER() do { \
38 CoreDebug->DEMCR = CoreDebug_DEMCR_TRCENA_Msk; \
39 __DSB(); DWT->LAR = 0xC5ACCE55; __DSB(); \
40 DWT->CTRL &= ~DWT_CTRL_CYCCNTENA_Msk; \
42 DWT->CTRL = DWT_CTRL_CYCCNTENA_Msk; \
45#define GET_CYCLE_COUNTER(x) x=DWT->CYCCNT;
47#define LockMutex(mut, timeout) get_lock(&mut, 1, &timeout)
49#define ReleaseMutex(mut) free_lock(&mut)
51#define GetResource(mut, max, timeout) get_lock(&mut, max, &timeout)
53#define FreeResource(mut) free_lock(&mut)
56__STATIC_INLINE uint8_t Is_LockFree(
volatile uint8_t *Lock_Variable)
59 return __LDREXB(Lock_Variable);
63__STATIC_INLINE uint8_t get_lock(
volatile uint8_t *Lock_Variable,
const uint8_t maxValue,
volatile uint32_t *pTimeout)
67 if(__LDREXB(Lock_Variable) < maxValue)
70 while( __STREXB(((*Lock_Variable) + 1), Lock_Variable) )
90__STATIC_INLINE uint8_t free_lock(
volatile uint8_t *Lock_Variable)
94 if(__LDREXB(Lock_Variable))
96 __STREXB( ((*Lock_Variable) - 1), Lock_Variable);
#define TRACE_DEBUG(...)
Definition: trace.h:183