249 lines
5.0 KiB
C
249 lines
5.0 KiB
C
/**
|
|
**************************************************************************
|
|
* @file mylibs_defs.h
|
|
* @brief Заголочный файл для дефайнов библиотеки MyLibsGeneral.
|
|
**************************************************************************
|
|
* @defgroup BIT_ACCESS_DEFINES Bit access defines
|
|
* @ingroup MYLIBS_DEFINES
|
|
* @brief Всякое для доступа к битам в unsigned
|
|
*************************************************************************/
|
|
#ifndef __BIT_ACCESS_H_
|
|
#define __BIT_ACCESS_H_
|
|
#include "mylibs_defs.h"
|
|
|
|
/**
|
|
* @addtogroup BIT_ACCESS_TYPEDEF Byte access typedefs
|
|
* @ingroup BIT_ACCESS_DEFINES
|
|
* @brief Дефайны юнионов для обращения к битам.
|
|
@{
|
|
*/
|
|
typedef union
|
|
{
|
|
uint8_t all;
|
|
struct
|
|
{
|
|
unsigned bit0:1;
|
|
unsigned bit1:1;
|
|
unsigned bit2:1;
|
|
unsigned bit3:1;
|
|
unsigned reserved:4;
|
|
}bit;
|
|
}uint4_BitTypeDef;
|
|
|
|
typedef union
|
|
{
|
|
uint8_t all;
|
|
struct
|
|
{
|
|
unsigned bit0:1;
|
|
unsigned bit1:1;
|
|
unsigned bit2:1;
|
|
unsigned bit3:1;
|
|
unsigned bit4:1;
|
|
unsigned reserved:3;
|
|
}bit;
|
|
}uint5_BitTypeDef;
|
|
|
|
typedef union
|
|
{
|
|
uint8_t all;
|
|
struct
|
|
{
|
|
unsigned bit0:1;
|
|
unsigned bit1:1;
|
|
unsigned bit2:1;
|
|
unsigned bit3:1;
|
|
unsigned bit4:1;
|
|
unsigned bit5:1;
|
|
unsigned reserved:2;
|
|
}bit;
|
|
}uint6_BitTypeDef;
|
|
|
|
typedef union
|
|
{
|
|
uint8_t all;
|
|
struct
|
|
{
|
|
unsigned bit0:1;
|
|
unsigned bit1:1;
|
|
unsigned bit2:1;
|
|
unsigned bit3:1;
|
|
unsigned bit4:1;
|
|
unsigned bit5:1;
|
|
unsigned bit6:1;
|
|
unsigned reserved:1;
|
|
}bit;
|
|
}uint7_BitTypeDef;
|
|
|
|
typedef union
|
|
{
|
|
uint8_t all;
|
|
struct
|
|
{
|
|
unsigned bit0:1;
|
|
unsigned bit1:1;
|
|
unsigned bit2:1;
|
|
unsigned bit3:1;
|
|
unsigned bit4:1;
|
|
unsigned bit5:1;
|
|
unsigned bit6:1;
|
|
unsigned bit7:1;
|
|
}bit;
|
|
}uint8_BitTypeDef;
|
|
|
|
typedef union
|
|
{
|
|
uint16_t all;
|
|
struct
|
|
{
|
|
unsigned bit0:1;
|
|
unsigned bit1:1;
|
|
unsigned bit2:1;
|
|
unsigned bit3:1;
|
|
unsigned bit4:1;
|
|
unsigned bit5:1;
|
|
unsigned bit6:1;
|
|
unsigned bit7:1;
|
|
unsigned bit8:1;
|
|
unsigned bit9:1;
|
|
unsigned bit10:1;
|
|
unsigned bit11:1;
|
|
unsigned bit12:1;
|
|
unsigned bit13:1;
|
|
unsigned bit14:1;
|
|
unsigned bit15:1;
|
|
}bit;
|
|
}uint16_BitTypeDef;
|
|
|
|
|
|
typedef union
|
|
{
|
|
uint32_t all;
|
|
struct
|
|
{
|
|
unsigned bit0:1;
|
|
unsigned bit1:1;
|
|
unsigned bit2:1;
|
|
unsigned bit3:1;
|
|
unsigned bit4:1;
|
|
unsigned bit5:1;
|
|
unsigned bit6:1;
|
|
unsigned bit7:1;
|
|
unsigned bit8:1;
|
|
unsigned bit9:1;
|
|
unsigned bit10:1;
|
|
unsigned bit11:1;
|
|
unsigned bit12:1;
|
|
unsigned bit13:1;
|
|
unsigned bit14:1;
|
|
unsigned bit15:1;
|
|
unsigned bit16:1;
|
|
unsigned bit17:1;
|
|
unsigned bit18:1;
|
|
unsigned bit19:1;
|
|
unsigned bit20:1;
|
|
unsigned bit21:1;
|
|
unsigned bit22:1;
|
|
unsigned bit23:1;
|
|
unsigned bit24:1;
|
|
unsigned bit25:1;
|
|
unsigned bit26:1;
|
|
unsigned bit27:1;
|
|
unsigned bit28:1;
|
|
unsigned bit29:1;
|
|
unsigned bit30:1;
|
|
unsigned bit31:1;
|
|
}bit;
|
|
}uint32_BitTypeDef;
|
|
|
|
|
|
typedef union
|
|
{
|
|
uint64_t all;
|
|
struct
|
|
{
|
|
unsigned bit0:1;
|
|
unsigned bit1:1;
|
|
unsigned bit2:1;
|
|
unsigned bit3:1;
|
|
unsigned bit4:1;
|
|
unsigned bit5:1;
|
|
unsigned bit6:1;
|
|
unsigned bit7:1;
|
|
unsigned bit8:1;
|
|
unsigned bit9:1;
|
|
unsigned bit10:1;
|
|
unsigned bit11:1;
|
|
unsigned bit12:1;
|
|
unsigned bit13:1;
|
|
unsigned bit14:1;
|
|
unsigned bit15:1;
|
|
unsigned bit16:1;
|
|
unsigned bit17:1;
|
|
unsigned bit18:1;
|
|
unsigned bit19:1;
|
|
unsigned bit20:1;
|
|
unsigned bit21:1;
|
|
unsigned bit22:1;
|
|
unsigned bit23:1;
|
|
unsigned bit24:1;
|
|
unsigned bit25:1;
|
|
unsigned bit26:1;
|
|
unsigned bit27:1;
|
|
unsigned bit28:1;
|
|
unsigned bit29:1;
|
|
unsigned bit30:1;
|
|
unsigned bit31:1;
|
|
unsigned bit32:1;
|
|
unsigned bit33:1;
|
|
unsigned bit34:1;
|
|
unsigned bit35:1;
|
|
unsigned bit36:1;
|
|
unsigned bit37:1;
|
|
unsigned bit38:1;
|
|
unsigned bit39:1;
|
|
unsigned bit40:1;
|
|
unsigned bit41:1;
|
|
unsigned bit42:1;
|
|
unsigned bit43:1;
|
|
unsigned bit44:1;
|
|
unsigned bit45:1;
|
|
unsigned bit46:1;
|
|
unsigned bit47:1;
|
|
unsigned bit48:1;
|
|
unsigned bit49:1;
|
|
unsigned bit50:1;
|
|
unsigned bit51:1;
|
|
unsigned bit52:1;
|
|
unsigned bit53:1;
|
|
unsigned bit54:1;
|
|
unsigned bit55:1;
|
|
unsigned bit56:1;
|
|
unsigned bit57:1;
|
|
unsigned bit58:1;
|
|
unsigned bit59:1;
|
|
unsigned bit60:1;
|
|
unsigned bit61:1;
|
|
unsigned bit62:1;
|
|
unsigned bit63:1;
|
|
}bit;
|
|
}uint64_BitTypeDef;
|
|
/** BIT_ACCESS_TYPEDEF
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @addtogroup BIT_ACCESS_FUNCTIONS Byte access functions
|
|
* @ingroup BIT_ACCESS_DEFINES
|
|
* @brief Дефайны для обращения к битам в unsigned.
|
|
@{
|
|
*/
|
|
#define uint8_bit(_uint8_, _bit_) (*(uint8_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
|
|
#define uint16_bit(_uint8_, _bit_) (*(uint16_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
|
|
#define uint32_bit(_uint8_, _bit_) (*(uint32_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
|
|
#define uint64_bit(_uint8_, _bit_) (*(uint64_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
|
|
|
|
/** BIT_ACCESS_FUNCTIONS
|
|
* @}
|
|
*/
|
|
#endif //__BIT_ACCESS_H_
|