你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

快速体验 STM32CubeF1 的 USB CDC 实现 VCP 功能  

[复制链接]
slotg 发布时间:2017-7-1 17:20
本帖最后由 slotg 于 2017-7-1 17:22 编辑 # o) P, I* p3 W2 U2 o! h* P2 O/ |
/ T0 s+ ^5 H- y- u3 w$ H9 Y2 z
在 YouTube 上看到了一个视频,使用 STM32CubeMX 在不到 10 分钟的时间就为一片 STM32F103C8T6 最小系统板实现了一个 USB 转串口的功能,让板子接收电脑端的字元控制板上 LED 的亮灭,我依视频的内容自己做了一遍:7 u0 o8 u, d8 D( _$ Z( }
7 b% w3 a+ |& K! o# @* j
打开 CubeMX 后芯片选择 STM32F103C8T6
. Q# P! o( v) D3 q" n0 M P01.jpg . L/ s$ U' v+ a6 N! R

0 M' K, n2 [; @" B3 r4 IRCC 选择晶振的方式
4 |0 e% k. i6 ]! _- z% E- e2 q P02.jpg
4 b) u# Z: C" X7 n: Q& d4 N  ^3 q6 f) ]& y
SYS 里头的 Debug 选择 Serial Wire 方式,这个选项让芯片具备了 SWD 功能。( \3 F5 V: {. [. s
P03.jpg . b* u, C, P9 K; L5 p

% ?# |4 C2 c4 a2 W  R2 JUSB 点选 Device(FS),这个是开启 USB 功能。
- O. z/ x6 K" Z, b0 Q0 M P04.jpg * N; F3 y8 b* I" A* z  ~
, n: ?8 X4 y7 [# J
USB DEVICE 里头选择 CDC 类。
+ d6 `) }3 x# j. {4 s$ ] P05.jpg
1 K# H! X- j+ \) B5 e) _- _1 ~( I# q5 O: n/ B2 B
最小系统板上 MCU 的 PC13 连接了一颗 LED,因此设定 PC13 为 GPIO_Output 模式。: ?& s( Z' g$ Z2 g9 \/ N( i( @0 _
P06.jpg
+ P" t$ G8 q/ {, i" |8 c9 G9 V# J. w* ]) q/ |6 U2 [
切换到时钟设定页面时会出现一个窗口,询问是否要让 CubeMX 自动配置时钟?我们选择 Yes。" E  a/ G' v4 k: J
P07.jpg 3 n! T- V0 _) m

; m4 E6 v+ J6 \9 W! G8 N配置结果如下:
$ l+ @, J. w) r* S; J2 V P08.jpg
- ]# c0 d0 [; y' ~. u: c1 Z$ {
$ ?3 C2 y- r) {! e+ K管脚设定,设定 PC13 上电位准是 High。(输出 Low 时点亮 LED)6 r( {8 [  [; H  |% w$ Q, L* V
P09.jpg ; J# b9 E' s# ]8 j) K
4 u# d; U& k& \5 _
所有设定完成后接下来产生程序码% }/ \. m% T& h! K0 y5 M) O
P10.jpg
6 F' P* @" F9 {0 o2 e
4 W! _6 ]" h: t9 X' D输入工程名称为 CDCtest1,IDE 工具选择 MDK-ARM V5。
" p' P. u& \7 p% l$ V0 e7 ^8 {" L- x# }* N P11.jpg & @. T' p: S5 p/ D% N: C
9 t/ j: f" `/ R5 T
程序码生成后询问是否要打开工程 ?我们选择打开。
1 C9 Q( g. w- z, E5 D, s3 ~# o( `( N P12.jpg + a" T6 G: \7 u. r
3 t8 d, w" e4 o% `! |
打开后的工程
7 ^( H; w' ^% t0 B" ^ P13.jpg " R! `/ s: D/ v. b! |5 m

' ~% v3 p& y6 A+ P7 {直接编译工程并不会出现任何的错误( \1 O% u. b: [1 l! d. w6 w
P14.jpg
: i6 s  o) H2 l+ E) F" z- U" z3 [
打开 usbd_cdc_if.c 档案,找到里头的 CDC_Receive_FS() 函数" N8 E, X. d5 s8 ?9 p7 ]
P15.jpg
4 r* T- V/ Y3 ?
' P0 z( K$ m# m: M加上这些代码,代码的功能为依所接收到的字元控制 LED 亮灭。: l# w( u$ w9 k
P16.jpg
; Y7 Q! H: r1 s% q. W( Z3 P
) D3 r# z8 \. u6 a/ p编译程序并烧录到芯片,当板子上面的 USB 口插上电脑后出现了一个虚拟串口
' i$ w( T+ j0 p3 | P17.jpg
+ `" ~$ ]* p2 L: P% S  l
. I  a1 h. C' y打开串口调试程序,选择好端口后发送字元 1 可以看到板上的 LED 亮起,串口调试程序收到 LED ON 信息,发送字元 0 可以看到板上 LED 熄灭,串口调试程序收到 LED OFF 信息。4 r+ e* w' D; `8 v
DSC02404.JPG
' i3 A# K$ J1 r1 \+ _ P18.JPG
" a" X, t6 A+ [& G$ t6 c% O# Y  r/ z6 Y6 x! {. g
) o2 \7 m: H4 B9 m% w
工程文件
" c$ d2 q9 R- J/ M; X% y: F CDCtest1.rar (8.53 MB, 下载次数: 2238)

评分

参与人数 1 ST金币 +5 收起 理由
zero99 + 5

查看全部评分

赞 收藏 11 评论44 发布时间:2017-7-1 17:20

举报

44个回答
John-2049691 回答时间:2019-12-31 14:18:19
John-2049691 发表于 2019-12-30 12:02
0 G$ F; a) R2 ^( v我看了下CubeMx,但只发现能改动Max Num,重新生成代码后,发现然而没有增加或改动到其他代码,只是改了 ...

( E' G; r' b- j' c% f! Z0 `) C我找到了一个多串口VCP的例程,是USB OTG的,要用105来用,103是USB的不适合。
+ a, C5 v+ L4 G$ g2 d( l1 o7 r( Q0 k但是我用CubeMx生成105VC的USB VCP工程,无法识别出来COM,你能不能试一下?试枚举一个节点的COM就可以了,我不知道是不是哪里配置不对。
John-2049691 回答时间:2019-12-30 12:02:46
slotg 发表于 2019-12-30 11:14
/ V% M" g* M/ l3 E3 [还没试过,可以讨论讨论
/ V; i/ ?  e. O6 E
我看了下CubeMx,但只发现能改动Max Num,重新生成代码后,发现然而没有增加或改动到其他代码,只是改了个USB接口数量最大值,设备管理器也没有新增串口。
slotg 回答时间:2017-7-3 10:37:29
xiaoxiao0932 发表于 2017-7-3 09:09
, h4 L0 }# Y2 f& j请问楼主,稳定性怎么样啊,在多次通信后是否出现异常,是否需要插拔USB线? ...
2 p2 e) @& |) y; s" K# E& C+ ^7 B9 T
稳定性还没试过,我找时间写个测试程序试看看了,你有碰过不稳定的情况吗?
Paderboy 回答时间:2017-7-1 17:33:34
多谢分享。。。。
slotg 回答时间:2017-7-1 17:40:40
Paderboy 发表于 2017-7-1 17:33
% p8 |2 ?; ~& s. ^/ h/ Q7 Y; x多谢分享。。。。

& D( R- j% ^1 G感谢关注
feiante 回答时间:2017-7-1 17:49:47
是这样的,用stm32cubeMX可以很快建立usb虚拟串口
hpdell 回答时间:2017-7-1 20:09:15
牛逼啊/ H6 s) n0 ~* r& r
0 \0 f) ^3 ]$ q( ~; l
以后使用stm单片机可以省去不少时间与精力啊
epochal 回答时间:2017-7-2 07:48:51
方便快捷,好!
Xinfeng 回答时间:2017-7-3 08:52:48
感谢分享
xiaoxiao0932 回答时间:2017-7-3 09:09:22
请问楼主,稳定性怎么样啊,在多次通信后是否出现异常,是否需要插拔USB线?
moyanming2013 回答时间:2017-7-3 11:30:42
支持            
adlu 回答时间:2017-7-4 10:47:39
Good!谢谢分享
埃斯提爱慕 回答时间:2017-7-4 18:58:32
提示: 作者被禁止或删除 内容自动屏蔽
anobodykey 回答时间:2017-7-13 16:52:30
感谢分享
洛千叶 回答时间:2017-7-14 09:15:52
谢谢分享!!!!!!!!!!!!!!!!
weiwei4 回答时间:2017-7-14 09:17:48
谢谢分享
1234下一页

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版