请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C123GH6PZ 主题中讨论的其他器件: TM4C1231H6PZ
大家好、当我尝试启用 CAN1 (SYSCTL_PERIPH_CAN1)时、它会被吸入、等待外设就绪、如果我为 CAN0 (SYSCTL_PERIPH_CAN0)运行相同、它运行正常、并且 CANCtlPeripheralPresent (SYSCTL_Periph_Sys1);返回"0"。
空 InitCAN1 (空){ // //对于此示例、CAN0与端口 E4和 E5上的 RX 和 TX 引脚搭配使用。 //需要启用 GPIO 端口 E,以便可以使用这些引脚。 // // SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA); // //配置 GPIO 引脚复用以选择这些引脚的 CAN0功能。 //此步骤选择可用于这些引脚的替代功能。 // GPIOPinConfigure (GPIO_PA0_CAN1RX); GPIOPinConfigure (GPIO_PA1_CAN1TX); // //启用 GPIO 引脚上的复用功能。 以上步骤选择 //可用的备用功能。 此步骤实际上启用 //这些引脚的替代功能、而不是 GPIO。 // GPIOPinTypeCAN (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1); // //已为 CAN 设置 GPIO 端口和引脚。 CAN 外设 //必须启用。 // uint32_t present; Present = SysCtlPeripheralPresent (SYSCTL_Periph_CAN1); SysCtlPeripheralEnable (SYSCTL_Periph_CAN1); while (!SysCtlPeripheralReady (SYSCTL_Periph_CAN1))// new { } // //初始化 CAN 控制器 // CANInit (CAN1_base); // //设置 CAN 总线的比特率。 此函数设置 CAN 针对标称配置的//总线时序。 您可以实现更多控制 //使用函数 CANBitTimingSet()代替 CAN 总线时序 //如果需要。 //在此示例中、CAN 总线设置为500kHz。 // CANBitRateSet (CAN1_base、SysCtlClockGet ()、250000); // //在 CAN 外设上启用中断。 此示例使用静态 //分配中断处理程序,表示处理程序的名称 //位于启动代码的矢量表中。 // CANIntRegister (CAN1_base、CANIntHandler); CANIntEnable (CAN1_base、CAN_INT_MASTER | CAN_INT_ERROR | CAN_INT_STATUS); // //在处理器(NVIC)上启用 CAN 中断。 // IntEnable (INT_CAN1); // //启用 CAN 以进行操作。 // CANRetrySet (CAN1_BASE、0);//取消激活自动重发送 CANEnable (CAN1_base); }