我想在应用程序中调用微妙级的延时函数,不知道如何实现。并且还想在某一个循环内保证当前线程的实时性,即始终占有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_506853301.访问硬件TIMER确实需要直接操作其内部寄存器,不过不一定要用汇编,你可以使用你的硬件TIMER的内部寄存器地址直接访问,在驱动中这个地址需要映射成虚拟地址,具体怎么做需要看你使用的平台以及硬件TIMER的设计(是单独的片子还是SOC内部设备) 2.提升优先级和关中断都...(2005-05-24 13:08)
luxiao0131.使用硬件定时器延时,是否要在evc中直接访问定时/计数寄存器?或者还需要汇编实现,以前我没做过单片机,大哥您能不能给出一段伪代码或示例代吗? 2.提升优先级可以用api实现吧? 直接关中断应该也需要直接操作硬件寄存器吧?一到操作硬件这一块我就发懵,您能不能也给出一段示...(2005-05-24 08:42)
wxl_50685330你可以使用硬件TIEMER来做微秒级延迟 满足实时性可以有几种选择: 1.你可以提升该线程的优先级到实时优先级。这样做仍然会调度,只是如果没有优先级更高的任务将不会被换出 2.你可以直接关闭中断,直到你认为可以释放CPU,这样你的线程确实始终占有处理器,连调度都不会有。(2005-05-23 16:12)

返回顶部