struct MoveStatus_BITS {
Uint16 RunStatus:1;
Uint16 ErroStatus:3;
Uint16 AccStatus:2;
Uint16 Dir:1;
Uint16 reserve1:1;
Uint16 StopMode:2;
Uint16 reserve:6;
};
定义一个位寄存器结构体,对其中某一位写操作,为什么会影响其他位的状态?
例如定义如下:
int16 sbuf=0;
.....sbuf处理函数
AxisX_Move.Axis_Data.Status.ErroStatus = sbuf;
执行上面这一句,会导致程序中AxisX_Move.Axis_Data.Status.StopMode写操作偶然不成功,这个是什么原因?具体情况:在中断中写AxisX_Move.Axis_Data.Status.StopMode=2,写成功了,因为执行AxisX_Move.Axis_Data.Status.ErroStatus = sbuf,导致再次读AxisX_Move.Axis_Data.Status.StopMode为0,非常奇怪
所有数据都是SRAM存储器操作