历史上的今天
返回首页

历史上的今天

今天是:2026年03月14日(星期六)

2023年03月14日 | 当前STM32几种最流行的开发环境对比

2023-03-14 来源:zhihu


时间进入2020年年底,越来越多的开发者跟我一样不再满足于高级语言和WEB前后端开发,逐渐开始把玩各类MCU,MPU,FPGA等硬件产品,同时这些嵌入式开发的门槛也随着互联网的发展渐渐降低,更好地吸引了众多开发者的加入。毫无疑问,那些软硬结合、能解决实际生产生活需求的小项目,总是更能引发人们的好奇心和学习欲望。

今天我们就来谈谈当前最流行的几种STM32家族MCU的开发方案,主要向新人朋友们介绍几种集成开发环境,对于大佬们来说,如果您还在使用破解版的KEIL开发项目,不妨试试我下面提到的另外几种IDE,或许会有更好的开发体验。

Keil5

最正统,最经典的嵌入式MCU开发环境。



价格/跨平台 ★

收费。国内由米尔科技代理授权,但似乎不面向个人开发者分发授权。我曾经致电米尔科技的销售人员,对方直接要求我提供公司信息,我说我只是个人开发者,想用KEIL进行STM32的开发,对方光明正大地让我用破解注册机,我担心我提供公司信息后,被对方猛查,或者发律师函,这不就暴露了么,果断挂断电话。所以到最后我都没弄明白收费的KEIL,单用户一年到底要支付多少钱,对KEIL的好感度骤降,不断萌生寻找新的替代品的想法。

跨平台方面,仅限Windows,不支持MAC OS和Linux。

开发库 ★★★★★

无论是51还是ARM Cortex M0-7,KEIL都有着不错的支持。在51下,KEIL甚至提供RTX-51的RTOS;在ARM下,KEIL的pack manage提供丰富的开发库,无论是STM32的HAL/LL库,还是标准库,无论是FreeRTOS还是RT-Thread Nano,都可以方便地下载使用。

配色和插件支持 ★★

KEIL没有设置代码配色方案的UI支持,所有的配色方案在/UV4/global.prop文件中定义,可以自行设计配色方案。这里分享一份我自用的global.prop,下载后覆盖源文件后,重启KEIL就是下面这种配色,是我喜欢的sublime风格。



KEIL提供简单的插件机制,可以手动下载插件置入安装路径下的TOOLS文件夹启用插件,我经常使用的是CoolFormat的代码格式化插件,可以将代码格式化成我习惯的JAVA/C++高级语言样式,而不用忍受大量陈年C代码中花括号换行的眩晕感。不管怎么说,没有UI界面对主题和插件的支持,只能算是勉强能用。

代码关联和自动提示 ★★★

在KEIL-51中,KEIL几乎不提供任何代码提示功能,但可以使用Go to Definition功能查看变量和函数的定义。

在KEIL-ARM中,KEIL的代码提示功能做得不错,输入三个字符以上就可以得到不错的代码提示,调用函数时的参数类型提示也可以。





有一个问题:在用户录入过程中,一旦取消提示,比如意外地失去了焦点,又或者按下ESC,临时干了点别的事情,代码提示就此无法继续,无论在原来的代码后面输入什么,都不会再次触发代码提示,只能删除这一行所有已输入的字符,重新录入,以此再次激活代码提示。所以,代码提示和追踪功能KEIL只能算是刚刚及格。

调试能力 ★★★★★



KEIL的debug能力很强,基于JTAG和STLINK都可以方便地对设备进行在线仿真调试;在手上没有设备时,甚至还可以离线模拟仿真,通过类似于示波器的界面观察模拟出来的电平信号。在调试时,可以方便地观察CPU寄存器、内存数据、变量数据、当前栈数据等信息,用户也可以直接输入内存地址观察内存数据。

KEIL 总体评分64分

STM32CubeIDE

ST意法半导体自己出品,用来开发自家MCU产品,体验良好。其本质是集成了STM32CubeMX这一图形-代码配置工具的eclipse,将工具链配好了,开发起来很顺手。

价格/跨平台 ★★★★★

免费,全平台。

开发库 ★★★★

在STM32CubeMX界面中,ST提供STM32所有MCU的HAL/LL库,免去了我们到官网下载的麻烦事,同时提供有限的第三方库供选择,以及基于url的库导入功能,我常用的RT-Thread就是通过录入URL新增了RTT的支持,具体方法可以参考文档: 基于 CubeMX 移植 RT-Thread Nano



配色和插件支持 ★★★★

STM32CubeIDE本身没有做任何代码美化工作,但是我们可以通过Eclipse Marketplace安装丰富的eclipse插件,比如我常用的Color IDE Pack,然后通过该插件将编辑区域的颜色调制成我们喜欢的样子。得益于eclipse长期以来的开源社区支持,插件非常丰富。



