本文主要利用RT-Thread Studio软件和CubeMX软件实现大疆A板的usb虚拟串口功能,博主在使用过程中micro_ros这个软件包的时候,发现使用普通串口与上位机通讯的时候,传输的速度有限制,最快在20Hz左右,因此想到USB的虚拟串口功能。
一、在RT-Thread Studio软件中打开CubeMx使能单片机的USB
注意要使能NVIC中断,同时检查下引脚是否正确。
二、配置时钟树并生成代码
以下是针对大疆的A型板配置的时钟树,并生成代码,不用打开,直接关闭CubeMx即可。
三、RT-Thread Studio相关配置
1、添加ros软件包
注:ROS1为rosserial,ROS2 是micro_ros
micro_ros软件包的主要作用是可以在stm32MCU上运行ROS2,方便了STM32与Ubuntu电脑的通讯。
在软件包的详细配置界面,将serial device name 改为vcom 。
2、USB组件相关配置
在RT-Thread Setting 更多配置 ---> 组件界面,选择使用USB,使用USB设备,更多配置界面如图所示。
其中USB产品ID可以进行更改,以及虚拟COM线程栈的大小,virtual com rx buffer size 可以根据需要进行修改。产品ID的修改会影响在Ubuntu中的设备号,这一点对解决多个USB设备ID相同非常友好。
四、相关代码修改
在board.h文件中使能USB设备,取消对应的宏定义注释即可。具体名字为
#define BSP_USING_USBDEVICE
可以直接通过搜索找到这句话,具体的文件结构如图。
此时将大疆A板通过USB口连接电脑即可看到相应的串口设备。
五、总结
使用RT-Thread Studio软件开发ROS小车,简化了代码结构,尤其是MCU与上位机通讯部分,强烈推荐国产的开发软件。
本人同类文章在RT-Thread官方论坛也发过,附上链接RT-Thread官方论坛