工具/软件:Code Composer Studio
大家好、
我将 TM4C1294NCPDT 微控制器用于我的新开发、在这方面、我很好地使用了计时器、I2C、UART 和其他外设。
现在、我希望 CAN 模块 建立与我的 Salve 板的通信、为此、我尝试将 CAN0模块与 PA0、PA1结合使用。
我不熟悉 CAN 模块1。
我编写了代码、并在网上研究了示例。 我认为数据传输不能正常工作。
下面附上了屏幕截图、我在下面粘贴了代码。 我认为中断处理程序工作正常
unsigned char CAN_TX_buff [100];
int main (空)
{
SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_main | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
GPIOPinConfigure (GPIO_PA0_CAN0RX);
GPIOPinConfigure (GPIO_PA1_CAN0TX);
GPIOPinTypeCAN (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);
SysCtlPeripheralEnable (SYSCTL_Periph_CAN0);
CANInit (CAN0_BASE);
CANBitRateSet (CAN0_BASE、SysCtlClockGet ()、50000);
CANIntEnable (CAN0_BASE、CAN_INT_MASTER | CAN_INT_ERROR | CAN_INT_STATUS);
IntEnable (INT_CAN0);
CANEnable (CAN0_BASE);
tCANMsgObject sCANMessage;
uint8_t * pui8MsgData;
CAN_TX_buff [0]= 11;
CAN_TX_buff [1]= 0x0F;
CAN_TX_buff [2]= 0;
CAN_TX_buff [3]= 0;
CAN_TX_buff [4]= 0;
CAN_TX_buff [5]= 0;
CAN_TX_buff [6]= 0;
CAN_TX_buff [7]= 1;
pui8MsgData =(uint8_t *)&CAN_TX_buff;
while (1)
{
sCANMessage.ui32MsgID = 1;
sCANMessage.ui32MsgIDMask = 0;
sCANMessage.ui32Flags = MSG_OBJ_TX_INT_ENABLE;
sCANMessage.ui32MsgLen = 8;
sCANMessage.pui8MsgData = pui8MsgData;
Set.Spindle_Opering_Mode = 1;
/*机器序列*/
if (set.Spindle_Opering_Mode = 0)
{
//check_all_move_stat();
//process_manual_oper();
CANMessageSet (CAN0_BASE、1、&sCANMessage、MSG_OBJ_TYPE_TX);
}
//现在等待1秒后再继续
SimpleDelay();
}
}
//
空 CANIntHandler (空)
{
uint32_t ui32Status;
//读取 CAN 中断状态以查找中断原因
ui32Status = CANIntStatus (CAN0_BASE、CAN_INT_STS_CAUST);
if (ui32Status = CAN_INT_INTID_STATUS)
{
ui32Status = CANStatusGet (CAN0_BASE、CAN_STS_CONTROL);
}
否则、如果(ui32Status = 1)
{
CANIntClear (CAN0_BASE、1);
}
其他
{
//可以在此处执行伪中断处理。
}
}
此致
Yuvaraj