代码关联和自动提示 ★★★

STM32CubeIDE的代码提示功能并不如人意,使用起来甚至还没KEIL舒服,原因在于必须要输入特定字符才能触发代码提示功能。我们在Windows-Preferences-C/C++-Editor-ContentAssist界面可以一窥端倪。



图中的Auto-Activation区域内,定义了几个关键字符,这些字符敲击后,隔500毫秒,可以触发代码提示。间隔时间可以自由调整,但关键字符这里无法自行调整,带来了极大的弊端。开发过程中大量函数需要代码自动提示,但函数中又不可能有图中定义的.->::这几个关键词,因此,在我们需要对函数进行自动提示时,只有使用alt+/进行强制提示,无疑影响了开发体验。

追踪功能可以右击代码块然后Open Decleration或者按F3进行操作,全环境搜索也可以通过ctrl+H进行,这一部分没毛病。

调试能力 ★★★★★

配合GDB服务,在线调试功能还是不错的,特有的SFRs选项卡,还可以观察到内存寄存器的状态,尤其方便使用寄存器开发模式的开发者。虽然没有KEIL那种离线仿真能力,但不影响使用,真实的开发环境下几乎没人会用到那个功能。



STM32CubeIDE总体评价 84分

CLion

CLion是大名鼎鼎的JetBrains推出的C/C++开发环境,拥有极佳的响应速度和开发体验,舒服养眼的代码配色,甚至连编程字体都是JetBrains精心设计的。在全球众多开发者眼中,JetBrians全家桶真的是最香的,没有之一。

价格/跨平台 ★★★

收费,全平台。价格如下:



值得一提的是:开源项目开发者和学生可以通过一年一度的申请获得JetBrains全家桶的免费使用权利,开源项目开发者可以通过其github数据申请,学生可以通过edu邮箱申请。我本人跟当年上大学时的老师关系一直挺好,一直都是登录她的edu邮箱来免费使用JetBrains全家桶的,某宝虽然一直在查封,但断断续续也有edu邮箱的代收发服务,可以自行了解,这里不多介绍。

开发库 ★★★

CLion的嵌入式开发目前有两种主流方案,一种是仅针对STM32产品的STM32CubeMX方案,另一种是使用插件PlatFormIO。前者安装完最新的CLion,在新建项目时就可以看到入口,后者需要在Plugins中搜索安装PlatFormIO插件,安装完成后,也可以在新建项目时看到入口。 使用STM32CubeMX方案时,开发库的丰富程度与STM32CubeMX一样,参考上面的介绍,不再赘述。 使用PlatFormIO时,几乎没有第三方库可以集成使用,所有引入和移植工作均需要手动完成。

配色和插件支持 ★★★★★

这个不用多讲,即使完全不进行额外的设置,CLion秉承JetBrains家族产品一贯的界面风格,代码配色相当舒服,Plugins也非常丰富。

代码关联和自动提示 ★★★★

这个打四星的理由是,使用CLion+PlatFormIO方案时,开发环境对于CMSIS和HAL库,只提供了.h文件的关联,对所有的.c文件并没有纳入项目工程。这种做法导致一个问题,比如一个函数,我们只能关联查看到它在头文件中的定义,却没法方便地查看它的在C文件中的实现。

同样,在Clion+PlatFormIO的方案中,还存一些不合理的设置,比如如果我现在进行一个STM32F1系列的产品开发,那么像stm32f1xx_hal_conf.h这种配置文件,所有工程项目都要公用一个配置头文件。开发环境强行检索platformio安装路径下的这种头文件。导致实际项目的工程一旦与标准开发板配置不同,很难修改相关配置。最明显的问题出在高速外部晶振频率的定义(HSE_VALUE),我手上大部分开发板都是8MHz的晶振,但默认配置文件stm32f1xx_hal_conf.h中HSE_VALUE的值为25MHz,原本仅仅需要修改一下头文件就可以,这里却很麻烦,不得不利用编译选项强制定义宏来解决。

后面,我打算后面录制两段视频节目,专门介绍一下使用CLion+CubeMX以及CLion+PlatFormIO这两种方案开发STM32项目的完整过程。

调试能力 ★★★★

CLion使用开源的OCD进行调试,支持基本的断点、单步、变量监控、内存观察等操作,从ST官网可以下载相关芯片的svd文件,导入到CLion中后可以对芯片内的内存寄存器进行观察,但是没有CPU寄存器的观察窗口。



CLion总体评分 76分

RT-Thread Studio



