在单片机开发中,通常需要精确估算代码运行时间,用于对算法优化以及对项目平台选择提供参考,通常算法如果用汇编编写,可以人工计算出运行时间,用C语言编写也可以通过反汇编代码而计算到较为精确的运行时间,但当程序中出现很多函数的调用,以及程序嵌套是,使用人工计算程序运行时间则比较费时费力。在CCS中可以对程序运行时间进行测量。CCS官方给出了两种测试代码运行时间的办法,有兴趣的可以阅读一下官方文档原文

​1、Profile clock in CCS(此方法适用于非Stellaris系列,因为我的Stellaris用这种方法不行,我也就不说了,自己看看文档,很简单)

2、​Watchpoints for Stellaris in CCS(此方法理论上使用TI所有单片机(包括Stellaris),我只测试了Stellaris,其他系列入MSP430有兴趣的可以自己试试。我讲的也是这种方法)

步骤:​

1、现将程序编译并Debug下载到开发板。然后​点击Window->Show View->Breakpoints

打开断点窗口

然后在右上角(默认设置)窗口中会多出一个断点窗口(默认有这个窗口可以跳过第一步)

2、点击断点下拉框选择Count Event

下拉框

弹出提示框后选择Clock Cycles,然后点击OK

点击OK

3、经过第二部后在读断点窗口中会多出一个Count Event断点,在Count Event上鼠标点击右键选择Breakpoint Properties对此断点进行配置。

右击断点

将Reset Count on Run改为true,点击OK保存。

修改配置

4、将要测试的代码代码加上断点,如图,假如我要测试程序从1到2需要运行对少时间,则将1所在的行设置断点同时把2设置断点,此时可以看到断点窗口多了两个断点。(注:此时Count Event显示67941表示程序运行到main函数是已经运行了67941个时钟周期(启动代码消耗),刚加进来Count Event是的计数值很大,那个值不准,重新Debug程序到开发板时因为之前已经添加了Count Event,所以计数是准的)

添加断点

5、单击运行按钮当程序运行到第一个断点时​​​​Count Event数值变为93210,说明从main函数运行到这一代码之前一条代码(断点处代码在程序暂停时还没有运行)用了93210个时钟周期,这个始终中期不包括之前启动代码运行消耗的67941个时钟周期,因为之前设置了Reset Count on Run为True,所以每一次点击运行按钮这个值都会清零。

运行1

在此点击运行按钮,当程序运行到2处时自动暂停运行,此时看到count event 变为了229938,说明程序从1运行到2用了229938个时钟周期。

6、运行时间计算

