stm32f042除錯Can心得

2021-10-07 11:10:21 字數 1095 閱讀 3939

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

syscfg_memoryremapconfig

(syscfg_cfgr1_pa11_pa12_rmp)

;

結果can匯流排一直沒有波形出來。使用回環模式除錯,匯流排上一直沒有波形。

由於can的pa11和pa12和串列埠1的pa9和pa10是復用的,沒有第一時間使用串列埠進行除錯。今天晚上下班將usart2飛線飛出來了。使能斷言後,發現下面的斷言錯誤。

debug [d] main:94 hello armwind

debug [d] assert_failed:94 …/lib/stm32f0xx_stdperiph_driver/src/stm32f0xx_syscfg.c,line:119

檢視原始碼發現,斷言表明,這個方法只能對映系統mem.

void

syscfg_memoryremapconfig

(uint32_t syscfg_memoryremap)

//巨集定義很明顯

#define is_syscfg_memory_remap(remap) (((remap) == syscfg_memoryremap_flash) || \

((remap) == syscfg_memoryremap_systemmemory) || \

((remap) == syscfg_memoryremap_sram))

所以使用下面**即可map成功

//不要覆蓋掉系統原始的配置

syscfg->cfgr1 = syscfg->cfgr1 | syscfg_cfgr1_pa11_pa12_rmp;

完整的can初始化**

void

can_init

(void

)

STM32F042 CAN使用例子

如下 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 ...

STM32F107 CAN除錯筆記 標準庫

參考 enabling interrupt nvic initstructure.nvic irqchannel can1 rx0 irqn nvic initstructure.nvic irqchannelpreemptionpriority 3 nvic initstructure.nvic ...

STM32F1與STM32F4間CAN通訊除錯

can通訊的除錯不單是軟體上的除錯,也需要對硬體進行檢查。在調通之前一直有兩個疑惑干擾判斷 結論在文末 1.不同的can晶元是否存在不相容。2.不同型號的stm32是否can通訊是否存在差異。stm32f1與stm32f4之間can通訊的除錯過程 僅以stm32f1作介紹 標準庫 1.確定引腳與資源...