RT-Thread是著名的国产RTOS,个人认为,相较于目前众多国内互联网巨头出品的RTOS(阿里、腾讯、小米、华为都有推出自家的RTOS),RT-Thread无论名气、生态、成熟度、易用性都远胜之。在学习RT-Thread时,我注意到这款基于eclipse改造的嵌入式开发工具,这款IDE的初衷是为了方便开发者将各大MCU在集成使用RT-Thread,但随着深度使用,我发现这是目前最适合我的一款嵌入式编程环境,无论是开发裸机项目还是RTOS项目,没有之一。

这里不得不为国产软件产品做个推广,希望国人能不断开发出能在全世界流行的软件产品,与君共勉。下载地址:rt-thread.org/page/stud

价格/跨平台 ★★★★

免费,目前只支持Windows。RT-Thread基于eclipse改造,虽然目前只提供了Windwos平台的下载,但移植到Linux无非是时间的问题。根据相关论坛的帖子来看,Linux版的RT-Thread已经在筹备移植中了。

开发库 ★★★★★

RT-Thread Studio在新建项目时,可以选择MCU,在打开的SDK管理器中,可以看到为我们提供了简单直白的库列表,而且这份列表在不断更新中,一开始只有STM32系列,目前已经又扩展了GD32和NXP相关型号的MCU支持,开源社区还在基于RT-Thread不断丰富支持的硬件资源。



配色和插件支持 ★★★★★

比起STM32CubeIDE,RTT Studio默认安装了Color Themes插件,这个插件可以很容易修改整个开发环境的配色方案,注意是整个主程序窗口,包括菜单栏、工程资源部分、命令行终端、以及代码编辑区域的配色全部修改。这比起部分插件只修改代码编辑区域的配色要舒服得多。五星好评。





代码关联和自动提示 ★★★★★

RTT Studio拥有跟CLion一样舒服的代码补全自动提示。上文说到STM32CubeIDE的在Content Assist配置界面,只对特定字符进行了代码提示的触发,而青出于蓝而胜于蓝的RTT Studio,显然发现了这一编码痛点,在它的Content Assist配置界面,我们欣慰地发现这样的配置方案:



经过这么一修改,编码流畅度瞬间如丝般顺滑,输入任何字符,都会立刻得到提示,开发者将体验到相当舒服的编码体验。

调试能力 ★★★★★

这个跟STM32CubeMX和Keil一样,各种调试都是得心应手,用户只需要选择烧录接口就可以了,支持的编译和烧录接口有J-Link,ST-Link,DAP-Link和QEMU仿真,RTT Studio自带了QEMU仿真能力,可以在没有真实板子的情况下使用QEMU模拟,因为我没这方面需求也一直没研究过。总之,5星好评。



RT-Thread Studio总体评分 96分

总结

最后做个总结,我个人认为目前开发STM32最优方案应该是国产的RT-Thread Studio。即使不用RTOS,它也能给予非常棒的开发体验;如果项目需要使用RTOS,它更是可以一键生成符合RTT所规范的工程框架,同时提供GUI的组件配置界面。

此外,STM32CubeIDE可以提供不错项目初始化代码生成能力,极大地简化外设的配置工作,但是STM32CubeIDE本身的编码体验较差,不建议使用,推荐使用STM32CubeIDE+RTT Studio结合的方法进行开发。

至于CLion,这个适合尝尝鲜,新项目开发的时候玩一玩,毕竟目前还是比较小众,CLion+STM32CubeMX的方案要比CLion+PlatFormIO的方案好一些,目前PlatFormIO的问题感觉还是比较多。

KEIL可能也不能少,很多祖传项目都是KEIL的工程,不建议新项目使用它开发,毕竟收费,而且吃相难看。还有一些闭源的三方协议栈,只提供KEIL环境下的库文件,所以免不了还是要安装。

推荐阅读

史海拾趣

Elpress AB公司的发展小趣事

随着电子技术的不断进步和市场需求的变化,Elpress AB意识到只有不断创新才能保持竞争力。因此,公司加大了对研发的投入,引进了一批先进的研发设备和人才。经过数年的努力,Elpress AB成功推出了一系列具有创新性和领先性的电气连接产品,如高压电缆接头、母线连接器等。这些产品的推出不仅丰富了公司的产品线,也进一步提升了Elpress AB在电气连接领域的地位。

General Semiconductor ( Vishay )公司的发展小趣事

1997年,Vishay正式进入分立半导体领域,收购了Lite-On Power Semiconductor公司65%的股份。这一举措标志着Vishay在半导体技术上的重大突破。随后,在1998年,Vishay又收购了TEMIC的半导体业务部分,包括特洛芬肯(Telefunken)和硅尼克斯(Siliconix)两家公司的大部分股份。这些收购为Vishay带来了先进的晶体管、二极管、光电子装置等半导体技术,进一步巩固了其在半导体领域的地位。

