一、位段结构体介绍
位段结构体就是按位读写,c语言提供了专门的结构体方式
二、位段结构体定义
struct
{
type [member_name] : width ;
};
struct
{
unsigned int widthValidated : 1;
unsigned int heightValidated : 1;
} status;
三、位段结构体访问
status.widthValidated = 0;
printf("%d", status.widthValidated);
四、工程实例
需求:当前有个32位寄存器reg_1
bit0为启动,bit1为停止,bit2-bit3为状态0为空闲1忙2完成,bit4-bit7预留
bit8-bit15为输入数据
bit16-bit31为输出结果
将8位value放入计算得到结果
常规操作:
char value = 10;
reg_1 &= ~(0xff << 8);
reg_1 |= (value<< 8);//传入数据
reg_1 |= 0x01;
while(reg_1& (0x03 <<2) != (0x02 <<2));
printf("%d",(reg_1>>16));
位段结构体操作:
typedef struct
{
unsigned int start : 1;
unsigned int stop : 1;
unsigned int state : 2;
unsigned int : 4;
unsigned int input: 8;
unsigned int output: 16;
}reg_def;
reg_def *preg;
char value = 10;
preg = (reg_def *)®_1;
preg->input = value;
preg->start = 1;
while(preg->state != 2);
printf("%d",preg->output);