DSP學(xué)習(xí)-3時(shí)鐘及系統(tǒng)控制解析課件_第1頁(yè)
DSP學(xué)習(xí)-3時(shí)鐘及系統(tǒng)控制解析課件_第2頁(yè)
DSP學(xué)習(xí)-3時(shí)鐘及系統(tǒng)控制解析課件_第3頁(yè)
DSP學(xué)習(xí)-3時(shí)鐘及系統(tǒng)控制解析課件_第4頁(yè)
DSP學(xué)習(xí)-3時(shí)鐘及系統(tǒng)控制解析課件_第5頁(yè)
已閱讀5頁(yè),還剩79頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第二章(2)時(shí)鐘及系統(tǒng)控制1第二章(2)時(shí)鐘及系統(tǒng)控制1一、時(shí)鐘及系統(tǒng)控制二、程序地址產(chǎn)生三、轉(zhuǎn)移、調(diào)用和返回四、重復(fù)指令第二章(2)時(shí)鐘及系統(tǒng)控制第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)2一、時(shí)鐘及系統(tǒng)控制第二章(2)時(shí)鐘及系統(tǒng)控制第2章CPU第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)3第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)3主要介紹F2812的時(shí)鐘、鎖相環(huán)、看門(mén)狗和復(fù)位控制電路等。各種時(shí)鐘和復(fù)位電路的內(nèi)部結(jié)構(gòu):一、時(shí)鐘及系統(tǒng)控制第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)4主要介紹F2812的時(shí)鐘、鎖相環(huán)、看門(mén)狗和復(fù)位控制電路等。各第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)5第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)5HISPCPHISPCP一、時(shí)鐘及系統(tǒng)控制HISPCP高速外設(shè)時(shí)鐘設(shè)置寄存器PLLCRPLL控制寄存器LOSPCP慢速外設(shè)時(shí)鐘設(shè)置寄存器SCSR系統(tǒng)控制和狀態(tài)寄存器PCLKCR外設(shè)時(shí)鐘控制寄存器WDCNTR看門(mén)狗計(jì)數(shù)寄存器LPMCR0低功耗模式控制寄存器0WDKEY看門(mén)狗復(fù)位key寄存器LPMCRl低功耗模式控制寄存器1WDCR看門(mén)狗控制寄存器第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)6HISPCPHISPCP一、時(shí)鐘及系統(tǒng)控制HISPCP▲

外設(shè)時(shí)鐘控制寄存器PCLKCR——數(shù)據(jù)存儲(chǔ)空間0x0000701C

時(shí)鐘寄存器▲

高低速外設(shè)時(shí)鐘寄存器HISPCP/LOSPCP——0x0000701A/B▲

系統(tǒng)控制和狀態(tài)寄存器SCSR——數(shù)據(jù)存儲(chǔ)空間

0X00007022保留D15D14D13D12D11D10D9D8ECANENCLKMCBSPENCLKSCIBENCLKSPIENCLK

R-0

R/W-0

R-0

R/W-0

R/W-0

Reserved

D15D3D2D1D0WDINTSWDENINTWDOVERRIDE

R-0R-1R/W-0R/W1C-1一、時(shí)鐘及系統(tǒng)控制SCIAENCLK保留保留保留ADCENCLK保留EVAENCLKEVBENENCLKD7D4D3D2D1D0R-0R/W-0R-0

R/W-0

R/W-0

R/W-0R-0

R/W-0Reserved

D15D3D2D0HSPCK/LSPCK

R-0R/W-010第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)7▲外設(shè)時(shí)鐘控制寄存器PCLKCR——數(shù)據(jù)存儲(chǔ)空時(shí)鐘模塊提供兩種操作模式:▲

內(nèi)部振蕩器:如果使用內(nèi)部振蕩器,則必須在X1/XCLKIN和X2兩個(gè)引腳之間連接一個(gè)石英晶體。▲

外部時(shí)鐘源:如果采用外部時(shí)鐘,可以將輸入的時(shí)鐘信號(hào)直接接到X1/XCLKIN引腳上,而X2懸空。在這種情況下,不使用內(nèi)部振蕩器。一、時(shí)鐘及系統(tǒng)控制晶體振蕩器及鎖相環(huán)當(dāng)XPLLDIS為低電平,系統(tǒng)直接采用時(shí)鐘或晶振直接作為系統(tǒng)時(shí)鐘;當(dāng)XPLLDIS為高電平,外部時(shí)鐘經(jīng)過(guò)PLL倍頻后,為提供時(shí)鐘。

第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)8時(shí)鐘模塊提供兩種操作模式:一、時(shí)鐘及系統(tǒng)控制晶體振蕩器及鎖相鎖相環(huán)控制寄存器PLLCR——用于選擇鎖相環(huán)的工作模式和倍頻系數(shù)定時(shí)器一、時(shí)鐘及系統(tǒng)控制Reserved

D15D4D3D0DIV

R-0R/W-010▲

TIM——16位的計(jì)數(shù)寄存器,重新裝載PRD的值?!?/p>

PRD——16位周期寄存器。▲TCR——16位的定時(shí)器控制寄存器。▲

PSC——16位的預(yù)定標(biāo)寄存器,重新裝載TDDR的值?!?/p>

TDDR——

16位的分頻寄存器。有3個(gè)32位CPU定時(shí)器(TIMER0/1/2):√定時(shí)器0用戶(hù)可以在應(yīng)用程序中使用。√定時(shí)器1和定時(shí)器2預(yù)留給實(shí)時(shí)操作系統(tǒng)使用(例如DSPBIOS)。第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)9鎖相環(huán)控制寄存器PLLCR——用于選擇鎖相環(huán)的工作模式和倍頻

F281×器件上有3個(gè)32位CPU定時(shí)器(TIMER0/1/2)

TIMER0可以在用戶(hù)程序中使用,TIMER1/2預(yù)留給DSPBIOS或其它RTOS使用(如果不用DSPBIOS,可以供用戶(hù)使用)。每個(gè)定時(shí)器有4個(gè)寄存器:

1)計(jì)數(shù)寄存器(TIMH:TIM):32位

2)周期寄存器(PRDH:PRD):32位

3)預(yù)定標(biāo)寄存器(TPR):32位(預(yù)定標(biāo)計(jì)數(shù)器PSC+分頻寄存器TDDR)

4)控制寄存器(TCR):16位

