利用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • clion 2021 激活码破解方法

    clion 2021 激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    1.3K
  • ideavim怎么用_idea基本使用教程

    ideavim怎么用_idea基本使用教程ideavim使用分享ideavim使用ideavim介绍ideavim是JetBrains官方开发的模拟vim插件,熟练ideavim的人可以更快的进行操作,大部分操作都可以用键盘来代替。纯vim也能进行更高效的开发,但是一款适合自己深定义的配置,能够让人更加高效。配合ide的智能补全,就一个字爽ideavim的安装idea中自带的插件管理搜索ideavim然后选择安装macos打开idea配置cmd+,windows打开idea配置ctrl+shfit+s

    2022年10月1日
    3
  • 反射型XSS漏洞

    反射型XSS漏洞实验项目反射型XSS实验综合性实验2020年10月22日一、实验综述1.实验目的及要求(1)什么是XSSXSS,全称跨站脚本,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。(2)XSS分成两类:一类是来自内部的,主要指的是利用程序自身的漏洞,构造跨站语句。另一类则是来自外部的***,主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。如当我们要一个站点,我们自己构造一个有跨站漏洞的网页…

    2022年6月13日
    36
  • java.lang.ClassCastException android.widget.RelativeLayout LayoutParams 异常

    java.lang.ClassCastException android.widget.RelativeLayout LayoutParams 异常1、在xml布局文件如下所示:<RelativeLayoutandroid:layout_width=”match_parent”android:layout_height=”wrap_content”android:background=”@android:color/dar…

    2022年7月17日
    13
  • 总结Redis一些使用

    总结Redis一些使用

    2021年7月12日
    72
  • MATLAB中plot函数功能详解[通俗易懂]

    MATLAB中plot函数功能详解[通俗易懂]基本功能功能:二维曲线绘图语法:plot(Y)plot(X1,Y1,…)plot(X1,Y1,LineSpec,…)plot(…,’PropertyName’,PropertyValue,…)plot(axes_handle,…)h=plot(…)hlines=plot(‘v6’,…) 描述:

    2022年10月15日
    5

发表回复

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

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