Wince的時間精度問題

2021-06-22 03:43:58 字數 940 閱讀 4100

getsystemtime()或getlocaltime(),在wince最多精確到秒級的精度, 那是因為在嵌入式系統裡面,系統的時間是由rtc(一般是在cpu內部的乙個硬體邏輯)來保持的,它是以秒為單位,每過一秒就自加1來計時.所以它的精確 範圍只能到秒.這點你可以在很多bsp的kernel裡檢視oemgetrealtime()函式的實現就知道了. 當你呼叫api:getsystemtime()或getlocaltime()時,kernel會呼叫oemgetrealtime()函式來返回給你 結果.而在oemgetrealtime()裡面,基於上述的原因,把ms=0.所以你只能得到秒級的精確度.

我不清楚pc上是怎麼實現這個函式的,但肯定是和硬體相關的

一 般的cpu還會有一部分叫ostimer的邏輯功能,它能夠提供類似rtc,但是是毫秒精度的計時.在wince裡,kernel有乙個curmsec變 量,這個變數時以毫秒為單位,來儲存系統從啟動到現在執行了多長時間.實際上curmsec這個變數是靠ostimer來計算的.當你呼叫 gettickcount()時,系統會把curmsec的值返回給你,你可以通過在做某次動作的前後各呼叫gettickcount()獲得乙個時間 差,就是你執行這次動作消耗的時間, 它是毫秒精度的.

wince 微秒、毫秒級延時函式

//wince 微秒級延時函式

void delay_us(int n)

dffreq = (double)litmp.quadpart;

queryperformancecounter(&litmp);

qpart1 = litmp.quadpart;

do while(dftim <0.000001*n);

} //毫秒級的延時函式

void delay_ms(dword tmp_time) }

www.lirenedu.org

WinCE顯示系統時間

獲取系統時間,主要用到兩個函式 void getsystemtime lpsystemtime lpsystemtime void getlocaltime lpsystemtime lpsystemtime lpsystemtime是乙個指向systemtime結構體的指標,函式執行完畢後,獲取的...

精度處理的問題

1.浮點數為啥會有精度問題 浮點數 以 c c 為準 一般用的較多的是 float,double。佔位元組數 數值範圍 十進位制精度位數 float 4 3.4e 38 3.4e38 6 7double 8 1.7e 308 1.7e308 14 15 如果記憶體不是很緊張或者精度要求不是很低,一般...

wince的幾個記憶體問題

關於wince的記憶體問題一直有些混亂,最近看了網上幾篇文章,在這裡總結梳理一下。記憶體第一次對映關係,是定義在 oemaddresstable 裡,這裡通過arm的mmu實現了實體地址到虛擬位址的對映,因此只要mmu開啟,這個對映關係就會一直存在。對於wince而言,只能訪問到這裡的virtual...