TIF-TimerInterruptFlagTIE-TimerInterruptEnableTRB-TimerReloadBitTSS-TimerStopStatusBit10F281×器件上有3個(gè)32位CPU定時(shí)器(TIMER0/通用定時(shí)器

定時(shí)器的工作過(guò)程:

1)用32位計(jì)數(shù)寄存器(TIMH:TIM)裝載周期寄存器(PRDH:PRD)中的計(jì)時(shí)常數(shù);

2)計(jì)數(shù)寄存器根據(jù)SYSCLKOUT時(shí)鐘遞減計(jì)數(shù)(16+32位);

3)當(dāng)計(jì)數(shù)寄存器等于0時(shí),定時(shí)器的計(jì)數(shù)器寄存器重載周期寄存器值,并輸出一個(gè)中斷脈沖(TINT0)。TRBTSS設(shè)定采樣頻率11通用定時(shí)器定時(shí)器的工作過(guò)程:TRBTSS設(shè)定采樣頻率11voidConfigCpuTimer(structCPUTIMER_VARS*Timer,floatFreq,floatPeriod){ unsignedlong temp; Timer->CPUFreqInMHz=Freq;//Initializetimerperiod

Timer->PeriodInUSec=Period; temp=(long)(Freq*Period);//150MHz×100us=15000

Timer->RegsAddr->PRD.all=temp; Timer->RegsAddr->TPR.all=0;//Setpre-scalecountertodivideby1 Timer->RegsAddr->TPRH.all=0;

//Initializetimercontrolregister: Timer->RegsAddr->TCR.bit.TSS=1/0;//1=Stoptimer,0=StartTimer

Timer->RegsAddr->TCR.bit.TRB=1;//1=reloadtimer Timer->RegsAddr->TCR.bit.SOFT=1; Timer->RegsAddr->TCR.bit.FREE=1;//TimerFreeRun Timer->RegsAddr->TCR.bit.TIE=1;//1=EnableTimerInterrupt}配置CPU定時(shí)器下面的函數(shù)中周期寄存器由給定的DSP時(shí)鐘頻率Freq(MHz)和定時(shí)器周期Period(μs)兩個(gè)參數(shù)確定。初始化后定時(shí)器處于停止?fàn)顟B(tài)。12voidConfigCpuTimer(structCPUC28X定時(shí)器定時(shí)器功能框圖一、時(shí)鐘及系統(tǒng)控制工作過(guò)程:首先用32位計(jì)數(shù)寄存器(TIMH:TM)裝載周期寄存器(PRDH:PRD)內(nèi)部的值。計(jì)數(shù)寄存器根據(jù)SYSCLKOUT時(shí)鐘遞減計(jì)數(shù)。當(dāng)計(jì)數(shù)寄存器等于0時(shí),定時(shí)器中斷輸出產(chǎn)生一個(gè)中斷脈沖。

第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)13C28X定定時(shí)器功能框圖一、時(shí)鐘及系統(tǒng)控制工作過(guò)程:首先用3▲

工作原理√在每個(gè)SYSCLKOUT脈沖后PSC減1,一直減到0?!淘谙乱粋€(gè)SYSCLKOUT周期,TDDR加載新的除數(shù)值到PSC,并使TIM減1。√重復(fù)前兩步操作,即PSC每次減到0后,TIM進(jìn)行一次減1操作,直到TIM減為0√在下一個(gè)SYSCLKOUT周期,將定時(shí)器中斷(TINT)送到CPU,和TOUT引腳。同時(shí)TIM裝載來(lái)自PRD的新的定時(shí)計(jì)數(shù)器值,并使PSC再次減1。每經(jīng)過(guò)(TDDR+1)個(gè)SYSCLKOUT周期,TIM減1。當(dāng)PRD、TDDR或兩者都不為零時(shí),定時(shí)器中斷頻率即TINT的頻率(fTINT)為:

fCLKOUT1為SYSCLKOUT的頻率。C28X定時(shí)器第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)14▲工作原理C28X定時(shí)器第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)C20X定時(shí)器▲

計(jì)數(shù)器——TIMTIMD15D0R/W-0TIMHD15D0R/W-0▲

周期寄存器——PRDPRDD15D0R/W-0PRDHD15D0R/W-0第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)15C20X定時(shí)器▲計(jì)數(shù)器——TIMTIMD15C20X定時(shí)器▲

控制寄存器——TCR0TIFTIEFREED15D14D13~D12D11D10D9~D6D5D4D3~D0TRB保留SOFT保留R/W-0

R/W-0R-0R/W-0R/W-0R-0R/W-0R/W-0R-0

TCR功能:√控制定時(shí)器模式√重新加載定時(shí)器√啟動(dòng)和停止定時(shí)器TSS保留▲

預(yù)定標(biāo)寄存器——PSC/TDDRPSCD15D8D7D0R-0R/W-0PSCHD15D8D7D0R-0R/W-0TDDRTDDRH第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)16C20X定時(shí)器▲控制寄存器——TCR0TIFTIEFREC20X一、時(shí)鐘及系統(tǒng)控制看門(mén)狗及其應(yīng)用F2812的看門(mén)狗與240x的基本相同,當(dāng)8位的看門(mén)狗計(jì)數(shù)器計(jì)數(shù)到最大值時(shí),看門(mén)狗模塊產(chǎn)生一個(gè)輸出脈沖(512個(gè)振蕩器時(shí)鐘寬度)。如果不希望產(chǎn)生脈沖信號(hào),用戶(hù)需要屏蔽計(jì)數(shù)器,或用軟件周期向看門(mén)狗復(fù)位控制寄存器寫(xiě)“0x55+0xAA",該寄存器能夠使看門(mén)狗計(jì)數(shù)器清零。

為了實(shí)現(xiàn)看門(mén)狗的各項(xiàng)功能,內(nèi)部有3個(gè)功能寄存器

第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)17C20X一、時(shí)鐘及系統(tǒng)控制看門(mén)狗及其應(yīng)用F2看門(mén)狗功能框圖第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)18看門(mén)狗功能框圖第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)182、看門(mén)狗及其應(yīng)用

8位的看門(mén)狗計(jì)數(shù)器(WDCNTR),當(dāng)計(jì)數(shù)到最大值時(shí)看門(mén)狗模塊產(chǎn)生一個(gè)輸出脈沖(512個(gè)OSCCLK時(shí)鐘寬度),并可以中斷或復(fù)位DSP。如果不希望產(chǎn)生脈沖信號(hào),用戶(hù)可以屏蔽看門(mén)狗模塊,或者通過(guò)軟件周期性的向看門(mén)狗復(fù)位寄存器(WDKEY)寫(xiě)“0x55+0xAA”,使得WDCNTR清零。應(yīng)用說(shuō)明:使能看門(mén)狗或屏蔽看門(mén)狗模塊?看門(mén)狗時(shí)鐘倍率?WDCR

