首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

编写wince的底层驱动应该如果实现比较精确的uS、mS级延时呢?解决方案

2012-02-03 
编写wince的底层驱动应该如果实现比较精确的uS、mS级延时呢?比如我想一个GPIO先设为高电平,2uS后就变成低电

编写wince的底层驱动应该如果实现比较精确的uS、mS级延时呢?
比如我想一个GPIO先设为高电平,2uS后就变成低电平。

[解决办法]
用Winbase.h中的QueryPerformanceFrequency、QueryPerformanceCounter 试试看。
[解决办法]
1. WinCE 下是沒有 us 等級的 delay function.
2. Sleep(X) 只能保證最短 delay X ms, 沒法保證一定是剛好是 X ms (與 thread priority 有關).
3. 用一個 for loop 做 delay, 建議在 loop 中加讀取 io 的程式碼, 它的 delay 時間較不會隨最佳化或是 core clock 變更而改變.
4. 若真是那麼 time critical, 建議用一個 hardware timer, 將其寫成 installable isr, 在 driver 中將資料準備好, 在 iisr 中將資料的每個 bit 送出, 待 packet 送完後再返回 sysintr, 通知 driver 的 ist 己將該 packet 送出完成.
5. 接收要怎麼做呢?? 直接拉 gpio 中斷好了.

Paul, Chao @ Techware


[解决办法]

探讨
因为有些芯片既不是IIC控制方式,也不是SPI方式,这种情况我应该怎么样编写WinCE驱动呢。这样我就需要一个uS级的延时,当然延时时间太长和太短都不行。

[解决办法]
探讨
1. WinCE 下是沒有 us 等級的 delay function.
2. Sleep(X) 只能保證最短 delay X ms, 沒法保證一定是剛好是 X ms (與 thread priority 有關).
3. 用一個 for loop 做 delay, 建議在 loop 中加讀取 io 的程式碼, 它的 delay 時間較不會隨最佳化或是 core clock 變更而改變.
4. 若真是那麼 time critical, 建議用一個 hardware timer, 將其寫成 installable isr, 在 driver 中將資料準備好, 在 iisr 中將資料的每個 bit 送出…

热点排行