> 技术文档 > 使用Clion开发STM32(Dap调试)_clion stm32

使用Clion开发STM32(Dap调试)_clion stm32


使用Clion开发STM32

  • 环境配置
  • ST-Link无法下载
  • OpenOCD
    • ST-Link调试
    • Dap-Link调试
  • Debug配置
  • 查看寄存器值

之前写了一篇文章关于如何用VSCode配合EIDE插件开发STM32

最近研究了如何使用Clion开发STM32

环境配置

使用Clion开发STM32需要用到4个工具:Clion、STM32CubeMX、STM32CubeCLT、OpenOCD

以下是下载链接

Clion下载
STM32CubeMX
STM32CubeCLT
OpenOCD

下面是详细的教程,一般来说跟着下面的视频教程来做都能成功,我这里额外补充使用OpenOCD进行烧录和调试,支持 ST-LinkDap-Link

详细教程

ST-Link无法下载

下面是我遇到的问题

在烧录时报了下面的错误,原因可能是没有识别到目标芯片,连接线松了,还有一个原因是ST-Link的版本太低了,需要升级,下面是解决办法

使用Clion开发STM32(Dap调试)_clion stm32

使用STM32CubeIDE自带的ST-Link升级工具对ST-Link进行升级

使用Clion开发STM32(Dap调试)_clion stm32
使用Clion开发STM32(Dap调试)_clion stm32

OpenOCD

上面的视频中使用的是ST-Link进行烧录调试,但是我平时使用更多的是Dap,所以我需要额外下载OpenOCD

使用Clion开发STM32(Dap调试)_clion stm32

下载完成后解压到C盘的Program Files中

使用Clion开发STM32(Dap调试)_clion stm32

将文件的 bin 路径添加到环境变量中

使用Clion开发STM32(Dap调试)_clion stm32

使用Clion开发STM32(Dap调试)_clion stm32
使用Clion开发STM32(Dap调试)_clion stm32
使用Clion开发STM32(Dap调试)_clion stm32

然后复制可执行文件的路径

使用Clion开发STM32(Dap调试)_clion stm32

打开Clion-文件-设置

使用Clion开发STM32(Dap调试)_clion stm32

构建、执行、部署-嵌入式开发

将路径粘贴到OpenOCD位置,点击测试,出现下图绿色文字说明没有问题

使用Clion开发STM32(Dap调试)_clion stm32

找到运行/调试配置,编辑配置

使用Clion开发STM32(Dap调试)_clion stm32

添加 OpenOCD 下载并运行

使用Clion开发STM32(Dap调试)_clion stm32

ST-Link调试

使用ST-Link调试的话跟视频中的一样,调试服务器选择ST-Link就可以了

使用Clion开发STM32(Dap调试)_clion stm32

Dap-Link调试

使用Dap-Link进行调试需要额外添加一个配置文件

在工程目录空白处 右键-新建-文件

使用Clion开发STM32(Dap调试)_clion stm32

命名为 daplink.cfg

使用Clion开发STM32(Dap调试)_clion stm32

然后将下面的内容粘贴进去,保存

使用Clion开发STM32(Dap调试)_clion stm32

# choose st-link/j-link/dap-link etc.adapter driver cmsis-daptransport select swd# 0x10000 = 64K Flash Sizeset FLASH_SIZE 0x20000source [find target/stm32f4x.cfg]# download speed = 10MHzadapter speed 10000

接着对OpenOCD调试配置进行编辑

使用Clion开发STM32(Dap调试)_clion stm32

将原来的面板配置文件改为刚刚创建的配置文件

使用Clion开发STM32(Dap调试)_clion stm32

确定

使用Clion开发STM32(Dap调试)_clion stm32

然后将调试服务器改为 原生,这时候点击运行

使用Clion开发STM32(Dap调试)_clion stm32

出现以下信息说明烧录成功

使用Clion开发STM32(Dap调试)_clion stm32

配置过一次后,以后创建工程就方便很多了,下面是具体步骤

打开CubeMX

使用Clion开发STM32(Dap调试)_clion stm32

配置好

使用Clion开发STM32(Dap调试)_clion stm32
使用Clion开发STM32(Dap调试)_clion stm32

复制项目路径

使用Clion开发STM32(Dap调试)_clion stm32

将daplink的配置文件复制到新工程目录下

使用Clion开发STM32(Dap调试)_clion stm32

使用Clion开发STM32(Dap调试)_clion stm32

修改配置

使用Clion开发STM32(Dap调试)_clion stm32
使用Clion开发STM32(Dap调试)_clion stm32
使用Clion开发STM32(Dap调试)_clion stm32

最后选择对应的调试器即可

使用Clion开发STM32(Dap调试)_clion stm32

最后编写完代码运行即可

使用Clion开发STM32(Dap调试)_clion stm32

Debug配置

完成以上步骤可以进行基本的代码编写、烧录,如果要调试的话,还要进行下面的步骤

使用Clion开发STM32(Dap调试)_clion stm32
使用Clion开发STM32(Dap调试)_clion stm32

查看OpenOCD的GDB端口号,我的是3333

使用Clion开发STM32(Dap调试)_clion stm32

target remote 输入 localhost:3333
GDB服务器选择OpenOCD的路径
GDB服务器实参 输入 -f interface/cmsis-dap.cfg -f target/stm32f4x.cfg

如果使用的是ST-Link,则输入-f interface/stlink-v2.cfg -f target/stm32f4x.cfg

使用Clion开发STM32(Dap调试)_clion stm32

最后点确定

点击这个小乌龟进行Debug

使用Clion开发STM32(Dap调试)_clion stm32

下面是效果演示

使用Clion开发STM32(Dap调试)_clion stm32

查看寄存器值

由于Clion不是专门为STM32开发的软件,所以要想查看寄存器的值,还需要下载额外的东西

到STM32官网,搜索STM32F4 SVD,选择STM32F4 System View Description下载

使用Clion开发STM32(Dap调试)_clion stm32

同样的,将下载好的文件解压放到C盘的Program File中

使用Clion开发STM32(Dap调试)_clion stm32

回到Clion,点击外设,加载.svd文件,需要在调试状态中才能进行加载

使用Clion开发STM32(Dap调试)_clion stm32

选择刚刚下载好的svd文件中的对应芯片信号的.svd文件,路径如下所示,然后点击确定

使用Clion开发STM32(Dap调试)_clion stm32

这时候所有的外设都可以选择

使用Clion开发STM32(Dap调试)_clion stm32

例如我这里选择 GPIOE

使用Clion开发STM32(Dap调试)_clion stm32

这时候就可以查看该寄存器里面每一个值了

使用Clion开发STM32(Dap调试)_clion stm32