STM32CubeIDE是意法半导体官方提供的STM32开发工具,其功能从芯片选型到生成代码再到编译调试为使用者提供一站式服务,废话不多说直接上工程 打开STM32CubeIDE,单击左上角的File按照上图路径创建工程或者点击File下方的倒三角快捷键直接创建工程 ' W2 ~4 U2 o$ S- s 工程创建后STM32CubeIDE会启动STM32CubeMx,进入芯片选择界面,在过滤器里输入STM32F429IG,右侧下方会出现STM32F429IG两种封装的芯片,选择STM32F429IGTx,点击NEXT,7 ?: E5 J& q: n ) d/ C, u( G' Q( @$ M' \* S " h' E* y; G R* j2 r1 \* N 芯片选择完成后,会弹出下面窗口,在Project Name后面的编辑框内填入工程名字,其它选项默认,点击Finish, % S8 ?8 B7 M" @& ] * J0 h( H! f! W- ]! Z 在上述步骤完成后,STM32CubeIDE会启动STM32CubeMx进入代码生成界面,其操作与STM32CubeMx生成代码一样,先配置外部晶振# _( s( J! s" p8 N3 U2 p9 l 5 G# J8 e( |& b# w6 Y ' d, {6 }$ r/ `, M 在Connectivity选择USBDevice功能,使能中断,其他选项默认配置: e) S0 d4 V+ i, O g M& @# V % `- W! B& A% g/ ^- } 在Middleware中选择USB_Device选项,将USB功能配置为虚拟串口,其他默认不变 - ?8 G8 R% K, S9 k/ ^& U; k USB配置完后需要重新配置RCC,/ Q3 p6 Q4 t8 I5 `+ | : I9 W# u$ ~& n; T+ R0 e2 ` RCC配置完后需要将芯片内部的堆栈改大一些,不然的话会造成程序跑飞,: D; Q" l9 \3 m$ }& ^# C# J; w 然后工程生成头文件和源文件 4 C+ b* V& V/ j4 J8 `1 d* w: d 现在可以生成代码了,点击左上角的齿轮,生成工程的初始代码 N# k# W* G+ O, ~ " O2 O+ i6 F/ [ u B$ S5 \5 x/ D7 z 进入工程后打开USB_Device,按照下图所示路径打开usbd_cdc_if.c文件,在CDC_Receive_FS函数的内部添加 CDC_Transmit_FS( Buf, *Len);其中*Len可以替换成一个全局变量,以方便去轮询虚拟串口是否接收到数据,& A7 s) P3 }3 V 4 M/ |* k2 m r+ T6 Z- n8 R 以上步骤完成后其实USB已经能和PC机正常通讯了,但是在插拔usb可能会造成USB无法正常工作,还需要做一下修改,按照下图路径打开usbd_cdc.c文件,需要将函数USBD_CDC_Init中的pdev->pClassData的指针移动至静态空间,并将下方USBD_CDC_DeInit函数中的USBD_free注释掉,* X5 M, N9 l( ]! y) p . c# e" \- B) O/ v # M+ H! F$ @- ~" F6 w# H 代码方面修改完毕,现在进行编译和仿真,IDE项目栏左上方有一个锤子图标,该图标是编译的快捷方式,挨着齿轮的那个小虫图标是Debug, / M# C: o5 R& D' w ) X3 @! }9 r# Q# P0 i 第一次运行需要配置仿真器参数 配置完仿真器后,将程序烧写到芯片,就可以测试USB虚拟串口了 找到USB虚拟出来的串口,点击打开串口,串口的配置不用设置,与芯片进行通讯连接,通过串口助手给芯片发数据,会得到回复9 E; t& g3 R4 [1 f" W, [ ! M( o8 R& j e2 [, p " D: F$ d) q6 @4 Q* g( \) K i 9 ~( {6 Z9 o- d3 Y) p( R 0 z. C+ L9 \0 c7 C+ q) b |
STM32CubeIDE 快速入门指南
最全USB HID开发资料,悉心整理一个月,亲自测试
【STM32C0评测】5、娱乐一下,分享2048游戏
USB Audio设计与实现
【MCU实战经验】+STM32F107的USB使用
圈圈发布USB图书第二版有感,以及分享一些我学习USB过程...
STM32F4-DISC 实现USB主机(U盘)和USB设备(虚拟串口)自动切换
【STM32C0评测】4、SPI亮屏及GUILite移植
STM32 USB-HID通信移植步骤STM32 USB HID键盘例程
【STM32C0评测】3、I2C使用
这么多好处,但为啥一些教MCU的课程不讲呢?
因為不用在做應用的時候,還要分心這一塊。
其實用HID配合Bluk傳輸其實會更方便。