我的CAN初始化设置对CANTA寄存器置位,写了这两种方式,但观察寄存器值都显示没有变成FFFFFFFF,请问是什么原因
ECanaShadow.CANTA.all = ECanaRegs.CANTA.all; ECanaShadow.CANTA.all = 0xFFFFFFFF; ECanaRegs.CANTA.all = ECanaShadow.CANTA.all; ECanaRegs.CANTA.all = 0xFFFFFFFF;
Hank Zhao:
CANTA是Read/Clear,只能读和清零,不能写或置位。
我的CAN初始化设置对CANTA寄存器置位,写了这两种方式,但观察寄存器值都显示没有变成FFFFFFFF,请问是什么原因
ECanaShadow.CANTA.all = ECanaRegs.CANTA.all; ECanaShadow.CANTA.all = 0xFFFFFFFF; ECanaRegs.CANTA.all = ECanaShadow.CANTA.all; ECanaRegs.CANTA.all = 0xFFFFFFFF;
wei li20:
回复 Hank Zhao:
那为什么还有写FFFFFFFF的置位操作?
我的CAN初始化设置对CANTA寄存器置位,写了这两种方式,但观察寄存器值都显示没有变成FFFFFFFF,请问是什么原因
ECanaShadow.CANTA.all = ECanaRegs.CANTA.all; ECanaShadow.CANTA.all = 0xFFFFFFFF; ECanaRegs.CANTA.all = ECanaShadow.CANTA.all; ECanaRegs.CANTA.all = 0xFFFFFFFF;
Hank Zhao:
回复 wei li20:
写FFFFFFFF是用来清零的,不是置位操作。
我的CAN初始化设置对CANTA寄存器置位,写了这两种方式,但观察寄存器值都显示没有变成FFFFFFFF,请问是什么原因
ECanaShadow.CANTA.all = ECanaRegs.CANTA.all; ECanaShadow.CANTA.all = 0xFFFFFFFF; ECanaRegs.CANTA.all = ECanaShadow.CANTA.all; ECanaRegs.CANTA.all = 0xFFFFFFFF;
wei li20:
回复 Hank Zhao:
那么我观察它的值应该是全0吗
我的CAN初始化设置对CANTA寄存器置位,写了这两种方式,但观察寄存器值都显示没有变成FFFFFFFF,请问是什么原因
ECanaShadow.CANTA.all = ECanaRegs.CANTA.all; ECanaShadow.CANTA.all = 0xFFFFFFFF; ECanaRegs.CANTA.all = ECanaShadow.CANTA.all; ECanaRegs.CANTA.all = 0xFFFFFFFF;
wei li20:
回复 Hank Zhao:
请问CAN里面有哪些寄存器是Read/Clear
我的CAN初始化设置对CANTA寄存器置位,写了这两种方式,但观察寄存器值都显示没有变成FFFFFFFF,请问是什么原因
ECanaShadow.CANTA.all = ECanaRegs.CANTA.all; ECanaShadow.CANTA.all = 0xFFFFFFFF; ECanaRegs.CANTA.all = ECanaShadow.CANTA.all; ECanaRegs.CANTA.all = 0xFFFFFFFF;
Hank Zhao:
回复 wei li20:
这种寄存器有很多,比如像CANAA,CANRMP,CANRFP都是,有的是某些位是RC的,你可以在CAN模块的user guide中搜索一下。
我的CAN初始化设置对CANTA寄存器置位,写了这两种方式,但观察寄存器值都显示没有变成FFFFFFFF,请问是什么原因
ECanaShadow.CANTA.all = ECanaRegs.CANTA.all; ECanaShadow.CANTA.all = 0xFFFFFFFF; ECanaRegs.CANTA.all = ECanaShadow.CANTA.all; ECanaRegs.CANTA.all = 0xFFFFFFFF;
wei li20:
回复 Hank Zhao:
我那两种写法哪个是对的?对位操作就需要影子寄存器吗
我的CAN初始化设置对CANTA寄存器置位,写了这两种方式,但观察寄存器值都显示没有变成FFFFFFFF,请问是什么原因
ECanaShadow.CANTA.all = ECanaRegs.CANTA.all; ECanaShadow.CANTA.all = 0xFFFFFFFF; ECanaRegs.CANTA.all = ECanaShadow.CANTA.all; ECanaRegs.CANTA.all = 0xFFFFFFFF;
Hank Zhao:
回复 wei li20:
建议使用第一种写法,更安全些。
我的CAN初始化设置对CANTA寄存器置位,写了这两种方式,但观察寄存器值都显示没有变成FFFFFFFF,请问是什么原因
ECanaShadow.CANTA.all = ECanaRegs.CANTA.all; ECanaShadow.CANTA.all = 0xFFFFFFFF; ECanaRegs.CANTA.all = ECanaShadow.CANTA.all; ECanaRegs.CANTA.all = 0xFFFFFFFF;
wei li20:
回复 Hank Zhao:
我现在出现一个问题,就是CANTA一直不置位,卡在死循环中,我想知道有什么原因可能导致呢?我用ARM接收,过滤器设置为不屏蔽任何ID,两边波特率都是500K。