怎样测量单片机程序的运行时间?

b322aad28be8e45eb7d16d924428e28f.png

有时我们需要知道自己的单片机程序需要花费多长时间,delay延时的精确时间等。今天来介绍几种测量程序运行时间的方法。

1.单片机内部定时器

使用单片机内部定时器,在待测程序段的开始启动定时器,在待测程序段的结尾关闭定时器。如下:

3de8a34b09e231d1f3d6a37fe3636ab2.png

为了测量的准确性,要进行多次测量,并进行平均取值。另外,如果待测程序耗时较长,要考虑定时器的溢出。

2.借助外部工具

如果你的程序没有多余的定时器可用,那可以借助外部工具来测量。在待测程序开始时将一个GPIO置高,在待测程序结束时将GPIO置低。用示波器或者其他设备测量高电平的持续时间即可。

3.使用编译器

在线仿真时,编译器也可以帮你计算程序运行时间。在Keil中,工程设置中“Debug”下。点击Setting:

b32919e2977789ad76289f55d6c76d10.png

选择Trace,输入单片机系统时钟,以STM32F103为例,输入72MHz,勾选Trace Enable。(Keil的Trace功能还有更多实用功能,后面将详细讲解)

a9beabf2b1798e76c1130df0077e972e.png

点击确定。点击14a8ee97aed17d8e71b87d2fe2691693.png进入Debug模式,右下角会出现程序运行的时间。

30c685a47155086384a5777c9c37c071.png

在待测代码前后各加入一个断点,记录两个断点的t1时间,两个时间差即为待测代码运行所需的时间。

在IAR中,可以通过查看CYCLECOUNTER(在CPU registers中)的值,计算两个断点的差值,乘以指令周期(MCLK)便是待测代码的运行时间。

e1b643605287a4f3dcec187d6171530b.png

推荐阅读:

STM32CubeMX系列教程

STM32HAL库移植FreeModbus协议(含源码)

Modbus常用功能码协议详解

STM32使用CMSIS DSP库

   欢迎关注公众号"嵌入式技术开发",大家可以后台给我留言沟通交流。如果觉得该公众号对你有所帮助,也欢迎推荐分享给其他人。

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值