希望看門(mén)狗中斷(從低功耗模式喚醒)還是復(fù)位(程序失控)?SCSR

程序運(yùn)行過(guò)程周期性的復(fù)位WDCNTR。向WDKEY

寫(xiě)“0x55+0xAA”

如果程序失控,則復(fù)位或中斷DSP;否則看門(mén)狗不影響程序執(zhí)行。提示:看門(mén)狗作為提高系統(tǒng)抗干擾能力的措施之一,是一種補(bǔ)救措施。192、看門(mén)狗及其應(yīng)用8位的看門(mén)狗計(jì)數(shù)器(WDCNTR),當(dāng)計(jì)看門(mén)狗模塊框圖看門(mén)狗模塊20看門(mén)狗模塊框圖看門(mén)狗模塊20看門(mén)狗控制寄存器WDCR寫(xiě)1到WDDIS,屏蔽看門(mén)狗模塊;寫(xiě)0使能看門(mén)狗模塊。

WDCHK(2~0)必須寫(xiě)101,其它值會(huì)引起DSP復(fù)位。

WDPS(2~0)配置看門(mén)狗計(jì)數(shù)時(shí)鐘:

WDCLK=OSCCLK/512/(1~64)??撮T(mén)狗中斷狀態(tài)標(biāo)志位WDFLAG:讀:1--看門(mén)狗復(fù)位(WDRST);0--器件復(fù)位寫(xiě):1--將WDFLAG清零;0--WDFLAG狀態(tài)不變21看門(mén)狗控制寄存器WDCR寫(xiě)1到WDDIS,屏蔽看門(mén)狗模塊使能/屏蔽看門(mén)狗模塊//Thisfunctiondisablesthewatchdogtimer.voidDisableDog(void){EALLOW;SysCtrlRegs.WDCR=0x0068;//WDDIS=1,WDCHK=101,EDIS;//WDPS=000(WDCLK=OSCCLK/512)}//Thisfunctionenablesthewatchdogtimer.voidEnableDog(void){EALLOW;SysCtrlRegs.WDCR=0x0028;//WDDIS=0,WDCHK=101,EDIS;//WDPS=000(WDCLK=OSCCLK/512)}22使能/屏蔽看門(mén)狗模塊//Thisfunctiondis系統(tǒng)控制和狀態(tài)寄存器SCSR

WDENINT:

1--看門(mén)狗復(fù)位信號(hào)(WDRST)被屏蔽,看門(mén)狗中斷信號(hào)使能(WDINT)

0--看門(mén)狗復(fù)位信號(hào)(WDRST)被使能,看門(mén)狗中斷信號(hào)屏蔽(WDINT)

WDINTS:看門(mén)狗中斷狀態(tài)位,反映WDINT的狀態(tài)。

WDOVERRIDE:

1--允許改變WDCR中的看門(mén)狗屏蔽位WDDIS;0--不能改變WDDIS

清零后只有系統(tǒng)復(fù)位才允許改變?cè)撐坏臓顟B(tài),用戶(hù)可讀取該位狀態(tài)。23系統(tǒng)控制和狀態(tài)寄存器SCSRWDENINT:WDINTS看門(mén)狗復(fù)位寄存器WDKEY依次寫(xiě)0x55+0xAA到WDKEY將使WDCNTR清零;寫(xiě)其它任何值都會(huì)使看門(mén)狗復(fù)位;讀該寄存器將返回WDCR寄存器的值。//Thisfunctionresetsthewatchdogtimer.voidKickDog(void){EALLOW;SysCtrlRegs.WDKEY=0x0055;SysCtrlRegs.WDKEY=0x00AA;EDIS;}如果系統(tǒng)使能看門(mén)狗模塊,需要在用戶(hù)程序中定時(shí)執(zhí)行KickDog函數(shù),且定時(shí)器周期要小于看門(mén)狗計(jì)數(shù)器溢出周期。24看門(mén)狗復(fù)位寄存器WDKEY依次寫(xiě)0x55+0xAA到WDK看門(mén)狗計(jì)數(shù)寄存器WDCNTR

WDCNTR包含看門(mén)狗計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值(0-0xFF);如果計(jì)數(shù)器溢出,看門(mén)狗產(chǎn)生中斷或復(fù)位DSP;如果向WDKEY寫(xiě)有效的組合(0x55+0xAA

),將使計(jì)數(shù)器清零??撮T(mén)狗定時(shí)器的周期最大值:OSCCLK/512/(1-64)/256。25看門(mén)狗計(jì)數(shù)寄存器WDCNTRWDCNTR包含看門(mén)狗計(jì)數(shù)器的初始化系統(tǒng)控制//-ThisfunctioninitializestheSystemControlregisterstoaknownstate.程序功能:1、屏蔽看門(mén)狗模塊2、配置PLLCR寄存器,設(shè)定SYSCLKOUT的頻率3、配置高速/低速外設(shè)時(shí)鐘的預(yù)定標(biāo)因子4、使能相應(yīng)外設(shè)時(shí)鐘

voidInitSysCtrl(void) {

//Disablethewatchdog

DisableDog();

//InitializethePLLCRto0xA InitPll(0xA);

//Initializetheperipheralclocks InitPeripheralClocks(); }實(shí)驗(yàn)時(shí),注意使能所使用的外設(shè)模塊時(shí)鐘,否則無(wú)法讀寫(xiě)相應(yīng)的外設(shè)寄存器。PLLCR通常設(shè)為10,即CPU的時(shí)鐘頻率為30MHz×5。26初始化系統(tǒng)控制//-Thisfunctioniniti一、時(shí)鐘及系統(tǒng)控制看門(mén)狗及其應(yīng)用▲

計(jì)數(shù)寄存器——WDCNTRReservedD15D8D7D0R-0R/W-0WDCNTR▲

復(fù)位寄存器——WDKEYReservedD15D8D7D0R-0R/W-0WDKEY▲

控制寄存器——WDCRReservedD15D8R-0R/W-0WDFLAGD7D6D5D3D2D0R/W-0R/W-0WDPSWDDISWDCHKR-0第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)27一、時(shí)鐘及系統(tǒng)控制看門(mén)狗及其應(yīng)用▲計(jì)數(shù)寄存器——WDCN二、程序地址的產(chǎn)生

