Clion | 使用Clion如何对STM32单片机进行调试

文章讲述了在使用CLion配合OpenOCD调试STM32时遇到的无法进入调试状态的问题,通过改变GDB端口从3333到2331解决了问题。此外,介绍了如何添加.svd文件来显示芯片寄存器的实时变化,增强调试体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、如何进入调试状态

刚开始使用OpenOCD时一直无法进入调试状态,点击图中调试按钮后不一会儿就会显示“调试器已断开连接”,无法进入调试状态。

只能使用旁边的三角图标进行烧录,这显然不能满足我们的需求。

按照很多方法进行了改动都没有成功(主要使用的方法如下)。

<think>我们正在使用CLion进行STM32开发,需要配置烧录和调试功能。根据引用内容,我们需要以下步骤: 1. 准备环境:安装必要的软件和工具链。 2. 使用STM32CubeMX创建工程。 3. 在CLion中导入工程并进行配置,包括设置工具链和OpenOCD。 4. 编译工程并烧录到STM32单片机。 5. 配置调试。 具体步骤如下: 一、准备环境(根据引用[1][3][4]): 1. 安装STM32CubeMX(从官网下载安装) 2. 安装CLion(建议使用2020或以上版本,引用[1][3]中提到2020版和2024.2.2版) 3. 安装MinGW(如果CLion新版本已捆绑,则无需单独安装,引用[3]提到新版本CLion捆绑了MinGW) 4. 安装arm-none-eabi-gcc(ARM的GCC编译器) 5. 安装OpenOCD(用于烧录和调试) 二、使用STM32CubeMX新建工程(引用[1][2][3]): 1. 打开STM32CubeMX,创建新工程,选择芯片型号(如STM32F103C8T6或STM32F103VET6)。 2. 配置引脚、时钟、外设等。 3. 在Project Manager中设置Toolchain/IDE为SW4STM32(注意:虽然CLion不是这个选项,但这样设置可以生成Makefile,CLion可以导入)。 4. 生成代码。 三、CLion导入STM32工程并配置(引用[1][2][3][4]): 1. 打开CLion,选择“Open”或“Import Project”,选择STM32CubeMX生成的工程目录。 2. 配置工具链:File -> Settings -> Build, Execution, Deployment -> Toolchains - 添加MinGW(如果已捆绑则自动配置)或手动指定MinGW路径。 - 指定CMake路径(通常自动检测)。 - 指定C Compiler为arm-none-eabi-gcc(例如:`arm-none-eabi-gcc.exe`的路径)。 - 指定C++ Compiler为arm-none-eabi-g++(类似)。 - Debugger选择arm-none-eabi-gdb。 3. 配置OpenOCD:File -> Settings -> Build, Execution, Deployment -> Embedded Development - 指定OpenOCD的路径(指向OpenOCD的安装目录,例如:`D:\OpenOCD-20200729\bin`或解压的目录)。 - 同时,在STM32CubeMX生成的工程目录中,会有一个.ioc文件。确保CLion已经关联了STM32CubeMX(在File -> Settings -> Embedded Development -> STM32CubeMX中指定STM32CubeMX的可执行文件路径)。这样,右键点击.ioc文件就可以通过STM32CubeMX重新配置工程(引用[2])。 4. 配置CMake:在CLion中,默认会生成CMakeLists.txt,但STM32CubeMX生成的是Makefile。因此,我们需要让CLion使用Makefile来构建。有两种方法: - 方法一:使用CMake,但需要手动编写CMakeLists.txt(比较复杂)。 - 方法二(推荐):使用Makefile。在CLion中,可以通过导入Makefile项目来支持。具体步骤: a. 在导入项目时,选择“Open as Makefile Project”。 b. 或者,在已有项目中,可以通过File -> Settings -> Build, Execution, Deployment -> Makefile来配置。 - 注意:引用[3]中提到,CLion支持直接导入STM32CubeMX生成的工程(即Makefile工程),因此我们选择作为Makefile项目打开。 四、烧录到STM32单片机(引用[1][3][4]): 1. 连接开发板(使用DAPLink、ST-Link或J-Link等调试器)。 2. 在CLion中,配置OpenOCD的配置文件(通常放在工程根目录或某个目录下)。OpenOCD需要两个配置文件:一个是接口配置文件(如stlink.cfg),另一个是目标芯片配置文件(如stm32f1x.cfg)。我们可以创建一个openocd.cfg文件,内容如下: ``` source [find interface/stlink.cfg] # 根据你的调试器选择,如果是DAPLink则可能是dap.cfg source [find target/stm32f1x.cfg] # 根据芯片型号选择 ``` 或者,在CLion的配置中直接指定这两个文件。 3. 在CLion中,创建一个新的运行/调试配置,选择“OpenOCD Download & Run”: - 在Configuration选项卡中,指定Config file(即上面创建的openocd.cfg文件)。 - 在Startup选项卡中,可以设置复位后运行等选项。 4. 点击运行按钮,CLion将编译工程(执行make),然后使用OpenOCD烧录到单片机。 五、调试配置(引用[1][3][4]): 1. 在同一个运行/调试配置中,我们可以切换到“Debugger”选项卡: - 选择调试器为“OpenOCD”,并确保配置正确。 - 在“GDB Server”设置中,已经由OpenOCD提供,所以不需要额外设置。 2. 点击调试按钮,CLion将启动OpenOCD作为GDB服务器,然后连接GDB进行调试。 注意事项: - 如果使用ST-Link,需要确保ST-Link的驱动已安装。 - OpenOCD的配置文件路径需要根据实际安装情况调整。 - 如果遇到烧录问题,检查OpenOCD的日志输出,调整配置文件。 根据引用[3]的教程,以下是一个具体的配置示例(以野火STM32F103C8T6为例): - 调试器:DAPLink(或ST-Link) - OpenOCD配置文件:使用OpenOCD自带的配置文件,例如: interface/stlink.cfg (如果使用ST-Link) target/stm32f1x.cfg 在CLion中,我们可以这样配置运行/调试: - 运行配置类型:OpenOCD Download & Run - Config file: 可以填写绝对路径,也可以使用OpenOCD的find命令(如上述的`source [find interface/stlink.cfg]`),但注意在CLion的配置中,我们直接指定一个.cfg文件,这个文件里包含上述两行,或者分别指定多个配置文件(在CLion的配置中有多个输入框,可以添加多个配置文件)。 引用[4]中提到,OpenOCD的Windows版本解压后,其配置文件在`openocd\scripts`目录下,因此我们在写cfg文件时,可以直接使用相对路径(如果cfg文件放在项目目录,则需要指定相对路径或绝对路径)。或者,我们可以将OpenOCD的scripts目录路径添加到OpenOCD的搜索路径中(通过环境变量或CLion的配置)。 总结步骤: 1. 安装所有必要工具(STM32CubeMX, CLion, arm-none-eabi-gcc, OpenOCD)。 2. 使用STM32CubeMX创建工程,生成代码。 3. 在CLion中导入工程(作为Makefile项目)。 4. 配置CLion的工具链(指定编译器、调试器等)。 5. 配置OpenOCD(指定路径和配置文件)。 6. 创建运行/调试配置,选择OpenOCD Download & Run,并设置好配置文件。 7. 编译、烧录、调试。 如果按照以上步骤操作,应该可以在CLion中实现STM32的烧录与调试。 注意:由于不同版本的CLion配置界面可能有所不同,请根据实际版本调整。 生成相关问题: 1. 如何解决CLion中OpenOCD连接失败的问题? 2. 如何配置CLion使用J-Link调试STM32? 3. STM32CubeMX重新生成代码后,CLion项目如何更新? 4. 在CLion中如何配置串口调试? 5. CLion调试STM32时如何查看外设寄存器?</think>### CLion配置STM32烧录与调试方法 #### 一、环境准备(必须安装) 1. **STM32CubeMX** - 官网下载安装:https://www.st.com/stm32cubemx - 作用:生成工程代码和硬件配置[^1][^3] 2. **OpenOCD** - 下载地址:https://openocd.org - 作用:烧录和调试的核心工具(版本建议≥0.11.0) - 解压到无空格路径(如 `D:\OpenOCD`)[^4] 3. **ARM-GCC工具链** - 下载地址:https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm - 安装后添加 `bin` 目录到系统PATH(如 `D:\gcc-arm\bin`) 4. **CLion插件** - 安装插件:`Embedded Development`(在插件市场搜索安装)[^2] > 验证安装:终端执行 `arm-none-eabi-gcc -v` 和 `openocd -v` 应显示版本信息 --- #### 二、工程创建与导入 1. **STM32CubeMX生成工程** ```mermaid graph LR A[新建工程] --> B[选择芯片型号] B --> C[配置引脚/时钟] C --> D[Project Manager] D --> E[Toolchain选 SW4STM32] D --> F[生成代码] ``` > 关键:必须选 **SW4STM32** 作为IDE[^3] 2. **CLion导入工程** - 打开CLion → `File` → `Open` → 选择CubeMX生成的工程目录 - 首次打开会自动识别为Makefile项目 --- #### 三、关键配置步骤 1. **配置工具链** - `File` → `Settings` → `Build, Execution, Deployment` → `Toolchains` - 添加MinGW(新版本CLion自带) - 设置C编译器:`arm-none-eabi-gcc.exe` - 设置调试器:`arm-none-eabi-gdb.exe`[^3] 2. **配置OpenOCD** ```mermaid graph TB A[File → Settings] --> B[Embedded Development] B --> C[指定OpenOCD路径] B --> D[指定CubeMX路径] ``` > 路径示例:`D:\OpenOCD\bin`(需包含openocd.exe)[^4] 3. **创建烧录配置** - 顶部菜单 → `Run` → `Edit Configurations` → `+` → `OpenOCD Download & Run` - Config files: 添加两个文件(顺序不可颠倒): ``` interface/stlink.cfg # 根据调试器选择(stlink/jlink/dap) target/stm32f1x.cfg # 根据芯片型号选择 ``` - 勾选 `Reset after init` --- #### 四、烧录与调试操作 1. **硬件连接** - 开发板通过ST-Link/DAP-Link连接电脑 - 检查设备管理器是否识别调试器 2. **烧录程序** - 选择配置 → 点击绿色三角运行 → 自动编译并烧录 - 成功标志:终端显示 `** Programming Finished **` 3. **启动调试** - 点击工具栏 `Debug` 按钮(甲虫图标) - 调试功能: - 断点设置 - 寄存器/内存查看 - 外设寄存器监控(需安装 `STM32CubeMonitor` 插件) --- #### 五、故障排查 | 问题现象 | 解决方案 | |---------|---------| | 烧录时报错 | 检查OpenOCD配置文件路径和调试器类型 | | 无法进入调试 | 确认 `arm-none-eabi-gdb` 版本与OpenOCD兼容 | | 工程无法识别 | 重启CLion并重新导入工程[^2] | > 完整流程参考:[野火STM32F103教程](https://www.bilibili.com/video/BV1NG4y1T75Q) [^3] --- ### 相关问题 1. 如何解决OpenOCD连接STM32超时问题? 2. CLion中如何实时监控STM32的变量值? 3. 如何配置CLion实现STM32的SWD串口打印输出? 4. STM32CubeMX重新生成代码后如何同步到CLion工程? 5. 如何为STM32F4系列配置不同的OpenOCD目标文件? [^1]: STM32CubeMX安装指南 [^2]: CLion官方嵌入式开发文档 [^3]: 野火STM32F103开发教程 [^4]: OpenOCD Windows配置手册
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值