打印
[DemoCode下载]

测量单片机程序运行时间

[复制链接]
1616|47
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mikewalpole|  楼主 | 2024-9-28 09:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

1、使用编译器keil

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

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

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

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

0.02614-0.01614=0.01s=10ms   即为当前代码行运行时间(定时为10ms)


使用特权

评论回复
沙发
呐咯密密| | 2024-9-28 14:30 | 只看该作者
这个功能有时候启动不了

使用特权

评论回复
板凳
micoccd| | 2024-9-28 14:38 | 只看该作者
这个功能很实用,

使用特权

评论回复
地板
药无尘| | 2024-9-28 14:49 | 只看该作者
这个只能做参考,

使用特权

评论回复
5
我想看大海| | 2024-9-28 15:00 | 只看该作者
一般都是用高低电平和示波器

使用特权

评论回复
6
黑心单片机| | 2024-9-28 15:18 | 只看该作者
这个一定要注意晶振的大小

使用特权

评论回复
7
jasontu| | 2024-10-3 09:15 | 只看该作者
拿一个timer开中断计数器,就可计算时间

使用特权

评论回复
8
youtome| | 2024-10-7 14:05 | 只看该作者
初始化计时器(设置计数模式、预分频值等)。
启动计时器。
执行你的程序代码。
停止计时器。
读取计时器的值。
根据计时器的时钟频率计算出程序运行的时间。

使用特权

评论回复
9
gygp| | 2024-10-7 15:39 | 只看该作者
在待测程序段的开始和结束处,通过改变一个GPIO的状态(例如,从高电平变为低电平),然后使用逻辑分析仪或示波器测量这个GPIO状态变化的持续时间,从而得到代码的运行时间。这种方法准确度高,但需要额外的硬件设备。

使用特权

评论回复
10
youtome| | 2024-10-7 18:05 | 只看该作者
可以使用软件循环计数的方法来粗略估计程序运行时间,但这种方法通常不够精确。

使用特权

评论回复
11
robertesth| | 2024-10-8 09:59 | 只看该作者
在程序的关键位置输出一个脉冲信号(例如,通过一个IO口)。
使用逻辑分析仪或示波器捕捉这个脉冲信号。
通过测量脉冲之间的时间间隔来得到程序运行时间。

使用特权

评论回复
12
sdCAD| | 2024-10-8 12:28 | 只看该作者
一些高级的单片机开发环境和编译器提供了代码性能分析工具。这些工具可以在编译程序时或者在程序运行时对代码进行分析,获取程序各个部分的运行时间信息。

使用特权

评论回复
13
ccook11| | 2024-10-8 19:14 | 只看该作者
避免在测量期间进行任务切换或多任务操作,这可能会影响测量结果的准确性。

使用特权

评论回复
14
bartonalfred| | 2024-10-9 09:31 | 只看该作者
配置一个GPIO引脚为输出模式,并在待测程序段前后改变其状态。
使用逻辑分析仪或示波器测量GPIO引脚状态变化的时间间隔。

使用特权

评论回复
15
averyleigh| | 2024-10-9 11:33 | 只看该作者
使用外部计时器或频率计来测量程序段的运行时间。
当程序段开始时启动外部计时器,结束时停止计时器。

使用特权

评论回复
16
1988020566| | 2024-10-9 13:15 | 只看该作者
配置定时器中断,使其每毫秒触发一次。
在中断服务程序中累加一个全局变量。
在待测程序段前后分别记录全局变量的值。
计算两个值的差,得到程序运行时间。

使用特权

评论回复
17
jonas222| | 2024-10-9 15:39 | 只看该作者
利用单片机内部的定时器来记录程序段的开始和结束时间。
启动定时器,当程序段开始执行时清零计数器。
程序段执行完毕后,读取定时器的值,得到运行时间。

使用特权

评论回复
18
ulystronglll| | 2024-10-9 19:40 | 只看该作者
定时器的分辨率决定了可以测量的最短时间间隔。选择合适的定时器配置以满足测量需求。

使用特权

评论回复
19
菜鸟的第一步| | 2024-10-10 14:31 | 只看该作者
我一般用示波器测量

使用特权

评论回复
20
sesefadou| | 2024-10-11 09:06 | 只看该作者
这是最直接的方法之一。大多数单片机都有内置的定时器/计数器,可以用来测量时间间隔。以下是基本步骤:

在待测程序段的开始启动定时器。
在待测程序段的结尾关闭定时器。
读取定时器的计数值,这个值代表了定时器启动和停止之间的时间间隔。
为了提高准确性,可以进行多次测量并取平均值。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

1385

帖子

0

粉丝