在VS Code中建立STM32 GCC开发环境(并解决了编译RT-Thread出错的问题)

参考:1、为VSCode搭建STM32开发环境 零基础教程
2、使用STM32标准库构建VSCode+gcc+openOCD开发STM32

一、软件、插件安装

1、需要安装的软件及其作用

序号软件名称作用
1VS Code代码编辑
2STM32CubeMXSTM32芯片图形化配置工具。可生成Makefile工程。
3arm-none-eabi-gcc编译代码
4mingw64管理代码编译顺序
5openocd烧录与调试

2、软件安装

对于后三个软件,若下载的是安装包,则需要执行一定的安装步骤;如下载的是压缩文件,则解压后根据自己的习惯放到任意的文件路径,然后将每个软件bin文件夹的路径添加到环境变量。系统变量对所有用户起作用,用户变量对当前用户起作用。
在这里插入图片描述
对于mingw64,找到mingw32-make.exe文件,然后重命名为make.exe。

3、验证是否安装成功

打开power shell窗口,分别执行以下命令,可以查看对于软件的版本。若能够输出正确的版本号,则说明安装成功。
make -v
openOCD -v
arm-none-eabi-gcc -v

4、插件安装

打开VS Code,安装以下插件:
Chinese language-pack:中文支持包
C/C++:提供 C/C++ 的语法智能感知、加亮及调试功能。
C/C++ intellisense
cortex debug
bracket pair colorizer 2:把括号变成彩色

二、用STM32CubeMX创建工程

三、在VS Code做一些配置

1、实现编译功能

用VS Code打开工程文件夹,这时候会出现一些报错。

在Makefile文件里面找到并复制
-DUSE_HAL_DRIVER
-DSTM32F103xE

按ctrl + shift + p(也可以点击 管理->命令面板),“编辑配置(UI)”
在这里插入图片描述
在这里插入图片描述
在界面中找到 “定义”,把刚才复制的粘贴过去,并删掉前面的“-D”(“-D是Makefile文件的格式”)
在这里插入图片描述
编译器路径:选择D:\Program Files\mingw64\bin\gcc.exe(安装并且添加了环境变量后才会有该选项)。
在这里插入图片描述
IntelliSense 模式:选择gcc-arm
在这里插入图片描述
点击“终端” ->“ 新终端”,输入make命令,可以编译工程。
为了可以像Keil那样,点击任务栏的按钮进行编译,需要做如下配置:
点击“终端” ->“配置任务” -> “gcc.exe build active file”,把原来的代码进行删改,保存。

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "shell",
			"label": "Build",
			"command": "make",
			"args": [	
			],
			"problemMatcher": [
				"$gcc"
			],
			"group": "build"
		}
	]
}

点击“终端”->“运行任务”,选项中就会出现“Build”任务,点击“Build”,也可以实现编译。

2、实现下载功能

继续更改原来的代码

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "shell",
			"label": "Build",
			"command": "make",
			"args": [	
			],
			"problemMatcher": [
				"$gcc"
			],
			"group": "build"
		},
		{
			"type": "shell",
			"label": "Build & update",
			"command": "openocd",
			"args": [
				"-f" ,//打开文件
		    		"D:/Program Files/OpenOCD-20200729-0.10.0/share/openocd/scripts/interface/stlink-v2.cfg", 
				"-f",
				"D:/Program Files/OpenOCD-20200729-0.10.0/share/openocd/scripts/target/stm32f1x.cfg",
				"-c",
				"program build/test.elf verify reset exit"
			],
			"problemMatcher": [
				"$gcc"
			],
			"group": "build"
		}
	]
}

D:\Program Files\openocd-0.10.0\scripts\interface\stlink-v2.cfg //指明调试工具
D:\Program Files\openocd-0.10.0\scripts\target\stm32f1x.cfg //目标芯片系列
“program build/test.elf verify reset exit” //program是烧录命令;test.elf是编译后生成的文件(文件名不一定的test,而是你的工程名);verify代表烧录后验证;reset代表烧录后重置;exit为退出。可以参考《OpenOCD User’s Guide》的Flash Programming章节。

连接ST-link,到“设备管理器->串行总线设备”查看st-link是否连接成功。

点击“终端”->“运行任务”-> “Build & update”,可以下载程序。下载成功后会出现以下信息。在这里插入图片描述

3、实现调试功能