通常程序是順序執(zhí)行的,即在連續(xù)的程序存儲(chǔ)器地址上取出指令并執(zhí)行。但有時(shí)程序需要轉(zhuǎn)移到不連續(xù)的地址,然后再連續(xù)執(zhí)行新地址處的指令。為此提供了轉(zhuǎn)移、調(diào)用、重復(fù)(循環(huán))和中斷指令?!?/p>

在執(zhí)行當(dāng)前指令的同時(shí),程序流要求處理器生成下一個(gè)指令的程序地址(順序或非順序的)。程序控制:控制一個(gè)或多個(gè)指令塊的執(zhí)行次序。第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)28二、程序地址的產(chǎn)生▲通常程序是順序執(zhí)行的,即在連續(xù)的程二、程序地址的產(chǎn)生

第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)29二、程序地址的產(chǎn)生第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)29▲

程序計(jì)數(shù)器PC:22bit,取指令時(shí),對(duì)內(nèi)部和外部程序存儲(chǔ)器尋址?!?/p>

程序地址寄存器PAR:驅(qū)動(dòng)程序地址總線,提供程序的讀、寫(xiě)地址?!褩TACK:16位寬8級(jí)深,可保存8個(gè)返回地址,也可將用作暫存存儲(chǔ)器?!⒍褩STACK:16位、1級(jí)深,保存一個(gè)返回地址?!?/p>

重復(fù)計(jì)數(shù)器RPTC:16位,與重復(fù)指令(RPT)一起,用來(lái)確定RPT后面的一條指令重復(fù)執(zhí)行多次。用到的硬件二、程序地址的產(chǎn)生

第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)30▲程序計(jì)數(shù)器PC:22bit,取指令時(shí),對(duì)內(nèi)部和外部程序▲

順序操作:程序的地址來(lái)源于PC程序計(jì)數(shù)器(程序地址+1)▲

空(啞)周期:程序的地址來(lái)源于PAR(程序地址+1)▲

從子程序返回:程序的地址來(lái)源于棧頂(TOS)▲

從表傳送或塊傳送返回:程序的地址來(lái)源于微堆棧(MSTACK)▲

轉(zhuǎn)移到或調(diào)用指令中指定的地址:程序的地址來(lái)源于轉(zhuǎn)移或調(diào)用指令。即利用程序讀總線(PRDB)的方式獲取程序地址?!?/p>

轉(zhuǎn)移到或調(diào)用累加器低半部分指定的地址:程序地址來(lái)源于累加器的低半部分。即利用數(shù)據(jù)讀總線(DRDB)的方式獲取程序地址。▲

轉(zhuǎn)移到中斷服務(wù)程序:程序地址來(lái)源于中斷矢量單元。即利用程序讀總線(PRDB)的方式獲取程序地址。程序地址產(chǎn)生的情況二、程序地址的產(chǎn)生

第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)31▲順序操作:程序的地址來(lái)源于PC程序計(jì)數(shù)器(程序地址+1)程序計(jì)數(shù)器PC▲

PC中存放將被執(zhí)行的下一條指令的地址?!?/p>

有5種方式加載PC,從而適應(yīng)連續(xù)和不連續(xù)的程序流程。二、程序地址的產(chǎn)生

第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)32程序計(jì)數(shù)器PC▲PC中存放將被執(zhí)行的下一條指令的地址?!添樞驁?zhí)行:若當(dāng)前指令是一個(gè)字,則將PC+1加載到PC若當(dāng)前指令是兩個(gè)字,則將PC+2加載到PC√分支(轉(zhuǎn)移):轉(zhuǎn)移指令后的長(zhǎng)立即數(shù)直接加載到PC√子程序調(diào)用和返回:

調(diào)用指令——將PC中下一條指令的地址壓入堆棧,然后將調(diào)用指令后的長(zhǎng)立即數(shù)直接加載到PC返回指令——將返回地址從堆棧中彈回PC√軟件或硬件中斷:將相應(yīng)的中斷矢量地址裝入PC,在該矢量地址單元,通常有一條轉(zhuǎn)移指令,又將相應(yīng)的中斷服務(wù)程序的地址加載到PC√計(jì)算轉(zhuǎn)移:將累加器低16位加載到PC利用BACC或CALA指令可實(shí)現(xiàn)計(jì)算GOTO操作程序計(jì)數(shù)器PC二、程序地址的產(chǎn)生

第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)33√順序執(zhí)行:若當(dāng)前指令是一個(gè)字,則將PC+1加載到PC程序▲

16位寬、8級(jí)深▲

當(dāng)調(diào)用子程序或發(fā)生中斷時(shí),程序地址產(chǎn)生邏輯利用該堆棧保存返回地址▲

進(jìn)入子程序或中斷服務(wù)程序時(shí),返回地址自動(dòng)裝入該堆棧的棧頂;當(dāng)子程序或中斷服務(wù)程序完成時(shí),返回指令將返回地址從棧頂傳送到程序計(jì)數(shù)器。▲

訪問(wèn)堆棧的指令

PUSH和POP:針對(duì)累加器低16位操作。√

PSHD和POPD:當(dāng)子程序或中斷嵌套超過(guò)8級(jí)時(shí)可利用這兩條指令在數(shù)據(jù)存儲(chǔ)區(qū)中建立一個(gè)堆棧。堆棧二、程序地址的產(chǎn)生

第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)34▲16位寬、8級(jí)深堆二、程序地址的產(chǎn)生第2章CPU內(nèi)堆棧例子二、程序地址的產(chǎn)生

第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)35堆二、程序地址的產(chǎn)生第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)35堆棧例子二、程序地址的產(chǎn)生

第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)36堆棧例子二、程序地址的產(chǎn)生第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)▲

一級(jí)深、16位寬,操作不可見(jiàn),即無(wú)指令,只有程序地址產(chǎn)生邏輯才能夠使用微堆棧?!?/p>

程序地址產(chǎn)生邏輯在執(zhí)行BLDD、BLPD、MAC、MACD、TBLR和TBLW這些串(塊)操作指令時(shí)利用微堆棧保存返回地址。微堆棧二、程序地址的產(chǎn)生

第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)37▲一級(jí)深、16位寬,操作不可見(jiàn),即無(wú)指令,只有程序微二、,二、程序地址的產(chǎn)生

流水線技術(shù)▲

