1、USB设备介绍
USB,即为通用串行总线,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在PC领域的接*技口**术。USB接口支持设备的即插即用和热插拔功能。USB是在1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出的。
标准 USB 共四根线组成,除 VCC/GND 外,另外为 D+,D-;这两根数据线采用的是差分电压的方式进行数据传输的。在 USB 主机上, D-和 D+都是接了 15K 的电阻到低的,所以在没有设备接入的时候, D+、 D-均是低电平。而在 USB 设备中,如果是高速设备,则会在D+上接一个 1.5K 的电阻到 VCC,而如果是低速设备,则会在 D-上接一个 1.5K 的电阻到 VCC。这样当设备接入主机的时候,主机就可以判断是否有设备接入,并能判断设备是高速设备还是低速设备。
正点原子精英板上采用的USB如下所示:

USB设备框图如下所示:

2、虚拟串口进行数据收发
1、在stm32F1上进行
首先是配置cubemx开启USB功能

下面我们要使用USB的功能需要配置这个中间件,说白了就是对应的库

下面我们来看下这个配置的一些参数,这一部分其实默认即可,不用怎么修改

继续看设备描述

这里我们看下插上电脑的设备,已经可以正常运转了,就是正常监测到我们我们刚才设置的端口了

这个时候我们就可以用虚拟串口收发函数来进行测试了

将程序*载下**到开发板,可以看到效果如下:

当然我们也可以用对他进行格式化包装,让他可以像prinf一样的工作,封装的代码如下所示:

这样我们就可以在主函数中进行调用了

2、在stm32F4上进行
这里如果也是按照就是原设定的步骤的话不太成功,会出现就是找不到设备的问题,采用的f4的板子上采用USB连接图如下:

3、大容量设备
stm32内部Flash读写
sd卡读写移植记录
这里我们再来看下他的这个USB功能描述:

访问内部flash
看下keil的,编译情况如下,那么它所占的的内存为14236+344=14580的大小,这个单位是字节,那么换算成我们熟悉的点来说就是:14580/1024=14.238KB

这里我们可以看下另一个cubeide的工程:

详细的解释
