#ifndef STDREGMACROS_H #define STDREGMACROS_H #ifdef __cplusplus extern "C"{ #endif /*================================================================================================== * SOURCE FILE VERSION INFORMATION ==================================================================================================*/ #define STDREGMACROS_H_MAJOR_VERSION 1 #define STDREGMACROS_H_MINOR_VERSION 0 #define STDREGMACROS_H_PATCH_VERSION 2 /*================================================================================================== * FILE VERSION CHECKS ==================================================================================================*/ /*================================================================================================== * CONSTANTS ==================================================================================================*/ /*================================================================================================== * DEFINES AND MACROS ==================================================================================================*/ /** * write register value */ /** * @brief 8 bits memory write macro */ #define REG_WRITE8(address, value) ((address) = (value)) /** * @brief 16 bits memory write macro. */ #define REG_WRITE16(address, value) ((address) = (value)) /** * @brief 32 bits memory write macro. */ #define REG_WRITE32(address, value) ((address) = (value)) /** * read register value */ /** * @brief 8 bits memory read macro. */ #define REG_READ8(address) (address) /** * @brief 16 bits memory read macro. */ #define REG_READ16(address) (address) /** * @brief 32 bits memory read macro. */ #define REG_READ32(address) (address) /** * clear bit value */ /** * @brief 8 bits bits clearing macro. */ #define REG_BIT_CLEAR8(address, mask) ((address)&= (~(mask))) /** * @brief 16 bits bits clearing macro. */ #define REG_BIT_CLEAR16(address, mask) ((address)&= (~(mask))) /** * @brief 32 bits bits clearing macro. */ #define REG_BIT_CLEAR32(address, mask) ((address)&= (~(mask))) /** * get bit value */ /** * @brief 8 bits bits getting macro. */ #define REG_BIT_GET8(address, mask) ((address)& (mask)) /** * @brief 16 bits bits getting macro. */ #define REG_BIT_GET16(address, mask) ((address)& (mask)) /** * @brief 32 bits bits getting macro. */ #define REG_BIT_GET32(address, mask) ((address)& (mask)) /** * set bit value */ /** * @brief 8 bits bits setting macro. */ #define REG_BIT_SET8(address, mask) ((address)|= (mask)) /** * @brief 16 bits bits setting macro. */ #define REG_BIT_SET16(address, mask) ((address)|= (mask)) /** * @brief 32 bits bits setting macro. */ #define REG_BIT_SET32(address, mask) ((address)|= (mask)) /** * @brief 8 bit clear bits and set with new value */ #define REG_RMW8(address, mask, value) (REG_WRITE8((address), ((REG_READ8(address)& ((uint8)~(mask)))| (value)))) /** * @brief 16 bit clear bits and set with new value */ #define REG_RMW16(address, mask, value) (REG_WRITE16((address), ((REG_READ16(address)& ((uint16)~(mask)))| (value)))) /** * @brief 32 bit clear bits and set with new value */ #define REG_RMW32(address, mask, value) (REG_WRITE32((address), ((REG_READ32(address)& ((uint32)~(mask)))| (value)))) #ifdef __cplusplus } #endif #endif /* #ifndef STDREGMACROS_H */ /** @} */