TI中文支持网
TI专业的中文技术问题咨询交流网站

28377D CAN寄存器配置问题

我使用28377D,使用位域的方式配置设置清息对象,如下面所示

CanaRegs.CAN_IF1MSK.all) = maskReg;

CanaRegs.CAN_IF1ARB.all = arbReg;

CanaRegs.CAN_IF1MCTL.all = msgCtrl;

CanaRegs.CAN_IF1CMD.all = (cmdMaskReg | (objID & CAN_IF1CMD_MSG_NUM_M));

消息对象能够正常收发,所有中断开启,CAN_GLB_INTFLG,IPENX,IPEN_21均指示正确,有中断挂起,但始终无法进入中断.

而__byte_peripheral_32方式接入CAN寄存器,如下面所示

HWREG_BP(0x048000 + CAN_O_IF1MSK) = maskReg;
HWREG_BP(0x048000 + CAN_O_IF1ARB) = arbReg;
HWREG_BP(0x048000 + CAN_O_IF1MCTL) = msgCtrl;

HWREG_BP(0x048000 + CAN_O_IF1CMD) = (cmdMaskReg | (objID & CAN_IF1CMD_MSG_NUM_M));

CAN的收发正常,启用中断能进入中进入中断.

请问,位域使用bp_32 __attribute__((byte_peripheral))对寄存器进行定义,但通过CanaRegs.CAN_IF1CMD.all 这样的名称接入寄存器 始终与使用HWREG_BP接入有区别,具体是什么原因造成CanaRegs.CAN_IF1CMD.all的32位访问有误,我想用CanaRegs.CAN_IF1CMD.all的形式访问寄存器 ,可行吗,有什么办法?

麻烦懂的人测试一下 给出回复,谢谢!

maplelhf:

另外,-O4优化选项,CanaRegs.CAN_IF1CMD.all的接入形式,也可以实现中断了,其它选项均不可以.

maplelhf:

另外,-O4优化选项,CanaRegs.CAN_IF1CMD.all的接入形式,也可以实现中断了,其它选项均不可以.

Susan Yang:

若是可以的话,请您私信一下您的工程,我们实际看一下,谢谢

maplelhf:

回复 Susan Yang:

发去那里?

Susan Yang:

回复 maplelhf:

请点击我的头像,至个人页面,而后点击右上角的“连接”,发送私信,以附件形式上传工程即可

maplelhf:

回复 Susan Yang:

想问一下 有什么方法可以在调试时使用CCS正确查看28377D消息ram区域?

赞(0)
未经允许不得转载:TI中文支持网 » 28377D CAN寄存器配置问题
分享到: 更多 (0)