STM32的can2和CAN1竟然有關聯?!!!
阿新 • • 發佈:2019-01-04
除錯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.
好用就得。實時性對我來說是次要的。