基于VSCode+JLink+gcc搭建在线调试STM32的搭建方法

文章介绍了如何利用VSCode搭建开发国产MCU的环境,包括下载安装VSCode、Cmake、gcc-arm-none-eabi、JLink和Ninja,以及安装相关C/C++插件,并通过STM32CUBE生成软件包,使用CMake和Build进行编译,最后设置调试步骤。

       随着国产MCU大行其道,越来越多MCU需要使用GCC来进行开发,越来越多的人接触开源软件;而且更多的人不喜欢显示风格比较老旧的IDE开发软件。我也在最新的项目中使用VSCODE来进行开发,现将开发环境的搭建过程进行总结并跟大家进行分享。        

一、软件下载安装

1 下载并安装VS Code

在官方网站https://code.visualstudio.com/进行下载,并安装到你想要的任意位置。

2 下载并安装Cmake

在官方网站https://cmake.org/download/选择最新版本的cmake下载,并安装到系统你想要的任意位置,将安装路径下的/CMake/bin添加到系统环境变量中。

3 下载并安装gcc-arm-none-eabi

在官方网站https://developer.arm.com/downloads/-/gnu-rm选择正确的版本下载,并安装到你想要的任意位置,将安装路径下的/GNU Arm Embedded Toolchain/10 2021.10/bin添加到系统环境变量中。

4 下载并安装JLINK

下载并安装好Jlink软件,并确认jlink支持你的目标MCU,并将jlink安装路径下\SEGGER\JLink添加到系统环境变量。

5 下载并安装Ninja

在https://github.com/ninja-build/ninja/releases下载适合的Ninja软件包,解压之后将路径添加到系统环境变量。

二、VSCODE中安装插件

1 安装C/C++插件

2 安装C/C++ Extension Pack插件

3 安装C/C++ Themes

 4 安装Cortex-Debug插件

三、编译调试

1 使用STM32CUBE生成软件包

2 将编写好的CmakeLists.txt放置在Project目录下,用VSCODE打开整个文件夹,修改.vscode/下的各个json文件;

 

3 使用CMake和Build编译工程

 4 点击左侧“运行和调试”,就可以进行在线调试了。

