Clion+dap仿真器,移植stm32项目
如何将Keil项目移植到Clion,先看几位大佬的文章:
稚晖君的回答:配置CLion用于STM32开发【优雅の嵌入式开发】
qq_40947291:OpenOCD下载导致单片机被锁住解决办法
开发环境:
开发板stm32f103指南者,仿真器:野火DAP,Keil_v5,Clion_2022.3.2
首先测试DAP仿真器能在Keil5正常使用,实际上这儿就踩了不少坑,按“野火论坛:Dap仿真器的使用教程”配置无效,但通过串口烧录程序是能跑起来的。于是更改配置如下:启动Keil5->options for target->debug->settings: debug选项卡:
- 左上角适配器是普通的CMSIS-DAP,没有显示野火字样。
- Connect框必须选择 under Reset,作用等同于下载程序时按复位键。
- Reset框没有自动探测,实际上选 SYSRESETTREQ 也是可以的。
- 除了Debug选项卡外,FLASH DownLoad选项卡中的 Reset And Run 可能也要勾选。

测试仿真器下载有效,接下来开始写代码。先配置Clion运行环境,再用Clion新建CubeMX工程。参考开篇“稚晖君的回答”配置环境。这里提出几个容易踩坑的地方:在配置Openocd时要加载cfg配置文件,野火DAP仿真器遵循CMSIS-DAP标准,其配置文件dapLinkFire.cfg如下:
# choose st-link/j-link/dap-link etc.
adapter driver cmsis-dap
transport select swd
# 0x10000 = 64K Flash Size
set FLASH_SIZE 0x20000
# 导入OpenOCD\share\openocd\scripts\target下的stm.32f1x.cfg文件,
# 具体导入哪个,和stm32型号有关可以倒网上查找
source [find target/stm32f1x.cfg]
# download speed = 10MHz
adapter speed 10000
将dapLinkFire.cfg另存为ANSI编码。

Clion中锤子代表编译,三角代表烧录下载程序,虫子代表debug。
打开Clion,配置右上角的Openocd,这里Board config file要选择dapLinkFire.cfg(配置文件位置随意)。

打开Settings,配置MinGW64:

配置Debug:这里Generator选MinGW可以生成hex文件。

配置OpenOCD和CubeMX

完成上述配置应该能通过编译了,但此时下载程序还会报错:下载超时,或无法识别芯片等。为了证明开发板没问题,可以尝试通过串口烧录.hex看看结果,如果通过串口烧录没问题,那就是Clion和开发板连接问题。
Error: Error connecting DP: cannot read IDR
in procedure 'program'
** OpenOCD init failed **
shutdown command invoked
识别芯片失败的解决方案:按住开发板RESET按钮,Clion上点击下载,出现这个打印就马上放开,烧录成功Clion会提示。如果提示成功但开发板没效果,再次点击 RESET按钮

后来在网上看到这么一句话:
为什么按住复位键可以识别出目标芯片,松开就不行?原因是开发板中的程序复用了下载口SWCLK和SWDIO,将其作为了普通GPIO来使用。解决方法是先按住复位键,点击下载的同时松开复位键,此时一定要把握好时机,因为系统启动的时候, 还没走到复用下载口的代码,此时无法烧录下载。故一般情况下除非迫不得已,不建议把下载口复用为普通GPIO使用,因其会造成如上的烧录问题。 (另外一种方法是尝试把页面下的debug标签处设置改成under reset)。
报错:
clion提示 cmake-build-debug-mingw“): CreateProcess error=193, %1 不是有效的 Win32 应用程序。
解决方案:大概是因为插件 embeded development support 加载出了问题,重新启用该插件,重新配置下图方框内选项

