智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2834|回复: 7
打印 上一主题 下一主题

[编程类] 代码执行时间如何知道?

[复制链接]

0

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
威望
185
贡献
22
兑换币
0
注册时间
2009-2-26
在线时间
11 小时
跳转到指定楼层
#
发表于 2009-5-10 10:32:23 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
1贡献
请问如何能够知道你的代码的处理时间是否超过20ms?

最佳答案

查看完整内容

可以在需要测量执行时间的程序前启动一个定时器,程序最后停止计数,然后就可以求到执行时间。 e.g.: void timing(void) { computational_time = timervalue_end - timervalue_start / timer_clockcycle; } startTimer(); funct(); stopTimer(); timing();

7

主题

262

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2478
威望
499
贡献
1803
兑换币
0
注册时间
2009-5-12
在线时间
88 小时
7#
发表于 2009-5-17 10:02:42 | 只看该作者
timervalue_end - timervalue_start 是S12单片机计数器在代码执行时间内的计数次数,
再除以计数器工作频率timer clock cycle,得到的computational time就是代码的精确执行时间了。
如果timer clock cycle的单位是MHz,如unsigned char timer clock cycle = 32 (MHz),则computational time变量的单位是1/MHz, 即us。

20ms的话,如果得到的computational time变量大于20000,则代码执行时间超过20ms。
回复

使用道具 举报

0

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
威望
185
贡献
22
兑换币
0
注册时间
2009-2-26
在线时间
11 小时
6#
 楼主| 发表于 2009-5-16 22:15:13 | 只看该作者
我觉得楼上的方法好啊!!!
回复

使用道具 举报

1

主题

28

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
威望
200
贡献
30
兑换币
0
注册时间
2009-2-7
在线时间
31 小时
5#
发表于 2009-5-14 20:26:50 | 只看该作者
示波器,看执行周期!
回复

使用道具 举报

0

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
威望
185
贡献
22
兑换币
0
注册时间
2009-2-26
在线时间
11 小时
4#
 楼主| 发表于 2009-5-13 22:57:44 | 只看该作者
非常感谢,最近电信发神经,不能上网,刚好,感谢迟了,见谅!
回复

使用道具 举报

0

主题

29

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
426
威望
288
贡献
80
兑换币
58
注册时间
2009-1-12
在线时间
29 小时
3#
发表于 2009-5-11 19:04:17 | 只看该作者
谢谢
回复

使用道具 举报

0

主题

33

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
468
威望
335
贡献
71
兑换币
18
注册时间
2008-12-6
在线时间
31 小时
2#
发表于 2009-5-10 12:34:18 | 只看该作者
可以看看http://blog.eccn.com/u/146002/archives/2009/12438.htm,whut_wj写的挺详细的
回复

使用道具 举报

7

主题

262

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2478
威望
499
贡献
1803
兑换币
0
注册时间
2009-5-12
在线时间
88 小时
1#
发表于 2009-5-10 10:32:24 | 只看该作者
本帖最后由 peilet 于 2009-5-17 10:04 编辑

可以在需要测量执行时间的程序前启动一个定时器,程序最后停止计数,然后就可以求到执行时间。

e.g.:

void timing(void)
{
    computational_time = timervalue_end - timervalue_start / timer_clockcycle;
}



startTimer();
funct();
stopTimer();
timing();
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-27 15:26 , Processed in 0.247173 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表