你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32CubeIDE使用说明 —— Keil项目迁移到STM32CubeIDE

[复制链接]
STMCU小助手 发布时间:2022-5-19 11:20
        对于初学者来说,刚开始学习STM32时候都使用的是Keil,很多项目都是在Keil环境下编译和调试的,这一章将描述如何将Keil工程迁移到STM32CubeIDE中。

          对照Keil下的新建工程步骤,创建工程、引入工程文件、添加预处理指令、添加头文件包含路径等步骤,STM32CubeIDE中也大同小异。 为了便于说明,我用STM32CubeMX生成了一个Keil5环境下的STM32F103C8T6亮灯程序,然后将其迁移到STM32CubeIDE中。
(7[HULSY5M5PEDSVH0SCNGJ.png


STM32F103C8T6亮灯程序



        如图所示,该文件夹内容是STM32CubeMX自动生成的,我们在该路径下面创建一个STM32CubeIDE_Test文件夹,用来存放STM32CubeIDE相关工程文件。

LQZK{H7EQAWA61RTUWK%V.png


创建工程文件夹



        参照上一章,先使用STM32CubeIDE创建一个STM32F103C8T6的工程,STM32CubeIDE的Workspace中的这三个文件就是我们需要的,这三个文件记录了STM32F103C8T6芯片的一些相关信息,我们可以直接拿来用,很方便。将其拷贝到上面在STM32CubeMX中创建的文件夹内。

8TEZDA$)K%9UMIWWPVN9ETF.png


STM32CubeIDE默认生成的文件



这里简单介绍下这三个文件:

.cproject : 该文件是CDT插件的工程描述,CDT是Eclipse 的 C/C++ 开发工具。

.project:    该文件是Eclipse的工程描述,毕竟STM32CubeIDE就是基于Eclipse的。

STM32F103C8TX_FLASH.ld  :该文件定义了程序入口地址,定义Flash、RAM中代码和数据的存放位置,将来搞Bootloader的时候就可以在这文件里面修改代码存放的起始地址。

I`V)S98ZS_$KWFM(~TWT_GR.png


拷贝文件到文件夹


        然后删除STM32CubeIDE中刚刚创建的工程,因为STM32CubeIDE只能存在一个相同名称的工程。在工程名上右键然后Delete,软件会提示是否删除硬盘上的数据,这里我们先不删除。

T027`8H%TGTW(@$GRR}6PMT.png


删除工程



        进入我们在STM32CubeMX下创建的文件夹,点击.project,稍微等待一下就可以看到STM32CubeIDE已经导入了该工程。

S46$GH6(T@P7OI1T3Y45CHN.png


导入工程

        STM32CubeIDE默认会加载和工程文件同一路径下的所有文件,这时候工程里面全是空的,我们只能看见刚刚三个文件中的STM32F103C8TX_FLASH.Id文件,我们需要做一些操作。

J4N[77]P9GFMSI0FA88[G51.png


空工程



         像Keil一样,我们先将工程文件引入进来,如图所示,先选中工程,然后打开工程属性。

4PORY)@%5RH[@6XRM4%2`EX.png


打开工程属性



        依次按下图所示步骤,将Core文件夹和Drivers文件夹链接到工程中,这两个文件夹存放了STM32的相关代码,而MDK-ARM主要存放了Keil5的相关工程文件,我们不链接。需要注意的是,链接路径里不能再次包含工程文件,如果这里我们直接链接这个目录的上层文件夹目录的话,将不能链接。

@2)JR(2@}FYZR8C$S_(I5.png


引入文件

        链接信息确认退出后就能在右侧看到引入的工程文件吗,而且外链的文件夹下面有个小箭头区分。

0XSZEA_]~9E1831BOK)13TR.png


添加文件到工程目录



        在Keil中,我们需要设置头文件包含路径,在STM32CubeIDE中也一样,注意这张图里已有的是上一个工程自带的,我们把全部删除后再添加。

%4N[(O9GS)PF8)KT{8K(W}4.png


添加包含路径



        添加完成后如下图所示,主要为HAL库的头文件、ARM内核的头文件。

@H`V2L@ZMIU~8`4QX(C$(A7.png


头文件路径



        添加预处理符号,在Keil5中也有该设置,声明一些全局的宏定义,主要是给HAL库使用,这里创建工程的时候已经包含了所需要的USE_HAL_DRIVER和STM32F103xB两个关键预处理,如果还有别的预处理,在此处新增即可。

E(X3}HN71FN2$%5~Y@U8PYE.png


预处理符号



        此时可以尝试编译一下,毫不意外,会有很多报错,由于STM32CubeIDE的特性,会将文件夹下所有的文件引入进来,而有一些不是我们需要的,这些不需要的文件都进行了编译,当然会报很多错误,我们可以通过删除不需要的文件或者排除文件在工程外两种方式,去掉不需要的文件。

        第一种是删除,例如下图这些文件,都是STM32CubeMX多余生成的,此处无用,直接右键删除。此处删除将会直接删除硬盘上的文件,谨记。

QK6JV~FV841NN5IC5_WP3TX.png


删除不需要的文件



        而对于一些其他文件,例如下图中STM32CubeMX生成的不同编译器下的汇编启动文件,如果我们要实现Keil5和STM32CubeIDE都可以编译的话,则不能删除,我们可以将不需要的文件排除在工程外。如下图所示,对着文件夹或者文件右键。

1X[4G7}`U8A}GLRJ)U2`4S0.png


排除文件夹



        然后在弹出的窗口全选,也可以用该方法来切换不同配置下工程编译包含文件,此处的Debug和Release就是两个不同的配置。

{TH`}RR2](L1@QC07D%X8PT.png


排除文件夹选项



        注意到这时候被排除的文件就会有特别的标志显示。

~6V)0DQ[NITU@XKKVE1``]C.png


