利用IAR Timeline工具测试delay函数执行时间

利用IAR Timeline工具测试delay函数执行时间”要把大象放冰箱,总共分几步”,呵呵,写到本篇博客的时候突然想起小品宋丹丹说的那句经典台词了(俺们东北人儿对本山大叔的作品真是滚瓜烂熟了,搞的舍友还时不时跟我学上一学),哈哈,所以就索性给题目也加上了“几步”的说法,把复杂的事情简单化,也起到吸引人眼球的作用(当然本篇也是有实料的,进来的不会让你失望的,呵呵)。咳咳,至于到底是几步,是不是传说中的“三步”来,哈哈,那还得下面分解。。。  

大家好,又见面了,我是你们的朋友全栈君。

 “要把大象放冰箱,总共分几步”,呵呵,写到本篇博客的时候突然想起小品宋丹丹说的那句经典台词了(俺们东北人儿对本山大叔的作品真是滚瓜烂熟了,搞的舍友还时不时跟我学上一学),哈哈,所以就索性给题目也加上了“几步”的说法,把复杂的事情简单化,也起到吸引人眼球的作用(当然本篇也是有实料的,进来的不会让你失望的,呵呵)。咳咳,至于到底是几步,是不是传说中的“三步”来,哈哈,那还得下面分解。。。

    对于我们程序猿这一类人来说,delay函数貌似是我们最熟悉不过的了。当然,随着我们编程经验的逐渐提高,像这种纯软件方式的延时函数是不提倡使用的,毕竟它一直霸占着CPU总线,不过在我们初入门的时候delay函数还是随处可见的,神马各种学习板开发板的demo例程里,模拟IIC,SPI等总线、时序驱动某些外设等等,delay函数成为了我们初入嵌入式软件编程大门所见到的第一类延时函数了(起码对我而言是这样的,所以觉着特亲切),但是想如果精确地知道delay的时间就是个麻烦事了。当然其中方法有很多,今儿我就说一招,不过限于用Jlink在IAR环境下的调试,MCU仍然以Kinetis为例了。

    Timeline,可能有些人会觉着有些陌生,其实它是IAR自带的调试组件之一,可以帮助开发者在调试程序的时候跟踪内部程序调用情况,这里一句两句也说不清楚,等下面上图之后就会一目了然了,那还等什么,上“硬菜”吧,也让我们看看到底分几步,呵呵:

第一步:在程序中编写好delay函数,及在main函数里的调用,如下:

/*************delay函数定义*************/
uint8 testPoint;  //定义测试点,用来设置断点
void delay(void)
{
  uint8 i=0;
  
  while((i++)!=200);
}

/*************delay函数的调用*************/

… …

  while(1)
  {   
      testPoint = 0;
      delay();
  }

第二步:设置调试工具为J-Link/J-Trace,然后在J-Link/J-Trace选项卡选择如下图

利用IAR Timeline工具测试delay函数执行时间

利用IAR Timeline工具测试delay函数执行时间

第三步:点击调试,进入调试界面,分别点击view->Breakpoint,J-Link->Timeline,调出这两个调试窗口,然后右键testPoint,选择如下图:

利用IAR Timeline工具测试delay函数执行时间

利用IAR Timeline工具测试delay函数执行时间

第四步:准备工作已经就绪,下面就开始测试delay函数的延时时间了。点击全速运行,它第一次可能会停留在启动代码的清零段(这个正常,因为testpoint被我设置成全局变量,在启动的时候会在清零段里去初始化它),继续多次点击全速运行(七八次即可),然后观察Timeline的Call Stack行,效果如下:

利用IAR Timeline工具测试delay函数执行时间

第五步:我们通过Timeline窗口查到了delay函数的执行周期,在前面我们又设定了CPU的频率(96MHz),所以可以算出来delay执行的时间T = 1190*1/96 us = 12.40us。呵呵,比装大象费点事,总共分五步了,哈哈~

