世俱杯 2025

登录 免费注册 世俱杯 2025 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

C语言如何获得精确的程序执行的时间

作者:szhaochong 栏目:嵌入式系统
C语言如何获得精确的程序执行的时间
给电容充电,充至额定值为止。充电时间是毫秒级,甚至更短。difftime( finish, star)得到的时间是秒级的,不能满足精度。请问有什么解决办法?多谢指教!

2楼: >>参与讨论
ecurb2006
gettimeofday()
/*
需要的头文件: <sys/time.h>
int gettimeofday(struct timeval *tv,struct timezone *tz);

strut timeval {
LONG tv_sec; /* 秒数 */
LONG tv_usec; /* 微秒数 */
};

timezone 一般我们不关注,将设为 NULL 就可以了。


*/

#include <sys/time.h>
void function(void); /* your function */

int main(void)
{
struct timeval fun_start,fun_end;
gettimeofday(&fun_start,NULL);
function();
gettimeofday(&fun_end,NULL);
return 0;
}
/* 你完成你自己的 function ,然后试试看 */

微型嵌入式GUI 开发者
blog.csdn.net/ecurb2006

* - 本贴最后修改时间:2007-1-6 18:04:06 修改者:ecurb2006

3楼: >>参与讨论
szhaochong
多谢指教
多谢ecurb2006

4楼: >>参与讨论
ecurb2006
呵呵
多多交流,共同进步!




微型嵌入式GUI 开发者

急需资金,转让个人作品。 欢迎给我投资。
support@ecurb2006.com

* - 本贴最后修改时间:2007-1-7 13:41:03 修改者:ecurb2006

5楼: >>参与讨论
szhaochong
再请教ecurb2006
我在  Win tc 1.91  环境下输入程序,可是系统提示“无法打开包含文件‘sys/time.h'”。  请问这个头文件要自己添加还是win tc 没有这个功能?

6楼: >>参与讨论
ecurb2006
呵呵
sys/time.h 一般是 Linux/Unix 里的头文件

你的情况应该这样用

struct time tm;
gettime(&tm);

相关结构定义如下
-----------------------------------
struct  time    {
    unsigned CHAR   ti_min;     /* Minutes */
    unsigned CHAR   ti_hour;    /* Hours */
    unsigned CHAR   ti_hund;    /* Hundredths of seconds */
    unsigned CHAR   ti_sec;     /* Seconds */
};
---------------------------------------
如果还提示有误,那么 #include "dos.h"
就应该没问题了.

>给电容充电,充至额定值为止。充电时间是毫秒级,甚至更短。
你是在搞 DOS 应用,对吧 ?

微型嵌入式GUI 开发者
blog.csdn.net/ecurb2006



* - 本贴最后修改时间:2007-1-9 21:59:00 修改者:ecurb2006

7楼: >>参与讨论
szhaochong
请允许我叫你一声:大哥!
佩服!我用的是ICOP-6054VE,操作系统确实是DOS。老师不久前刚给的课题,好多地方不懂,还望多多指教!我的QQ:94431038,不介意的话请加我。“struct time tm; gettime(&tm);”  这种用法能精确到毫秒级吗?先前我打算用它,但觉得它精确度可能达不到要求就没用。


8楼: >>参与讨论
ecurb2006
可以
struct  time    {
    unsigned CHAR   ti_min;     /* Minutes */
    unsigned CHAR   ti_hour;    /* Hours */
    unsigned CHAR   ti_hund;    /* Hundredths of seconds */
    unsigned CHAR   ti_sec;     /* Seconds */
};
里面的 ti_hund 就是你需要的.

如果你需要更高的,可以去改变 DOS 的时钟,呵呵,在 DOS 编写游戏时最常用的.uC/OS-II 在x86的演示包,好像也是修改这个时钟中断的.

DOS 下还有一个 eRTOS 的实时操作系统,你自己找找资料吧.
会有帮助的.


微型嵌入式GUI 开发者
blog.csdn.net/ecurb2006


* - 本贴最后修改时间:2007-1-11 16:01:11 修改者:ecurb2006

9楼: >>参与讨论
zzty
又多学了一招~~~
 
10楼: >>参与讨论
jxfeifei
定时器啊
用定时器编一个不是很精确吗?

参与讨论
昵称:
讨论内容:
 
 
相关帖子
USB的总线挂起时,其电流是不是小于280uA???
gcc编译arm的数据段长度的问题
有关usb otg方面的问题,还请高手指教,谢谢
lpc2119的IAP问题
有那位大侠知道.S19的文件格式如何转换成H32格式


Copyright © 1998-2006 tgdrjb.cn 浙ICP证030469号