由第5步知道从代码1到代码2用了229938个机器中期,假如我设置看法板时钟频率为40Mhz,那这段代码运行时间就是​229938 * (1/(40*1000000)=0.00574845,约为5.75MS

了解更多知识内容

CCS应用中常见的一些小技巧的更多相关文章

  1. IDEA Intellij中vim插件使用小技巧

    在 IDEA Intellij小技巧和插件 一文中简单介绍了一下IdeaVim插件.在这里详细总结一下这个插件在日常编程中的一些常用小技巧.供有兴趣使用这个插件,但对Vim还不十分熟悉的朋友参考.当然 ...

  2. [转]Golang 中使用 JSON 的小技巧

    taowen是json-iterator的作者. 序列化和反序列化需要处理JSON和struct的关系,其中会用到一些技巧. 原文 Golang 中使用 JSON 的小技巧是他的经验之谈,介绍了一些s ...

  3. EF Core 1.0中使用Include的小技巧

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:由于EF Core暂时不支持Lazy Loading,所以利用Include来加载额外 ...

  4. .NET中Main函数使用小技巧

    摘要:任何语言开发出来的程序,都会有一个程序入口函数,可能每个语言所使用的程序入口函数名称不一样,但是它们的作用都是一样的,都是被操作系统去调用.那么本文主要总结.NET中的程序入口函数Main使用的 ...

  5. iOS 开发中使用到的小技巧汇总

    国庆即将来到,一个小项目也即将完成,把自己在项目中用的一些小技巧写出来,方便查找. 1,去掉分割线--动画设置透明度alpha //去掉tableView的分隔线:     self.tableVie ...

  6. [转]CMD命令提示符窗口中的快捷键、小技巧和常用命令

    转至:https://wenku.baidu.com/view/d5d2b7ca360cba1aa811dac6.html 快捷键:  F1:按F1一次,命令提示符向后切换到已经执行过的命令字符.如果 ...

  7. Fiddler使用过程中容易忽略的小技巧

    fiddler的基本使用,在之前的一篇博文中有详细介绍,可参见Fiddler抓包工具使用详解,今天来分享几个容易忽略的小技巧. 1.ios机装了证书,依然抓不到包 近期总被同事问及ios机装了证书,但 ...

  8. Photoshop中比较实用的小技巧

    Photoshop是目前最流行的图片处理软件软件之一.能够说,只要接触图片处理,就要和它打交道.Photoshop的强大功能和众多的优点不用多说.用photoshop做一些漂亮的图片,或对照片进行简单 ...

  9. VS开发中的代码编写小技巧——避免重复代码编写的几种方法

    上一篇文章中程序员的幸福生活--有你的日子,每天都是情人节,收到了大家的很多好评.鼓励和祝福,非常感动,真诚的谢谢大家.也希望每个朋友都能保持一个积极向上的心态,去迎接丰富多彩的人生. 在开发过程中, ...

随机推荐

  1. 百度地图隐藏BMKAnnotationView

    BMKAnnotationview.hidden 失效,只能移除Annotation BMKPinAnnotationView设置setHidden为yes时不能隐藏

  2. Navicat软件中mysql中int、bigint、smallint和tinyint的区别、布尔类型存储以及乱码问题的解决

    很长时间不写博客了,最近一直在忙这学校的比赛都忘记更新博客了.新的任务又要开始了,我们要准备<2017年中国大学生计算机设计大赛软件服务外包竞赛>.这次不能再想像之前那样有PC端的功能作为 ...

  3. APP级别处理未捕获异常

    前言: 项目APP有时候会出现Crash,然后就是弹出系统强制退出的对话框,点击关闭APP. 有的APP进行了处理,会发现,当程序出现异常的时候,会Toast一个提示"程序出现异常,3秒后将 ...

  4. ubuntu 16 安装django nginx uWSGI

    参考 https://www.digitalocean.com/community/tutorials/how-to-serve-django-applications-with-uwsgi-and- ...

  5. Git本地服务器搭建及使用详解

    Git本地服务器搭建及使用 Git是一款免费.开源的分布式版本控制系统.众所周知的Github便是基于Git的开源代码库以及版本控制系统,由于其远程托管服务仅对开源免费,所以搭建本地Git服务器也是个 ...

  6. GitLab CI持续集成配置方案

    目录 1. 持续集成介绍 1.1 概念 1.2 持续集成的好处 2. GitLab持续集成(CI) 2.1 简介 2.2 GitLab简单原理图 2.3 GitLab持续集成所需环境 2.4 需要了解 ...

  7. SQL Server 2016 JSON原生支持实例说明

    背景 Microsoft SQL Server 对于数据平台的开发者来说越来越友好.比如已经原生支持XML很多年了,在这个趋势下,如今也能在SQLServer2016中使用内置的JSON.尤其对于一些 ...

  8. Oracle索引梳理系列(十)- 直方图使用技巧及analyze table操作对直方图统计的影响(谨慎使用)

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  9. 2.lvm动态逻辑卷

    Lvm动态逻辑卷 一.             基本概念 LVM 把实际的物理磁盘数据映射到一个简单而灵活的虚拟逻辑存储视图上,藉以控制磁盘资源: 也就是重新考虑了管理文件系统和卷的方法,在文件系统管 ...

  10. C# 多线程之Task资料

    博客 Stephen Toub From MicroSoft Crop. Stephen Cleary Parallelism in .NET   文章 It's All About the Sync ...