在初学者眼里,调试手段很多,自己平常使用调试手段的具有局限性、单一性,碰到复杂的问题还是很难解决。比如看watch窗口、memory窗口、打断点这些基本的调试手段。

就比如新接手中的一个项目,总是会出现串口通信错误,我也知道这是两次数据发送混乱了,但就是很难解决,为什么?因为通信是时时刻刻发生的,而你却不知道会在哪一刻发生错误。即使你一直处于在线调试状态,按照一般的调试手段,你也只能通过 Watch、Memory 之类的调试手段获得一些发生通信错误的那一刻的数据,但是之前的数据却早已淹没在时间长河里,你不知道在发生通信错误之前发生了什么,而往往通信错误之前的历史数据才是重中之重。

如何记录调试过程中的历史数据??
在keil里面:
    ITM 调试,硬件不支持就不能使用
    ini文件可不用硬件支持也可以使用

ini文件相当于一个额外的.c 文件,可以实现如单片机程序的绝大多数事情,比如读取 IO,读取寄存器,读取内存,操作寄存器,写入内存等等,更多详细的内容可参看官方的在线帮助文档。

当然你也可以直接像打开 txt 文件一样打开这个文件。

而你会发现,和写 C 程序一样,可定义变量、函数,你也可以使用 // 来进行必要的注释,当然 /**/ 也是可以的。本文以调用函数为例。

FUNC int add(int a, int b)
{ printf("hello world!!!\n");;return (a+b);
}FUNC void MyRegs(void)
{  printf ("---------- MyRegs() ----------\n");printf (" R4 R8 R9 R10 R11 R12\n");printf (" %04X %04X %04X %04X %04X %04X\n",R4,  R8,  R9,  R10, R11, R12);printf ("------------------------------\n");
}FUNC void TEST_PRINTF(void)
{  printf("test printf!!!\n");;
}

将.ini 文件添加到初始化文件中,KEIL 进入调试模式的时候,会自动加载这个文件,并执行里面的内容,假设我们保存为test.ini

在进入调试模式下,程序在没运行下或者停止(打断点停止),可编辑ini文件,可编辑文件的话,就有红色框框下面这个选项

ini文件编辑后,编译

通过command串口输入命令,调用ini文件里面的函数,程序运行时调用,按ENTER键结束调用输入

也可以定义按钮,调用ini文件里面的函数,程序运行时调用

在command窗口输入创建按钮命令,可创建按钮

分别输入两个命令,创建两个按钮,对应的两个命令

DEFINE BUTTON "MyRegs","MyRegs()" /*调用调试函数*/DEFINE BUTTON "TEST_PRINTF","TEST_PRINTF()" /*调用调试函数*/

按下按钮可以可在运行过程中,任意调用运行函数;
比如一直按下

command窗口一直输出调用函数运行输出的结果

删除按钮MyRegs在command输入

KILL BUTTON 1         /* Kill Toolbox Button number 1  */

删除按钮TEST_PRINTF在command输入

KILL BUTTON 2         /* Kill Toolbox Button number 2 */

KEIL 调试的 ini 文件有什么用?相关推荐

  1. KEIL 调试经验总结

    来源:公众号[鱼鹰谈单片机] 作者:鱼鹰Osprey ID   :emOsprey 通过前面的多篇文章(已整理成专辑)我们已经了解了很多的 KEIL 调试方法,但是到底该怎么使用这些方法呢?这篇文章将 ...

  2. keil工具中中ini文件的使用

    ini文件的编写: FUNC int add(int a, int b) { printf("hello world!!!\n");;return (a+b); }FUNC voi ...

  3. 语言 读ini文件_让C语言的调试更加高大上

    一般在写一个项目的时候,为了更直观的调试,我们在程序里都会打printf调试语句,随着项目越写越多,printf也会越来越多,但项目准备结尾的时候,这时候开始优化就会发现,你想完全把printf语句都 ...

  4. 佛祖保佑,永无 BUG,永不修改 | KEIL 调试系列总结篇

    本篇将总结前面关于KEIL调试系列文章,方便后来人系统查看文章. 在此之前,请看以下视频: (视频请看原文链接) 这个视频展示了鱼鹰平时是如何运用前面的KEIL调试方法进行调试的. 为了让自己能够在遗 ...

  5. keil调试串口的软件仿真方法

    Keil(MDK-ARM)使用教程(三)_在线调试 keil调试串口的软件仿真方法 由于我是直接使用(打开现有的软件工程),如果跟着需要下载上面演示参考的软件工程才行.工程默认是使用硬件在线调试,接下 ...

  6. 双系统启动boot.ini文件的秘密

    Windows NT类的操作系统,也就是Windows NT/2000/XP中,有一个特殊文件,也就是"BOOT.INI"文件,这个文件会很轻松地按照我们的需求设置好多重启动系统. ...

  7. keil如何添加h文件_【专栏】Keil系列教程

    置顶/星标公众号,不错过每一条重要消息! 本教程由作者strongerHuang原创发布. 版权所有:禁止商用 申明:该文档仅供个人学习使用,转载请公众号联系作者授权. 该系列教程结合MDK-ARM整 ...

  8. 在 WinCe 平台读写 ini 文件

    在上篇文章开发 windows mobile 上的今日插件时,我发现 wince 平台上不支持例如 GetPrivateProfileString 等相关 API 函数.在网络上我并没有找到令我满意的 ...

  9. BOOT.INI文件的目的[微软提供]

    本论文的信息适用于: · microsoft windows nt advanced server · microsoft windows nt workstation versions 3.5, 3 ...

最新文章

  1. Nginx对某个文件夹或整个站点进行登录认证的方法
  2. 只需 4 步,自己搞个 Spring Boot Starter!
  3. 【图】架构设计的10条经验
  4. Silverlight C# 游戏开发:Flyer09扇动翅膀的蝴蝶
  5. Java微服务(四)【idea配置本地maven】【中文idea版本】(手把手编写,超级详细)
  6. 3.1.1_Spring如何加载和解析@Configuration标签
  7. 一个应用程序和另一个应用程序apk文件信息
  8. 零基础可以学习java吗_零基础真的可以学习java吗?
  9. bat执行clsss
  10. cpu使用率_微软:Windows 10的高CPU使用率问题已解
  11. [CTO札记]给新助理的3句话
  12. 《SOA In the real world》第一章译稿(含下载)
  13. 数据治理之数据质量管理
  14. jQuery图片弹出Lightbox插件带轮播
  15. SolidWorks自定义装配体模板的方法
  16. 愿你我,能被这世界温柔以待
  17. 【书影观后感 四】《围城》十年
  18. 【数论】扩展欧几里得算法(EXTENDED-EUCLID)
  19. “丧偶式”恋爱?博士男友每晚12点才回家,要分手吗......
  20. 腾讯云配置jupyter notebook远程登录

热门文章

  1. matlab最长回撤期,最大回撤,最大回撤恢复时间与最大回撤持续期
  2. html中bak是什么文件怎么打开,bak文件怎么打开?小编教你bak文件打开方法
  3. Flutter2.0重磅发布!带你一文打尽Flutter Engage
  4. ​区块链技术的重要性
  5. 医学计算机应用基础考纲,计算机应用基础考纲
  6. 使用Ansj实现分词
  7. 2022 CCPC 威海 赛后总结
  8. codeforces1430E String Reversal
  9. java restful项目打包_GitHub - yangguang010/RestfulAPI: 使用java封装萤石开放平台的接口 HTTPS—SDK。可以直接将api封装成jar包...
  10. vue实现打开网页自动播放音乐