vscode+arm-gcc编译STM32标准外设库工程教程(小白亲历填坑版)

本文档详细介绍了如何使用VSCode结合ARM-GCC编译STM32标准外设库工程,包括所需工具、环境配置、坑点解析,以及编译过程中tasks.json、launch.json、Makefile等关键文件的设置和注意事项。
摘要由CSDN通过智能技术生成

# 1.当前教程所需工具和掌握程度

(1.vscode使用了几周,只是作为程序代码编辑器使用,只装了C/C++代码编辑插件,和一个ReUI主题插件,感觉完成vscode+arm-gcc组合编译工作,得了解vscode的外部工具调用方式,即.vscode/launch.json、tasks.json命令配置,(c_cpp_properties.json只是C/C++编辑插件相关)。它俩就是完成自动化的脚本执行重点了。

(2.gcc-arm-none-eabi是被调用的外部工具,是ARM官方提供的ARM架构编译工具链,暂时只用到了其中一个工具arm-none-eabi-gcc.exe,用以编译链接程序源码。实际编译有复杂层次的工程程序代码时,是通过Makefile进行组织的,make工具通过Makefile文件来识别和调用arm-none-eabi-gcc.exe对整个工程进行精细编译链接和管理。

(3.make工具是另一个被调用的外部工具,由GNU提供,有两种方式使用,一是通过mgwin32跨平台的linux工具集软件(好像仍然需要单独下载make工具,只提供操作环境),另一种是直接使用make for windows的make工具(我是用的这的,因为我只需要make不需要其他一堆工具)。由于make基本是直接调用Makefile文件执行的,所以本身不难,难点在于Makefile理解和使用。

# 2.三个工具下载网址

(1.[vscode](Visual Studio Code - Code Editing. Redefined)

(2.[gcc-arm-none-eabi](GNU Toolchain | GNU Arm Embedded Toolchain – Arm Developer)

(3.[make](GNU make for Windows (equation.com))

(4.vscode直接解压就可以使用,我把启动程序添加到开始磁贴栏里用的。gcc-arm-none-eabi和make也是直接解压到软件盘目录下(我都下载的压缩包文件),不过这两个需要添加启动程序文件所在路径的环境变量(用户环境变量即可),这样才可以全局启动。

可以在win终端窗口里用命令启动测试下是否全局可以启动使用,用 arm-none-eabi-gcc -v 和 make -v测试下,能正常找到和输出软件版本信息说明可以使用。

# 3.编译工程需要的文件

(1.tasks.json

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "dependsOn": "clean", // 依赖项,表示在执行 build 前会首先自动执行 clean ,然后才执行build。
            "label": "build", // build任务标签,将出现在vscode的task栏里 
            "type": "shell",
            "command": "make",
            "args": [
                //"--file=STM32F4xx_StdPeriph_Templates/GNU-ARM/Makefile",
                "-j4" // make 工具参数,作用暂时未知,另外还有 -j -j8等。
            ],
            "group": "build", // 作用暂时未知。
            "problemMatcher": "$gcc"
        },
        {
            "label": "clean", // clean任务标签,将出现在vscode的task栏里 
            "type": "shell", // 默认类型
            "command": "make", // 使用工程编译工具是make,它通过Makefile调用arm-gcc进行底层代码编译链接。
            "args": [
                //"--file=STM32F4xx_StdPeriph_Templates/GNU-ARM/Makefile", // 这是一开始想作为一个独立工程文件夹来使用的,后续会尝试使用
                "clean" // 自定义的clean标签,make工具会在Makefile内查找这个自定义标签并执行其代表的实际make指令或者powershell指令。
            ],
            "problemMatcher": "$gcc" // 无影响参数
        },
    ]
}

a.这里表示有坑。vscode貌似提供两种任务文件,task.json 和 tasks.json 文件,我理解的是两者分别可以创建单任务和多任务,我按照一篇教程写了单任务的,但是实际是创建了多个任务,貌似因为这个原因导致不能正常打开执行,后续我改为tasks.json使用的。

b.这里表示也有坑。vscode新建*.json文件有两种,一种普通json文件,另一种是json with comments命令脚本文件,这里需要设为json with comments文件作为命令脚本使用,否则不会被识别和执行(我不保证确实有这个区别,记得有一篇博文也提到了这个问题,我按照那个要求修改的)

c.还有个坑。整个工程编译过程需要先清理掉旧的编译中间文件,才能进行新的编译,否则一直卡在开头的几个源文件处报错,提示无法找到XXXXX.c文件,依赖于XXXX.elf文件。由于是在Makefile中,后面M

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值