STM32F103C6T6A USB虚拟串口调测 cubeIDE HAL库函数版
原先手上有一块STM32F103RTC6测试版,但怎么弄不不出现usb设备(正常插上usb口pc应该会识别一个unknown device)看了下它的原理图,感觉D+的上拉电阻是接错位置了,所以果断换一块开发板试试。Usb线也要留意一下,一些usb线只有充电功能,没有通讯功能,一定要多换几条线试试
在某宝买了一块最便宜的STM32F103C6T6A最小系统版20块q。这个版没有usb下载口,usb只能做从设备,下载hex文件与调试需要一个ST-LINK V2的调试器也是20块q左右
本次调试使用软件版本:
感谢前人努力,请参考文章设置:
12_STM32Cubeide开发_USB从设备串口驱动程序_DDGGG1的博客-CSDN博客_cubeide usb
- 对错误进行修改
按着文章编辑完成然后编译,这时候你会发现大概率编译不通过,因为有几处需要修改的地方
1.接收和发送的相关协议修改配置
注:以下是在usbd_desc.c文件中修改 这里写错了,是usbd_cdc_if.c
2.头文件中相关修改
注:以下是在usbd_desc.h文件中修改 这里写错了,是usbd_cdc_if.h
再次编译又出现错误
d:\st\stm32cubeide_1.6.1\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127\tools\arm-none-eabi\bin\ld.exe: F103C6T6A_usbserial.elf section `.text' will not fit in region `FLASH'
d:\st\stm32cubeide_1.6.1\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127\tools\arm-none-eabi\bin\ld.exe: region `FLASH' overflowed by 4664 bytes
collect2.exe: error: ld returned 1 exit status
make: *** [makefile:71: F103C6T6A_usbserial.elf] Error 1
意思是编译出来的文件太大放不下flash,STM32F103C6T6A flash只有32kb,需要优化代码缩减文件尺寸
再次编译又提示RAM过小只有10kb,需要缩减ram
d:\st\stm32cubeide_1.6.1\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127\tools\arm-none-eabi\bin\ld.exe: F103C6T6A_usbserial.elf section `._user_heap_stack' will not fit in region `RAM'
d:\st\stm32cubeide_1.6.1\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127\tools\arm-none-eabi\bin\ld.exe: region `RAM' overflowed by 3208 bytes
collect2.exe: error: ld returned 1 exit status
make: *** [makefile:71: F103C6T6A_usbserial.elf] Error 1
因为出于调试目的,发送的包不是很大,缩减也没有什么影响,如果日后用于生产请自行斟酌以免影响程序运行的稳定性
修改之后编译一切顺利,下载到开发板运行。
插上usb线出现提示发现新硬件,但无法安装驱动,STMicroelectronics Virtual COM 前面有黄色感叹号
请自行到st官网上下载usb虚拟串口驱动程序:
STSW-STM32102 - STM32虚拟COM端口驱动程序 - STMicroelectronics
安装VCP_V1.5.0_Setup,如果之前安装过旧版本比如VCP_V1.4.0_Setup,需要先卸载旧版再安装新版本。我的VCP_V1.4.0_Setup这个版本无法识别,你的能识别就不用更新驱动
使用串口调试工具连接usb虚拟串口,发送数据
Usb调试工具跟踪数据收发
调试完成