如何用gcc+makefile改造STM32Keil项目

发布时间 2023-11-16 16:35:40作者: lqxhgd
1、环境配置,本地需要安装gcc+make环境,将w64devkit中的bin路径放入环境变量
D:\download\storage\arm_gcc\w64devkit

然后再cmd中输入gcc -v和make -v测试gcc和make环境是否可以正常运行,如果有下面这种显示就说明gcc和make环境配置好了

2、获取芯片的启动文件文件和链接文件,stm32可以通过STM32CubeMX软件获取
打开软件后,点击File创建一个新项目

根据自己芯片的型号选择对应的芯片,双击进入工程,

因为我们是改造Keil项目,代码环境在keil已经写好,不需要通过该软件生成,我们只是通过该软件获取对应的.s和.ld文件所以这里只需要在Project Manager中和Project设置好项目路径和项目名,最重要的是Toolchain/IDE这里一定要选择Makefile,这样才会生成gcc项目

然后再点击Generate code就会自动生成项目,如果是第一次生成会比较慢需要下载对应的pack包,有时候会生成失败因为网络问题,有条件可以用梯子,没有条件多试几次。

3、然后去项目路径下打开cmd界面使用make命令就会编译生成对应的bin和elf文件,这个时候证明我们的makefile和.s以及.ld文件都可以正常使用,然后我们将.s、.ld、makefile移植到我们的新项目中

4、新建一个文件夹放入生成的makefile,.s,.ld文件

5、然后将Keil项目中的代码文件放入gcc项目下,keil中的project文件夹没有用可以直接删除

6、修改makefile文件,添加新项目中.c文件和.h文件的路径,主要修改C_SOURCES中的.c文件路径确保makefile可以编译所有的.c文件,然后修改C_INCLUDES下的目录路径,该路劲存放的是所有的.h文件(填写自己项目下.h文件的路径),注意每个目录都需(大写的i)要-I后面添加路径,-I是让makefile去指定的目录下寻找头文件,到这里基本环境就配置完成

7、可能用gcc编译的时候有一个文件core_m3.c文件无法编译通过,可以直接不编译这个文件即可,然后如果在keil中有定义宏需要再makefile中添加宏,到此环境就已经配置完成,然后在cmd中使用make命令就可以编译出bin和elf了

8、编译出来的elf还可以通过jlink工具使用gdb调试elf文件