在使用STM32 ARM Cortex 32微控制器进行开发时,大部分人都会选择和谐版的Keil或者IAR来作为开发工具,平时自己玩玩倒无所谓,一但商用,搞不好某天就收到了律师函,毕竟不合法。目前主流的ARM平台编译器主要有Keil MDK的ARMCC、IAR以及开源的GCC for ARM,如果不想掏钱又不想忍受虚拟机的痛苦,GCC是唯一的选择。 ' R8 I- `' D+ a7 S5 [ u1 L ST在2019年收购了Atollic后,基于 Eclipse/CDT,GNU C/C++ Arm 工具链和 GDB 调试器搞了一个STM32CubeIDE集成开发工具,实际使用体验下来感觉还可以,写此文章分享给大家。 + p4 A0 I5 M8 U6 y7 S, E# R" x3 H! m 首先去ST的官网把最新的版本下载下来,我这里是1.8.0。选择Windows版本,在弹出框里填写邮箱,收到邮件后点击邮件里面ST发的链接就可以下载软件。; P4 d0 y* w+ h' U6 v% O 这里建议把STM32CubeProgrammer,免得后面二次通过邮箱下载。STM32CubeProgrammer用于替代ST-Link Utility,可以直接将hex文件烧录到单片机,生产时很有用。类似与Jlink的J-Flash。 / G! X* ^. M$ z2 ] ) S' q( p$ m. e4 R4 H0 x `: x+ E 下载STM32CubeIDE : Q; ~2 e0 [" }) V& p ( P: e) Y7 g, A. } 安装的时候软件会把Jlink驱动和ST-Link驱动给安装上,没什么特别需要注意的,一路Next就行,安装完成后重启电脑。& ~ Q9 U* ~2 D 安装STM32CubeIDE " H8 R# u n0 t" \点击桌面的软件图标启动,第一次启动需要设置workspace,软件的字体、一些设置都存放在workspace中,所有的工程都可以使用,可以自己定义一个文件夹来存放,并且设置为默认值,这样每次打开就不再弹出,点击Launch/ _3 t7 l$ H& l) d1 P 设置workspace 首次打开软件 % D/ d$ c0 b/ s/ L|) ?, Y) }# }9 ^3 g7 ~ $ K# p2 ]) @7 `1 `3 j, `9 h8 L- ?' Z 我手里有一块F303的Nucleo-64的开发板,上面有个LED,借助这块开发板,先来体验下STM32CubeIDE的功能。. D( ~+ {' z4 h 首先新建一个STM32工程。; G, a3 [- g) e* B & }; O. B( H2 ~ 新建工程 5 H* [4 L6 z5 }8 g1 r$ J. U) I5 v5 A; y + v2 s) k' }" ? 这个时候软件会自动去服务器查询是否有更新数据,如果有就下载。可以等他更新完,也可以直接Cancel跳过。建议等他更新完,特别是你使用了最新的H系列或者G系列等处理器。- V; ]; T* g6 r8 f1 `7 _ ! u5 i+ l0 Y# E+ Z. W m 等待更新数据 ) J' b/ b) j0 H$ H8 X 进去之后,软件会打开STM32CubeMX,没错,STM32CubeIDE集成了STM32CubeMX,搞STM32的人应该都对这个软件很熟悉,可以生成各种外设的基础代码,这里选择和开发板上的处理器一样的型号STM32F303RCT6,然后点击Next。 ' X6 x/ A% i" _4 w- N5 ^ 选择处理器对应型号 . g, e: F* ?' }1 j& R& X) S 8 l8 j% K5 ]* X 然后输入工程名称,这里有三个选项,第一个是选择使用的语言。第二个是编译结果,如果你的代码想编译成静态链接库文件给别人调用,就可以选择Static Library。第三个如果选择了Empty,则啥也没有,是一个空工程。 9 v) i0 l" f9 `) X) O6 T: g 输入工程名称 ( X% r1 X" b; Y8 N( ~" M! \% f. j# @" O+ a 到目前为止,ST官方提供了三种方便开发的库文件,标准库、HAL库和LL库,如果你想调整库文件的版本,就在上个页面继续点击Next进入下面这个页面,如果不需要,上个页面直接Finish结束即可。 7 Q; o& C8 q: [) p9 I& W 选择库文件版本 2 e( u0 T0 I3 o 然后软件会默认打开STM32CubeMX配置界面。- P* j. W& @* G4 \/ T+ m 0 x6 c$ O {) }3 U+ \/ [! F 首次进入工程后的页面 q: {4 D& j% K/ \, X/ b; B5 R- C8 g- j7 J. L. W " ^0 ~9 V" M/ D7 l$ [8 i" { 这里进行一些必要的配置,配置调试端口为SWD、打开外部无源晶振端口,将控制LED的PB13配置为推挽输出。# h" F+ P/ D) T- ]% e9 q9 j) C2 r1 U ) M" U& z& s" b. i7 l 9 P. t! @- {) s5 Z( i 配置引脚 & U" }1 T) U0 u, M# S5 L3 s - u0 X9 m' E% U7 \) w F! k2 I5 I* Y 通过上方的Clock Configuration切换到时钟树页面,将时钟源配置为外部时钟源,并设置时钟频率为最大72Mhz。 6 X+ s6 h" ]: k! F5 v7 `0 ` 配置时钟树 4 u* f' f+ G# j# h 点击软件上方的这个按钮生成代码。 & k9 S0 @5 d9 s 生成代码 2 u, v1 W, V( [' Q! l6 f4 m" W1 ?; i$ U5 G$ E8 ?+ t 生成完成后软件会自动打开main.c文件,在while里写入测试程序,让PB13端口每500ms翻转一次,实现LED每500ms翻转一次。(其实这里的延迟了501ms)0 \3 B2 U6 f9 K/ v+ j6 f/ J! w3 e 0 t$ o: Y6 g a, w 写入测试代码 ' A/ E! B; g; z1 N5 d. h8 I 点击下图红框所示的编译按钮。 ; j6 G+ u w( R. o4 T ' o4 v: Z( h+ [' q4 j9 Q0 F0 _. ^7 h 开始编译 7 B9 ]* x1 @: g) i 软件下方的Console窗口会输出实时编译进度。 $ }9 w: n9 s5 w* z% ~ 编译结果 点击上方的烧录按钮,将程序下载到板子上。' D1 M' p; {% S X7 Z" x : F% {, S T% C / X3 f! B' |, s3 x/ b8 t 烧录程序 # q# ?) q3 ~9 ?- U' Y! k8 n( W- I: [. E( f# v( S$ ?% O1 a; F8 m. b * b) X* H7 E1 h& S& H 第一次使用时,会打开下图所示界面,保持默认即可,我一般会切换到调试器页面,将下图红框中的Type修改为Software system reset。一般调试器和板子只接SWDIO、SWCLK、GND这三根线,如果你接了别的如NRST等其他的线,可以选择对应的方式。这个功能类似于Keil的Debug->settings->Connect & Reset Options。 - P5 `, i6 I; q 配置复位方式 Keil中的相同功能配置界面 烧录完成后软件将会提示,同时也能看到板子上的LED开始翻转。 i& r: j- D" F % `$ Z: W8 P: J: Q# ] 烧录成功 5 D2 E$ k! p& N如果你的ST-Link版本不是最新版本,下载过程中将会提升更新ST-Link的固件,弹出如下图所示界面。/ G+ f0 m3 f4 K& d9 E4 q - @2 x6 f# ~$ y$ ^ 提示更新ST-Link固件版本 * C9 p3 N7 L+ b# A {5 M; @( m 点击Yes后会打开下面这个页面,依次点击Open in update mode,然后Upgrade即可。ST-Link除了烧录功能外,还带有串口和硬盘功能,如果不需要,也可以在这里配置。 ! x( \. g1 [4 m$ I" B" | 更新ST-Link固件 5 g4 D) N) t. Q- l& N% ]' s$ T/ W; W, }, p' D |
2024意法半导体工业峰会:赋能智能电源和智能工业,构筑可持续未来
ST推出灵活、面向未来的智能电表通信解决方案,助力能源转型
意法半导体 x Qu-Bit Electronix:推动新一轮的数字声音合成革命
从STM32 MPU产品看嵌入式系统中微处理器的新变化
【Hot!】STM32全系列开发板都支持Arduino开发,你知道吗?
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【STM32H7S78-DK评测】XIP模板问题处理与电机控制
【经验分享】STM32驱动RC522读卡完整资料分享,包含原理图、PCB、驱动工程文件
全新STM32 VS Code扩展V2.1.0发布
【经验分享】STM32音频频谱分析设计