
在使用STM32 ARM Cortex 32微控制器进行开发时,大部分人都会选择和谐版的Keil或者IAR来作为开发工具,平时自己玩玩倒无所谓,一但商用,搞不好某天就收到了律师函,毕竟不合法。目前主流的ARM平台编译器主要有Keil MDK的ARMCC、IAR以及开源的GCC for ARM,如果不想掏钱又不想忍受虚拟机的痛苦,GCC是唯一的选择。2 f: i1 a6 z8 ` L5 q ! }9 ^) d6 ^9 d$ Y( p$ ` ST在2019年收购了Atollic后,基于 Eclipse/CDT,GNU C/C++ Arm 工具链和 GDB 调试器搞了一个STM32CubeIDE集成开发工具,实际使用体验下来感觉还可以,写此文章分享给大家。) ~/ ^' n0 }2 N# H4 z4 s - ~1 ?( a) q2 w* ~$ S1 g; M 首先去ST的官网把最新的版本下载下来,我这里是1.8.0。选择Windows版本,在弹出框里填写邮箱,收到邮件后点击邮件里面ST发的链接就可以下载软件。 这里建议把STM32CubeProgrammer,免得后面二次通过邮箱下载。STM32CubeProgrammer用于替代ST-Link Utility,可以直接将hex文件烧录到单片机,生产时很有用。类似与Jlink的J-Flash。 . b+ C( r# e5 B! x! D5 B1 ] ![]() 下载STM32CubeIDE 5 q, R" i7 J0 [5 k+ U$ O 安装的时候软件会把Jlink驱动和ST-Link驱动给安装上,没什么特别需要注意的,一路Next就行,安装完成后重启电脑。 ' O/ |; t9 Q. {' x# V( |! Q( G% _ ![]() + q3 W& ?3 I5 l1 K: T 安装STM32CubeIDE - S$ p4 w, a' r4 Y# F9 c点击桌面的软件图标启动,第一次启动需要设置workspace,软件的字体、一些设置都存放在workspace中,所有的工程都可以使用,可以自己定义一个文件夹来存放,并且设置为默认值,这样每次打开就不再弹出,点击Launch7 j& P( E! O1 h6 W4 c- A% e ~4 I! n, C- d* f ![]() 设置workspace 4 U$ E1 C7 Q% `$ _4 |5 ^" J+ r. Z![]() : p" Q. _* M/ h6 C 首次打开软件 5 a" O: R# ]# t/ ] 我手里有一块F303的Nucleo-64的开发板,上面有个LED,借助这块开发板,先来体验下STM32CubeIDE的功能。, o* w+ o" v4 _0 u1 z 首先新建一个STM32工程。7 c: F, z$ e7 b : G/ I3 n) |) ?/ b. L ![]() 新建工程 4 L$ A/ t! z% p! @' x + x- R' m# H; f& J 这个时候软件会自动去服务器查询是否有更新数据,如果有就下载。可以等他更新完,也可以直接Cancel跳过。建议等他更新完,特别是你使用了最新的H系列或者G系列等处理器。9 |( ^5 L. M+ t 0 q1 H1 @4 v* }2 U/ ]% t4 a: } ![]() 等待更新数据 6 U/ Q2 T! C4 i) K8 _ ) w1 i/ s% Z0 B5 K 进去之后,软件会打开STM32CubeMX,没错,STM32CubeIDE集成了STM32CubeMX,搞STM32的人应该都对这个软件很熟悉,可以生成各种外设的基础代码,这里选择和开发板上的处理器一样的型号STM32F303RCT6,然后点击Next。 8 }4 K9 z, p; @ ![]() $ O- W* [* `1 Q# N" |/ { P 选择处理器对应型号 ; H' \- o$ K+ d5 H, @ 6 ^. z+ t3 j0 f* Z5 j4 j- e6 r 然后输入工程名称,这里有三个选项,第一个是选择使用的语言。第二个是编译结果,如果你的代码想编译成静态链接库文件给别人调用,就可以选择Static Library。第三个如果选择了Empty,则啥也没有,是一个空工程。 : O$ H6 w! P" n! t( U5 K* u9 b ![]() 输入工程名称 ' @- D6 {$ P8 g. b Q$ Z到目前为止,ST官方提供了三种方便开发的库文件,标准库、HAL库和LL库,如果你想调整库文件的版本,就在上个页面继续点击Next进入下面这个页面,如果不需要,上个页面直接Finish结束即可。 9 _0 ?7 P8 I! G. V) p ![]() 1 [9 j7 s+ w% E0 F& G 选择库文件版本 然后软件会默认打开STM32CubeMX配置界面。 ' W' k: [; ]8 x; C ![]() 3 J& F' Y0 K5 ` O 首次进入工程后的页面 . ^9 |- i0 F2 N% X7 s 这里进行一些必要的配置,配置调试端口为SWD、打开外部无源晶振端口,将控制LED的PB13配置为推挽输出。 ![]() % ~; |) L( t' P$ P+ M' e4 Q 配置引脚 5 s2 C9 y' O# |( s/ Z4 Q4 f6 E% w( w( ~- g o, R# u* H 通过上方的Clock Configuration切换到时钟树页面,将时钟源配置为外部时钟源,并设置时钟频率为最大72Mhz。) d9 |; u H2 P9 t8 z% }% T ! O' U5 x1 H" E* T8 ^! K& w* ]! B ![]() - u! s* R+ W3 i( ~, ?7 |( ? 配置时钟树 0 q% b4 ?+ Z! z8 ~. i 点击软件上方的这个按钮生成代码。8 H7 E5 n3 L# o4 H2 v ![]() 6 K1 q# V7 P# [+ ?: w& r 生成代码 6 L- D( l$ n0 w6 b0 z& {8 ? 生成完成后软件会自动打开main.c文件,在while里写入测试程序,让PB13端口每500ms翻转一次,实现LED每500ms翻转一次。(其实这里的延迟了501ms) ' B* z9 I3 l- L, u6 K m ![]() 1 Z; l) ^, G# D0 }; E* ^4 m 写入测试代码 * m+ r3 W1 P: Q4 n+ X5 f6 {- z) B& D 点击下图红框所示的编译按钮。9 c$ |$ K$ Q5 h% D% \ ![]() 开始编译 , ^ ?9 H. J. Z0 n. j9 v1 T) w, u% ?# h+ \ 软件下方的Console窗口会输出实时编译进度。 ![]() 编译结果 7 H! U9 q5 @0 D0 s+ G! W# S+ U) g. v; c' G- M& m6 d( F 0 Z7 W' o: M% K/ i8 ?- j1 u 点击上方的烧录按钮,将程序下载到板子上。 ![]() 0 @5 }6 N K ^& E4 Q 烧录程序 9 G" q: E3 U4 i# x2 m b" l$ \1 l4 U* ? , j( H, g: t7 J" Z% ^& g/ ^ 第一次使用时,会打开下图所示界面,保持默认即可,我一般会切换到调试器页面,将下图红框中的Type修改为Software system reset。一般调试器和板子只接SWDIO、SWCLK、GND这三根线,如果你接了别的如NRST等其他的线,可以选择对应的方式。这个功能类似于Keil的Debug->settings->Connect & Reset Options。- t D( X( E4 m2 H8 l c `: ~ K* A+ R' `# }2 a ![]() 配置复位方式 3 f9 _9 ?. t2 |2 b' V& P# m+ O ![]() Keil中的相同功能配置界面 1 K: ] [2 h f( f. Q4 K7 Z0 q6 m. t$ z/ r1 c' d1 {- w 烧录完成后软件将会提示,同时也能看到板子上的LED开始翻转。$ S3 W2 K3 s/ r7 _" a; \ ![]() 烧录成功 . m S. z$ @- C 如果你的ST-Link版本不是最新版本,下载过程中将会提升更新ST-Link的固件,弹出如下图所示界面。 ![]() # m# ~& w9 h6 M$ b 提示更新ST-Link固件版本 2 P! t. K' {8 @( y4 A- v* n4 @6 U3 c% @6 a- ^: ?3 @ 点击Yes后会打开下面这个页面,依次点击Open in update mode,然后Upgrade即可。ST-Link除了烧录功能外,还带有串口和硬盘功能,如果不需要,也可以在这里配置。 ![]() 更新ST-Link固件 |
【2025·STM32峰会】GUI解决方案实训分享2-编译运行TouchGFX咖啡机例程(含桌面仿真)
实战经验 | Keil工程使用NEAI库的异常问题
STM32 ISP IQTune:真正零门槛的免费ISP调整软件
【经验分享】STM32 新建基于STM32F40x 固件库的MDK5 工程
意法半导体MCU双供应链策略,打消中国客户后顾之忧
【经验分享】基于STM32使用HAL库实现USB组合设备CDC+MSC
2024意法半导体工业峰会:赋能智能电源和智能工业,构筑可持续未来
ST推出灵活、面向未来的智能电表通信解决方案,助力能源转型
意法半导体 x Qu-Bit Electronix:推动新一轮的数字声音合成革命
从STM32 MPU产品看嵌入式系统中微处理器的新变化