1. 程式人生 > >STM32的can2和CAN1竟然有關聯?!!!

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  否則有的不好用。

上面這些都是試出來的,沒看文件,沒理論依據。

而我目前只是採用一個FIFO0.

好用就得。實時性對我來說是次要的。