当前STM32几种最流行的开发环境对比

发布时间:2023-03-14  


时间进入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环境下的库文件,所以免不了还是要安装。

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>