STM32F107 CAN除錯筆記 標準庫

2021-09-28 18:19:47 字數 2626 閱讀 9594

參考**:

/* enabling interrupt */

nvic_initstructure.nvic_irqchannel = can1_rx0_irqn;;

nvic_initstructure.nvic_irqchannelpreemptionpriority = 3;

nvic_initstructure.nvic_irqchannelsubpriority = 2;

nvic_initstructure.nvic_irqchannelcmd = enable;

nvic_init(&nvic_initstructure);

can_deinit(can1);//can 反初始化

can_structinit(&can_initstructure);

/* can cell init */

can_initstructure.can_ttcm=disable; //時間觸發模式

can_initstructure.can_abom=disable; //自動離線管理

can_initstructure.can_awum=disable; //自動喚醒模式

can_initstructure.can_nart=disable; //非自動重傳模式

can_initstructure.can_rflm=disable; //接收fifo鎖定模式

can_initstructure.can_txfp=disable; //傳送fifo優先順序

can_initstructure.can_mode=can_mode_normal; //can設定為正常模式

can_initstructure.can_sjw=can_sjw_1tq; //重新同步跳躍寬度1個時間單位

can_initstructure.can_bs1=can_bs1_3tq; //時間段1為3個時間單位

can_initstructure.can_bs2=can_bs2_2tq; //時間段2為2個時間單位

can_initstructure.can_prescaler=60; //時間長度為60

can_init(can1,&can_initstructure); //波特率72/2/(60(1+3+2))=0.1 即波特率為100kbps

//apb1操作速度限於36mhz, apb2操作於全速(最高72mhz)

//過濾器不過濾任何郵箱id

can_filterinitstructure.can_filternumber=0;

can_filterinitstructure.can_filtermode=can_filtermode_idmask; //掩碼模式

can_filterinitstructure.can_filterscale=can_filterscale_32bit;

can_filterinitstructure.can_filteridhigh=0x0000; //要過濾的id高位

can_filterinitstructure.can_filteridlow= can_id_ext|can_rtr_data; //要過濾的id低位

can_filterinitstructure.can_filtermaskidhigh=0x0000; //過濾器遮蔽識別符號高16位值

can_filterinitstructure.can_filtermaskidlow=0x0000; //過濾器遮蔽識別符號低16位值

can_filterinitstructure.can_filterfifoassignment=can_fifo0; //設定指向過濾器的fifo為0

can_filterinitstructure.can_filteractivation=enable; //使能過濾器

can_filterinit(&can_filterinitstructure); //初始化過濾器

/* can fifo0 message pending interrupt enable */

can_itconfig(can1,can_it_fmp0, enable); //使能fifo訊息**中斷

can_itconfig(can1,can_it_tme,enable); //傳送中斷使能

uint8_t can_sendmsg(can_typedef* canx, uint8_t iddata ,uint8_t* data,uint8_t size)

//can1中斷

void

can1_rx0_irqhandler

(void

)

stm32f042除錯Can心得

這兩天玩了一下stm32f042的can,但是折騰了2個晚上,還是沒有進展。我知道stm32f042f6p6 ssop20封裝的pin17,pin18預設是pa9,pa10的功能,如果想使用pa11和pa12,需要進行埠對映。這樣的話,我直接就用了下面的 進行埠對映,syscfg memoryrem...

STM32F107的時鐘設定

stm32f107 的時鐘設定 stm32 的庫函式好像只有外部 8m倍頻到 72m,現在用的板子外部 25m的晶振,如何倍頻到 72m呢?解決辦法 stm32f107 的時鐘分 4步的 1 25mhz先除5 分頻到5mhz 2 再8 倍頻到40mhz 3 再5 分頻到8mhz 4 再9 倍頻到72...

STM32F107的時鐘設定

stm32的庫函式好像只有外部8m倍頻到72m,現在用的板子外部25m的晶振,如何倍頻到72m呢?解決辦法 stm32f107的時鐘分4步的 1 25mhz先除5分頻到5mhz 2 再8倍頻到40mhz 3 再5分頻到8mhz 4 再9倍頻到72mhz.stm32f103和stm32f105 stm...