下图所示为 rt-thread 官方例程,实际使用发现设置波特率不生效
需要修改open和control的顺序,测试可以正常生效使用;
#define CAN_DEV_NAME "can1" /* CAN 设备名称 */
static rt_device_t can_dev; /* CAN 设备句柄 */
/* 查找 CAN 设备 */
can_dev = rt_device_find(CAN_DEV_NAME);
/* 设置 CAN 通信的波特率为 500kbit/s*/
res = rt_device_control(can_dev, RT_CAN_CMD_SET_BAUD, (void *)CAN500kBaud);
/* 以中断接收及发送方式打开 CAN 设备 */
res = rt_device_open(can_dev, RT_DEVICE_FLAG_INT_TX | RT_DEVICE_FLAG_INT_RX);
为什么官方不对不太对,没有实际跟踪分析;不过观察 open接口里面,会先Init再open, init里面会去 config,具体的原有可以跟踪看看每一步做了什么