Clion下开发stm32遇到的少许问题

一、首先,如何在Clion下配置stm32开发环境

主要参考这两篇文章

  1. https://www.bilibili.com/read/cv6308000/ 配置CLion用于STM32开发【优雅の嵌入式开发】
  2. https://zhuanlan.zhihu.com/p/160183640 在CLion中开发STM32

二、配置过程中的资源

链接:https://pan.baidu.com/s/1Cvg2bRu2IAS7UiOnc3mchA
提取码:zasb
软件包括:

  1. Clion 2020.3
  2. MinGW
  3. openOCD
  4. arm-none-eabi-gcc

三、遇到的问题

Problem 1

Info : clock speed 1000 kHz
Error: open failed (no matching adapter found)
in procedure 'program'
** OpenOCD init failed **
shutdown command invoked

原因:没有检测到烧录器
我的出现情况:USB接口接触不良,导致插上stlink之后无法少些,一开始还检查了一下是否是配置文件 .cfg写错,后面才发现是别的问题

Problem 2

Error: selected FPU does not support instruction -- `vstmdbeq r0!,{s16-s31}'

解决方法:见https://www.jianshu.com/p/54412fefd538

在CMakeLists文件中取消注释硬件浮点FPU。

#Uncomment for hardware floating point
SET(FPU_FLAGS "-mfloat-abi=hard -mfpu=fpv4-sp-d16")
add_definitions(-DARM_MATH_CM4 -DARM_MATH_MATRIX_CHECK -DARM_MATH_ROUNDING -D__FPU_PRESENT=1)

Problem 3

使用Clion在调试中查看寄存器
图1
在没有导入相关的寄存器文件时,点看查看外设寄存器会出现这个标识,这个时候我们找到.svd文件即可。如果以前在keil v5中进行过开发的话,可以直接在keil的安装文件中找到对应的内容文件,具体为:

	...\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\1.1.0\SVD

这个目录下对应的stm32f1的芯片位置,下面即有需要寻找的.svd文件
在这里插入图片描述
导入文件后显示如下,可以进行寄存器的查看了:
在这里插入图片描述

本来想多写点问题的,但是好像当本次项目开发完成之后,就没有遇到新的问题了-_-,就这样吧。

<think>好的,用户遇到了OpenOCD初始化失败的问题,需要帮助解决。让我先仔细看一下用户提供的错误信息和之前的引用内容。 首先,用户提到的错误信息是“Error: open failed in procedure ‘program’ ** OpenOCD init failed ** shutdown command invoked”,这通常与OpenOCD无法正确连接到目标设备有关。根据引用[1]中的情况,用户使用的是STLINK配置,但实际上通过USB连接,应该改用blackmagic模式。这说明配置中的接口设置不正确可能导致此问题。需要检查配置文件中的接口类型是否正确,比如是否选择了正确的调试器类型,如ST-LINK、CMSIS-DAP或J-Link等。 然后,引用[2]提到在烧录STM32时出现初始化失败,错误信息显示目标电压异常(3.13V),这可能是因为硬件连接问题,比如供电不足或线路接触不良。这时候需要检查硬件连接,确保目标板供电稳定,调试器与目标板之间的接线正确,尤其是SWD或JTAG的引脚连接是否正确。 引用[3]指出CMSIS-DAP的问题,解决办法是在配置文件中添加“cmsis_dap_backend hid”。这说明不同的调试器可能需要特定的后端设置,用户需要根据自己使用的调试器类型调整配置文件,例如CMSIS-DAP可能需要指定HID模式。 接下来,我需要将这些可能的原因和解决方案整理出来,以逐步排查的方式呈现给用户。首先建议检查接口配置是否正确,确保OpenOCD的配置文件中的接口设置与实际使用的调试器一致。如果使用CMSIS-DAP,可能需要添加对应的后端指令。其次是检查硬件连接,包括供电、线路连接是否正确,是否有接触不良。然后,可能需要调整电压或速度设置,例如降低JTAG时钟速度。此外,权限问题在Linux系统下也可能导致无法访问设备,需要确认用户是否有权限访问USB设备。 还需要考虑软件版本的问题,确保OpenOCD和调试器固件都是最新版本,可能存在已知的兼容性问题。如果用户之前使用的是旧版本,升级可能解决问题。最后,如果所有方法都无效,建议查看OpenOCD的详细日志,或者到社区寻求帮助,提供具体的配置和错误信息。 用户的问题可能涉及到多个方面,需要逐一排查。可能的步骤包括确认配置文件的正确性、检查硬件连接、调整参数设置、处理权限问题、更新软件版本等。要确保用户能够按照步骤操作,并且每个解决方案都有明确的指导,例如如何修改配置文件,如何检查接线等。 另外,用户可能在之前的尝试中已经更改过某些配置,需要提醒他们在修改后重新启动服务或重新插拔设备。同时,注意不同操作系统下的权限问题可能不同,比如Linux下的udev规则可能需要设置,而Windows可能需要安装驱动程序。 最后,生成的相关问题应该覆盖常见的相关错误,比如不同的错误信息或配置问题,帮助用户扩展解决可能遇到的其他情况。</think>### OpenOCD初始化失败的解决方案分析 #### 一、问题原因定位 OpenOCD出现`init failed`错误通常由以下原因导致: 1. **接口配置不匹配**:调试器类型选择错误(如实际使用USB却配置为ST-LINK)[^1] 2. **硬件连接异常**:目标板供电不足/电压异常(如引用[2]显示电压3.13V但无法连接) 3. **协议设置错误**:CMSIS-DAP等特定接口需要特殊配置[^3] 4. **权限问题**:Linux系统下USB设备访问权限未开放 #### 二、分步解决方案 **步骤1:检查接口配置** ```tcl # 示例:使用Black Magic Probe时的正确配置 source [find interface/blackmagic.cfg] transport select hla_swd source [find target/stm32f1x.cfg] ``` ▲ 关键配置对比: | 实际硬件 | 错误配置 | 正确配置 | |---------|----------|----------| | USB线 | stlink.cfg | blackmagic.cfg | | CMSIS-DAP| 无后端设置 | `cmsis_dap_backend hid`[^3] | **步骤2:验证硬件连接** 1. 测量目标板电压(正常范围3.0-3.6V) 2. 检查SWD接口连接: - SWDIO→PA13 - SWCLK→PA14 - GND共地 3. 尝试降低JTAG速度: ```tcl adapter speed 1000 # 默认1MHz,可尝试改为500 ``` **步骤3:权限配置(Linux系统)** ```bash sudo usermod -aG plugdev $USER # 添加用户到设备组 sudo nano /etc/udev/rules.d/99-openocd.rules # 添加USB设备规则 ``` **步骤4:更新软件版本** ```bash openocd -v # 验证版本 # 推荐版本 >= v0.11.0 ``` #### 三、典型错误对照表 | 错误特征 | 解决方案 | |---------|----------| | `DEPRECATED! use 'tcl port'` | 更新OpenOCD至v0.12.0+ | | `CMSIS-DAP command failed` | 配置文件中添加`cmsis_dap_backend hid` | | `Target voltage: 3.1V`但无法连接 | 检查目标板复位电路/供电滤波电容 | #### 四、进阶调试建议 1. 启用详细日志: ```bash openocd -d3 -f your_config.cfg # 显示调试级别日志 ``` 2. 使用独立供电:当通过USB供电不稳定时,改用外接电源 3. 验证芯片状态:通过ST-LINK Utility等工具确认芯片未进入休眠模式
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值