rt-thread 的VCOM
将stm32的USB口接到PC端后,PC端会要求安装一个STM32 USB Virtual COM Port Driver,然后就可以用串口调试助手对其操作了
基于 RT-Thread 在 STM32 上实现 USB 虚拟串口
要点:1 在cubmax中配置USB,在时钟树中配置USB,生成代码后将CUBMX下的SystemClock_Config更新到stm32f429-atk-apollo\board目录下的 board.c 文件中。
2 在ENV中查找是否可配置,否则找drv_usbd_fs.c驱动文件,若存在则在同一目录下的 Sconscript 脚本文件,可以查看这个驱动的依赖的宏BSP_USING_USBD_FS
3全局搜索此 stm32 目录下所有的 BSP看哪个BSP支持了该功能 即哪个Kconfig文件中存在“CONFIG BSP_USING_USBD_FS”将其配置部分拷贝到本项目下的Kconfig里面。
4 ENV中重新配置使能,然后更新软件包,构建,在fish中LIST_DEVICE查看VCOM的USB设备
5在PC的设备管理中查看虚拟串口的串口号,设定参数并用串口助手打开进行代码测试。
#include <rtthread.h> 2#include <rtdevice.h> 3 4int main(void) 5{ 6 rt_device_t dev = RT_NULL; 7 char buf[] = "hello rt-thread!\r\n"; 8 9 dev = rt_device_find("vcom"); 10 11 if (dev) 12 rt_device_open(dev, RT_DEVICE_FLAG_RDWR); 13 else 14 return -RT_ERROR; 15 16 while (1) 17 { 18 rt_device_write(dev, 0, buf, rt_strlen(buf)); 19 rt_thread_mdelay(500); 20 } 21 22 return RT_EOK; 23}
rt-thread下的uart shell与usb 的VCOM SHELL切换:
使用rt-thread的Vconsole软件包的vconsole_switch(rt_device _t dev)函数编写shell_switch()的切换函数,然后在usb的cdc_vcom.c中的__function_anble()/_disanble()的尾部分别调用shell_switch()函数就实现默认或拔掉是uart shell,插入usb是VCOM SHELL的功能。
浙公网安备 33010602011771号