参考rt-thread微信教程
基于 RT-Thread 在 STM32 上实现 USB 虚拟串口
作者用的f4,我按作者步骤在f1上应用时遇到了一些问题,踩完坑给大家分享下,f1的按我步骤来就行
先放效果图吧:
1、更新rt-thread源码,确认bsp\stm32\libraries\HAL_Drivers\config\f1目录下是否有usbd_fs_config.h
如果有,跳过这一步;
如果没有,则需要手动添加usbd_fs_config.h,并修改bsp\stm32\libraries\HAL_Drivers\drv_config.h,在
下添加 #include “f1/usbd_fs_config.h”,效果:[attach]9784[/attach]
2、这里使用stm32/stm32f103-atk-nano这个bsp,芯片是rbt6,128k的rom,实测编译完能写进c8t6,但用c8t6的bsp编译不过emmm,总之编译完可以刷进rct6/tct6/zet6进行测试用cubemx打开board\CubeMX_Config\stm32f103rbt6.ioc,保证勾选这两项,其他的按实际情况勾选,我倾向于把没用到的取消勾选
[attach]9789[/attach]
配置时钟树,保证USB时钟48M,然后生成代码
[attach]9790[/attach]
3、用cubemx生成代码后,打开board\CubeMX_Config\Src\main.c,将void SystemClock_Config(void) 这个函数整体复制到board\board.c,替换board.c的同名函数
4、打开board\Kconfig这个文件,在合适位置添加这一段
例如我在这个位置添加,在menuconfig中 Hardware Drivers Config → On-chip Peripheral Drivers出现了usbd的配置,然后勾选这个新配置
[attach]9791[/attach][attach]9792[/attach]
在RT-Thread Components → Device Drivers → Using USB下,Device type选CDC设备,其他的不需要动
[attach]9793[/attach]
退出menuconfig,保存配置
[i=s] 本帖最后由 踩姑娘的小蘑菇 于 2019-7-30 12:04 编辑 [/i]
5、在env用scons —target=mdk5或其他目标生成工程,打开工程,编译,没有报错
[attach]9794[/attach]
刷进板子,这里是可以刷进rbt6/rct6/zet6的,注意c8t6实测能刷进,但不推荐用c8t6测试,flash可能会超,或者有能力的自行裁剪
运行正常,list_device有设备,usbd线程正常lollol
[attach]9795[/attach]
现在插上USB端口,应该就可以在设备管理器看到设备了,VID_0FFE,PID_0001这些,看不到的插拔一下,有黄色感叹号的可能是驱动有问题
6、可以在main.c添加测试代码,用起来跟串口一样
加入main.c,编译下载,可以在msh用vcom_test命令来测试虚拟串口
串口打开失败的插拔一下,注意需要勾选DTR才能正常看到虚拟串口的发送,这个可能是个小bug
最后,RTT真好用:lol
最近也在用虚拟串口通讯,问个问题,接收数据时,一包数据比较大,一包只能64字节,自动分包了,cdc_vcom.c有什么标志可以判断两包之间是否连续吗,或者有没有什么发送方未分包前的总字节数标志
最近也在用虚拟串口通讯,问个问题,接收数据时,一包数据比较大,接收时一包只能64字节,自动分包了,cdc_vcom.c有什么标志可以判断两包之间是否连续或者有没有什么发送方未分包前的总字节数标志