做旅游网站多少钱,sem运营是什么意思,做汽车微信广告视频网站,用dw如何做网站链接文章目录 一、前言二、STM32CubeMX生成代码2.1 选择芯片2.2 配置相关模式2.3 设置时钟频率2.4 生成代码2.5 编译并下载代码2.6 结果2.7 问题 三、回环测试3.1 打开工程3.2 添加回环代码3.3 编译烧录并测试 四、出现问题和解决方法4.1 烧录总是要自己插拔USB4.2 自己生成的工程没… 文章目录 一、前言二、STM32CubeMX生成代码2.1 选择芯片2.2 配置相关模式2.3 设置时钟频率2.4 生成代码2.5 编译并下载代码2.6 结果2.7 问题 三、回环测试3.1 打开工程3.2 添加回环代码3.3 编译烧录并测试 四、出现问题和解决方法4.1 烧录总是要自己插拔USB4.2 自己生成的工程没有测试成功 一、前言
最近在学习STM32的USB功能主要是想要使用虚拟串口VCP功能来解决串口传输速率较低的问题达到于上位机高效通信的目的。 使用芯片STM32F407ZGT6 使用函数HAL库 使用工具STM32CubeMX Keil uVision5 串口工具VOFA
二、STM32CubeMX生成代码
2.1 选择芯片 2.2 配置相关模式
主要配置内容
调试模式为Serial使用外部时钟设置为USB为从设备配置为CDC模式的VCP
2.3 设置时钟频率 有两个需要注意点 1. 左边的这个数值是你自己板子上的外部晶振的频率具体是多少看你的板子或者去问商家。 2. 最终的频率要设置为48MHz。 然后要注意软件在自动选择晶振频率的时候有没有设置为外部晶振如下图的提示。里面具体一些倍率选择要自己调一调反正最后是48MHz就可以了。 2.4 生成代码
自己给工程命名然后选择打开的编译器
2.5 编译并下载代码
编译一下工程然后下载到板子上面去。 2.6 结果
在弹出的弹窗看到下面的提示或者在设备管理器中查看到下面的设备就说明成功了
2.7 问题
烧录之后弹窗说识别不了USB设备或者在设备管理器没看到多出来的串口 解决方法
重新插拔USB设备检查晶振外部晶振、主晶振、和USB晶振具体看2.3的提示是否正确可能USB的引脚没有上拉电阻猜想具体不清楚
三、回环测试
如果没有上面的问题那恭喜你可以继续往下测试VCP功能了。
3.1 打开工程 3.2 添加回环代码
在usbd_cdc_if.h中找到函数CDC_Receive_FS()在里面添加下面的代码
CDC_Transmit_FS(Buf, *Len);最终整个函数的代码如下
static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)
{/* USER CODE BEGIN 6 */USBD_CDC_SetRxBuffer(hUsbDeviceFS, Buf[0]);USBD_CDC_ReceivePacket(hUsbDeviceFS);CDC_Transmit_FS(Buf, *Len);return (USBD_OK);/* USER CODE END 6 */
}3.3 编译烧录并测试
打开串口工具然后选择你的串口号发送任意字符就可以看到回传了你发送的字符。
四、出现问题和解决方法
4.1 烧录总是要自己插拔USB
【STM32】USB程序烧录需要重新上电 软件复位方法
4.2 自己生成的工程没有测试成功
使用我的工程自己对比一下看看 STM32F407 USB的 CDC 虚拟串口VCP程序 https://download.csdn.net/download/weixin_52296952/88775046 去我的主页的资源里面找找