学习过程中发现can一直不合适,询问了老师才知道一个神奇的事,好像是初学者都会犯
can2配置需要先打开can1!!!!
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); //使能CAN1
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2, ENABLE); //使能CAN2
且can2的筛选器组默认为14-27
CAN_FilterInitStructure.CAN_FilterNumber= 14; //14之后
原理1:
can2使用需要can1打开才可以
原理2:
STM32中CAN1和CAN2共用筛选器,在CAN1所用筛选器之后才是CAN2的筛选器,需在CAN 筛选器主寄存器 (CAN_FMR)中配置CAN2 起始存储区后CAN2才能使用筛选器。默认的can2筛选器是14开始,当然也可以自定义
后面发现有人发过类似的解决文章了