Other Parts Discussed in Thread: C2000WARE
你好!我在配置F280049芯片DCAN发送时,遇到以下配置问题不是很理解?
HWREG_BP(base + CAN_O_IF1CMD) = CAN_IF1CMD_DIR;其中base = CANB_BASE ,#define CAN_IF1CMD_DIR 0x800000 // Write/Read Direction;现在的问题是:1)HWREG_BP(base + CAN_O_IF1CMD) = CAN_IF1CMD_DIR 这条句的作用是什么?2) #define CAN_IF1CMD_DIR 0x800000 // Write/Read Direction;这个注释如何理解方向是读还是写?3)如果我用寄存器来配置,其它配置不变,就单独用寄存器来替换这条语句(HWREG_BP(base + CAN_O_IF1CMD) = CAN_IF1CMD_DIR;)该如何用寄存器来写这条语句?谢谢
以下是我用寄存器来替换这条语句HWREG_BP(base + CAN_O_IF1CMD) = CAN_IF1CMD_DIR;,经过测试,发现发送失败,如果换上这条语句就能发送成功,请帮忙分一下谢谢!
//*************************通过寄存器配置代码替换HWREG_BP(base + CAN_O_IF1CMD) = CAN_IF1CMD_DIR;如下*****************************************************
while(CanbRegs.CAN_IF1CMD.bit.Busy)
{
;
}
CanbRegs.CAN_IF1ARB.bit.Dir = 1; //发送
CanbRegs.CanbRegs.CAN_IF1CMD.bit.DIR = 1;//write
//*************************通过寄存器配置代码替换HWREG_BP(base + CAN_O_IF1CMD) = CAN_IF1CMD_DIR;如下*****************************************************
//while(CanbRegs.CAN_IF1CMD.bit.Busy)
{
;
}
CanbRegs.CAN_IF1ARB.bit.Dir = 1; //发送
CanbRegs.CanbRegs.CAN_IF1CMD.bit.DIR = 1;//write