调试笔记–keil 测量周期小技巧

本文参考安富莱专题教程第7期 http://www.armbbs.cn/forum.php?mod=viewthread&tid=87176&extra=page%3D1

  • cortex-m内核的单片机,内核内除了systick定时器外,还有一个用于调试的WDT定时器,可以在keil中协助测量代码运行周期。

WDT定时器默认是给调试器用的,自己最好不要使用。

直接看keil的状态栏计时器

  1. 一定要确保时钟周期和单片机内核一致
    如果使用daplink

如果使用jlink

  1. 在要测量代码前后打上断点

例如要测GPIO翻转函数所需时间,在翻转函数前后打上断点,然后右键将t2清零,再点击运行到下一个断点处,然后观察t2时间戳
t0代表从函数上电后开始计时到当前的时间(不用担心WDT溢出问题,keil会自动计算)
t1和t2是两个时间戳,用户可以用这两个时间戳互相配合,实现自己想要的功能


如果没有时间,可以切换到寄存器窗口

使用keil的Event Recorder中间件测量

Event Recorder中间件支持时间和功耗测量,printf打印,及keil其他中间件的调试,是keil专门用于调试的组件。其原理简单来说就是将一些调试信息以固定的格式存放在RAM中,然后通过调试器找到并读取RAM中固定格式的数据,通过keil的界面组件显示出来。因此使用Event Recorder中间件需要修改代码,并且需要占用一定的RAM空间。

  1. keil添加组件

如果网不好,可以通过 http://www.armbbs.cn/forum.php?mod=viewthread&tid=96992&highlight=pack 镜像下载后,自行安装

  1. 工程添加组件
  2. 初始化组件


并添加一下代码进行初始化组件

#include "EventRecorder.h"
/* 初始化 EventRecorder 并开启 */
EventRecorderInitialize(EventRecordAll, 1U);
  1. 调用计时API函数

计时API其实就是将DWT计时器的时钟数以固定格式存放到RAM中

//参数 slot范围 0-15 共16个计时通道
EventStartA(slot);/* 要测量的代码 */EventStopA(slot);

ps: 这个功能受调试器功能影响,虽然dap、jlink都可以用, 但是实测发现dap有时不能实时检测 (计时功能其实也是调用了MDK状态栏的计时器,如果时间不准,可以参考文章开头,先将状态栏计时器功能调准),不过Event Recorder中间件还带printf功能,并且keil其他中间件例如RTX5或者FREERTOS都有配套的Event Recorder文件,非常方便调试OS(可以获取OS堆栈情况,任务切换情况等信息)

调试笔记--keil 测量周期小技巧相关推荐

  1. 调试笔记--keil 断点调试小技巧

    调试笔记–keil 断点调试小技巧 给变量打断点 调试不熟悉的项目时,卧槽!怎么这么多全局变量?这玩意又在那修改了??这个时候会给变量打断点就能省好多事. 将要监视的全局变量添加到watch窗口 选中 ...

  2. 如何使用OneNote和draw.io来写数学笔记|我的记录小技巧

    做数学笔记是否有必要,如果有必要的话,用什么来做数学笔记呢.这个问题困扰了我很久.曾几何时,数学知识在我脑海里只有算术,初等函数性质,矩阵乘除计算等等,无法联系起来的抽象概念.而作为一个害怕丢分,又没 ...

  3. 用Eclipse调试Java程序的一些小技巧

    Created by Jerry Wang, last modified on Sep 11, 2015 1. 条件断点 选中断点,enable Conditional,以下图为例,意思是当j == ...

  4. 使用gdb调试运行时的程序小技巧 -转

    下面介绍我调试时经常遇到的三种问题,如果大家也有类似的问题交流一下解决方法: 情景1:在不中止程序服务的情况下,怎么调试正在运行时的程序 情景2:需要同时看几个变量的值或者批量查看多个core文件的堆 ...

  5. EPSON RX8010SJ RTC 调试笔记之五, 固定周期定时中断功能 (Fixed-cycle Timer Interrupt Function)

    硬件: EPSON RX8010 SJ 功能描述: 固定周期定时中断功能 (Fixed-cycle Timer Interrupt Function) 产生一个循环周期的中断事件, 在 244.14u ...

  6. android wifi扫描间隔,[RK3399][Android7.1] 调试笔记 --- WiFi扫描周期规则

    Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83 亮屏情况: 1. 在WiFi Settings界面,无论WiFi是否有连接,固定扫描时间间隔为10s. ...

  7. Simulink Test笔记(含一些小技巧)一

    说明 本文记录simulink test在使用过程中的心得,包含使用过程中新的发现及提高测试效率的一些技巧. 本文提到的内容均基于以下运行环境: MATLAB   版本 9.3 (R2017b) Si ...

  8. MySQL笔记-免密码登录小技巧(运行参数填写skip-grant-tables)

    一般忘记密码的我们会修改/etc/my.cnf,在mysqld下面加上skip-grant-tables 然后重启,即可. 这里有个更简单的方法,今天看别的资料的时候看到的,在此记录下: 在运行的时候 ...

  9. IDEA小技巧:Debug条件断点

    今天DD给大家分享一个IDEA调试过程中的一个小技巧. 先来说说场景,你有没有碰到类似的情况,一个循环结构里,中间某一个情况可能会出错.比如下面的代码结果中,可能执行到第27次的时候,会出现问题. f ...

最新文章

  1. 二逼平横树——线段树套平衡树
  2. 手动使用cglib代理(了解)
  3. pycharm运行模型时怎么设置权重?_使用AMP和Tensor Cores得到更快速,更节省内存的PyTorch模型...
  4. SQL注入:3、无权读取information_schema库和拒绝union、order by语句
  5. 请教如何维护好iis服务器?
  6. ibm服务器维修站点,IBM 服务器维修
  7. python pip升级问题之使用代理端口
  8. java中md5校验工具,java实现MD5文件校验
  9. 传智播客java课程表,先睹为快
  10. Ubuntu20.04安装qt详细教程
  11. c语言源代码如何读取打开文件,C语言读取文件
  12. jquery实现侧边栏手风琴三级导航菜单demo
  13. AntDesignVue中Table表格嵌套子表格expandedRowRender插槽用法
  14. linux 下 批量添加后缀名,Linux 下批量修改后缀名
  15. python可以实现什么炫酷图形吗_我是Python小玩家,一行代码能做哪些炫酷的事情?...
  16. 获取表单 input框中输入的值
  17. 状态的进行中、未开始、已结束状态的排序
  18. 关于电荷放大器的问题
  19. C语言程序设计的出版人,《出版科学》2018年(第1—6期)年度索引-图书情报知识-武汉大学.PDF...
  20. windows c api手册

热门文章

  1. 初识linux以及bash的部分使用及技巧
  2. hihoCoder #1182 欧拉路·三 (变形)
  3. rails3 Bundle简介
  4. mysql和Oracle 备份表
  5. 树莓派3B用Ubuntu MATE安装ros
  6. 配置CentOS的网络环境
  7. opencv+python机读卡识别(四)百度API进行数字识别
  8. Java Lambda表达式初探
  9. mysql错误用法insert into where
  10. TX Text Control文字处理教程