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