利用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的博客

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • java实现Math.sqrt函数

    java实现Math.sqrt函数难易程度:★★★重要性:★★★★★度小满金融的面试中出现过:自己实现Math.sqrt函数//计算:Math.sqrt(num)//原理:牛顿迭代法://https://baike.baidu.com/item/%E7%89%9B%E9%A1%BF%E8%BF%AD%E4%BB%A3%E6%B3%95/10887580?fr=aladdinprivate…

  • jenkins+git+maven自动部署和发布

    jenkins+git+maven自动部署和发布

  • PHP中如何设置error_reporting错误报告级别

    PHP中如何设置error_reporting错误报告级别

  • python 可迭代对象 迭代器 生成器_Python3迭代器获取

    python 可迭代对象 迭代器 生成器_Python3迭代器获取在日常提升Python基本功的时候,可能会被Python的迭代器和生成器搞晕,之前在学习和使用时,本来forin循环体和enumerate函数用的飞起,觉得自己已经彻底了解了Python的迭代特性,但接触了迭代器和生成器后,突然感觉懵逼,大概率会被可迭代、迭代器、生成器等概念搞的不知所向,本文就是结合日常项目应用,对Python的迭代概念进行系统性的全面解析,包括其底层实现原理,还有一些常见的应用,希望能帮助更多人,同时也算作给自己梳理思路了。一、基本概念二、迭代器三、生成器四、基本应用

  • javase学习笔记

    javase学习笔记01.01_计算机基础知识(计算机概述)(了解)A:什么是计算机?计算机在生活中的应用举例计算机(Computer)全称:电子计算机,俗称电脑。是一种能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。由硬件和软件所组成,没有安装任何软件的计算机称为裸机。常见的形式有台式计算机、笔记本计算机、大型计算机等。应用举例1:科学计算2、数据处理3、自动控制4、计算机辅助设计…

  • 转化ico标志

    转化ico标志

发表回复

您的电子邮箱地址不会被公开。

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