<think>我们使用VSCode + EIDE + GCC开发单片机程序,通常涉及以下步骤: 1. 安装必要的软件:VSCode、EIDE插件、GCC工具链(如arm-none-eabi-gcc)。 2. 创建项目,配置项目属性(包括芯片型号、链接脚本、启动文件等)。 3. 编写代码,编译,下载,调试。 由于这是一个环境配置和项目搭建的问题,我将提供一个大致的步骤指南,并给出一个简单的示例项目结构。 ### 步骤详解: 1. **安装VSCode**:从官网下载安装。 2. **安装EIDE插件**:在VSCode扩展商店中搜索“EIDE”并安装。 3. **安装GCC工具链**:根据你的目标单片机架构(如ARM Cortex-M)下载对应的GCC交叉编译器。例如,对于ARM Cortex-M,可以下载[GNU Arm Embedded Toolchain](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm)。安装后,将bin目录添加到系统环境变量PATH中。 4. **创建项目**: - 在VSCode中,按`Ctrl+Shift+P`打开命令面板,输入`eide: create new project`,按照提示创建项目。 - 选择项目类型(如`Empty Project`),输入项目名称和路径。 - 选择目标芯片(如STM32F103C8)。 5. **配置项目**: - 在项目根目录下会生成`.eide`文件夹,其中包含项目配置文件。可以通过EIDE的图形界面配置。 - 配置包括: - 芯片型号(Device) - 链接脚本(Linker Script) - 启动文件(Startup File) - 包含路径(Include Paths) - 预定义宏(Preprocessor Symbols) - 编译器选项(Compiler Options) - 链接器选项(Linker Options) 6. **添加源代码**:在src目录下添加源文件,如main.c。 7. **构建项目**:使用EIDE的构建按钮(或命令)进行编译。 8. **下载和调试**:配置下载器(如ST-Link)和调试设置,然后进行下载和调试。 ### 示例代码结构: 假设我们使用STM32F103C8,一个简单的点灯程序。 项目结构: ``` my_project/ ├── .eide/ # EIDE配置文件 ├── src/ │ └── main.c ├── startup/ # 存放启动文件 │ └── startup_stm32f103xb.s ├── ld/ # 存放链接脚本 │ └── STM32F103C8Tx_FLASH.ld └── include/ # 头文件(如果有) ``` `main.c` 示例代码: ```c #include "stm32f10x.h" void delay_ms(uint32_t ms) { for (uint32_t i = 0; i < ms * 1000; i++) { __NOP(); } } int main(void) { // 启用GPIOC时钟 RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // 配置PC13为推挽输出(LED) GPIOC->CRH &= ~(0x0F << 20); GPIOC->CRH |= (0x03 << 20); while (1) { GPIOC->ODR ^= (1 << 13); // 翻转PC13 delay_ms(500); } } ``` ### 配置说明: - **启动文件**:从STM32CubeF1包中获取`startup_stm32f103xb.s`(根据具体芯片型号选择)。 - **链接脚本**:同样从CubeF1包中获取,或者根据芯片内存修改。STM32F103C8的Flash为64KB,RAM为20KB。 ### 在EIDE中配置: 1. 打开EIDE项目配置(在VSCode左侧的EIDE图标)。 2. 在“项目属性”中: - 选择设备:STM32F103C8 - 设置链接脚本:`ld/STM32F103C8Tx_FLASH.ld` - 添加启动文件:`startup/startup_stm32f103xb.s` 3. 在“C编译器”选项中,添加包含路径(如`include`)和预定义宏(如`STM32F10X_MD`)。 4. 在“链接器”选项中,添加必要的库(如`libc.a`、`libm.a`)和链接参数。 ### 构建和下载: - 点击EIDE工具栏的“构建”按钮进行编译。 - 连接开发板和ST-Link,点击“下载”按钮将程序烧录到单片机。 ### 注意事项: - 确保启动文件和链接脚本与芯片型号匹配。 - 如果使用标准外设库,需要将库文件添加到项目中,并配置包含路径。 ### 相关问题: 根据你的要求,我将在最后提出相关问题。</think>### 使用 VSCode + EIDE + GCC 开发单片机流程详解 #### 1. **环境安装** ```bash # 安装 VSCode:https://code.visualstudio.com/ # 安装 EIDE 插件:在 VSCode 扩展商店搜索 "EIDE" 安装 # 安装 GCC 工具链(以 ARM Cortex-M 为例): # Windows:https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm # Linux:sudo apt-get install gcc-arm-none-eabi ``` #### 2. **创建项目** 1. VSCode 命令面板 > `EIDE: Create New Project` 2. 选择: - 芯片型号(如 STM32F103C8) - 工具链:`GCC` - 项目类型:`Executable` #### 3. **项目结构示例 ``` my_project/ ├── .eide/ # EIDE 配置文件 ├── src/ │ ├── main.c # 主程序 │ └── stm32f1xx_it.c # 中断处理 ├── inc/ # 头文件 ├── startup/ # 启动文件 └── linker_scripts/ # 链接脚本 ``` #### 4. **关键代码示例 `main.c` (STM32 LED 闪烁): ```c #include "stm32f1xx.h" #define LED_PIN GPIO_PIN_13 #define LED_PORT GPIOC void delay_ms(uint32_t ms) { for(uint32_t i=0; i<ms*1000; i++) __asm("nop"); } int main(void) { // 启用 GPIOC 时钟 RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // 配置 PC13 为推挽输出 GPIOC->CRH &= ~(GPIO_CRH_CNF13 | GPIO_CRH_MODE13); GPIOC->CRH |= GPIO_CRH_MODE13_0; while(1) { GPIOC->ODR ^= LED_PIN; // 翻转 LED delay_ms(500); } } ``` #### 5. **配置步骤详解 1. **添加源文件**: - 右键 `src` 文件夹 > `Add New File` 2. **配置芯片参数**: - 打开 `.eide/eide.json`: ```json "buildConfig": { "chip": { "name": "STM32F103C8", "vendor": "STMicroelectronics" } } ``` 3. **设置链接脚本**: - 复制 `STM32F103C8Tx_FLASH.ld` 到 `linker_scripts` - 在 EIDE 项目属性 > Linker > 指定链接脚本路径 #### 6. **构建与烧录 1. **编译**:点击 EIDE 工具栏的 🔨 图标 2. **烧录**: - 连接 ST-Link/J-Link - 点击 ⚡ 图标选择烧录器 - 点击 ⬇ 图标下载程序 #### 7. **调试配置 `.vscode/launch.json` 示例: ```json { "version": "0.2.0", "configurations": [ { "name": "Cortex Debug", "cwd": "${workspaceRoot}", "executable": "./build/my_project.elf", "request": "launch", "type": "cortex-debug", "servertype": "jlink", "device": "STM32F103C8" } ] } ``` ### 常见问题解决 1. **头文件找不到**: - 在 EIDE 项目属性 > C/C++ > Include Paths 添加路径 2. **链接错误**: - 检查启动文件是否包含(`startup_stm32f103xb.s`) - 确认链接脚本内存区域匹配芯片 3. **烧录失败**: - 检查复位电路 - 降低 SWD 时钟频率(在烧录器设置中) ### 优化建议 1. 使用 `-O2` 编译优化(EIDE 构建配置) 2. 启用 `-Wall -Wextra` 警告选项 3. 使用 FreeRTOS 插件管理实时系统
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值