CPU定時器工作原理分析
可以由圖看出有幾個寄存器:
- 32位的定時器週期寄存器
PRDH:PRD
- 32位的計數器寄存器
TIMH:TIM
- 16位的定時器分頻器寄存器
TDDRH:TDDR
- 16位預定標計數器
PSCH:PSC
解釋:
XH:X
形式表示寄存器的方式- 因爲X281x DSP的寄存器都是16位的,而CPU定時器是32位的,所以需要將2個16位的寄存器XH和X來表示32位的寄存器(XH表示高16位,X表示低16位)
- 通過圖我們可以類比的看出它其實有點想兩層
for
循環,即如下所示int i,j; for(i=0; i<100; i++) for(j=0; j<100; j++) {...}
下圖或許更能看出這種關係,上面框框爲外循環,下面框框爲內循環
在上面那個框中,在CPU定時器工作前,先根據需要計算好CPU定時器週期寄存器的值,然後給PRDH:PRD
賦值,相當於for循環中的i=100
。開始工作時將PRDH:PRD
的值裝載入TIMH:TIM
,然後沒來一個脈衝,減一,然後判斷是否爲0,則一直遞減,當爲0時輸出一箇中斷信號。所以一個CPU定時器週期所經歷的時間爲:(PRDH:PRD+1)*TIMCLK
而計數器存儲器TIMH:TIM
多久減1是由下面框中PSCH:PSC
多久爲0決定。同理可以得出TIMCLK = (TDDRH:TDDR+1)*SYSCLKOUT
綜上,假設系統時鐘SYSCLKOUT
的值爲X
(單位爲MHz),那麼CPU定時器一個週期所計量的時間爲T = (PRDH:PRD+1)*(TDDRH:TDDR+1)/ (X*10^6)
(單位爲s)