排除的文件夹



        为了便于说明,对比删除和排除后目录差异。,Core文件夹下删除了system_stm32f1xx.c,该文件在Drivers文件夹下也有一份,两者只能存在一份,否则编译器会报错,也可以保留Core文件夹下的,看个人习惯。

X1L955JB{4QB57PVS()39]L.png


Core文件夹对比



        Drivers下第一级目录,没使用到的全部删除。

D_RA2IDV@QBUWP5BK4E2S[F.png


Drivers文件夹对比



        CMSIS文件夹下,删除了Core文件夹下的Template,删除了其他系列芯片的启动文件和.h文件。而Keil使用的汇编文件存放路径arm,IAR使用的汇编文件存放路径iar,则将其排除。

E[5RZZ0MBEZ2M(1])VZ_7_A.png


CMSIS文件夹对比



        STM32F1xx_HAL_Driver文件夹,Inc文件不用动,因为都是.h文件,Src文件夹下除了使用下图所示使用到的HAL文件,其他全部排除。

}~YY~Z6Z[R_F65RU071Q13U.png


HAL Driver文件夹



        经过以上步骤,此时再尝试编译,编译通过,生成了Debug文件夹,参照上一章内容,此时下载就可以运行。

BWTOV(`)SVF2DW0~U35_}W4.png


STM32CubeIDE编译通过



        此时切回到Keil尝试编译,编译器报错找不到Core文件夹下的system_stm32f1xx.c文件,因为前面已经把他删除了,重新将Drivers文件下的system_stm32f1xx.c文件引入,此时Keil也能编译通过。

Q~I4GG({CFUKFJX2BP`5~2P.png


Keil编译



        如果需要调整优化等级,则可以再下图所示位置调整。

WSF@(%LYTF21TEC}ZRV7POD.png


调整优化等级



        除了以上内容以外,我们还需要将工程内所有路径设置成相对路径,这样才可以像Keil那样,随意将代码放到任何位置都能编译,按下图所示步骤,将路径从绝对路径转换为相对路径。

(LQYD3L6@%}5B`RH(WO_P.png


Linked Resources设置为相对路径



        前文提到的Id文件,此时已经是相对路径,如果不是的话也需要修改为相对路径。

{]W[95T3]KZ~A}RDZY`%(QC.png


Id文件路径



        查看工程文件夹内,除了最开始拷贝过来的这三个文件,其余都是编译过程中产生的文件,提交代码或者拷贝到别处时都可以删除。

        额外需要注意的是,STM32CubeIDE只能存在一个相同名称的工程,所有拷贝到别处时还需要删除已有工程,只删除工程但是不删除硬盘数据,然后在别的路径下打开就可以自动导入。

        针对一个相同名称的工程问题,工程取名时最好也有些讲究。

[Z`XCM(304V`$GI_]Q5~3%V.png


编译后文件夹内容



        这样,通过外链文件夹、排除文件和设置相对路径,就可以不改变原有工程目录的情况下,将已有工程迁移到STM32CubeIDE中。


收藏 评论0 发布时间:2022-5-19 11:20

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版