主题中讨论的其他器件:C2000WARE
大家好、
对于 dcan、必须参考哪个 ca.c? 例如、项目可以从弃用路径链接.c?
| C:\ti\c2000Ware_1_00_01_00\driverlib\f2837xd\driverlib\ca.c | |
| C:\ti\c2000Ware_1_00_01_00\device_support\f2837xd\common\弃 用\driverlib\ca.c | |
我有一个疑问、请您澄清一下吗? 添加了两次注释"//循环通篇以对所有32个报文对象进行编程"中提到的逻辑,有没有具体原因??
(三
无效
CANInit (uint32_t ui32Base)
{
int16_t iMsg;
//检查参数。
ASSERT (CANBaseValid (ui32Base));
//将 CAN 控制器置于初始化状态,与之前的状态无关。 这种情况
//将控制器置于空闲状态,并允许消息对象 RAM 处于空闲状态
//已编程。
HWREGH (ui32Base + CAN_O_CTL)= CAN_CTL_init;
HWREGH (ui32Base + CAN_O_CTL)= CAN_CTL_SWR;
//等待忙位清零
while (HWREGH (ui32Base + CAN_O_IF1CMD)和 CAN_IF1CMD_BUSY)
{
}
//清除仲裁寄存器中的报文值位。 这表示
//消息无效,是一个“安全”条件,可以离开消息
//对象。 相同的 ARB reg 用于对所有报文对象进行编程。
HWREGH (ui32Base + CAN_O_IF1CMD + 2)=(CAN_IF1CMD_DIR | CAN_IF1CMD_ARB |
CAN_IF1CMD_CONTROL)>> 16;
HWREGH (ui32Base + CAN_O_IF1ARB)= 0;
HWREGH (ui32Base + CAN_O_IF1ARB + 2)= 0;
HWREGH (ui32Base + CAN_O_IF1MCTL)= 0;
HWREGH (ui32Base + CAN_O_IF1MCTL + 2)= 0;
HWREGH (ui32Base + CAN_O_IF2CMD + 2)=(CAN_IF2CMD_DIR | CAN_IF2CMD_ARB |
CAN_IF2CMD_CONTROL)>> 16;
HWREGH (ui32Base + CAN_O_IF2ARB)= 0;
HWREGH (ui32Base + CAN_O_IF2ARB + 2)= 0;
HWREGH (ui32Base + CAN_O_IF2MCTL)= 0;
HWREGH (ui32Base + CAN_O_IF2MCTL + 2)= 0;
//循环以编程全部32个报文对象
for (iMsg = 1;iMsg <= 32;iMsg+=2)
{
//等待忙位清零
while (HWREGH (ui32Base + CAN_O_IF1CMD)和 CAN_IF1CMD_BUSY)
{
}
//开始对消息对象进行编程
HWREGH (ui32Base + CAN_O_IF1CMD)= iMsg;
//等待忙位清零
while (HWREGH (ui32Base + CAN_O_IF2CMD)和 CAN_IF2CMD_BUSY)
{
}
//开始对消息对象进行编程
HWREGH (ui32Base + CAN_O_IF2CMD)= iMsg + 1;
}
//确保更新的中断和新数据标志
//消息对象。
HWREGH (ui32Base + CAN_O_IF1CMD + 2)=(CAN_IF1CMD_TXRQST |
CAN_IF1CMD_CLRINTPND)>> 16;
HWREGH (ui32Base + CAN_O_IF2CMD + 2)=(CAN_IF2CMD_TXRQST |
CAN_IF2CMD_CLRINTPND)>> 16;
//循环以编程全部32个报文对象
for (iMsg = 1;iMsg <= 32;iMsg+=2)
{
//等待忙位清零。
while (HWREGH (ui32Base + CAN_O_IF1CMD)和 CAN_IF1CMD_BUSY)
{
}
//开始对消息对象进行编程
HWREGH (ui32Base + CAN_O_IF1CMD)= iMsg;
//等待忙位清零。
while (HWREGH (ui32Base + CAN_O_IF2CMD)和 CAN_IF2CMD_BUSY)
{
}
//开始对消息对象进行编程
HWREGH (ui32Base + CAN_O_IF2CMD)= iMsg + 1;
}
//确认任何挂起状态中断。
HWREG (ui32Base + CAN_O_ES);
}
(三
谢谢