добавлен модбас
This commit is contained in:
249
Core/MyLibs/bit_access.h
Normal file
249
Core/MyLibs/bit_access.h
Normal file
@@ -0,0 +1,249 @@
|
||||
/**
|
||||
**************************************************************************
|
||||
* @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_
|
||||
Reference in New Issue
Block a user