mastering_embedded_systems_diploma
Macros
Exported_macros
Collaboration diagram for Exported_macros:

Macros

#define SET_BIT(REG, BIT)   ((REG) |= (BIT))
 
#define CLEAR_BIT(REG, BIT)   ((REG) &= ~(BIT))
 
#define READ_BIT(REG, BIT)   ((REG) & (BIT))
 
#define CLEAR_REG(REG)   ((REG) = (0x0))
 
#define WRITE_REG(REG, VAL)   ((REG) = (VAL))
 
#define READ_REG(REG)   ((REG))
 
#define MODIFY_REG(REG, CLEARMASK, SETMASK)   WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))
 
#define POSITION_VAL(VAL)   (__CLZ(__RBIT(VAL)))
 
#define ATOMIC_SET_BIT(REG, BIT)
 
#define ATOMIC_CLEAR_BIT(REG, BIT)
 
#define ATOMIC_MODIFY_REG(REG, CLEARMSK, SETMASK)
 
#define ATOMIC_SETH_BIT(REG, BIT)
 
#define ATOMIC_CLEARH_BIT(REG, BIT)
 
#define ATOMIC_MODIFYH_REG(REG, CLEARMSK, SETMASK)
 

Detailed Description

Macro Definition Documentation

◆ ATOMIC_CLEAR_BIT

#define ATOMIC_CLEAR_BIT (   REG,
  BIT 
)
Value:
do { \
uint32_t val; \
do { \
val = __LDREXW((__IO uint32_t *)&(REG)) & ~(BIT); \
} while ((__STREXW(val,(__IO uint32_t *)&(REG))) != 0U); \
} while(0)
#define __IO
Definition: core_armv8mbl.h:196

◆ ATOMIC_CLEARH_BIT

#define ATOMIC_CLEARH_BIT (   REG,
  BIT 
)
Value:
do { \
uint16_t val; \
do { \
val = __LDREXH((__IO uint16_t *)&(REG)) & ~(BIT); \
} while ((__STREXH(val,(__IO uint16_t *)&(REG))) != 0U); \
} while(0)
#define __IO
Definition: core_armv8mbl.h:196

◆ ATOMIC_MODIFY_REG

#define ATOMIC_MODIFY_REG (   REG,
  CLEARMSK,
  SETMASK 
)
Value:
do { \
uint32_t val; \
do { \
val = (__LDREXW((__IO uint32_t *)&(REG)) & ~(CLEARMSK)) | (SETMASK); \
} while ((__STREXW(val,(__IO uint32_t *)&(REG))) != 0U); \
} while(0)
#define __IO
Definition: core_armv8mbl.h:196

◆ ATOMIC_MODIFYH_REG

#define ATOMIC_MODIFYH_REG (   REG,
  CLEARMSK,
  SETMASK 
)
Value:
do { \
uint16_t val; \
do { \
val = (__LDREXH((__IO uint16_t *)&(REG)) & ~(CLEARMSK)) | (SETMASK); \
} while ((__STREXH(val,(__IO uint16_t *)&(REG))) != 0U); \
} while(0)
#define __IO
Definition: core_armv8mbl.h:196

◆ ATOMIC_SET_BIT

#define ATOMIC_SET_BIT (   REG,
  BIT 
)
Value:
do { \
uint32_t val; \
do { \
val = __LDREXW((__IO uint32_t *)&(REG)) | (BIT); \
} while ((__STREXW(val,(__IO uint32_t *)&(REG))) != 0U); \
} while(0)
#define __IO
Definition: core_armv8mbl.h:196

◆ ATOMIC_SETH_BIT

#define ATOMIC_SETH_BIT (   REG,
  BIT 
)
Value:
do { \
uint16_t val; \
do { \
val = __LDREXH((__IO uint16_t *)&(REG)) | (BIT); \
} while ((__STREXH(val,(__IO uint16_t *)&(REG))) != 0U); \
} while(0)
#define __IO
Definition: core_armv8mbl.h:196