调试STM32F107的CAN模块
扫描二维码
随时随地手机看文章
花了两天的时间,调试了开发板的CAN模块,先是调试CAN1、CAN2,最后让CAN1和CAN2通信。期间遇到了很多问题,还有很多问题没解决。
1、使用扩展模式,但是TxMessage.StdId接收到始终是00,其他的TxMessage.IDE TxMessage.DLC都是对的,包括数据。不知道为什么,网上查了一下,有位仁兄和我遇到的问题一样,如果有人看到此贴,还望不吝赐教。所以我最后都是只用标准格式。
2、CAN2的CAN_FilterNumber必须设置为14,CAN_FilterFIFOAssignment=CAN_FIFO0;也不知为什么,呵呵,还要好好看书啊。
3、对于中断,代码如下:
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = CAN2_RX0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel=CAN1_RX0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
居然也可以,NVIC_InitStructure.NVIC_IRQChannel怎么可以同时赋予不同的值呢,还没搞懂。
不管怎么说,二者可以通信,拔掉线子收不到数据,线子一插上,就可以收到数据,通信果然很稳定啊。