CommScope Inc公司的发展小趣事

在通信行业,技术的不断创新和产品的持续升级是企业保持竞争力的关键。康普公司一直注重研发和创新,不断推出具有竞争力的新产品和解决方案。例如,在2004年,康普成立了CCS(连接解决方案)工厂,主要生产宽带同轴电缆、网络对绞线缆以及铜和光纤连接器系列产品。这些产品不仅满足了市场对于高速、高质量网络连接的需求,也进一步巩固了康普在通信行业的领先地位。

GE (General Electric)公司的发展小趣事
检查继电器、接触器、转换开关等控制元件是否接触良好,有无损坏或松动现象。
Compensated Devices Inc公司的发展小趣事

Compensated Devices Inc(简称CDI)最初是一家小型电子元件制造商,专注于生产高精度电阻器。随着科技的飞速发展,传统电阻器已无法满足新兴市场的需求。CDI的创始人李先生敏锐地洞察到这一点,决定投入大量资源进行研发,推出了具有温度补偿和自动校准功能的新型电阻器。这一创新产品迅速获得了市场的认可,CDI也因此逐渐在电子行业中崭露头角。

Compound Photonics公司的发展小趣事

在公司发展初期,Compound Photonics曾专注于一款微投显示模组的研发。然而,这个项目并未如预期般顺利,最终宣告失败。面对挫折,公司并没有放弃,而是迅速调整战略,转向LCoS方向。这一决策不仅让公司避免了进一步的损失,还为其在LCoS领域的发展打开了新的大门。

问答坊 | AI 解惑

数字电视热潮涌入汽车市场

引言数字电视应用热潮蔓延到大大小小各个应用市场,而汽车市场当然也不会被遗忘。其中,Volv已经推出整合数字影音设备产品的新车款,包括了Mer-cedes-Benz、Volkswagen、Peugeot、Citroen等世界级汽车厂也预计在新推出的车款中将数字电视列为配备, ...…

查看全部问答>

nRF2401 无线传输模块

本帖最后由 paulhyde 于 2014-9-15 03:53 编辑 包括原理图,PCB图和程序,比较全面的资料,内部资料啊!  …

查看全部问答>

整流输出推挽式变压器开关电源 开关电源原理与设计(连载28)

0.2.整流输出推挽式变压器开关电源 整流输出推挽式变压器开关电源,由于两个开关管轮流交替工作,相当于两个开关电源同时输出功率,其输出功率约等于单一开关电源输出功率的两倍。因此,推挽式变压器开关电源输出功率很大,工作效率很高,经桥式 ...…

查看全部问答>

pxa270下键盘编程问题

请问pxa270下键盘编程问题 这个模块是: 按下PXA270下4*4键盘的某个键,运行开发板一个GPRS程序模块,GPRS是用来发短信和打电话的。 请高手指点下,键盘这个如何操作,???…

查看全部问答>

江湖救急!!!请问谁有WAVECOM Q2403A的硬件资料???

江湖救急!!!请问谁有WAVECOM Q2403A的硬件电路资料?做毕业设计用,哪位大侠有的话请发给一份 huwj1986@126.com,小弟感激不尽!!!…

查看全部问答>

有个华师大人对我说关于Arm开发的事,这样对吗?

他帮我说要搞Arm开发板,先要用Keil写底层驱动,再把keil写的代码转到Platform Builder上去跑。 Platform Builder不是也能写驱动的吗?这两者有区别吗?开发难度有区别么?…

查看全部问答>

RasSetEntryProperties()函数问题?

函数原型 DWORD RasSetEntryProperties(   LPWSTR lpszPhoneBook,   LPWSTR szEntry,   LPRASENTRY lpbEntry,   DWORD dwEntrySize,   LPBYTE lpb,   DWORD dwSize ); ...…

查看全部问答>

通用TFT液晶驱动!!!!

我们公司开发的m600驱动模组能驱动1024*768以下不同厂家不同分辨率的TFT。需要资料的可以跟我联系。 boy_201a@163.com  13501104029 qq 781558807 张凯…

查看全部问答>

请问:双击我的电脑的d盘或e盘时,出现"选择您想用来打开此文件的程序"的对话框,而不是直接打开了d或e盘,请问这是什么病毒?

双击我的电脑的d盘或e盘时,出现\"选择您想用来打开此文件的程序\"的对话框,而不是直接打开了d或e盘,请问这是什么病毒? 应当用什么软件来清除? 谢谢. …

查看全部问答>

做了一块CPLD+ARM的LED显示屏控制卡,但是不会移动显示,求助!

做了一块CPLD+ARM的LED显示屏控制卡,静态显示已经OK,但是不会移动显示,求助!…

查看全部问答>