
STM32Cube生态系统是ST为STM32开发者打造的软件生态,是嵌入式开发的利器。, p- t: R8 G1 [: k8 g 为提升功能丰富且高能效的STM32系列微控制器的易用性,2019年,意法半导体在STM32Cube软件生态系统中增加了一个免费的多功能STM32开发工具:STM32CubeIDE。 STM32CubeIDE是ST官方提供的免费软件开发工具,也是STM32Cube生态系统的一员大将。它基于Eclipse®/CDT框架,GCC编译工具链和GDB调试工具,支持添加第三方功能插件。同时,STM32CubeIDE还集成了部分STM32CubeMX和STM32CubeProgrammer的功能,是一个 “多合一”的STM32开发工具。 8 W8 E$ d5 `! E8 V ![]() ! D& @* I' U+ s0 {0 ~ 用户只需要STM32CubeIDE这一个工具,就可以完成从芯片选型,项目配置,代码生成,到代码编辑,编译,调试和烧录的所有工作。 ![]() STM32CubeIDE 是基于 Eclipse 的框架,它继承了 Eclipse 所特有的一些对用户来说还不太熟悉的特性,比如透视图,工作空间等。 }2 q/ m g1 r ! u" V- z- A/ p 工作空间(Workspace):STM32CubeIDE通过工作空间(workspace)对工程进行管理,打开STM32Cube时,它会新建一个默认的工作空间,用户也可以通过Browse按钮另外选择一个文件夹作为工作空间,之后新建或者导入的工程就都属于前面选择的这个工作空间。同一个工作空间下的工程具有相同的IDE层面的配置(在Window→Preferences中进行设置),比如显示和编辑的风格设置等。从文件系统的角度,工作空间就是一个文件夹,里面包含了多个工程的文件夹和一个名为“.metadata”的文件夹,“.metadata”文件夹下包含了该工作空间内的所有工程的信息。用户可以通过File→Switch Workspace菜单,切换不同的工作空间。; V: j( S" @, S$ e) a. z6 X& g 3 D' ]$ Q& O0 v( x ~ 透视图(Perspective):透视图是一系列和某类功能相关的窗口的组合。常用的有C/C++编辑透视图,调试透视图和CubeMX配置透视图。 C/C++编辑透视图包括了项目管理器,编辑窗口,Outline窗口等。在项目管理器中可以查看和操作当前工作空间中的所有项目。双击打开项目中的文件,文件内容会显示在编辑窗口,在编辑窗口可以对 在Window Show View菜单中可以打开和关闭需要显示在C/C++编辑透视图中的窗口。 , I9 P8 [9 {7 S2 q# f, [ 通过右上方的图标可以在不同的透视图之间切换,比如点击爬虫图标,就可以切换到调试透视图。在C/C++编辑透视图下点击工具栏的Debug按钮启动调试后,也会自动切换到调试透视图。$ L Q6 b1 |2 v, j/ C* C4 C; V , M q6 \% d7 }" V- C/ J7 k 1. 新建和导入工程9 n9 R& C. L8 e6 k: s6 c3 q , W7 j. A' \9 F2 Y 使用STM32CubeIDE,用户可以通过多种方法来开始新建一个项目。在STM32CubeIDE的欢迎界面上,列出了创建/导入工程的快捷入口,分别对应下面的四种场景。也可以通过File菜单下的New和Import实现对应的功能。& n4 y# f+ i i/ }& B6 w+ B6 ] 2 A& @3 V+ t2 B' E5 s t8 L • 从零开始新建一个STM32工程 9 i, e {( Q- j • 已有STM32CubeMX的配置文件(*.ioc文件 ),希望根据该ioc文件新建一个STM32工程# ~% q' D A! v0 L1 o 0 S( q+ g% @: Q% ~4 ~ • 已有SW4STM32或者TrueSTUDIO工程,希望转换成STM32CubeIDE工程$ ~" X" [6 Y, E3 K/ d$ p & r4 u* \7 H1 \* M# j# \ • 基于STM32Cube库中的例程创建新工程 c. ]& ^( ?$ ? k x. b; L6 S" o; l3 m- E& p$ v ![]() STM32CubeIDE工程结构 # l! I3 ~1 A5 k* D: O( v* O ![]() ! @) B+ o, a# y* j% \7 o- N 4 L, E( F3 p* w 单核的MCU都是扁平结构。 对于双核架构的MCU或者安全MCU,比如STM32H7,STM32L5和STM32MP1系列,STM32CubeIDE工程是分层结构。以STM32H7为例,创建或者导入STM32H7工程后,在Project Explorer栏看到的是一个三层的工程结构:最上面一层是“根”工程,然后是两个分别对应CM7和CM4内核的“子”工程,“子”工程下面才是工程文件。这两个CM7和CM4“子”工程才是真正的可编译和调试的工程,而“根”工程只是作为一个“容器”,包含了CM7和CM4这两个“子”工程。AN5361,AN5394,AN5360和AN5564分别描述了在STM32CubeIDE中如何创建,导入,编译和调试STM32H7双核,STM32L5,STM32MP1以及STM32WL的工程 k* m w. {* b 打开/关闭/删除/切换/导出STM32CubeIDE工程% K$ v" a; J5 a& q* B& C 7 K3 V& J- Q# i$ L9 ^ 在Project Explorer窗口中可以看到当前工作空间下的所有工程。用户可以对这里面的任一工程进行打开/关闭/删除/导入/导出/更名等操作。 固件库管理 " B6 h2 \% g% a4 Q# r2 Y! p STM32CubeIDE集成了STM32CubeMX的部分功能,可以直接选择芯片/开发板型号,或者选择例程来生成一个新工程。STM32CubeIDE生成工程所需要的驱动和例程代码都来自各个STM32系列的固件库。 ; @: }0 i7 `8 u" y0 f# w' j 在Help→Manage Embedded Software Packages里,可以对所有的STM32固件库以及其他的插件进行管理(安装/删除固件库)。 用户可以通过Install Now按钮让STM32CubeIDE自动从网络进行下载安装,也可以通过From Local按钮来安装已经预先下载好的固件库。 通过Remove Now按钮可以删除选中的固件库。 ![]() 在Window Preferences窗口的STM32Cube Firmware Updater标签页下,可以设置固件库安装的路径和更新的方式。 ![]() U# t& n) K7 [+ ?: m 默认STM3CubeIDE在打开和新建工程的时候,都会尝试连接网络。用户也可以选择“Off Line Mode”,不让STM32CubeIDE去联网。但是需要通过上一张图中Embedded Software Packages Manager窗口的From Local按钮来安装已经预先下载好的固件库,否则将不能自动为新建的STM32工程生成代码。 3 j8 H6 R9 \/ u1 d 点击Check Connection按钮可以检测当前的网络连接状态。检测结束如果出现一个红色的×,则说明网络配置有问题,需要我们到Network Connection页面去进行设置。 4 e) q% d) f. r- a5 y# l6 G3 _ 除了前面主动检测网络状态,如果出现固件下载失败的情况,也请检查STM32CubeIDE的网络配置是否正确。 配置步骤见下图: 1.进入 Window Preferences菜单,选择General Network Connections标签页 2.选择 Manual方式 / U' H1 y( W0 E, g3 G+ b* Z) A, R 3.选择HTTP,双击打开编辑窗口,设置网络连接参数。 / |0 K- N; P, M8 S ![]() ( Q! V* I4 [% r( y# y6 I: p 代码编辑/ _" U; |/ u. ]2 b( p v* E8 p$ V STM32CubeIDE基于Eclipse,Eclipse的一些常用快捷键和编辑技巧一样适用于STM32CubeIDE。熟练掌握这些小技巧可以提高开发效率,使得程序开发的工作事半功倍。" z: |4 A" s; \ 代码编译) o1 k$ D6 w+ b* ~! B 工程属性设置及编译 , J1 x) V) _. y- F 在Project Explorer中选中一个工程,点击右键后进入properties菜单,在其中就可以对编译项进行配置。常用配置的操作细节,请查看“STM32CubeIDE工程属性配置技巧”。 配置完成之后就可以进行编译了。用户可以通过下面三种方式启动编译: % i% l1 t, w' @# E • 方法一:选中工程,点击右键,然后选择“Build Project” ( Y/ S# M9 w% I* L4 K • 方法二:选中工程,从Project菜单进入,然后选择“Build Project” • 方法三:选中工程,直接点击工具栏里的Build图标 ) V0 C7 l; n8 V( ?; X) P4 q ![]() 提高编译速度 o8 u; s f" w% W# ^ 通过使能并行编译,可以提高STM32CubeIDE的编译速度。8 ~: ?) f3 n7 n) `2 i4 g8 M0 } 0 W- w9 G2 W4 h7 ~! t4 ?7 t 选中工程,点击右键后进入properties菜单,选择“C/C++ Build”,在Behavior标签页下,勾选“Enable parallel build”功能。* i+ t: Z( k X4 \) P8 l0 C % a; v) w' |7 r& G! u" c& P ![]() 编译相关辅助工具 ( o' S- b9 G, b 工程编译完成以后,在“Build Analyzer”窗口可以看到链接文件中定义的所有内存区域(memory region)和段(section)的使用情况,包括加载地址,运行地址,有多少字节已经被占用,还剩余多少字节等。+ J5 a0 q& b5 k Q2 U 在“Static Stack Analyzer”窗口中显示了静态堆栈的使用情况。$ t! R$ N6 q6 x' u STM32CubeIDE还提供了Headless Build功能,可以不打开CubeIDE的图形界面,通过命令行就可以进行编译。8 |0 a2 o% t! K% m" ~$ k3 e5 B" ^1 m ) p3 H/ G) J& T! v ![]() 代码调试及烧录 调试及运行配置 % F$ e+ |9 o# X1 I3 v STM32CubeIDE工程编译完成且无任何错误,就可以进行调试和下载了。! Y. h! j/ Q7 ], x. P 在C/C++透视图的工具栏中有三个和下载调试相关的按钮:调试,运行和外部工具。: ?$ w, ~7 W. l o+ q/ [! O ' p. l2 a8 b. T+ z7 k4 ~& W& B 通过“调试”按钮旁边的小三角,可以打开Debug Configurations菜单,进行调试参数的配置,比如调试器的选择,GDB连接的设置,ST-LINK的设置,外部Flash Loader的设定等,并启动调试。6 z l0 [- D$ F6 G9 ~ 通过“运行”按钮,可以仅下载程序不启动调试。; Z6 x9 `6 D4 ~* P( d1 u 0 W [: R( V. t+ r% \5 s; F' ~ 通过“外部工具”按钮,可以调用外部的命令行工具。 有关调试参数配置及调试技巧的内容,请参考“STM32CubeIDE工程调试配置及技巧”(马上推出,敬请期待)。 ![]() - r+ H. U" X6 S+ V0 Q6 w( n& E0 n 启动调试 STM32CubeIDE使用GDB进行调试,支持STLink和SEGGER J-Link调试器,支持通过SWD或JTAG接口连接目标MCU。2 P5 w" A3 T& p6 _ STM32CubeIDE工程编译完成之后,直接点击工具栏的爬虫图标或者通过选择菜单Run-->Debug,可以启动调试。 如果是第一次对当前工程进行调试,STM32CubeIDE会先编译工程,然后打开调试配置窗口。调试配置窗口包含:调试接口的选择,STLink的设置,复位设置和外部flash loader的设置等选项,用户可以检查或者修改各项配置。确认所有的配置都正确无误,就可以点击OK,启动调试。) V' I! l. g7 k" V# ] # }; n; X. a4 y- P4 ]0 i# s 然后STM32CubeIDE会先将程序下载到MCU,然后从链接文件(*.ld)中指定的程序入口开始执行。程序默认从Reset_Handler开始执行,并暂停在main函数的第一行,等待接下来的调试指令。1 x- C% W+ D0 [, I8 V6 p3 [+ K5 F ! t/ X8 z0 W0 S6 J ![]() - |( `5 A" v3 e6 `. c 基本调试操作 ( _/ D; X4 |5 L3 `# b, T$ V; W 启动调试后,STM32CubeIDE将自动切换到调试透视图,在调试透视图的工具栏中,列出了调试操作按钮。如下图所示。 ![]() ' F5 `2 o7 r& A 插件的使用/ @8 D7 B6 C# e STM32CubeIDE同样支持Eclipse插件。 2 N: B9 b, R. Q0 I4 {6 _& l6 I 可以通过Help菜单下的“Eclipse Marketplace”,在Eclipse市场中查找并安装插件;: X4 F; Y$ Y' O# [1 _ 或者通过Help菜单下的“Install New Software”,从指定的网址安装插件。 9 } G% H" }# Q2 T+ { ![]() 4 L9 b5 T9 v' Y) U STM32CubeIDE使用例程 ! Z3 R1 }# s3 A 下面我们通过一个LED闪灯的例程,来体验一下使用STM32CubeIDE进行软件开发的流程。; n) G: I' p9 a" m 例程使用NUCLEO-H743ZI开发板,通过STM32CubeIDE从零开始新建工程。该工程就实现一个简单的功能:板载的LED1以500ms的间隔自动翻转。 通过这个例程,可以了解到以下内容: • 新建一个STM32CubeIDE工程5 u- E I q/ c# A; H) d2 f3 C 8 Z; ^1 a) J W U m6 Q. V • 对STM32芯片进行配置 • 添加用户代码并编译: B2 A9 l. \) [" F% a! r6 P % l0 D5 |5 o$ e8 f" c F • 设置调试参数. F) }( V0 w P" s" d9 ` * \6 u% F7 W6 ]+ L4 j& v • 调试代码(查看变量及寄存器) ! ?5 |- R+ D3 J/ J# u* i9 I • 设置断点/ n6 @, X& |9 U S6 J- q ]& A& z% E 首先,选择File-->New-->STM32 Project,STM32CubeIDE会打开MCU选择窗口。在这个窗口下,可以选择某个型号的芯片,也可以选择某个ST开发板或者例程。这里我们在搜索框里输入STM32H743ZI,就可以直接选择这个芯片了,然后点击Next。$ W- p0 q. R( s! @; C ![]() + _" r I' e/ p7 q9 k; p; v 在接下来弹出的窗口中,需要设置项目的名称,类型和工程保存的位置。默认情况下,新建的工程会保存在当前的workspace中,用户也可以按下图所示,取消“Use default location”,然后自定义工程保存的位置。需要注意的是,如果你试图将两个工程放在同一个路径下,在后面的创建过程中可能会报错。所以你可以在路径中加上工程名,以区别不同的工程。 ; {' E) h' J1 P8 U/ G3 X 设置完成后,点击Finish,STM32CubeIDE将为我们创建一个工程,并打开芯片的配置界面,这个界面和STM32CubeMX是一样的。 期间可能会弹出将要打开CubeMX配置透视图的提示,点击Yes就可以了。 8 r9 ]9 a+ ]0 M- N1 v8 t, o$ @/ g ![]() " B" H7 t1 `; O( ~ L- { 接下来要做的是,在芯片配置界面,按功能需求对时钟,GPIO,外设,中间件等进行配置。在这个例程中,我们只用到了PB0,作为输出控制LED1,所以只需要配置它就可以了。时钟就使用默认配置。 在Pinout视图下,通过搜索栏,可以在快速在芯片封装图上找到要配置的引脚。: R! ^3 q, i- D9 X% r 选择该引脚,点击右键,选择GPIO_Output功能。& u0 T# ]6 r/ y- a" s- ~; _ 然后转到System视图,点击GPIO模块,然后就可以看到刚刚配置的PB0引脚。这个窗口中,还可以继续调整PB0的其他参数,比如上/下拉,速度等。还可以为其定义一个用户标签LDE1,方便在代码中进行引用。 : O0 g/ ~: K6 U( ] ![]() 所有的配置结束后,选择Project-->Generate Code重新生成代码。这时STM32Cube会切换到C/C++透视图,然后可以添加用户的文件或对某个C文件进行修改。4 k/ \: T- a$ _/ \: h: ^ 0 o8 E; r1 ^( ^5 l) D 在这里,我们添加了一段翻转PB0的代码。这里要注意,所有用户添加的代码必须放在“USER CODE BEGIN xxx”和“USER CODE END xxx”这一对声明之间。这样当再次重新生成代码的时候,才不会丢失这部分代码。/ U* V4 u L \, A . F2 ~0 n6 O/ ^. \7 _( e! E 代码添加完成后,点击“Build”开始编译。* m& c4 V: s# K7 t( g/ S ![]() 如果编译结束并且没有任何报错。就可以点击Debug,启动调试。 第一次启动调试,会先弹出调试参数配置窗口,确认好所有的参数无误,点击OK,STM32CubeIDE就会自动从编辑界面切换到调试界面了。如下图所示。% x, k& w3 |; i- j' C 在调试界面下,通过工具栏的操作按钮,可以进行单步调试。2 |. R3 c/ G- { 双击某一行代码最左边的标记栏处,就可以在这行代码处添加断点。 8 n; H2 t5 P; K 右侧打开了多个调试窗口,包括:局部变量,断点,全局变量和寄存器等等。这些窗口可以在Window-->Show View菜单中打开或者关闭。 ![]() 2 J% X1 ^& r2 X* _7 }% Y ———————————————— 版权声明:Steven&Aileen + P& L2 X* t/ `: t |
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
新版STM32Cube for Visual Studio Code开发体验
【STM32N6570-DK评测】摄像头video encoder
实战经验 | STM32CubeIDE实用技巧之工程联调
【STM32H745I-DISCO】基于TouchGFX的工业控制器界面设计
【下载问题解决】关于ST官网下载软件问题解决
【STM32N6570-DK评测】开发环境及LED debug
实战经验 | 基于STM32CubeIDE下载TouchGFX GUI应用的出错分析
实战经验 | 如何修改STM32Cube固件包的存储位置
兔哥的杂谈【002】——如何性价比更高地去编译STM32