TI中文支持网
TI专业的中文技术问题搜集分享网站

在28035上面仿真,对32位的寄存器直接进行逻辑运算出错

如题,我在程序里面是这样操作的:

ECanaRegs.CANME.all &=  (~mask) ;    此时mask值为0x00000004

但是仿真后出来的值不对,这个寄存器是32位的,看汇编的时候,分两步进行“AND”操作。

最后慢慢调试,改成下面这样,才可以!!

ECanaRegs.CANME.all = *((uint32_t *)&ECanaRegs.CANME.all) & (~mask) ;

请问大家,这个是为什么?? 像这种情况,如何在程序里对寄存器进行逻辑运算???

谢谢!!

Johnson Chen1:

请按32位操作,如果是对某个位进行操作的话,请参考下面方式:

ECanaShadow.CANMC.all = ECanaRegs.CANMC.all; ECanaShadow.CANMC.bit.STM = 1; // Configure CAN for self-test mode ECanaRegs.CANMC.all = ECanaShadow.CANMC.all;

赞(0)
未经允许不得转载:TI中文支持网 » 在28035上面仿真,对32位的寄存器直接进行逻辑运算出错
分享到: 更多 (0)