|
本帖最后由 slotg 于 2017-7-1 17:22 编辑 在 YouTube 上看到了一个视频,使用 STM32CubeMX 在不到 10 分钟的时间就为一片 STM32F103C8T6 最小系统板实现了一个 USB 转串口的功能,让板子接收电脑端的字元控制板上 LED 的亮灭,我依视频的内容自己做了一遍:9 X1 O% n0 s' I1 X/ n: x 打开 CubeMX 后芯片选择 STM32F103C8T6! e7 _5 `& M; @1 E+ x+ V
RCC 选择晶振的方式/ ~# [/ U; P0 Y5 b$ s; G/ M: l% r
+ r+ b3 e9 x1 I( L8 @2 L; H3 W" j1 ` SYS 里头的 Debug 选择 Serial Wire 方式,这个选项让芯片具备了 SWD 功能。
& g: i0 ^+ B6 t8 h2 T+ E' Z USB 点选 Device(FS),这个是开启 USB 功能。
USB DEVICE 里头选择 CDC 类。
* b- c1 C2 [. K! M7 I" F+ L 最小系统板上 MCU 的 PC13 连接了一颗 LED,因此设定 PC13 为 GPIO_Output 模式。+ Z. s% _2 W4 e' h. W. T6 g2 k
* V. l7 v' z/ E. Z8 e 切换到时钟设定页面时会出现一个窗口,询问是否要让 CubeMX 自动配置时钟?我们选择 Yes。+ m% x* t; H/ F3 n5 l
3 ~9 K/ F; u! a( r. y4 w& l 配置结果如下:4 `2 E# X; { B: u
管脚设定,设定 PC13 上电位准是 High。(输出 Low 时点亮 LED)5 b: J/ g+ Y9 C- R. N* o" x
所有设定完成后接下来产生程序码
输入工程名称为 CDCtest1,IDE 工具选择 MDK-ARM V5。
2 e2 I. G" g: ]* V- N& G" q; W 程序码生成后询问是否要打开工程 ?我们选择打开。3 J8 J0 p/ u0 ?- Q: b$ o; E( u
打开后的工程
+ `" i: v J0 d; i' C 直接编译工程并不会出现任何的错误/ H5 c' h( j% B% X s1 Z' ]6 d
打开 usbd_cdc_if.c 档案,找到里头的 CDC_Receive_FS() 函数, J6 H$ R `* W4 ?
加上这些代码,代码的功能为依所接收到的字元控制 LED 亮灭。3 [0 Y' g. ~0 y3 ?, p
编译程序并烧录到芯片,当板子上面的 USB 口插上电脑后出现了一个虚拟串口
! X1 ?" u3 G7 b1 u2 F 打开串口调试程序,选择好端口后发送字元 1 可以看到板上的 LED 亮起,串口调试程序收到 LED ON 信息,发送字元 0 可以看到板上 LED 熄灭,串口调试程序收到 LED OFF 信息。
. e% d$ z& t1 }! @- y 工程文件9 J5 {& |3 Z! U$ g5 f5 s
CDCtest1.rar
(8.53 MB, 下载次数: 2238)
|
最全USB HID开发资料,悉心整理一个月,亲自测试
【源码】STLINK-V3MINI 高速USB仿真器,成功改刷【高速CMSIS-DAP】
STM32 USB CDC 虚拟多串口
实战经验 | 选择USBX模块生成USB CDC ACM无PD的项目
STM32 USB HID键盘例程
刘氓兔的杂谈【001】-片上USB 高速PHY
【经验分享】在进行 USB CDC 类开发时,无法发送 64整数倍的数据
在线直播|无需编写任何代码即可在STM32上实现USB-C Power Delivery
圈圈发布USB图书第二版有感,以及分享一些我学习USB过程...
USB Audio设计与实现
微信公众号
手机版
我找到了一个多串口VCP的例程,是USB OTG的,要用105来用,103是USB的不适合。
但是我用CubeMx生成105VC的USB VCP工程,无法识别出来COM,你能不能试一下?试枚举一个节点的COM就可以了,我不知道是不是哪里配置不对。
我看了下CubeMx,但只发现能改动Max Num,重新生成代码后,发现然而没有增加或改动到其他代码,只是改了个USB接口数量最大值,设备管理器也没有新增串口。
稳定性还没试过,我找时间写个测试程序试看看了,你有碰过不稳定的情况吗?
感谢关注
以后使用stm单片机可以省去不少时间与精力啊