这里只是当做一个小技巧分享给大家了,可能绝大多数人用不到了,不过这里是给大家打开了一个思路,timeline的功能很多,更多好用好玩的功能就留给大家去开发了。其实现在随着搞嵌入式的年头增加,越来越意识到一个问题,那就是调试手段在我们开发系统中的重要作用,真的在以前或者说还是个新手的时候觉着调试是个麻烦而又没有多大作用的过程,但是到现在发现如果利用好调试工具的话绝对会让我们的开发事半功倍的,况且现在的片子内部自带的调试模块功能越来越强大,外部的调试工具功能也是越来越全面,这些都是附加值(通俗点说,那就是咱花钱买过来的),我们岂能浪费了,不用白不用,白用谁不用嘛,嘿嘿~

今儿到这儿了,烧壶水去,未完待续~

来自jicheng0622的博客

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143711.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月21日 上午6:00
下一篇 2022年5月21日 上午6:00


相关推荐

  • Windows 2008 R2配置IIS环境搭建网站(一)

    Windows 2008 R2配置IIS环境搭建网站(一)目录 IIS 服务器的基本概念安装 IIS 添加配置站点权限设置网站的停止与启动高级设置 http 重定向错误页虚拟目录结合 DNS 配置带有域名访问的网站 IIS 服务器的基本概念 IIS 即英特网信息服务器 InternetInfo 是由微软公司提供的基于 Windows 操作系统运行的互联网基本服务 在组建局域网时可利用 II

    2026年3月17日
    1
  • trill大二层_TRILL大二层网络解决方案

    trill大二层_TRILL大二层网络解决方案数据中心的高速总线 TRILL 大二层网络解决方案作者 ZDNet 出处 博客 2012 07 1206 12 在云计算时代下 数据中心内部一般采用分布式架构处理海量数据存储 挖掘 查询 搜索等相关业务 服务器和服务器之间需要进行大量的协同工作 在服务器之间产生了大量的东西向流量 其次 数据中心普遍采用虚拟化技术 虚拟化的直接后果是使单位计算密度极大提升 物理服务器吞吐量将比虚拟化之前成数倍提升 还有为

    2026年3月18日
    2
  • 从关键词匹配到语义理解:2026年具备大模型语义理解能力的智能客服机器人评测与选型指南

    从关键词匹配到语义理解:2026年具备大模型语义理解能力的智能客服机器人评测与选型指南

    2026年3月16日
    2
  • IntelliJ IDEA 报错:找不到包或者找不到符号

    IntelliJ IDEA 报错:找不到包或者找不到符号最近在使用IDEA的时候,突然出现过找不到包或者找不到符号的情况,在确定了自己引用存在的情况下,可以尝试以下几种方式来解决,以下是在开发过程中碰过问题同样解决过的几种办法,在此记录下也分享给大家,希望对各位有帮助。1.利用Maven-Reimport2.InvalidateandRestart3.编码统一4.重新编译点开ProjectStructu…

    2022年6月29日
    57
  • soc ip核_类和对象有什么关系

    soc ip核_类和对象有什么关系SoC(SystemonaChip)中文名是系统级芯片。20世纪90年代中期,因使用ASIC实现芯片组受到启发,萌生应该将完整计算机所有不同的功能块一次直接集成于一颗硅片上的想法。SoC应由可设计重用的IP核组成,IP核是具有复杂系统功能的能够独立出售的VLSI块;IP核应采用深亚微米以上工艺技术;SoC中可以有多个MPU、DSP、MCU或其复合的IP核。IP核(I………

    2026年1月27日
    5
  • dom 自定义事件_pix4D生成dom

    dom 自定义事件_pix4D生成dom之前做项目都是直接用jquery的bind绑定事件,不过当时都不是动态生成dom元素,而是已经页面中原本存在的dom元素进行事件绑定,最近在测试给动态生成的dom绑定事件的时候发现事件失效,于是就测试了一下:1.事件失效的原因:(1)bind事件绑定只对dom中存在的元素有效,对于我们后来动态增加的元素是监测不到,所以绑定不了(2)同样,当你使用varaa=docu

    2025年10月27日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号