天嵌 ARM开发社区

 找回密码
 注册
查看: 2875|回复: 11

求助!!关于定时的问题

[复制链接]
Mars 发表于 2009-12-28 16:35:22 | 显示全部楼层 |阅读模式
我在VS2008下无论是用OnTimer()   还是用timeSetEvent()制作的秒表   到板子上运行的时候不准   在板子上速度走的比较快。。。(大概快2倍多)
----------------------------------------------------------------------   
.h
class MixWork : public CDialog
{
public:
        UINT m_TimID;
        Yu_Input My_Input;
protected:
        virtual void OnMMTimer();//声明要回调的成员方法
        //作为回调函数的静态方法
        static void CALLBACK TimerCallBack(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
        {
                MixWork * pThis=(MixWork*)dwUser;//由this指针获得实例的指针
                pThis->OnMMTimer();//调用要回调的成员方法
        }
}
----------------------------------------------------------------------
.cpp
void MixWork::OnBnClickedSure()
{
        // TODO: Add your control notification handler code here
        //::SetTimer(GetSafeHwnd(),1,100,NULL);(这是之前使用OnTimer() 留下的)
        TIMECAPS   tc;     
        //定义分辨率     
        UINT   wAccuracy;  
        if(timeGetDevCaps(&tc,sizeof(TIMECAPS))==TIMERR_NOERROR)
        {
                //分辨率的值不能超出系统的取值范围     
                wAccuracy=min(max(tc.wPeriodMin,  1),tc.wPeriodMax);     
                 //调用timeBeginPeriod函数设置定时器的分辨率     
                 timeBeginPeriod(wAccuracy);     
                 //设置定时器      
        }
        m_TimID=timeSetEvent(1000,0,&TimerCallBack,(DWORD)this,1);
}
void MixWork::OnMMTimer()
{  
                if (m_alls==59)
                {
                        m_alls=0;//秒
                        if (m_allm==59)
                        {
                                ++m_allH;//小时               
                                                          m_allm=0;//分       
                        }
                        else
                        {
                                ++m_allm;
                        }
                }
                else
                {
                        ++m_alls;
                }
        CDialog::UpdateData(FALSE);
}
--------------------------------------------------------
老大们帮帮忙~~~   我用OnTimer() 做也是快2倍多   ,我还用OnTimer() 做了个直接在PC上运行的Damo  效果很好
 楼主| Mars 发表于 2009-12-28 17:19:16 | 显示全部楼层
对了  CPP中还得加入
#include <mmsystem.h>
#pragma comment (lib, "mmTimer.lib")
 楼主| Mars 发表于 2009-12-29 17:06:42 | 显示全部楼层
个人觉得是硬件的原因,貌似timeSetEvent取得得值依赖于驱动(应该是吧),我把程序重新编译成M8的程序到M8上看了下   结果。。。      同样的程序在TQ2440 和 M8上效果居然非常不一样。。。。
无可奈何   只好把定时部分乘以了个2.28。。。。。。
亚瑟王 发表于 2009-12-31 10:27:25 | 显示全部楼层
不好意思,这几天忙于制作视频教程,没来得及更新论坛。
按照你说的,可能和驱动中时钟设置有关系,这个我没有测试过,把你测试代码贴出来我测试一下了。
 楼主| Mars 发表于 2010-1-4 10:38:30 | 显示全部楼层
4# 亚瑟王

这几天放假   所以没看帖子:)
 楼主| Mars 发表于 2010-1-4 10:52:41 | 显示全部楼层
4# 亚瑟王
貌似DAMO不能传上来   加我QQ吧    我把Damo 发给你    其实代码就跟我上面写的差不都    我做了2个DAMO  一个在PC上的  运行良好  一个在板子上的   运行偏快  我QQ号 512278732
 楼主| Mars 发表于 2010-1-4 11:22:04 | 显示全部楼层
4# 亚瑟王

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| Mars 发表于 2010-1-4 12:09:48 | 显示全部楼层
4# 亚瑟王

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| Mars 发表于 2010-1-4 12:41:53 | 显示全部楼层
5# Mars

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

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

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-19 17:33 , Processed in 1.062500 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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