当前位置: 代码迷 >> WinCE >> WINCE 如何能做到150ms,正负不超过50ms的定时器(每次响应都不能超过50ms这个误差)!
  详细解决方案

WINCE 如何能做到150ms,正负不超过50ms的定时器(每次响应都不能超过50ms这个误差)!

热度:88   发布时间:2016-04-28 12:22:49.0
WINCE 怎么能做到150ms,正负不超过50ms的定时器(每次响应都不能超过50ms这个误差)!!
情况是这样的, WINCE机器与另外一个连接的设备, 确保要在100~200毫秒之间,通过串口,发送几个字节的握手数据.  只要某次超过200毫秒 ,就认为超过,设备故障. 然后起动安全措施 .

正常情况下,WINCE机器是没有问题,但在播放高清影片,操作触摸屏时, 不管是用CreateTimer还是CreateThread方法,都无法保证这个TIMER和线程在200毫秒之内,每次都能被调度.

所以想用芯片的硬件定时器. 说一下WINCE 6.0 机器配置
TELECHIP ARM11  TCC8902  跑720M.

现在就是要150毫秒发握手数据,误差不能超过50ms..


拜托各位大神指点!

------解决方案--------------------
我觉得能否通过调高你这个线程的优先级来解决呢?毕竟你这个实时性要求不是太高
------解决方案--------------------
使用多媒体定时器试试,Timer 是满足不了你的要求的
------解决方案--------------------
使用CPU定时器就OK
------解决方案--------------------
当时是进中断把程序入口地址(PUSH)返回时就可以多一次了。第一次返回你压进去的地址,第2次返回正常RTI该返回的地址。我是用汇编实现的。
------解决方案--------------------
1. 除非你的BSP有 bug, 不然 1L 的解答設定 priority 絕對是可行的 (CeSetThreadPriority), 建議LZ可以先試試看將其設定為 0. 
2. 因為系統中有許多 thread 在跑, 故每個 thread priority 要如何設定是一門學問, 有時你系統的穩定度就與它相關.

Paul, Chao @ Techware
  相关解决方案