GD32替换STM32遇到的坑之《HAL库CAN无法初始化》

2022-04-14  本文已影响0人  VellBibi

问题

使用GD32F103替换STM32F103发现同样的代码,STM32可以正常初始化CAN并且通信,而GD32无法初始化CAN,HAL_CAN_Init函数返回HAL_ERROR
但我之前使用标准库,GD32和STM32是可以直接复用的

原因

经过反复对比标准库和HAL库的区别,发现写入退出睡眠的寄存器顺序刚好相反
这是标准库,先退出sleep,再初始化


这是HAL库,先初始化,再推出sleep


尝试替换了下顺序,对STM32是没有什么影响的,但GD32必须是先退出sleep再初始化

解决方法

在HAL_CAN_Init前先退出sleep模式,这样可以不用修改HAL库就可以兼容GD32了


上一篇下一篇

猜你喜欢

热点阅读