**如下:
#include "mycan.h"
//can初始化
//tsjw:重新同步跳躍時間單元.範圍:1~3; can_sjw_1tq can_sjw_2tq can_sjw_3tq can_sjw_4tq
//tbs2:時間段2的時間單元.範圍:1~8;
//tbs1:時間段1的時間單元.範圍:1~16; can_bs1_1tq ~can_bs1_16tq
//brp :波特率分頻器.範圍:1~1024;(實際要加1,也就是1~1024) tq=(brp)*tpclk1
//注意以上引數任何乙個都不能設為0,否則會亂.
//波特率=fpclk1/((tsjw+tbs1+tbs2)*brp);
//mode:0,普通模式;1,回環模式;
//fpclk1的時鐘在初始化的時候設定為36m,如果設定can_normal_init(1,8,7,5,1);
//則波特率為:48m/((1+8+7)*5)=450kbps
void can_mode_init(uint8_t tsjw,uint8_t tbs2,uint8_t tbs1,uint16_t brp,uint8_t mode)
#if can_rx0_int_enable //使能rx0中斷
//中斷服務函式
void cec_can_irqhandler(void)
#endif
//can傳送一組資料(固定格式:id為0x12,標準幀,資料幀)
//len:資料長度(最大為8)
//msg:資料指標,最大為8個位元組.
//返回值:0,成功;
// 其他,失敗;
uint8_t can_send_msg(uint8_t* msg,uint8_t len)
//can口接收資料查詢
//buf:資料快取區;
//返回值:0,無資料被收到;
// 其他,接收的資料長度;
uint8_t can_receive_msg(uint8_t *buf)
注意:一定要根據自己的封裝來設定
syscfg->cfgr1 |= syscfg_cfgr1_pa11_pa12_rmp;
如果不設定 can_init(can, &can_initstructure);會初始化失敗
stm32f042除錯Can心得
這兩天玩了一下stm32f042的can,但是折騰了2個晚上,還是沒有進展。我知道stm32f042f6p6 ssop20封裝的pin17,pin18預設是pa9,pa10的功能,如果想使用pa11和pa12,需要進行埠對映。這樣的話,我直接就用了下面的 進行埠對映,syscfg memoryrem...
STM32F1與STM32F4間CAN通訊除錯
can通訊的除錯不單是軟體上的除錯,也需要對硬體進行檢查。在調通之前一直有兩個疑惑干擾判斷 結論在文末 1.不同的can晶元是否存在不相容。2.不同型號的stm32是否can通訊是否存在差異。stm32f1與stm32f4之間can通訊的除錯過程 僅以stm32f1作介紹 標準庫 1.確定引腳與資源...
STM32F1使用CAN無法接收資料
在使用正點原子戰艦v3進行can實驗時,can在回環模式下測驗結果顯示正常,但是在正常模式下進行兩個開發板通訊時,資料可以正常傳送,卻無法接受資料。static void can gpio config void can在回環模式下可以得到正常資料說明can的初始化正常,那麼問題就可能出現在後來加入...