STM32CubeMX实现USB虚拟串口环回测试功能
- 📍参考ST官方给出的参考案例:
https://www.stmcu.com.cn/Designresource/detail/LAT/711466
- 🎈同功能配置可以参考《STM32 USB使用记录:使用CDC类虚拟串口(VCP)进行通讯》
- 👉🏻对于Windows10系统是免驱的,电脑低于此操作系统的需要安装驱动:
https://www.st.com/en/development-tools/stsw-stm32102.html
✨都是进行虚拟串口回环路功能测试,配置的相关代码有所差异。具体没有在严苛环境下对数据传输准确性测试。功能配置代码都是在
usbd_cdc_if.c
文件中进行配置。
📑配置补充说明
- ⚡根据官方参考的配置参考需要注意,在配置
void Main_loop(void)
函数中,USB接收封包函数形参,改为&hUsbDeviceFS
void Main_loop(void)
{
uint32_t buffsize;
if(UserTxBufPtrOut != UserTxBufPtrIn)
{
if(UserTxBufPtrOut > UserTxBufPtrIn) /* Rollback */
{
buffsize = UserTxBufPtrIn;
}
else
{
buffsize = UserTxBufPtrIn - UserTxBufPtrOut;
}
CDC_Transmit_FS((uint8_t*)(UserTxBufferFS + UserTxBufPtrOut), buffsize);
UserTxBufPtrOut += buffsize;
USBD_CDC_ReceivePacket(&hUsbDeviceFS);
}
}
⛳需要将该函数名添加到对应的(
#include "usbd_cdc_if.h"
)头文件中:
🔖需要将
#include "usbd_cdc_if.h
添加都main.c中。其他的内容按照官方文档说明进行配置即可。
- 🌿时钟配置,需要注意时钟源以及外部晶振配置:(STM32CubeMX在配置RCC时,选择HSE时钟后,默认的钟频率不一定和自己所使用的开发板上的晶振频率一致,这里一定要仔细检查时钟树的HSE具体时钟频率)(个人使用STM32F401RC进行配置时,时钟树HSE这里默认配置的是25MHz,而实际开发板所使用的是8MHz,一开始没注意看,导致程序烧录后,无法识别到虚拟串口,后来导致排查问题找了好久才发现是时钟树这里,系统自动指定的HSE晶振频率不对)
🔨烧录测试
- 🌿烧录后,重新复位单片机,可以识别到虚拟串口。
📐经测试,PA12接不接一个1.5K的上拉电阻都可以发现虚拟USB设备。
- 🔧串口回环路测试:
📚测试工程
链接:https://pan.baidu.com/s/1xN-vDPpIHYFvaXbgljuaWA
提取码:z33y