STM32的can2和CAN1竟然有关联?!!!

调试STM32F107的CAN2竟然无法接收。通过与另一个代码对比,终于发现想用CAN2,则必须把CAN1的RCC也配置上,就可以接收了。


上网查了下,21IC给解释http://bbs.21ic.com/icview-542674-1-1.html。手册也懒得看了,总之,CAN2和CAN1是有关联的。对于STM32F407可能也是如此。


如果设置两遍也不行。也是CAN2不能接收。

比如这样设置两遍:

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2, ENABLE);

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2, ENABLE);


那么不行,只有在整个工程中设置一遍才可以,如下:

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2, ENABLE);



只有先使能CAN1  然后才使能CAN2  否则有的不好用。

上面这些都是试出来的,没看文档,没理论依据。


关于FIFO 的配置  可以看这个文章http://blog.csdn.net/varding/article/details/39179125

而我目前只是采用一个FIFO0.

好用就得。实时性对我来说是次要的。


你可能感兴趣的:(STM32的can2和CAN1竟然有关联?!!!)