原代码是STM32F105RC,用了双CAN。现在换用APM32E103RC。仔细研究了代码及资料,发现两者改动很小。
STM32F105和APM32E103,两者的CAN,绝大部分相同。唯一不同的地方,就是CAN2的Filter配置。
STM32F105的CAN2的Filter配置,是基于CAN1来配置的。
APM32E103的CAN2的Filter配置,是基于CAN2来配置的。
如下图,红色框内的代码,用于STM32F105时,不用注释。用于APM32E103时,需要注释。
这样,CubeMX生成的代码中,Filter0~13用于CAN1,Filter14~27用于CAN2。每个CAN可用14个Filter,满足大部分应用。