依次点击VS Code界面左侧的“运行”按钮 -> “创建lunch.json文件” -> C++(GDB/LLDB)-> ”默认配置“。
删掉自动生成的代码,留下这些:

"version": "0.2.0",
    "configurations": [
           
    ]
}

点击右下角“添加配置“
选择“cortex debug:openOCD”
自动生成代码后
"executable"后面填写自己的elf文件路径。
然后添加:

"configFiles": 
[
    "D:/Program Files/openocd-0.10.0/scripts/interface/stlink-v2.cfg", 
    "D:/Program Files/openocd-0.10.0/scripts/target/stm32f1x.cfg"
]

最后变成:

{
    "version": "0.2.0",
    "configurations": [
     {
          "cwd": "${workspaceRoot}",
          "executable": "build/test.elf",
          "name": "Debug Microcontroller",
          "request": "launch",
          "type": "cortex-debug",
         "servertype": "openocd",
         "configFiles":[
                "D:/Program Files/openocd-0.10.0/scripts/interface/stlink-v2.cfg", 
                "D:/Program Files/openocd-0.10.0/scripts/target/stm32f1x.cfg"
            ]
        }    
    ]
}

点击“运行按钮” ,可以看到一个三角符号,点击三角符号启动调试。
在这里插入图片描述

四、遇到的问题

1、加入RT-Threa源码后编译出错

现象

使用RT-Thread官方“基于 CubeMX 移植 RT-Thread Nano”生成的 Makefile工程在编译时有错误。
在这里插入图片描述

原因

汇编文件后缀.S和.s是有区别的,.S文件里面可以有预处理指令。.s格式的汇编文件中,只能包含纯粹的汇编代码,汇编器只对其进行汇编操作,没有预处理操作;.S格式的汇编文件中,还可以使用预处理命令,汇编器会先进行预处理,然后再进行汇编。

解决方法

在工程目录找到context_gcc.S文件,将文件拓展名为大写的 .S 改成小写 .s,并在 Makefile 中添加这个 .s 文件。在这里插入图片描述

2、调试时不能进入main函数

原因
stm32启动文件中指定的入口地址不是基于GCC编译器的,而是基于MDK编译器的。
解决方法
修改启动文件(startup_stm32f070x6.s),将 bl main 改为 bl entry。
在这里插入图片描述

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32CubeIDE 使用 RT-Thread,可以按照以下步骤进行: 1. 首先,你需要从 RT-Thread 官网下载 STM32CubeIDE 的插件。插件包含了 RT-Thread 的配置文件和驱动代码,可以让你在 STM32CubeIDE 直接使用 RT-Thread。 2. 下载并安装 STM32CubeIDE,确保你已经安装了合适版本的 STM32CubeMX。 3. 打开 STM32CubeIDE,在 "Help" 菜单下找到 "Eclipse Marketplace"。 4. 在 "Eclipse Marketplace" 搜索 "RT-Thread" 插件,安装它。 5. 安装完成后,重新启动 STM32CubeIDE。 6. 创建一个新的 STM32 项目或者打开一个已有的项目。 7. 在 "Project Explorer" 视图,右击项目名称,选择 "Properties"。 8. 在弹出的对话框,选择 "C/C++ Build" -> "Settings" -> "Tool Settings"。 9. 在 "Tool Settings" ,选择 "MCU GCC Compiler" -> "Preprocessor"。 10. 在 "Defined symbols (-D)" 添加 RT-Thread 的宏定义,例如:`RT_USING_RTTHREAD`,这些宏定义可以在 RT-Thread 的配置文件找到。 11. 在 "Tool Settings" ,选择 "MCU GCC Compiler" -> "Include paths"。 12. 添加 RT-Thread 的头文件路径,这些路径可以在 RT-Thread 的配置文件找到。 13. 在 "Project Explorer" 视图,找到 RT-Thread 的配置文件,通常是 rtconfig.h 或者 rtconfig.py。 14. 根据你的需求,配置 RT-Thread 的内核选项、驱动选项和组件选项。 15. 编写你的应用程序代码,并且按照 RT-Thread 的编程规范来使用 RT-Thread 的 API。 16. 编译、烧录和运行你的应用程序。 以上是在 STM32CubeIDE 使用 RT-Thread 的基本步骤。根据你的具体需求,可能还需要进行一些额外的配置和修改。记得参考 RT-Thread 官方文档和示例代码来帮助你进行开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值