如何将Keil项目移植到Clion,先看几位大佬的文章:

稚晖君的回答:配置CLion用于STM32开发【优雅の嵌入式开发】

野火论坛:DAP仿真器的使用教程

wuxx:nanoDAP使用疑难杂症解析

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项目的更多相关文章

  1. 使用EmBitz开发STM32项目的环境配置

    一.EmBitz软件获取与安装 1.EmBitz软件的获取 EmBitz原名Em::Blocks,是基于Code::Blocks开发的,面向嵌入式的C/C++集成开发环境.支持J-Link和ST-Li ...

  2. 第3章 如何用DAP仿真器下载程序

    第3章     如何用DAP仿真器下载程序 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/f ...

  3. 第3章 如何用DAP仿真器下载程序—零死角玩转STM32-F429系列

    第3章     如何用DAP仿真器下载程序 集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege ...

  4. Mac平台Clion配置GLFW+GLAD的项目

    前期的准备工作详见LearnOpenGL CN 看这篇教程的前提是假设你已经编译好了GLFW文件夹以及下载好了GLAD,不会的话可以看我的另一篇 文章的前部分: 配置 Clion新建一个项目,CMak ...

  5. STM32——项目需求之低功耗的停机模式

    在说低功耗之前,先要明白一个东西,那就是stm32中的事件和中断. 事件是中断的触发源,开放了对应的中断屏蔽位,则事件可以触发相应的中断.在STM32中,中断与事件不是等价的,一个中断肯定对应一个事件 ...

  6. 在IAR(EWARM)中移植STM32固件库

    一.移植环境说明 (1).win10系统 (2).IAR(EWARM)7.7 (3).STM32标准固件库3.5.0 http://www.st.com/content/st_com/en/produ ...

  7. 使用emIDE创建STM32项目

    emIDE是一个开源的嵌入式集成开发环境,基于Code::Blocks开发,能够支持多个平台和多个厂家的嵌入式硬件,继承了Code::Blocks的有点. 下载emIDE并安装,也可选择绿色版.若需要 ...

  8. 【STM32项目笔记】STM32CubeMX+Keil+Proteus联合实现LED闪烁

    摘要 利用STM32CubeMx配置STM32芯片的功能,然后将配置后的内容生成代码,并导出成可以使用Keil打开编辑的文件,在Keil中添加控制代码后,下载到Proteus仿真中,使用仿真观察代码执 ...

  9. 项目移植过程中报:“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 ...

  10. 手把手教你使用 Clion 开发 Linux C++ 项目

    手把手教你使用 Clion 开发 Linux C++ 项目 关于CLion CLion是一款专为开发C及C++所设计的跨平台IDE.它是以IntelliJ为基础设计的,包含了许多智能功能来提高开发人员 ...

随机推荐

  1. maya灯光导入houdini插件开发

    加入工作室时师兄给了两道测试题,由于第一道是完善师兄的一个houdini项目管理插件,我只是开发了一些小功能,所以不好意思拿出来. 第二道题就完全是由自己开发的一个小插件,功能是把maya里的灯光导入 ...

  2. 多文件下载并打成zip文件传输到浏览器响应流

    import lombok.extern.slf4j.Slf4j; import javax.servlet.http.HttpServletResponse; import java.io.*; i ...

  3. OO_Lab1总结博客

    OO_Lab1 问题描述 模拟多线程实时电梯系统,新主楼ABCDE五个楼座各楼层均有电梯,乘客发起形如"从X座x层到Y座y层"的请求,电梯模拟上下行.开关门.乘客进出等行为,以满足 ...

  4. Q:windows系统如何开机启动批处理脚本

    方法1 1.win+r输入gpedit.msc进入本地策略管理器 2.点击windows设置下的脚本(启动/关机),然后双击启动. 3.点击添加,然后点击浏览,选择批处理文件然后点击确定. 方法2 也 ...

  5. SQL SERVER 导入EXCEL表 报错 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序

    1 已经正确安装了 accessdatabaseengine 2 使用 Microsoft SQL Server Management Studio 里面的数据库 右键-->导入数据 解决方案 ...

  6. redis缓存lua脚本过多导致内存占用很多问题

    现象 生产某集群各节点已使用内存比较大,在清理了大量业务无用数据后,节点已使用内存却未下降. 排查与分析 通过info memory命令查看,内存碎片率略高,但是对某个主节点新添加的从节点内存使用依然 ...

  7. C语言声明与定义的区别

    转自:https://blog.csdn.net/gatieme/article/details/50640424 C++程序通常由许多文件组成,为了让多个文件访问相同的变量,C++区分了声明和定义. ...

  8. ffmpeg设置超时时间

    使用 -rw_timeout 参数 注意:1.参数单位是微秒,而不是秒.1秒(s)=1000000微秒(μs)   2.参数要放在开流前,否则不会生效 参考资料: FFmpeg命令读取RTMP流如何设 ...

  9. Hive使用Tez作为计算引擎,hive启动报错

    1.问题描述: (1)问题示例: 1)hive使用配置文件hive-site.xml配置tez为计算引擎,hive登录报错: [Hadoop@master Tmp]$ hiveHive Session ...

  10. OSPF RFC 1583 兼容