![142812DSP09CPU定時(shí)器總結(jié)教學(xué)_第1頁(yè)](http://file4.renrendoc.com/view6/M01/15/1F/wKhkGWehkleAb9XNAADCxfv8_Rc090.jpg)
![142812DSP09CPU定時(shí)器總結(jié)教學(xué)_第2頁(yè)](http://file4.renrendoc.com/view6/M01/15/1F/wKhkGWehkleAb9XNAADCxfv8_Rc0902.jpg)
![142812DSP09CPU定時(shí)器總結(jié)教學(xué)_第3頁(yè)](http://file4.renrendoc.com/view6/M01/15/1F/wKhkGWehkleAb9XNAADCxfv8_Rc0903.jpg)
![142812DSP09CPU定時(shí)器總結(jié)教學(xué)_第4頁(yè)](http://file4.renrendoc.com/view6/M01/15/1F/wKhkGWehkleAb9XNAADCxfv8_Rc0904.jpg)
![142812DSP09CPU定時(shí)器總結(jié)教學(xué)_第5頁(yè)](http://file4.renrendoc.com/view6/M01/15/1F/wKhkGWehkleAb9XNAADCxfv8_Rc0905.jpg)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第9講281xCPU定時(shí)器281x中斷系統(tǒng)9.1概述定時(shí)器是用來(lái)準(zhǔn)確控制時(shí)間的。X281x芯片內(nèi)部具有3個(gè)32位CPU定時(shí)器:
Timer0、Timer1、Timer2。用戶(hù)能用的定時(shí)器:Timer0。281x中斷系統(tǒng)9.2CPU定時(shí)器內(nèi)部結(jié)構(gòu)281x中斷系統(tǒng)CPU定時(shí)器工作示意圖281x中斷系統(tǒng)CPU定時(shí)器中斷F2812/10PIEInterruptAssignmentTableINTx.8INTx.7INTx.6INTx.5INTx.4INTx.3INTx.2INTx.1INT1WAKEINTTINT0ADCINTXINT2XINT1PDPINTBPDPINTAINT2T1OFINTT1UFINTT1CINTT1PINTCMP3INTCMP2INTCMP1INTINT3CAPINT3CAPINT2CAPINT1T2OFINTT2UFINTT2CINTT2PINTINT4T3OFINTT3UFINTT3CINTT3PINTCMP6INTCMP5INTCMP4INTINT5CAPINT6CAPINT5CAPINT4T4OFINTT4UFINTT4CINTT4PINTINT6MXINTMRINTSPITXINTASPIRXINTAINT7INT8INT9SCITXINTBSCIRXINTBSCITXINTASCIRXINTAINT10INT11INT12ECAN0INTECAN1INT281x中斷系統(tǒng)9.3CPU定時(shí)器寄存器TIMERxTIM寄存器(x=0,1,2)CPU定時(shí)器計(jì)數(shù)寄存器中的低16位。TIMH寄存器含32位計(jì)數(shù)值中的高16位。每過(guò)TDDRH:TDDR+1個(gè)時(shí)鐘時(shí)TIMH:TIM就減1。減到0時(shí)保存在PRDH:PRD寄存器中的周期值被重載入TIMH:TIM寄存器,同時(shí)產(chǎn)生定時(shí)器中斷TINT信號(hào)。TIMERxTIMH寄存器(x=0,1,2)281x中斷系統(tǒng)TIMERxPRD寄存器(x=0,1,2)CPU定時(shí)器周期寄存器PRDH:PRD:PRD寄存器含32位周期值中的低16位。PRDH寄存器含32位周期值中的高16位。TIMH:TIM減到0時(shí),在下一個(gè)定時(shí)器輸入時(shí)鐘的開(kāi)始,PRDH:PRD:PRD寄存器中的周期值重新載入TIMH:TIM寄存器。當(dāng)定時(shí)器控制寄存器TCR中的TRB位置1時(shí),重載也會(huì)發(fā)生。TIMERxPRDH寄存器(x=0,1,2)281x中斷系統(tǒng)TIMERxTCR寄存器(x=0,1,2)15TIF定時(shí)器中斷標(biāo)志位,定時(shí)器每減到0后就變1,寫(xiě)1后清除。14TIE定時(shí)器中斷使能位。定時(shí)器減到0時(shí)該位置1,定時(shí)器發(fā)出中斷請(qǐng)求。11-10
FREESOFT定時(shí)器仿真模式,在高級(jí)語(yǔ)言調(diào)試環(huán)境下,如果遇到斷點(diǎn),這些位決定定時(shí)器的狀態(tài)。在遇到軟件斷點(diǎn)后,如果FREE=1,定時(shí)器繼續(xù)運(yùn)行;如果FREE=0,且SOFT=0,定時(shí)器在TIMH:TIM寄存器下一次減操作時(shí)立即停止;如果FREE=0,且SOFT=1,定時(shí)器在TIMH:TIM寄存器減到0時(shí)才停止。5TRB定時(shí)器重載位。置1時(shí),TIMH:TIM自動(dòng)將PRDH:PRD的值載入,且PSCH:PSC自動(dòng)將TDDRH:TDDR的值載入。4TSS定時(shí)器停止?fàn)顟B(tài)位。置1時(shí)定時(shí)器停止,置0時(shí)定時(shí)器開(kāi)始工作。復(fù)位時(shí)TSS為0,CPU定時(shí)器立即開(kāi)始工作。281x中斷系統(tǒng)TIMERxTPR寄存器(x=0,1,2)TIMERxTPRH寄存器(x=0,1,2)15-8PSC定時(shí)器預(yù)定標(biāo)計(jì)數(shù)器。當(dāng)PSCH:PSC大于0時(shí),每個(gè)時(shí)鐘SYSCLKOUT都使PSCH:PSC減1。減到0后的第一個(gè)時(shí)鐘會(huì)使TDDRH:TDDR的值載入PSCH:PSC,同時(shí)TIMH:TIM減1。當(dāng)TRB由軟件置1時(shí)重載也會(huì)發(fā)生。PSCH:PSC的值不能由軟件設(shè)置,只能由TDDRH:TDDR載入。復(fù)位后PSCH:PSC為0。7-0TDDRCPU定時(shí)器分頻數(shù)。每TDDRH:TDDR+1個(gè)SYSCLKOUT時(shí)鐘會(huì)使TIMH:TIM減1。復(fù)位時(shí)TDDRH:TDDR清0。PSCH:PSC為0后的第一個(gè)時(shí)鐘,或軟件將TCR寄存器中的TRB位置1時(shí)都會(huì)使TDDRH:DDR的值重新載入PSCH:PSC。281x中斷系統(tǒng)9.4CPU定時(shí)器一個(gè)周期所計(jì)量的時(shí)間假設(shè)系統(tǒng)時(shí)鐘SYSCLKOUT的值為XMHz,那么計(jì)數(shù)器每走一步,所需要的時(shí)間為:
因?yàn)镃PU定時(shí)器一個(gè)周期計(jì)數(shù)了(PRDH:PRD+1)次,因此CPU定時(shí)器一個(gè)周期所計(jì)量的時(shí)間為:
281x中斷系統(tǒng)9.5分析CPU定時(shí)器的配置函數(shù)對(duì)CPU定時(shí)器的初始化過(guò)程放在子程序InitCpuTimers()和ConfigCpuTimer()中,這兩個(gè)子程序可單獨(dú)放在一個(gè)文件中,例如一般取名DSP28_CpuTimers.c。在主程序中,先要調(diào)用InitCpuTimers()對(duì)CPU定時(shí)器進(jìn)行初始化,然后調(diào)用ConfigCpuTimer()對(duì)所需要的定時(shí)器進(jìn)行周期等參數(shù)的設(shè)置。281x中斷系統(tǒng)DSP28_CpuTimers.h內(nèi)的一段代碼//定義了結(jié)構(gòu)體CPUTIMER_VARSstructCPUTIMER_VARS{
//CPU定時(shí)器寄存器的起始地址volatilestructCPUTIMER_REGS*RegsAddr;Uint32InterruptCount;//CPU定時(shí)器中斷統(tǒng)計(jì)計(jì)數(shù)器
floatCPUFreqInMHz;//CPU頻率,以MHz為單位
floatPeriodInUSec;//CPU定時(shí)器周期,以u(píng)s為單位};//聲明CPUTIMER_VARS型的結(jié)構(gòu)體CpuTimer0。externstructCPUTIMER_VARSCpuTimer0;voidInitCpuTimers(void)//CPU定時(shí)器初始化子程序{//Initializeaddresspointerstorespectivetimerregisters:CpuTimer0.RegsAddr=&CpuTimer0Regs;CpuTimer1.RegsAddr=&CpuTimer1Regs;CpuTimer2.RegsAddr=&CpuTimer2Regs;CpuTimer0Regs.PRD.all=0xFFFFFFFF;//InitializetimerperiodtomaximumCpuTimer1Regs.PRD.all=0xFFFFFFFF;CpuTimer2Regs.PRD.all=0xFFFFFFFF;CpuTimer0Regs.TPR.all=0;//Initializepre-scalecountertodivideby1(SYSCLKOUT)CpuTimer0Regs.TPRH.all=0;CpuTimer0Regs.TCR.bit.TSS=1;//Makesuretimersarestopped:CpuTimer1Regs.TCR.bit.TSS=1;CpuTimer2Regs.TCR.bit.TSS=1;CpuTimer0Regs.TCR.bit.TRB=1;//Reloadallcounterregisterswithperiodvalues:CpuTimer1Regs.TCR.bit.TRB=1;CpuTimer2Regs.TCR.bit.TRB=1;//CpuTimer0.InterruptCount=0;//Resetinterruptcounters:}#include"DSP28_Device.h"http://Prototypestatementsforfunctionsfoundwithinthisfile.interruptvoidISRTimer0(void);voidmain(void){InitSysCtrl();//系統(tǒng)初始化,CPU時(shí)鐘頻率可配置,例如設(shè)為100MHZInitGpio();//GPIO的初始化DINT;//禁止中斷IER=0x0000;//IFR=0x0000;//清中斷InitPieCtrl();//PIE寄存器初始化InitPieVectTable();//PIE矢量表初始化InitCpuTimers();//CPU定時(shí)器初始化EALLOW;//允許訪問(wèn)EALLOW保護(hù)的寄存器PieVectTable.TINT0=&ISRTimer0;//CPU定時(shí)器0的中斷矢量EDIS;//重新EALLOW保護(hù)ConfigCpuTimer(&CpuTimer0,100,1000000);//配置CPU-定時(shí)器0多長(zhǎng)時(shí)間中斷一次CpuTimer0Regs.TCR.bit.TSS=0;//啟動(dòng)CPU定時(shí)器0IER|=M_INT1;//使能INT1(CPU-Timer0位于INT1.7EINT;//開(kāi)放全局中斷ERTM;//開(kāi)放全局實(shí)時(shí)中斷DBGMfor(;;);//主程序循環(huán)}/**********************************************************名稱(chēng):ConfigCpuTimer()*功能:此函數(shù)將使用Freq和Period兩個(gè)參數(shù)來(lái)對(duì)CPU定時(shí)器進(jìn)行配置。*
Freq以MHz為單位,Period以u(píng)s作為單位。*入口參數(shù):*Timer(指定的定時(shí)器),F(xiàn)req,Period*出口參數(shù):無(wú)*********************************************************/voidConfigCpuTimer(structCPUTIMER_VARS*Timer,floatFreq,floatPeriod){ Uint32 temp;
Timer->CPUFreqInMHz=Freq; Timer->PeriodInUSec=Period; temp=(long)(Freq*Period); Timer->RegsAddr->PRD.all=temp;//給定時(shí)器周期寄存器賦值
Timer->RegsAddr->TPR.all=0;//給定時(shí)器預(yù)定標(biāo)寄存器賦值
Timer->RegsAddr->TPRH.all=0;//初始化定時(shí)器控制寄存器:Timer->RegsAddr->TCR.bit.TIF=1;//清除中斷標(biāo)志位Timer->RegsAddr->TCR.bit.TSS=1;//停止定時(shí)器
Timer->RegsAddr->TCR.bit.TRB=1;//定時(shí)器重裝,將定時(shí)器周期寄存器的值裝入定時(shí)器計(jì)數(shù)器寄存器Timer->RegsAddr->TCR.bit.SOFT=1;Timer->RegsAddr->TCR.bit.FREE=1;Timer->RegsAddr->TCR.bit.TIE=1;//使能定時(shí)器中斷
Timer->InterruptCount=0;//初始化定時(shí)器中斷計(jì)數(shù)器}281x中斷系統(tǒng)ConfigCpuTimer(&CpuTimer0,150,1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新能源儲(chǔ)能項(xiàng)目落戶(hù)保障合同
- 廚具設(shè)備購(gòu)銷(xiāo)合同(31篇)
- 教學(xué)工作總結(jié)英語(yǔ)2024(32篇)
- 2023-2024學(xué)年浙江省寧波市鎮(zhèn)海中學(xué)高三下學(xué)期期中考試歷史試卷
- 2025年業(yè)務(wù)提升合作諒解協(xié)議
- 2025年供應(yīng)鏈管理公司合作項(xiàng)目協(xié)議書(shū)
- 2025年產(chǎn)品創(chuàng)新與生產(chǎn)協(xié)作協(xié)議
- 2025年農(nóng)村醫(yī)療人員定向就業(yè)協(xié)議
- 2025年大數(shù)據(jù)項(xiàng)目規(guī)劃申請(qǐng)報(bào)告模板
- 2025年遠(yuǎn)程醫(yī)療項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模板
- 第25章 概率初步(2)-2024-2025學(xué)年數(shù)學(xué)人教版九年級(jí)上冊(cè)(含答案解析)
- 2025年交通運(yùn)輸部長(zhǎng)江口航道管理局招聘4人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 廣東省廣州市2025屆高三上學(xué)期12月調(diào)研測(cè)試(零模)英語(yǔ) 含解析
- 蘭溪市排水防澇提升雨污管網(wǎng)修復(fù)改造初步設(shè)計(jì)文本
- 2024-2030年中國(guó)永磁電機(jī)市場(chǎng)現(xiàn)狀分析及前景趨勢(shì)預(yù)測(cè)報(bào)告
- 翁愷C語(yǔ)言課件下載
- 2024-2025學(xué)年人教版八年級(jí)上冊(cè)地理期末測(cè)試卷(一)(含答案)
- DB3209T 1236-2023 西蘭花采后處理與貯運(yùn)技術(shù)規(guī)程
- 《液壓缸與設(shè)計(jì)》課件
- 山東省物流工程師職稱(chēng)考試參考試題庫(kù)-上(單選題)
- GB/T 44546-2024建筑用裝配式集成吊頂通用技術(shù)要求
評(píng)論
0/150
提交評(píng)論