如何将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. JS笔记(三):函数与对象

    镇楼图 Pixiv:torino 四.Function类型 Rest语法 一些函数如Math.max可以支持任意数量的参数,JS中对于这样的参数可以简单使用...来实现,使用剩余参数,它支持收集剩余的 ...

  2. 学习使用数据库SQLServer (一)

    小记一下学习使用数据库时遇到的问题 1.建表时未设置主键约束名,此时删表主键会遇到困难,不能简单使用 ALTER TABLE NAME DROP CONSTRAINT 约束名: 而是要先找到数据表中主 ...

  3. java-------导出数据csv

    outputStream = new FileOutoutStream(file); outputStreamWriter = new OutputStreamWriter (outputStream ...

  4. C++ 全面总结

    1. 基本数据类型:没什么好说的.知道浮点数存储起来不精确.各种类型占的大小在不同平台可能不一样就行了 2. 初始化列表:能用就用.能防止潜在的类型收窄, 3. static_cast 和 dynam ...

  5. 微信小程序 实现点击返回顶部

    效果: wxml: <!-- 点击回顶部 --> <image src='/images/top.jpg' class='goTop' hidden='{{showTop}}' bi ...

  6. CSS3之伸缩布局

    一 主轴方向 在伸缩布局中, 默认伸缩项是从左至右的排版的 主轴的排版的方向默认就是row, 默认就是从左至右 1.默认情况下主轴是水平方向的, 但是也可以修改为垂直方向.只要看到flex-direc ...

  7. python学习记录(四)-意想不到

    计数 from collections import Counter # 计数 res = Counter(['a','b','a','c','a','b']) print(res,type(res) ...

  8. [Unity移动端]Mono与IL2Cpp

    参考链接: https://blog.csdn.net/linxinfa/article/details/87358809 https://blog.csdn.net/Aison_/article/d ...

  9. C++ sort排序

    sort(begin, end, cmp),其中begin为指向待sort()的数组的第一个元素的指针,end为指向待sort()的数组的最后一个元素的下一个位置的指针,cmp参数为排序准则,如果没有 ...

  10. IntelliJ IDEA常用插件

    Mybatis Log Plugin安装好插件后,在Tools工具栏中可以看到安装好的插件,点击即可打开相应窗口,在Debug时,相应的Sql语句即可输出到此窗口,方便查看.此插件相当好用,提升开发效 ...