利用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


相关推荐

  • VMware下载安装教程(vbox虚拟机安装教程)

    全网最详细的VMware虚拟机下载安装教程第一步下载虚拟机1.进入VMware官网,点击左侧导航栏中的下载,选择下拉列表中的产品下载,再点击图中标记的WorkstationPro,如下图所示。2.选择自己需要的版本和操作系统,在这里以Windows系统为例,点击转至下载,如下图所示。-3.点击转至下载后也在此处可以选择版本。选择好版本后点击立即下载。如下图所示。4.注意,需要登录之后才能下载。若无账号可点击注册后登录。如下图所示。二、安装虚拟机1.进入下载路径,双击.

    2022年4月10日
    93
  • wireshark流量分析实战

    wireshark流量分析实战wiresharkWireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。下面是在网上找的数据包资源,来自2018的铁人三项流量分析题目,一共有二十题,共有六个数据包,本人习惯一题一题来,不过可能是个很不好的习惯1.黑客的IP是多少…

    2022年4月29日
    54
  • 华为 NTP协议「建议收藏」

    华为 NTP协议「建议收藏」概述NTP是从时间协议(timeprotocol)和ICMP时间戳报文(ICMPTimeStampMessage)演变而来,在准确性和健壮性方面进行了特殊的设计,理论上精确可达十亿分之一秒。NTP协议应用于分布式时间服务器和客户端之间,实现客户端和服务器的时间同步,从而使网络内所有设备的时钟基本保持一致。NTP协议是基于UDP进行传输的,使用端口号为123。‘NTP的优势采用分层(Stratum)的方法来定义时钟的准确性,可以迅速同步网络中各台设备的时间。持访问控制和MD5

    2022年10月12日
    8
  • HTML a标签去除下划线

    HTML a标签去除下划线a{text-decoration:none;}//这个是设置a标签的默认状态去除下划线a:visited{text-decoration:none;}//这个是设置a标签的访问过后的状态去除下划线a:hover{text-decoration:none;}//这个是设置a标签的鼠标覆盖状态去除下划线a:active{text-decoration:none;}

    2022年6月3日
    43
  • BAT等企业如何面试?看这一篇文章就够了

    BAT等企业如何面试?看这一篇文章就够了感谢内容提供者 金牛区吴迪软件开发工作室今天给朋友带来的是找一份工作的流程详细介绍 以及期间所需要注意的东西 其中包括 简历 附带写简历的注意事项 笔试 附带笔试题详细介绍的链接 电话面试 附带常见的面试题 面试 详细介绍面试时的注意事项 签约 详细介绍签合同之前要了解的东西 面试时的基本礼仪 详细介绍面试时所应有的行为举止 穿着等 一 面试流程及问题解析无论是程序员还是其他职业的面试 虽然都是提交简历 电话面试 面谈 拿到 offer 等一系列过程 但是每一步都很重要 首先简历要精炼

    2026年3月16日
    2
  • Lucene全文检索工具包学习笔记总结

    Lucene全文检索工具包学习笔记总结

    2021年7月10日
    64

发表回复

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

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