28335的CPU定时器解析
?
聲明:本文的主要內容來自TI公司的參考指南《TMS320x2833x, 2823x System Control and Interrupts Reference Guide》,附帶一小部分本人對該模塊的理解,水平有限,僅供參考.
?
一、簡介:
28335的CPU TIMER有三個,CPU-Timer 0 、CPU-Timer 1 、?Timer 2 。Timer 2 是給DSP/BIOS操作系統保留的, 如果用戶沒有使用操作系統,那么Timer 2可以當作普通的CPU定時器使用。這三個定時器的中斷信號分別為TINT0, TINT1, TINT2,分別對應于中斷向量INT1,INT13,INT14。如下圖所示,可以看出,TINT0是經過PIE的,而TINT1/.是不經過PIE的。
二、工作原理
定時器的結構框圖如下:
?
?
簡單描述如下:在SYSCLKOUT時鐘信號的驅動下,當預分配計數器(PSCH:PSC)的值大于0的時候,每來一個脈沖,預分配計數器的值就減1,當預分配計數器中的值減到0
的時候,自動將(TDDRH:TDDR)中的值裝載到預分配計數器中,同時,產生一個脈沖輸出,在這個脈沖的作用下,32位計數器(TIMH:TIM)中的值也會減1,當減到0的時候,自動將32位周期寄存器(PRDH:PRD)中的值裝載到32位計數器(TIMH:TIM)中,同時產生一個中斷信號。
三、相關寄存器
每個定時器寄存器類似,以定時器0為例
總結一下就是下圖:
比較怪異的是PSCH和PSC并沒有放到一個16位寄存器中,而是分別拆開放到了兩個寄存器中;TDDRH和TDDR同理。但是芯片廠家就是這么設計的,你只管用就好了。
下面把TI對各個寄存器的介紹粘貼了過來,每個寄存器的功能在原理分析的時候都講的差不多了,這里就不一一分析了
單獨講一下控制寄存器吧:
TIF(中斷標志位):當計數器減到0的時候,該位自動置1,寫1清零
TIE(中斷使能位):寫0禁止,寫1使能
FREE、SOFT:這兩位是仿真模式位,決定了在高級語言仿真中遇到斷電時定時器的狀態。如果FREE位為1,則在遇到斷點的時候,定時器繼續運行(自由運行)。在這種情況下,不管SOFT位的狀態;若FREE為0,當SOFT是0則立馬停止計數;當SOFT是1則當(TIMH:TIM)減到0的時候停止計數。
TRB:重裝位,寫一的時候將PRDH:PRD的值裝載到TIMH:TIM,將TDDRH:TDDR的值裝載到PSCH:PSC。讀該位時,總是0
TSS:(停止狀態位) :寫0開始計數,置1停止計數。當復位時,該位為0,立即開始計數。
?
四、CPU定時器的使用
首先解讀一下官方的定時器配置函數
[html]?view plain?copy
通過以上分析,可以看出SYSCLKOUT沒有經過預分頻(分頻系數為1)直接驅動計數器。
所以如下配置就是每1S產生一次中斷,因為當時鐘不分頻的時候定時時間time =Freq*Peroid/SYSCLKOUT,這個就不多解釋了。
?ConfigCpuTimer(&CpuTimer0, 150, 1000000);
?
?
配置完了定時器之后,需要配置PIE中斷,寫定時器中斷服務函數,開CPU級中斷,最后開始計數就可以了。
具體的可以參考官方的歷程。
?
?
文章標簽:?DSP28335CPU TIMER
相關熱詞:?28335波特率?28335串口?28335存儲器?28335捕獲?28335的ad
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的28335的CPU定时器解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Deep-Learning-with-P
- 下一篇: CCS5.5环境下使用clock()函数