问题现象
使用标准外设库3.5.0库进行stm32f107开发CAN通信程序,CAN1的收发正常,CAN2的数据发送没问题,接收不进中断。
解决方法
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190711171644402.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dqeTEyNw==,size_16,color_FFFFFF,t_70)
原来有问题的是自己写的程序,以为CAN2和CAN1的写法一样,但其实需要多一步图中红色框的配置语句才能正确使能CAN2的接收
原因
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190711172157623.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dqeTEyNw==,size_16,color_FFFFFF,t_70)
参考手册里有说明stm32f10x互联型的CAN2属于从CAN(啥是从CAN?),过滤器不是自己独立的地址。库函数CAN_FilterInit的过滤器配置里没有传入CANx的参数,即CAN2的配置是通过CAN1的过滤器地址偏移得到的……