
在使用STM32 ARM Cortex 32微控制器进行开发时,大部分人都会选择和谐版的Keil或者IAR来作为开发工具,平时自己玩玩倒无所谓,一但商用,搞不好某天就收到了律师函,毕竟不合法。目前主流的ARM平台编译器主要有Keil MDK的ARMCC、IAR以及开源的GCC for ARM,如果不想掏钱又不想忍受虚拟机的痛苦,GCC是唯一的选择。% a- X) B O5 _) H" z( } ST在2019年收购了Atollic后,基于 Eclipse/CDT,GNU C/C++ Arm 工具链和 GDB 调试器搞了一个STM32CubeIDE集成开发工具,实际使用体验下来感觉还可以,写此文章分享给大家。 5 K9 |4 f) ~ p 首先去ST的官网把最新的版本下载下来,我这里是1.8.0。选择Windows版本,在弹出框里填写邮箱,收到邮件后点击邮件里面ST发的链接就可以下载软件。 _! r8 U3 I: _. s, D. ]$ x: [4 J 9 v N) } i# l 这里建议把STM32CubeProgrammer,免得后面二次通过邮箱下载。STM32CubeProgrammer用于替代ST-Link Utility,可以直接将hex文件烧录到单片机,生产时很有用。类似与Jlink的J-Flash。; ^* |! e6 q$ ?; U% [ ! b1 p; `" R1 r* j8 C, y# E' D ![]() 下载STM32CubeIDE , k! V" b6 A1 e( {8 f( X2 { 安装的时候软件会把Jlink驱动和ST-Link驱动给安装上,没什么特别需要注意的,一路Next就行,安装完成后重启电脑。 1 c* Z4 q4 G8 ?" O' T' D ![]() : F9 ^5 w9 U& \/ w+ @/ {( V 安装STM32CubeIDE 8 C- V' x/ p3 E, z2 @- U1 w3 g2 l3 O' h 点击桌面的软件图标启动,第一次启动需要设置workspace,软件的字体、一些设置都存放在workspace中,所有的工程都可以使用,可以自己定义一个文件夹来存放,并且设置为默认值,这样每次打开就不再弹出,点击Launch* ]9 A, |# Z1 t* `/ {# @ - j, i' T! r3 W3 m; Q! k; f) R6 Z6 I! F ![]() 设置workspace ![]() 首次打开软件 * i. ~" I1 m b" q) X6 W我手里有一块F303的Nucleo-64的开发板,上面有个LED,借助这块开发板,先来体验下STM32CubeIDE的功能。 首先新建一个STM32工程。 ![]() $ F/ c) O' C5 Q' O 新建工程 # F J$ G3 p7 g" L这个时候软件会自动去服务器查询是否有更新数据,如果有就下载。可以等他更新完,也可以直接Cancel跳过。建议等他更新完,特别是你使用了最新的H系列或者G系列等处理器。# O/ A; n2 f3 T3 M ![]() 8 }9 I5 w3 y8 J0 v2 v+ ` 等待更新数据 2 | \. @* m1 d. X- {( b3 D+ I% h+ }7 w; I- K/ S+ {" c E : ^4 P7 I! W, w6 p& K6 E# W 进去之后,软件会打开STM32CubeMX,没错,STM32CubeIDE集成了STM32CubeMX,搞STM32的人应该都对这个软件很熟悉,可以生成各种外设的基础代码,这里选择和开发板上的处理器一样的型号STM32F303RCT6,然后点击Next。 ![]() ' M) A# x1 Y7 K! B* P0 r N 选择处理器对应型号 : Q3 b! H# z4 Z( I* V4 ? 然后输入工程名称,这里有三个选项,第一个是选择使用的语言。第二个是编译结果,如果你的代码想编译成静态链接库文件给别人调用,就可以选择Static Library。第三个如果选择了Empty,则啥也没有,是一个空工程。+ ?. j: n, R, `/ B ![]() 输入工程名称 ! X6 K9 J9 I2 f- X% B! p 到目前为止,ST官方提供了三种方便开发的库文件,标准库、HAL库和LL库,如果你想调整库文件的版本,就在上个页面继续点击Next进入下面这个页面,如果不需要,上个页面直接Finish结束即可。+ k( H; D0 f0 j! Z) J. A- h ![]() + A& P/ @: C: Y3 J2 Y 选择库文件版本 9 J* H! i5 V' d# X$ ?& J6 J* g6 f- w8 o 然后软件会默认打开STM32CubeMX配置界面。 - O4 |; g( T0 }% Y9 m( Q ![]() 首次进入工程后的页面 & ]* @# g# a( W; I9 n & y6 b! _1 S2 ]- M# [" J1 s 这里进行一些必要的配置,配置调试端口为SWD、打开外部无源晶振端口,将控制LED的PB13配置为推挽输出。 ![]() 3 b0 S x9 B) S+ ^6 K% ^. {# e5 h, P 配置引脚 / p! M' n8 H' W* Q. s5 r# X7 v2 N1 N# S# W# _- }9 Q; A 6 m/ b" h" Q: [3 T9 m# [* u 通过上方的Clock Configuration切换到时钟树页面,将时钟源配置为外部时钟源,并设置时钟频率为最大72Mhz。% z; V7 \* B& E% s& } 8 `* ?' J1 X4 Q5 ? ![]() 配置时钟树 & V9 M( c4 G: T2 L6 Y) g6 ^ 点击软件上方的这个按钮生成代码。: G0 V4 X* _( o4 W7 B& `7 v 0 S, ]+ l# B9 Q( q ![]() 生成代码 7 H/ d5 |( h5 g/ M" Zf' Q2 |5 P2 v! W. S* d+ _ 生成完成后软件会自动打开main.c文件,在while里写入测试程序,让PB13端口每500ms翻转一次,实现LED每500ms翻转一次。(其实这里的延迟了501ms). ^/ V- P8 C5 f5 r3 @8 B3 Z9 }& |8 ] ![]() 写入测试代码 5 M, u: Q0 I' y. o: ?3 e+ c' b- h3 K E* p- {% J3 F/ \# ~: x Y4 z 点击下图红框所示的编译按钮。7 O, C, Z% s" }! n ![]() 2 `5 a: }2 L8 j, } 开始编译 软件下方的Console窗口会输出实时编译进度。 $ k. j5 t0 A8 Z0 |. e ![]() 编译结果 点击上方的烧录按钮,将程序下载到板子上。 ! e3 c. i2 X) z3 ?2 { ![]() 2 T6 E4 b7 ^1 v2 [& i3 c5 l 烧录程序 s) s, e; L; v8 M( x1 T. U& G: E3 R 第一次使用时,会打开下图所示界面,保持默认即可,我一般会切换到调试器页面,将下图红框中的Type修改为Software system reset。一般调试器和板子只接SWDIO、SWCLK、GND这三根线,如果你接了别的如NRST等其他的线,可以选择对应的方式。这个功能类似于Keil的Debug->settings->Connect & Reset Options。3 K1 I1 H0 d% _, J1 b7 \ ![]() ( z ?& w: J$ N( x' ~ p& g% A9 J8 | 配置复位方式 ![]() Keil中的相同功能配置界面 4 V# A' ~% A8 [* ?" x6 w 烧录完成后软件将会提示,同时也能看到板子上的LED开始翻转。 ![]() % f) O0 F& e2 L 烧录成功 $ g7 r3 t* Y( ~* z0 @$ u: V9 h 如果你的ST-Link版本不是最新版本,下载过程中将会提升更新ST-Link的固件,弹出如下图所示界面。 5 e9 P7 X; t0 ] ![]() 提示更新ST-Link固件版本 # Y0 y, @- o y7 S5 R- E' U- A8 P9 b6 ^( h. a# p) L/ S8 Y6 ` , [0 j& X6 M. g) p; I* B4 F: ^7 c 点击Yes后会打开下面这个页面,依次点击Open in update mode,然后Upgrade即可。ST-Link除了烧录功能外,还带有串口和硬盘功能,如果不需要,也可以在这里配置。6 k$ R1 h" x+ v9 O2 ]7 G7 V ![]() * U, h" P( s+ r 更新ST-Link固件 ) Y$ C- f+ V- n. @6 Q5 I* v3 ]3 i+ d0 v2 D2 D, j+ r |
STM32 ISP IQTune:真正零门槛的免费ISP调整软件
【经验分享】STM32 新建基于STM32F40x 固件库的MDK5 工程
意法半导体MCU双供应链策略,打消中国客户后顾之忧
【经验分享】基于STM32使用HAL库实现USB组合设备CDC+MSC
2024意法半导体工业峰会:赋能智能电源和智能工业,构筑可持续未来
ST推出灵活、面向未来的智能电表通信解决方案,助力能源转型
意法半导体 x Qu-Bit Electronix:推动新一轮的数字声音合成革命
从STM32 MPU产品看嵌入式系统中微处理器的新变化
【Hot!】STM32全系列开发板都支持Arduino开发,你知道吗?
【经验分享】STM32 HAL库移植FreeModbus详细步骤