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

【STM32C0评测】C071:USB的使用

[复制链接]
戈壁滩上的辉煌 发布时间:2025-5-19 13:09
       在完成基本模块测试后,我们聚焦于本次极具兴趣的功能——USB。USB作为一个功能,在实际应用中常展现出相对复杂性。以往,其使用要求用户对各种协议栈具备基础认知。现今STM32CubeMX已将这些复杂性集成,仅需通过基本配置即可实现USB通信。本次测试旨在将USB设备模拟为鼠标进行操作。
+ C4 R. f7 d! A4 z9 v) r4 X& N       咱们这次要在工程里加上USB功能。说实话,那个USB的枚举过程可真够复杂的,一环扣一环,哪个环节不对劲儿都可能让通信出问题。什么枚举啊、名称啊,还有USB通道,要配置的信息一大堆。不过还好,这次咱们用STM32CubeMX来配置,那可就简单多了。
5 _% L" F6 W& z       首先看一下时钟,虽然我们配置的主时钟是24MHz,不过不影响USB的时钟依然是48MHz:
! P1 p! X/ J  f: Q
1.png 5 s& a  s% ]* I' q- W- B+ _4 E7 Z

( \* ^! h" T8 H3 W5 |       USB时钟使用的是固定值48MHz,以前遇到的开发板是可以配置成PLL提供的,不过也要注意计算能够分频到48MHz,本开发板使用的是HSI48 RC给USB提供基准时钟,本开发板的最大系统时钟也只能到48Mhz。4 [$ U* a7 c% d& X! j/ }" z
       开启USB模块:
# ?$ l: ]; s3 i" d
2.png
- w5 Q7 [* E  d% d6 h6 ]5 `

1 Y" S( Q7 N2 R& G- h; U9 c5 }9 `       打开USB功能项,我们前面配置的是设备,此处也要将其定义为设备,注意基本参数使用默认参数就可以,USB对应的引脚是PA11、PA12.3 z9 N) F) g+ l- o" y& w. g0 U& ~; P: w
       接下来是对USBX的具体配置,对于鼠标来说或者大多是USB来说配置的都是HID,也就是人机接口设备:  f/ B+ _$ ~8 M. V, K  M" h
3.png
; d; P3 X% s3 W0 g

3 k. j9 \, |# f; T! G9 M5 e       其中有很多的描述符,这里面就有设备描述符,其内容就是主机识别它的基本信息(设备名称,PID,VID等等):" m" `& T3 A, Z& Z- e3 W
4.png " f& |6 ~& B; p/ r3 Q5 j3 y, N7 j4 N
; q/ J: o6 h$ R9 Z* F* W
       记住这里这个我们会和后面的设备内容进行一下对比;$ I3 `+ ^  U0 k
       接下来,我们将着手配置ThreadX,借助实时操作系统的强大功能,将极大简化对各模块的响应管理。值得一提的是,ThreadX针对USBx设有专门的处理栈,使得处理更为高效便捷:
/ m. o( }& v$ D9 [5 U1 l1 g7 t" K
5.png
4 H! b/ Y. m7 E
0 t2 }# C( N" q; p7 [) g
       请注意,我们的USB初始化流程采用threadx线程来管理。因此,在工程配置阶段,请避免自动执行初始化操作:
: \0 \5 Z; K8 `! r! z1 h
6.png
) ?0 @8 l8 V  S4 v
( g* k/ J' I1 U7 I5 n# p, {+ r
       我们不能使用滴答定时器作为系统时钟,需要修改:
4 k7 w* D3 j2 [0 k. R
7.png 8 C5 j; S' H% b0 q
4 s+ E. l4 i2 t/ b9 f7 S$ U( E
       接下来,我们着手分析初始化代码。在`main`函数中,特别注意到新增的`MX_ThreadX_Init();`调用。为了深入理解其机制,我们将逐步展开探索。首先,进入_tx_initialize_kernel_enter`函数内部,随后定位到`tx_application_define()`的入口。整个初始化流程均在此处展开,其中尤为重要的是对`MX_USBX_Device_Init(VOID *memory_ptr)`的调用。得益于ThreadX操作系统的采用,USB初始化过程中的这一关键细节得以明确体现:8 x  f5 l5 @! X. h' ]0 b
8.png " b/ o1 y7 V" s& q5 [% h( A' n& C1 y
- n% Y* v; {7 n& ?5 a+ _+ m/ {
       编译下载后电脑的设备中可以看到:
6 G# l1 W# h' t  P7 f4 {
9.png
8 s, S" w& s# J7 H, M) I0 [/ A' S

0 k3 h$ \1 c: W+ F5 ?- j( L       通过调试工具可以正常发现USB设备了,其PID以及VID与设置相符:
/ W8 v1 v( Z- k5 H4 |. h  l0 P
10.png
; K& ^$ u( r5 n7 W

5 ^8 v' }$ l2 @$ a9 \5 }  }       到这里枚举成功了,实现STM32C071开发板的USB HID Mouse枚举部分。
9 P3 C% Z. J6 n6 E; ]3 [; f
; C' a) |, {" x" d
, o( n" Q$ C0 Z% ]% H. ^, p9 ~6 o
: n) ?& {7 `) w' f0 [& l3 l
  I% ?/ W5 d) N5 n4 ]2 n5 l! m- V% n& |/ Y: O& ^

5 L) z7 b, q" d" E2 i3 p: ^- Q6 g8 q8 Q1 `! k
- T) ]# ^6 D' Q! ?+ J

5 A1 K0 G  W$ Z) N
* @& |3 S" z% z6 k
9 C  g2 a6 |6 L' p& h5 |
收藏 评论1 发布时间:2025-5-19 13:09

举报

1个回答
zzOutsider 回答时间:1 小时前

我按照上面一步步配置完成后程序下载下去后,没有反应,最后一页的程序是放在哪个文件下啊,拜托大佬解惑🚀️

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版