本帖最后由 slotg 于 2017-7-1 17:22 编辑 2 m; r0 t- E" w& f) }2 P; L 在 YouTube 上看到了一个视频,使用 STM32CubeMX 在不到 10 分钟的时间就为一片 STM32F103C8T6 最小系统板实现了一个 USB 转串口的功能,让板子接收电脑端的字元控制板上 LED 的亮灭,我依视频的内容自己做了一遍: ( q6 }, k9 }" G 打开 CubeMX 后芯片选择 STM32F103C8T60 x) Z0 J7 f: r8 U3 x, T RCC 选择晶振的方式 SYS 里头的 Debug 选择 Serial Wire 方式,这个选项让芯片具备了 SWD 功能。2 B( b5 |% w2 j! s' V ( m* q$ `3 {5 y; B) \) | USB 点选 Device(FS),这个是开启 USB 功能。( Y& e8 Q, x3 h: V! F# B USB DEVICE 里头选择 CDC 类。" w8 @- d, ?4 |1 J2 B$ o+ | 2 i7 o! D- ~3 R) N/ ] 最小系统板上 MCU 的 PC13 连接了一颗 LED,因此设定 PC13 为 GPIO_Output 模式。9 @; K/ H" Z0 ?4 V 切换到时钟设定页面时会出现一个窗口,询问是否要让 CubeMX 自动配置时钟?我们选择 Yes。 配置结果如下:2 ?. T; G; |: q+ n1 B' O4 p4 R* W : d4 U: t E, z$ h0 Z 管脚设定,设定 PC13 上电位准是 High。(输出 Low 时点亮 LED), v1 S6 K# W, f% j- l # {# h/ W4 l6 P$ N/ a: W) v 所有设定完成后接下来产生程序码$ ?9 w3 P9 p4 c: {% Y ; z/ Z2 n6 S/ B3 c 输入工程名称为 CDCtest1,IDE 工具选择 MDK-ARM V5。; ?) [9 O) T0 i) M7 W% h- Y+ c7 B( L 程序码生成后询问是否要打开工程 ?我们选择打开。9 c' n& D8 b; e+ z. B! \5 x, R, \1 J 打开后的工程% A: ?8 I! V1 j( t8 W 直接编译工程并不会出现任何的错误 g4 d2 K! {: N6 \3 u2 t 打开 usbd_cdc_if.c 档案,找到里头的 CDC_Receive_FS() 函数+ A8 i3 y$ U& F; J3 ]6 E! |" h " P8 q: K% I5 Z 加上这些代码,代码的功能为依所接收到的字元控制 LED 亮灭。 / D7 U1 X& V. ^6 K# R/ V 编译程序并烧录到芯片,当板子上面的 USB 口插上电脑后出现了一个虚拟串口 打开串口调试程序,选择好端口后发送字元 1 可以看到板上的 LED 亮起,串口调试程序收到 LED ON 信息,发送字元 0 可以看到板上 LED 熄灭,串口调试程序收到 LED OFF 信息。 工程文件 |
最全USB HID开发资料,悉心整理一个月,亲自测试
USB Audio设计与实现
【MCU实战经验】+STM32F107的USB使用
圈圈发布USB图书第二版有感,以及分享一些我学习USB过程...
STM32F4-DISC 实现USB主机(U盘)和USB设备(虚拟串口)自动切换
STM32 USB-HID通信移植步骤STM32 USB HID键盘例程
【经验分享】在进行 USB CDC 类开发时,无法发送 64整数倍的数据
如何让CDC类USB设备批量接收64字节以上数据
用STM32F4实现的USB摄像头UVC,配合上位机可识别车牌
STM32 USB CDC 虚拟多串口
我找到了一个多串口VCP的例程,是USB OTG的,要用105来用,103是USB的不适合。
但是我用CubeMx生成105VC的USB VCP工程,无法识别出来COM,你能不能试一下?试枚举一个节点的COM就可以了,我不知道是不是哪里配置不对。
我看了下CubeMx,但只发现能改动Max Num,重新生成代码后,发现然而没有增加或改动到其他代码,只是改了个USB接口数量最大值,设备管理器也没有新增串口。
稳定性还没试过,我找时间写个测试程序试看看了,你有碰过不稳定的情况吗?
感谢关注
以后使用stm单片机可以省去不少时间与精力啊