下面給出了一個(gè)四級(jí)深流水線操作圖。同時(shí)執(zhí)行四條指令,但每一條指令處于不同的階段單字、單周期指令4級(jí)流水線操作第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)38,二、程序地址的產(chǎn)生流▲下面給出了一個(gè)四級(jí)深流水線操作二、程序地址的產(chǎn)生

流水線技術(shù)對(duì)F2812每條指令都要經(jīng)過(guò)8個(gè)獨(dú)立的執(zhí)行過(guò)程,這8個(gè)過(guò)程形成了指令流水線(instructionpipeline)。在每一個(gè)給定的時(shí)間內(nèi),有8條指令被激活,每一指令處在執(zhí)行過(guò)程中的不同階段。并不是所有的指令都會(huì)同時(shí)發(fā)生讀寫(xiě)操作,但是流水線的保護(hù)機(jī)制能夠按照需要去延遲指令,以確保根據(jù)程序控制順序?qū)ν晃恢眠M(jìn)行讀寫(xiě)操作。第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)39二、程序地址的產(chǎn)生流對(duì)F2812每條指令都要經(jīng)過(guò)8▲

轉(zhuǎn)移僅使控制轉(zhuǎn)換到新的地址單元▲

調(diào)用還要將返回地址保存到硬件堆棧的棧頂▲

返回指令將堆棧中的返回地址彈到程序計(jì)數(shù)器(PC)

——每個(gè)被調(diào)用的子程序或中斷服務(wù)程序都以返回指令結(jié)束。三、轉(zhuǎn)移、調(diào)用和返回

無(wú)條件指令▲

無(wú)條件指令總是執(zhí)行的?!?/p>

當(dāng)執(zhí)行無(wú)條件轉(zhuǎn)移B、BACC;無(wú)條件調(diào)用CALL、CALA指令時(shí),將指定的程序存儲(chǔ)器的地址加載到PC并從該地址開(kāi)始執(zhí)行程序。▲

當(dāng)執(zhí)行無(wú)條件返回(RET)指令時(shí),將棧頂?shù)闹担ǚ祷氐刂罚┘虞d到PC,并從該地址繼續(xù)執(zhí)行程序。第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)40▲轉(zhuǎn)移僅使控制轉(zhuǎn)換到新的地址單元三、轉(zhuǎn)移、調(diào)用和返回?zé)o條

LEQ

ACC≤0累加器小于或等于0

GT

ACC>0累加器大于0

GER

ACC≥0累加器大于或等于0

C

C=1進(jìn)位位置1

NC

C=0進(jìn)位位清0

OV

OV=1檢測(cè)到累加器溢出

NOV

OV=0檢測(cè)到累加器不溢出

BIO

BOI為低BIO引腳為低

TC

TC=1測(cè)試/控制標(biāo)志置1

NTC

TC=0測(cè)試/控制標(biāo)志置0操作數(shù)符號(hào)條件說(shuō)明

EQ

ACC=0累加器為0

NEQ

ACC≠0累加器不為0

LT

ACC<0累加器小于0第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)41LEQACC≤0累加器小于或等于0重復(fù)指令(RPT):允許一條指令的重復(fù)次數(shù)為N+1次。N為RPT指令的一個(gè)操作數(shù)。原理:在執(zhí)行RPT時(shí),計(jì)數(shù)值N被裝入重復(fù)計(jì)數(shù)器RPTC,然后,被重復(fù)的指令每執(zhí)行一次,RPTC就減1,直至RPTC為0。

RPTC可作為16位計(jì)數(shù)器,也可為8位計(jì)數(shù)器。作用:用在NORM(累加器內(nèi)容歸一化)、MCAD(乘、累加和數(shù)據(jù)移動(dòng))

SUBC(條件減)重復(fù)指令三、轉(zhuǎn)移、調(diào)用和返回

第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)42重復(fù)指令(RPT):允許一條指令的重復(fù)次數(shù)為N+1次。重復(fù)指第二章(2)時(shí)鐘及系統(tǒng)控制43第二章(2)時(shí)鐘及系統(tǒng)控制1一、時(shí)鐘及系統(tǒng)控制二、程序地址產(chǎn)生三、轉(zhuǎn)移、調(diào)用和返回四、重復(fù)指令第二章(2)時(shí)鐘及系統(tǒng)控制第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)44一、時(shí)鐘及系統(tǒng)控制第二章(2)時(shí)鐘及系統(tǒng)控制第2章CPU第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)45第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)3主要介紹F2812的時(shí)鐘、鎖相環(huán)、看門(mén)狗和復(fù)位控制電路等。各種時(shí)鐘和復(fù)位電路的內(nèi)部結(jié)構(gòu):一、時(shí)鐘及系統(tǒng)控制第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)46主要介紹F2812的時(shí)鐘、鎖相環(huán)、看門(mén)狗和復(fù)位控制電路等。各第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)47第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)5HISPCPHISPCP一、時(shí)鐘及系統(tǒng)控制HISPCP高速外設(shè)時(shí)鐘設(shè)置寄存器PLLCRPLL控制寄存器LOSPCP慢速外設(shè)時(shí)鐘設(shè)置寄存器SCSR系統(tǒng)控制和狀態(tài)寄存器PCLKCR外設(shè)時(shí)鐘控制寄存器WDCNTR看門(mén)狗計(jì)數(shù)寄存器LPMCR0低功耗模式控制寄存器0WDKEY看門(mén)狗復(fù)位key寄存器LPMCRl低功耗模式控制寄存器1WDCR看門(mén)狗控制寄存器第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)48HISPCPHISPCP一、時(shí)鐘及系統(tǒng)控制HISPCP▲

外設(shè)時(shí)鐘控制寄存器PCLKCR——數(shù)據(jù)存儲(chǔ)空間0x0000701C

時(shí)鐘寄存器▲

高低速外設(shè)時(shí)鐘寄存器HISPCP/LOSPCP——0x0000701A/B▲

系統(tǒng)控制和狀態(tài)寄存器SCSR——數(shù)據(jù)存儲(chǔ)空間

0X00007022保留D15D14D13D12D11D10D9D8ECANENCLKMCBSPENCLKSCIBENCLKSPIENCLK

R-0

R/W-0

R-0

R/W-0

R/W-0

Reserved

D15D3D2D1D0WDINTSWDENINTWDOVERRIDE

R-0R-1R/W-0R/W1C-1一、時(shí)鐘及系統(tǒng)控制SCIAENCLK保留保留保留ADCENCLK保留EVAENCLKEVBENENCLKD7D4D3D2D1D0R-0R/W-0R-0