Clion+dap仿真器,移植stm32项目的更多相关文章
- 使用EmBitz开发STM32项目的环境配置
一.EmBitz软件获取与安装 1.EmBitz软件的获取 EmBitz原名Em::Blocks,是基于Code::Blocks开发的,面向嵌入式的C/C++集成开发环境.支持J-Link和ST-Li ...
- 第3章 如何用DAP仿真器下载程序
第3章 如何用DAP仿真器下载程序 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/f ...
- 第3章 如何用DAP仿真器下载程序—零死角玩转STM32-F429系列
第3章 如何用DAP仿真器下载程序 集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege ...
- Mac平台Clion配置GLFW+GLAD的项目
前期的准备工作详见LearnOpenGL CN 看这篇教程的前提是假设你已经编译好了GLFW文件夹以及下载好了GLAD,不会的话可以看我的另一篇 文章的前部分: 配置 Clion新建一个项目,CMak ...
- STM32——项目需求之低功耗的停机模式
在说低功耗之前,先要明白一个东西,那就是stm32中的事件和中断. 事件是中断的触发源,开放了对应的中断屏蔽位,则事件可以触发相应的中断.在STM32中,中断与事件不是等价的,一个中断肯定对应一个事件 ...
- 在IAR(EWARM)中移植STM32固件库
一.移植环境说明 (1).win10系统 (2).IAR(EWARM)7.7 (3).STM32标准固件库3.5.0 http://www.st.com/content/st_com/en/produ ...
- 使用emIDE创建STM32项目
emIDE是一个开源的嵌入式集成开发环境,基于Code::Blocks开发,能够支持多个平台和多个厂家的嵌入式硬件,继承了Code::Blocks的有点. 下载emIDE并安装,也可选择绿色版.若需要 ...
- 【STM32项目笔记】STM32CubeMX+Keil+Proteus联合实现LED闪烁
摘要 利用STM32CubeMx配置STM32芯片的功能,然后将配置后的内容生成代码,并导出成可以使用Keil打开编辑的文件,在Keil中添加控制代码后,下载到Proteus仿真中,使用仿真观察代码执 ...
- 项目移植过程中报:“Project facet Java version 1.7 is not supported.” 错误
转载: http://my.oschina.net/nly/blog/349081 在移植eclipse项目时,如果遇到 报:“Project facet Java version 1.7 is no ...
- 手把手教你使用 Clion 开发 Linux C++ 项目
手把手教你使用 Clion 开发 Linux C++ 项目 关于CLion CLion是一款专为开发C及C++所设计的跨平台IDE.它是以IntelliJ为基础设计的,包含了许多智能功能来提高开发人员 ...
随机推荐
- React中的CSS模块
CSS模块 使用步骤: 1.新建一个XXX.moudle.css文件 2.在组件中引入css impor classes(变量) fro ...
- PVE设置定时关闭、启动虚拟机
shell中输入命令: crontab -e 进入对应cron 添加命令: 例如: 00 2 * * * pvesh create /nodes/pve/qemu/102/status/stop 00 ...
- js中函数(方法)注释
原文链接:https://blog.csdn.net/tianxintiandisheng/article/details/103764074 实例 /** * @function 处理表格的行 * ...
- ssm框架基本原理
一.前言 SM框架是标准的MVC模式,将整个系统划分为四层:View层,Controller层,Service层,Dao层 SSM(Spring+SpringMVC+MyBatis)框架集由Sprin ...
- Mysql_5.7编译部署
自述 - 概述:数据库是"按照数据结构来组织.存储和管理数据的仓库".是一个长期存储在计算机内的.有组织的.可共享的.统一管理的大量数据的集合:本文主要介绍mysql_5.7的部署 ...
- What is Weight Lifting?
Weight lifting is the process of lifting items of great mass in order to increase the muscle size an ...
- scrcpy投屏软件
Android很好用得scrcpy 投屏软件: 下载传送门:https://github.com/Genymobile/scrcpy/releases 1.下载解压包后,解压至自己得电脑目录,并复制目 ...
- 2---JVM启动参数有哪些?
也要以说JVM启动的时候可以调整哪些参数,来进行调优.JVM 为垃圾收集器.堆大小和运行时编译器提供与平台相关的默认选择. 性能取决于堆的大小.应用程序维护的实时数据量以及可用处理器的数量和速度.. ...
- zip文件自动打包
简单的文件打包 首先是问题 我们有一个文件的文件过大,我需要删除或者压缩,当然我们就是选择压缩 如果是单个我们可以直接使用压缩功能 但是多个呢? 首先获取当前目录下的文件,使用 a=`ls` | te ...
- angularJS依赖注入的个人理解
依赖注入:一句话 --- 没事你不要来找我,有事我会去找你. AngularJS 5个核心组件用来作为依赖注入: value factory service provider constant ...