版块
论坛
喜欢
话题
应用
搜索
登录
注册
luxiao013的个人空间
访问量
0
新鲜事
帖子
资料
http://bbs3.driverdevelop.com/index.php?m=space&uid=106070
应用程序需要微妙级的延时,请问有什么好的方法。
我想在应用程序中调用微妙级的延时函数,不知道如何实现。并且还想在某一个循环内保证当前线程的实时性,即始终占有cpu,不被轮询出去,请问在evc中如何实现,谢谢!
回复
(
5
)
2005-05-21 21:36
来自版块 -
Wince 程序开发
◆
◆
表情
告诉我的粉丝
提 交
wxl_50685330
:
不好意思,我没有现成的例子,不过CE下在应用中访问硬件和驱动中是一样的,首先确定你的TIMER的内部寄存器物理地址,0X12345678,然后使用VIRTUALALLOC和VIRTUALCOPY将其映射成虚拟地址,然后就可以直接控制了,这是前不久的帖子,你可以参考: h...
(2005-05-25 10:10)
回复
luxiao013
:
非常感谢wxl_50685330大哥的细心讲解。 我的平台是s3c2410+wince.net 4.2。 我都是想在evc开发的应用程序中使用,并不想在驱动中用。想看看示例代码以后有这样的问题也好自己解决了。
(2005-05-25 08:30)
回复
wxl_50685330
:
1.访问硬件TIMER确实需要直接操作其内部寄存器,不过不一定要用汇编,你可以使用你的硬件TIMER的内部寄存器地址直接访问,在驱动中这个地址需要映射成虚拟地址,具体怎么做需要看你使用的平台以及硬件TIMER的设计(是单独的片子还是SOC内部设备) 2.提升优先级和关中断都...
(2005-05-24 13:08)
回复
luxiao013
:
1.使用硬件定时器延时,是否要在evc中直接访问定时/计数寄存器?或者还需要汇编实现,以前我没做过单片机,大哥您能不能给出一段伪代码或示例代吗? 2.提升优先级可以用api实现吧? 直接关中断应该也需要直接操作硬件寄存器吧?一到操作硬件这一块我就发懵,您能不能也给出一段示...
(2005-05-24 08:42)
回复
wxl_50685330
:
你可以使用硬件TIEMER来做微秒级延迟 满足实时性可以有几种选择: 1.你可以提升该线程的优先级到实时优先级。这样做仍然会调度,只是如果没有优先级更高的任务将不会被换出 2.你可以直接关闭中断,直到你认为可以释放CPU,这样你的线程确实始终占有处理器,连调度都不会有。
(2005-05-23 16:12)
回复
luxiao013
加关注
写私信
0
关注
0
粉丝
6
帖子
返回顶部