R/W-0

R/W-0

R/W-0R-0

R/W-0Reserved

D15D3D2D0HSPCK/LSPCK

R-0R/W-010第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)49▲外設(shè)時(shí)鐘控制寄存器PCLKCR——數(shù)據(jù)存儲(chǔ)空時(shí)鐘模塊提供兩種操作模式:▲

內(nèi)部振蕩器:如果使用內(nèi)部振蕩器,則必須在X1/XCLKIN和X2兩個(gè)引腳之間連接一個(gè)石英晶體?!?/p>

外部時(shí)鐘源:如果采用外部時(shí)鐘,可以將輸入的時(shí)鐘信號(hào)直接接到X1/XCLKIN引腳上,而X2懸空。在這種情況下,不使用內(nèi)部振蕩器。一、時(shí)鐘及系統(tǒng)控制晶體振蕩器及鎖相環(huán)當(dāng)XPLLDIS為低電平,系統(tǒng)直接采用時(shí)鐘或晶振直接作為系統(tǒng)時(shí)鐘;當(dāng)XPLLDIS為高電平,外部時(shí)鐘經(jīng)過(guò)PLL倍頻后,為提供時(shí)鐘。

第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)50時(shí)鐘模塊提供兩種操作模式:一、時(shí)鐘及系統(tǒng)控制晶體振蕩器及鎖相鎖相環(huán)控制寄存器PLLCR——用于選擇鎖相環(huán)的工作模式和倍頻系數(shù)定時(shí)器一、時(shí)鐘及系統(tǒng)控制Reserved

D15D4D3D0DIV

R-0R/W-010▲

TIM——16位的計(jì)數(shù)寄存器,重新裝載PRD的值。▲

PRD——16位周期寄存器?!鳷CR——16位的定時(shí)器控制寄存器?!?/p>

PSC——16位的預(yù)定標(biāo)寄存器,重新裝載TDDR的值。▲

TDDR——

16位的分頻寄存器。有3個(gè)32位CPU定時(shí)器(TIMER0/1/2):√定時(shí)器0用戶(hù)可以在應(yīng)用程序中使用?!潭〞r(shí)器1和定時(shí)器2預(yù)留給實(shí)時(shí)操作系統(tǒng)使用(例如DSPBIOS)。第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)51鎖相環(huán)控制寄存器PLLCR——用于選擇鎖相環(huán)的工作模式和倍頻

F281×器件上有3個(gè)32位CPU定時(shí)器(TIMER0/1/2)

TIMER0可以在用戶(hù)程序中使用,TIMER1/2預(yù)留給DSPBIOS或其它RTOS使用(如果不用DSPBIOS,可以供用戶(hù)使用)。每個(gè)定時(shí)器有4個(gè)寄存器:

1)計(jì)數(shù)寄存器(TIMH:TIM):32位

2)周期寄存器(PRDH:PRD):32位

3)預(yù)定標(biāo)寄存器(TPR):32位(預(yù)定標(biāo)計(jì)數(shù)器PSC+分頻寄存器TDDR)

4)控制寄存器(TCR):16位

TIF-TimerInterruptFlagTIE-TimerInterruptEnableTRB-TimerReloadBitTSS-TimerStopStatusBit52F281×器件上有3個(gè)32位CPU定時(shí)器(TIMER0/通用定時(shí)器

定時(shí)器的工作過(guò)程:

1)用32位計(jì)數(shù)寄存器(TIMH:TIM)裝載周期寄存器(PRDH:PRD)中的計(jì)時(shí)常數(shù);

2)計(jì)數(shù)寄存器根據(jù)SYSCLKOUT時(shí)鐘遞減計(jì)數(shù)(16+32位);

3)當(dāng)計(jì)數(shù)寄存器等于0時(shí),定時(shí)器的計(jì)數(shù)器寄存器重載周期寄存器值,并輸出一個(gè)中斷脈沖(TINT0)。TRBTSS設(shè)定采樣頻率53通用定時(shí)器定時(shí)器的工作過(guò)程:TRBTSS設(shè)定采樣頻率11voidConfigCpuTimer(structCPUTIMER_VARS*Timer,floatFreq,floatPeriod){ unsignedlong temp; Timer->CPUFreqInMHz=Freq;//Initializetimerperiod

Timer->PeriodInUSec=Period; temp=(long)(Freq*Period);//150MHz×100us=15000

Timer->RegsAddr->PRD.all=temp; Timer->RegsAddr->TPR.all=0;//Setpre-scalecountertodivideby1 Timer->RegsAddr->TPRH.all=0;

//Initializetimercontrolregister: Timer->RegsAddr->TCR.bit.TSS=1/0;//1=Stoptimer,0=StartTimer

Timer->RegsAddr->TCR.bit.TRB=1;//1=reloadtimer Timer->RegsAddr->TCR.bit.SOFT=1; Timer->RegsAddr->TCR.bit.FREE=1;//TimerFreeRun Timer->RegsAddr->TCR.bit.TIE=1;//1=EnableTimerInterrupt}配置CPU定時(shí)器下面的函數(shù)中周期寄存器由給定的DSP時(shí)鐘頻率Freq(MHz)和定時(shí)器周期Period(μs)兩個(gè)參數(shù)確定。初始化后定時(shí)器處于停止?fàn)顟B(tài)。54voidConfigCpuTimer(structCPUC28X定時(shí)器定時(shí)器功能框圖一、時(shí)鐘及系統(tǒng)控制工作過(guò)程:首先用32位計(jì)數(shù)寄存器(TIMH:TM)裝載周期寄存器(PRDH:PRD)內(nèi)部的值。計(jì)數(shù)寄存器根據(jù)SYSCLKOUT時(shí)鐘遞減計(jì)數(shù)。當(dāng)計(jì)數(shù)寄存器等于0時(shí),定時(shí)器中斷輸出產(chǎn)生一個(gè)中斷脈沖。

第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)55C28X定定時(shí)器功能框圖一、時(shí)鐘及系統(tǒng)控制工作過(guò)程:首先用3▲

