Other Parts Discussed in Thread: CONTROLSUITE
工具/软件:Code Composer Studio
您好!
我第一次想在 M3上实施 CAN 协议,但它不起作用...也许我没有使用 CAN API
因此、代码是:
int main(){
//设置 PLL、M3以75MHz 运行、C28以150MHz 运行
SysCtlClockConfigSet (SYSCTL_USE_PLL |(SYSCTL_SPLLIMULT_M & 0xF)|
SYSCTL_SYSDIV_1 | SYSCTL_M3SSDIV_2 |
SYSCTL_XCLKDIV_OFF);
SysCtlPeripheralEnable (SYSCTL_Periph_CAN0);
SysCtlGPIOAHBEnable (SYSCTL_PERIPH_GPIOD);
GPIOPinConfigure (GPIO_PD0_CAN0RX);
GPIOPinConfigure (GPIO_PD1_CAN0TX);
GPIOPinTypeCAN (GPIO_PORTD_AHB_BASE、
GPIO_PIN_0 | GPIO_PIN_1);//CAN0
//初始化 CAN 控制器
CANInit (CAN0_BASE);
//设置可以根据 M3/主子系统时钟计时
CANClkSourceSelect (CAN0_BASE、CAN_CLK_M3);
// CANBitRateSet (CAN0_BASE、8000000、1000000);
CANBitRateSet (CAN0_BASE、80000、50000);
CANIntEnable (CAN0_BASE、CAN_INT_MASTER | CAN_INT_ERROR | CAN_INT_STATUS);
//在 RAM 矢量表中注册中断处理程序
CANIntRegister (CAN_INT_IE0、0、CANIntHandler);
CANEnable (CAN0_BASE);
tCANMsgObject sTXCANMessage;
unsigned char messagetosend[3];
messagetosend[0]= 0x10;
messagetosend[0]= 0x11;
messagetosend[0]= 0x12;
sTXCANMessage.ulMsgID = 0x100; // CAN 消息 ID -使用1
sTXCANMessage.ulMsgIDMask = MSG_OBJ_NO_FLAGS; // TX 不需要掩码
sTXCANMessage.ulFlags = 0; //在 TX 上启用中断
sTXCANMessage.ulMsgLen = sizeof (messagetosend); //消息大小为4
sTXCANMessage.pucMsgData = messagetosend; // ptr 至消息内容
CANMessageSet (CAN0_BASE、1、&sTXCANMessage、MSG_OBJ_TYPE_TX);
}
是否要帮助我找到解决方案?
我们将感谢您的每一个帮助。
听从你的意见…