大家好!我在文档中心 https://www.rt-thread.org/document/site/programming-manual/device/can/can/#can_8 找到了CAN的使用实例,但是CAN1的驱动我不知道该如何使能。
我做了以下尝试:
1、从\rt-thread-4.0.3\bsp\stm32\libraries\HAL_Drivers
目录下拷贝了drv_can.c和drv_can.h到studio工程中;
2、在board.h中添加了
3、在studio的setting文件中,勾选了CAN驱动程序的使能项
目前程序能编译通过,执行list_device
,也会出现can1,但是在运行的时候
open can会出错:
不知道我上面开启CAN1驱动的方法是否正确,还请大家多多指教!
rt-thread studio 2.1.0中的cubeMX配置会直接起作用,不需要再复制。
如果是st系列的MCU,你先必须使用stm32cubemx的定义can的芯片管脚才行。
那你最好进入debug 模式,查看传入参数是否有问题,然后反查一下原因
@mii 单步跟踪了一下,卡在这个位置了,不知道是啥原因
这应该是在初始化时出问题了,你可以展示下你配置。或者你查询一下芯片手册关于CAN_SLEEP_MODE这一方面的条件判断。
@mii 非常感谢您一直回复。我用cube生成的配置如下,我做了跟随,这个函数确实执行了。还需要别的配置吗?
那你还是要继续查找初始化时被卡的标志位,是怎么产生的。好好看一下芯片手册
@mii 我找到问题的原因了,我用的板子的CAN1引脚是重映射的,不是使用的默认的CAN1的引脚。非常感谢您的回复。
@DuBaojun 请问那个重映射引脚和默认引脚对这个问题来说,有什么区别吗?
@DuBaojun 请问你最后怎么解决的
我也遇到同样的问题,请问怎么解决的?