工作原理√在每個(gè)SYSCLKOUT脈沖后PSC減1,一直減到0?!淘谙乱粋€(gè)SYSCLKOUT周期,TDDR加載新的除數(shù)值到PSC,并使TIM減1?!讨貜?fù)前兩步操作,即PSC每次減到0后,TIM進(jìn)行一次減1操作,直到TIM減為0√在下一個(gè)SYSCLKOUT周期,將定時(shí)器中斷(TINT)送到CPU,和TOUT引腳。同時(shí)TIM裝載來(lái)自PRD的新的定時(shí)計(jì)數(shù)器值,并使PSC再次減1。每經(jīng)過(guò)(TDDR+1)個(gè)SYSCLKOUT周期,TIM減1。當(dāng)PRD、TDDR或兩者都不為零時(shí),定時(shí)器中斷頻率即TINT的頻率(fTINT)為:

fCLKOUT1為SYSCLKOUT的頻率。C28X定時(shí)器第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)56▲工作原理C28X定時(shí)器第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)C20X定時(shí)器▲

計(jì)數(shù)器——TIMTIMD15D0R/W-0TIMHD15D0R/W-0▲

周期寄存器——PRDPRDD15D0R/W-0PRDHD15D0R/W-0第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)57C20X定時(shí)器▲計(jì)數(shù)器——TIMTIMD15C20X定時(shí)器▲

控制寄存器——TCR0TIFTIEFREED15D14D13~D12D11D10D9~D6D5D4D3~D0TRB保留SOFT保留R/W-0

R/W-0R-0R/W-0R/W-0R-0R/W-0R/W-0R-0

TCR功能:√控制定時(shí)器模式√重新加載定時(shí)器√啟動(dòng)和停止定時(shí)器TSS保留▲

預(yù)定標(biāo)寄存器——PSC/TDDRPSCD15D8D7D0R-0R/W-0PSCHD15D8D7D0R-0R/W-0TDDRTDDRH第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)58C20X定時(shí)器▲控制寄存器——TCR0TIFTIEFREC20X一、時(shí)鐘及系統(tǒng)控制看門(mén)狗及其應(yīng)用F2812的看門(mén)狗與240x的基本相同,當(dāng)8位的看門(mén)狗計(jì)數(shù)器計(jì)數(shù)到最大值時(shí),看門(mén)狗模塊產(chǎn)生一個(gè)輸出脈沖(512個(gè)振蕩器時(shí)鐘寬度)。如果不希望產(chǎn)生脈沖信號(hào),用戶(hù)需要屏蔽計(jì)數(shù)器,或用軟件周期向看門(mén)狗復(fù)位控制寄存器寫(xiě)“0x55+0xAA",該寄存器能夠使看門(mén)狗計(jì)數(shù)器清零。

為了實(shí)現(xiàn)看門(mén)狗的各項(xiàng)功能,內(nèi)部有3個(gè)功能寄存器

第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)59C20X一、時(shí)鐘及系統(tǒng)控制看門(mén)狗及其應(yīng)用F2看門(mén)狗功能框圖第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)60看門(mén)狗功能框圖第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)182、看門(mén)狗及其應(yīng)用

8位的看門(mén)狗計(jì)數(shù)器(WDCNTR),當(dāng)計(jì)數(shù)到最大值時(shí)看門(mén)狗模塊產(chǎn)生一個(gè)輸出脈沖(512個(gè)OSCCLK時(shí)鐘寬度),并可以中斷或復(fù)位DSP。如果不希望產(chǎn)生脈沖信號(hào),用戶(hù)可以屏蔽看門(mén)狗模塊,或者通過(guò)軟件周期性的向看門(mén)狗復(fù)位寄存器(WDKEY)寫(xiě)“0x55+0xAA”,使得WDCNTR清零。應(yīng)用說(shuō)明:使能看門(mén)狗或屏蔽看門(mén)狗模塊?看門(mén)狗時(shí)鐘倍率?WDCR

希望看門(mén)狗中斷(從低功耗模式喚醒)還是復(fù)位(程序失控)?SCSR

程序運(yùn)行過(guò)程周期性的復(fù)位WDCNTR。向WDKEY

寫(xiě)“0x55+0xAA”

如果程序失控,則復(fù)位或中斷DSP;否則看門(mén)狗不影響程序執(zhí)行。提示:看門(mén)狗作為提高系統(tǒng)抗干擾能力的措施之一,是一種補(bǔ)救措施。612、看門(mén)狗及其應(yīng)用8位的看門(mén)狗計(jì)數(shù)器(WDCNTR),當(dāng)計(jì)看門(mén)狗模塊框圖看門(mén)狗模塊62看門(mén)狗模塊框圖看門(mén)狗模塊20看門(mén)狗控制寄存器WDCR寫(xiě)1到WDDIS,屏蔽看門(mén)狗模塊;寫(xiě)0使能看門(mén)狗模塊。

WDCHK(2~0)必須寫(xiě)101,其它值會(huì)引起DSP復(fù)位。

WDPS(2~0)配置看門(mén)狗計(jì)數(shù)時(shí)鐘:

WDCLK=OSCCLK/512/(1~64)??撮T(mén)狗中斷狀態(tài)標(biāo)志位WDFLAG:讀:1--看門(mén)狗復(fù)位(WDRST);0--器件復(fù)位寫(xiě):1--將WDFLAG清零;0--WDFLAG狀態(tài)不變63看門(mén)狗控制寄存器WDCR寫(xiě)1到WDDIS,屏蔽看門(mén)狗模塊使能/屏蔽看門(mén)狗模塊//Thisfunctiondisablesthewatchdogtimer.voidDisableDog(void){EALLOW;SysCtrlRegs.WDCR=0x0068;//WDDIS=1,WDCHK=101,EDIS;//WDPS=000(WDCLK=OSCCLK/512)}//Thisfunctionenablesthewatchdogtimer.voidEnableDog(void){EALLOW;SysCtrlRegs.WDCR=0x0028;//WDDIS=0,WDCHK=101,EDIS;//WDPS=000(WDCLK=OSCCLK/512)}64使能/屏蔽看門(mén)狗模塊//Thisfunctiondis系統(tǒng)控制和狀態(tài)寄存器SCSR

WDENINT:

1--看門(mén)狗復(fù)位信號(hào)(WDRST)被屏蔽,看門(mén)狗中斷信號(hào)使能(WDINT)

0--看門(mén)狗復(fù)位信號(hào)(WDRST)被使能,看門(mén)狗中斷信號(hào)屏蔽(WDINT)

WDINTS:看門(mén)狗中斷狀態(tài)位,反映WDINT的狀態(tài)。

WDOVERRIDE:

1--允許改變WDCR中的看門(mén)狗屏蔽位WDDIS;0--不能改變WDDIS

