STM32的IAR工程使用Visual Studio Code编译调试
在工作当中所接触到的开发ARM单片机的IDE主要有MDK和IAR,这两种IDE虽然都是商业收费软件,但是由于各种和谐大法的流行市面上有很多教程都是使用这两种IDE编译调试的。虽然说调试编译时使用这两种IDE很方便但是,从编辑代码的角度来说这两种IDE效率较低,mdk的代码颜色可阅读性、代码自动补齐很是让人难受;IAR的根本没有的代码补齐和三种色调的代码编辑界面让人以为置身于石器时代。所以还是下了一番功夫使用vscode配置了STM32程序的开发环境。(没有使用ARM GCC Toolchain编译,使用了IAR的编译器,进入教程前请安装IAR并和谐)
需要准备的软件
- IAR软件本文使用 IAR Embedded Workbench for Arm, version 8.30
- VScode软件本文使用Visual Studio Code(1.30.2)
- CubeMX软件本文使用STM32CubeMX 5.0.1
- ARM GCC Toolchain本文使用gcc-arm-none-eabi-8-2018-q4-major-win32
- OpenOCD
- 打开vscode安装以下插件
- ARM 用于ARM汇编语言高亮
- C/C++ 用于C语言高亮查看定义、代码自动补全等功能
-
C/C++ Clang Command Adapter 上一插件的拓展
-
Cortex Debug 用于ARM Cortex-M的调试我使用的stlink所以配置了OpenOCD使用stlinkV2进行调试,可以根据个人需要使用其他连接工具配置参考openocd安装
-
IAR Embedded Workbench 用于调用IAR编译
-
Include Autocomplete 头文件名自动补全主要用于include的时候
安装完成确保所有插件全部启用并重启vscode。
首先使用cubemx生成iar工程文件使用vscode打开工程文件夹,在文件内新建文件夹名称为 .vscode ,文件夹内新建iar.json
文件内容如下图:
{
"version": 1,
"path": "D:/Program Files (x86)/IAR Systems/Embedded Workbench 8.1/",
"project": "E:/Inclinometers/Firmware/EWARM/Firmware.ewp",
"config": "Firmware",
"parallel" : true
}
图中path内填写iar安装所在路径
project内填写项目工程文件*.ewp的路径
config内填写*.ewp文件内configuration标签下面第一个name标签内容如下图
保存后可以使用快捷键 Ctrl + Shift +b 进行编译,下方输出窗口会输出编译信息:
此时编译成功可以使用快捷键Ctrl + Shift +d进入调试界面,按F5即可调试,或者点击绿色小按钮:
调试之前还需要进行连接工具和调试工具配置。
安装armgcc toolchain,配置好环境变量以后下载openocd后解压到armgcc toolchain安装目录下。点击调试界面下的设置按键:
在打开的launch.json文件内添加如下内容
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "cortex-debug",
"request": "launch",
"servertype": "openocd",
"cwd": "${workspaceRoot}",
"executable": "E:\\Inclinometers\\Firmware\\EWARM\\Firmware\\Exe\\Firmware.out",
"name": "Debug (OpenOCD)",
"device": "STM32L432KC",
"configFiles": [
"board/st_nucleo_l4.cfg"
],
"interface": "swd"
}
]
}
executable内填写iar工程文件的输出文件
device填写目标cpu
configFiles从toolchain根目录下\share\openocd\scripts\board内查找目标cpu对应的配置文件
interface我这边使用stlink填写了swd
完成配置后可以使用f5进行调试:
至此已经可以进行完整的编译调试,调试编译过程当中不需要开启iar。