本人有两块板子,一个芯片为LX4F232H5QC,一块为TM4C1233E6PZ,同样的程序,配置CAN1的时候LX4F232H5QC的板子上就可以正常运行,、
而在TM4C1233E6PZ这个板子在CANInit(CAN1_BASE);就出现了异常,无法使用。想请教一下原因是什么?
代码如下:
ROM_FPULazyStackingEnable();
ROM_SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ |
SYSCTL_OSC_MAIN);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH);
ROM_GPIOPinTypeGPIOOutput(GPIO_PORTH_BASE, GPIO_PIN_2);
GPIOPinWrite(GPIO_PORTH_BASE, GPIO_PIN_2, 0x04);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
ROM_GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_3);
GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3, 0x08);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
ROM_GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_4);
GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_4, 0x10);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
SysCtlPeripheralEnable(SYSCTL_PERIPH_CAN1);
GPIOPinConfigure(GPIO_PA0_CAN1RX);
GPIOPinConfigure(GPIO_PA1_CAN1TX);
GPIOPinTypeCAN(GPIO_PORTA_BASE,GPIO_PIN_0|GPIO_PIN_1);
CANInit(CAN1_BASE);
CANBitRateSet(CAN1_BASE,SysCtlClockGet(),500000);
CANEnable(CAN1_BASE);
IntEnable(INT_CAN1);
CANIntEnable(CAN1_BASE, CAN_INT_MASTER | CAN_INT_ERROR | CAN_INT_STATUS);
Triton Zhang:
从手册上看两个芯片的CAN是没有区别的,建议先检查下硬件是否有问题。