清零后只有系統(tǒng)復(fù)位才允許改變?cè)撐坏臓顟B(tài),用戶(hù)可讀取該位狀態(tài)。65系統(tǒng)控制和狀態(tài)寄存器SCSRWDENINT:WDINTS看門(mén)狗復(fù)位寄存器WDKEY依次寫(xiě)0x55+0xAA到WDKEY將使WDCNTR清零;寫(xiě)其它任何值都會(huì)使看門(mén)狗復(fù)位;讀該寄存器將返回WDCR寄存器的值。//Thisfunctionresetsthewatchdogtimer.voidKickDog(void){EALLOW;SysCtrlRegs.WDKEY=0x0055;SysCtrlRegs.WDKEY=0x00AA;EDIS;}如果系統(tǒng)使能看門(mén)狗模塊,需要在用戶(hù)程序中定時(shí)執(zhí)行KickDog函數(shù),且定時(shí)器周期要小于看門(mén)狗計(jì)數(shù)器溢出周期。66看門(mén)狗復(fù)位寄存器WDKEY依次寫(xiě)0x55+0xAA到WDK看門(mén)狗計(jì)數(shù)寄存器WDCNTR

WDCNTR包含看門(mén)狗計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值(0-0xFF);如果計(jì)數(shù)器溢出,看門(mén)狗產(chǎn)生中斷或復(fù)位DSP;如果向WDKEY寫(xiě)有效的組合(0x55+0xAA

),將使計(jì)數(shù)器清零??撮T(mén)狗定時(shí)器的周期最大值:OSCCLK/512/(1-64)/256。67看門(mén)狗計(jì)數(shù)寄存器WDCNTRWDCNTR包含看門(mén)狗計(jì)數(shù)器的初始化系統(tǒng)控制//-ThisfunctioninitializestheSystemControlregisterstoaknownstate.程序功能:1、屏蔽看門(mén)狗模塊2、配置PLLCR寄存器,設(shè)定SYSCLKOUT的頻率3、配置高速/低速外設(shè)時(shí)鐘的預(yù)定標(biāo)因子4、使能相應(yīng)外設(shè)時(shí)鐘

voidInitSysCtrl(void) {

//Disablethewatchdog

DisableDog();

//InitializethePLLCRto0xA InitPll(0xA);

//Initializetheperipheralclocks InitPeripheralClocks(); }實(shí)驗(yàn)時(shí),注意使能所使用的外設(shè)模塊時(shí)鐘,否則無(wú)法讀寫(xiě)相應(yīng)的外設(shè)寄存器。PLLCR通常設(shè)為10,即CPU的時(shí)鐘頻率為30MHz×5。68初始化系統(tǒng)控制//-Thisfunctioniniti一、時(shí)鐘及系統(tǒng)控制看門(mén)狗及其應(yīng)用▲

計(jì)數(shù)寄存器——WDCNTRReservedD15D8D7D0R-0R/W-0WDCNTR▲

復(fù)位寄存器——WDKEYReservedD15D8D7D0R-0R/W-0WDKEY▲

控制寄存器——WDCRReservedD15D8R-0R/W-0WDFLAGD7D6D5D3D2D0R/W-0R/W-0WDPSWDDISWDCHKR-0第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)69一、時(shí)鐘及系統(tǒng)控制看門(mén)狗及其應(yīng)用▲計(jì)數(shù)寄存器——WDCN二、程序地址的產(chǎn)生

通常程序是順序執(zhí)行的,即在連續(xù)的程序存儲(chǔ)器地址上取出指令并執(zhí)行。但有時(shí)程序需要轉(zhuǎn)移到不連續(xù)的地址,然后再連續(xù)執(zhí)行新地址處的指令。為此提供了轉(zhuǎn)移、調(diào)用、重復(fù)(循環(huán))和中斷指令?!?/p>

在執(zhí)行當(dāng)前指令的同時(shí),程序流要求處理器生成下一個(gè)指令的程序地址(順序或非順序的)。程序控制:控制一個(gè)或多個(gè)指令塊的執(zhí)行次序。第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)70二、程序地址的產(chǎn)生▲通常程序是順序執(zhí)行的,即在連續(xù)的程二、程序地址的產(chǎn)生

第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)71二、程序地址的產(chǎn)生第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)29▲

程序計(jì)數(shù)器PC:22bit,取指令時(shí),對(duì)內(nèi)部和外部程序存儲(chǔ)器尋址。▲

程序地址寄存器PAR:驅(qū)動(dòng)程序地址總線,提供程序的讀、寫(xiě)地址。▲堆棧STACK:16位寬8級(jí)深,可保存8個(gè)返回地址,也可將用作暫存存儲(chǔ)器?!⒍褩STACK:16位、1級(jí)深,保存一個(gè)返回地址。▲

重復(fù)計(jì)數(shù)器RPTC:16位,與重復(fù)指令(RPT)一起,用來(lái)確定RPT后面的一條指令重復(fù)執(zhí)行多次。用到的硬件二、程序地址的產(chǎn)生

第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)72▲程序計(jì)數(shù)器PC:22bit,取指令時(shí),對(duì)內(nèi)部和外部程序▲

順序操作:程序的地址來(lái)源于PC程序計(jì)數(shù)器(程序地址+1)▲

空(?。┲芷冢撼绦虻牡刂穪?lái)源于PAR(程序地址+1)▲

從子程序返回:程序的地址來(lái)源于棧頂(TOS)▲

從表傳送或塊傳送返回:程序的地址來(lái)源于微堆棧(MSTACK)▲

轉(zhuǎn)移到或調(diào)用指令中指定的地址:程序的地址來(lái)源于轉(zhuǎn)移或調(diào)用指令。即利用程序讀總線(PRDB)的方式獲取程序地址?!?/p>

轉(zhuǎn)移到或調(diào)用累加器低半部分指定的地址:程序地址來(lái)源于累加器的低半部分。即利用數(shù)據(jù)讀總線(DRDB)的方式獲取程序地址?!?/p>

轉(zhuǎn)移到中斷服務(wù)程序:程序地址來(lái)源于中斷矢量單元。即利用程序讀總線(PRDB)的方式獲取程序地址。程序地址產(chǎn)生的情況二、程序地址的產(chǎn)生

第2章CPU內(nèi)部結(jié)構(gòu)與時(shí)鐘系統(tǒng)73▲順序操作:程序的地址來(lái)源于PC程序計(jì)數(shù)器(程序地址+1)程序計(jì)數(shù)器PC▲

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論