如何使用arm-none-eabi-gcc编译器搭建STM32的Vscode开发环境

 更新时间:2023年07月26日 10:19:58   作者:lyq308152569  
这篇文章主要介绍了使用arm-none-eabi-gcc编译器搭建STM32的Vscode开发环境,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

工具

  • make:Windows中没有make,但是可以通过安装MinGW或者MinGW-w64,得到make。
  • gcc-arm-none-eabi:建议最新版,防止调试报错
  • OpenOCD
  • vscode
  • cubeMX

VSCODE 插件

  • Arm Assembly:汇编文件解析
  • C/C++:c语言插件
  • Cortex-Debug:调试插件

添加环境变量路径

  • gcc-arm-none-eabi\bin
  • OpenOCD\bin
  • 建议MinGW-make工具重命名为make.exe并添加到gcc-arm-none-eabi\bin路径

测试工具环境变量是否生效

 arm-none-eabi-gcc -v
 OpenOCD -v
 make -v

创建工程

使用cubeMX创建Makefile工程

Makefile:由于window没有rm指令,所以这里修改为 del,并添加了系统判断

将makefile一下
-------------------------------
clean:
	-rm -fR $(BUILD_DIR)
-------------------------------
修改
-------------------------------
ifeq ($(OS),Windows_NT)
clean:
	del $(BUILD_DIR)
else
clean:
	-rm -fR $(BUILD_DIR)
endif
-------------------------------

工程添加文件

调试器配置OpenOCD\share\openocd\scripts\interfacestlink-v2.cfg芯片配置OpenOCD\share\openocd\scripts\targetstm32f7x.cfg

vscode 配置任务脚本

  • 创建任务脚本
    F1
    输入 tasks
    选择 运行任务
    选择 配置任务
    选择 使用模板创建task.json
    选择 other
    选择创建 tasks

使用任务脚本

CTRL + SHIFT + B 选择对应的任务
tasks.json

{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
“version”: “2.0.0”,
“tasks”: [
//make 任务
{
“label”: “build”,
“type”: “shell”,
“command”: “make”,
“problemMatcher”: [],
“group”: {
“kind”: “build”,
“isDefault”: true
}
},
// clean 任务
{
“label”: “clean”,
“type”: “shell”,
“command”: “make clean”,
“problemMatcher”: [],
“group”: {
“kind”: “build”,
“isDefault”: true
}
},
//下载任物
{
“label”: “download”,
“type”: “shell”,
“command”: “openocd”,
// openocd 传递的参数
“args”: [
“-f”,
“stlink-v2.cfg”,
“-f”,
“stm32f7x.cfg”,
“-c”,
“program build/stm32f767_project.elf verify reset exit”,
],
“group”: {
“kind”: “build”,
“isDefault”: true
},
},
]
}

vscode 配置调试脚本

1.创建调试脚本
选择调试窗口
选择 创建 launch.json 文件2. 启用调试
快捷键 F5

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Cortex Debug",
            "cwd": "${workspaceFolder}",
            "executable": "${workspaceFolder}/build/stm32f767_project.elf",             // 编译文件
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "openocd",
            "interface":"swd",
            "device": "STM32F7IGT6",                
            "configFiles": [
                "stlink-v2.cfg",              
                "stm32f7x.cfg",
            ]
        }
    ]
}

调试过程中报错:仔细查看报错信息,gcc版本过低也会造成调试报错

到此这篇关于使用arm-none-eabi-gcc编译器搭建STM32的Vscode开发环境的文章就介绍到这了,更多相关arm-none-eabi-gcc编译器搭建Vscode开发环境内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C\C++ 获取当前路径实例详解

    C\C++ 获取当前路径实例详解

    这篇文章主要介绍了C\C++ 获取当前路径实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • C语言 函数指针(指向函数的指针)详解

    C语言 函数指针(指向函数的指针)详解

    本文主要介绍 C语言函数指针的知识,这里整理了详细的资料及示例代码以便大家学习参考,有需要学习此部分知识的朋友可以参考下
    2016-08-08
  • C语言strcpy库函数详解

    C语言strcpy库函数详解

    这篇文章主要为大家介绍了C语言strcpy库函数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • C++中的四种类型转换

    C++中的四种类型转换

    类型转换有c风格的,当然还有c++风格的。c风格的转换的格式很简单(TYPE)EXPRESSION,但是c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,
    2015-08-08
  • 解析C++编程中异常相关的堆栈展开和throw()异常规范

    解析C++编程中异常相关的堆栈展开和throw()异常规范

    这篇文章主要介绍了C++编程中异常相关的堆栈展开和throw()异常规范,throw()规范部分文中结合了C++11标准的新特性来讲,需要的朋友可以参考下
    2016-01-01
  • C++深入详解单例模式与特殊类设计的实现

    C++深入详解单例模式与特殊类设计的实现

    这篇文章主要为大家详细介绍了C++单例模式和特殊类的设计,单例模式这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-06-06
  • C++结构体中变长数组的使用问题分解刨析

    C++结构体中变长数组的使用问题分解刨析

    变长数组在C++中指的是集合(也叫容器)如vector就是C语言中,所有的数组都不定长,没有下标越界的概念,数组实质就是一个指针(由数组名充当)因此C语言中数组的长度没有任何意义平常在C语言中讲的不定长数组,其实就是指针
    2022-08-08
  • C++引用和指针的区别你知道吗

    C++引用和指针的区别你知道吗

    这篇文章主要为大家介绍了C++引用和指针的区别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助<BR>
    2022-01-01
  • 使用单链表实现多项式计算示例

    使用单链表实现多项式计算示例

    这篇文章主要介绍了使用单链表实现多项式计算示例,需要的朋友可以参考下
    2014-03-03
  • C++嵌入式内存管理详情

    C++嵌入式内存管理详情

    这篇文章主要介绍了C++嵌入式内存管理,是对上一篇内存的一个补充,主要讲解Linux中的内存;这部分对于一些端侧部署的伙伴来说比较重要,推荐针对不同的板子,下面来看看详细内容吧,需要的朋友可以参考一下
    2021-12-12

最新评论