文章目录
一、cubemx配置
1.1使能全速usb外设
mode选择device only,此次实现虚拟串口vcp,电脑是usb主机、stm32是usb的从机。其它保持默认。
1.2 使用usb设备中间件
class for fs ip选择communication device class(CDC,通讯设备类)。
1.3 我的cubemx的usb参数配置
1.4 配置注意事项
- 配置debug为swd
- 配置系统时钟
二、编写测试程序
2.1 准备
//传输函数需要的头文件
#include "usbd_cdc.h"
//发送数据包
uint8_t UserTxBuffer[] = "i'm the best \r\n";
2.2 调用传输函数来测试
//1秒钟一次通过usb传输数据包
while (1)
{
USBD_CDC_SetTxBuffer(&hUsbDeviceFS, (uint8_t*)&UserTxBuffer, sizeof(UserTxBuffer));
USBD_CDC_TransmitPacket(&hUsbDeviceFS);
HAL_Delay(1000);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
三、测试
串口助手显示stm32通过usb发送上来的数据,串口助手配置波特率这些参数无效的,因为这不是串口通信,不需要遵循uart的停止位、波特率这些协议。
四、注意事项
- 魔术棒里的c/c++的fefine加上USE_USB_FS,我在cube生成的代码里没看到有这样的宏定义,但是有一个FS的配置需要这个宏定义。
顺便也将其他配置发出来了。
- 修改启动文件的堆栈大小,不然电脑的设备管理器会显示感叹号。
五、例程
我的码云地址: cubemx配置usb例程