ch3-DSP的中斷控制課件_第1頁(yè)
ch3-DSP的中斷控制課件_第2頁(yè)
ch3-DSP的中斷控制課件_第3頁(yè)
ch3-DSP的中斷控制課件_第4頁(yè)
ch3-DSP的中斷控制課件_第5頁(yè)
已閱讀5頁(yè),還剩63頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

17四月2024ch3DSP的中斷控制主要內(nèi)容向量表映射PIE控制器的概述中斷源3.13.23.3外部中斷控制寄存器PIE配置寄存器PIE中斷寄存器3.43.53.63.7示例程序3.1PIE控制器的概述中斷結(jié)構(gòu):

在CPU級(jí),28xCPU支持1個(gè)非可屏蔽中斷(NMI)和16個(gè)可屏蔽的優(yōu)先中斷請(qǐng)求(INT1–INT14,RTOSINT和DLOGINT)。28x器件有許多外設(shè),每個(gè)外設(shè)能夠產(chǎn)生一個(gè)或更多中斷來(lái)響應(yīng)外設(shè)級(jí)的許多事件。由于CPU沒(méi)有足夠的能力在CPU級(jí)處理所有的外設(shè)中斷請(qǐng)求,所以需要一個(gè)集中式外設(shè)中斷擴(kuò)展(PIE)控制器來(lái)判斷來(lái)自各個(gè)源(例如,外設(shè)和其它外部引腳)的中斷請(qǐng)求。外設(shè)中斷擴(kuò)展(PIE)模塊將許多中斷源復(fù)用成一個(gè)較小的中斷輸入集合。PIE向量表用來(lái)保存系統(tǒng)內(nèi)每個(gè)中斷服務(wù)程序(ISR)的地址(向量)。每個(gè)中斷源(包括所有多路復(fù)用和非多路復(fù)用的中斷在內(nèi))有一個(gè)向量。用戶在器件初始化過(guò)程中填充向量表,并可以在操作過(guò)程中更新它。PIE模塊可以支持96個(gè)單個(gè)的中斷,這些中斷組成8個(gè)塊。每組中斷饋送到12個(gè)內(nèi)核中斷線(INT1~INT12)中的一條。96個(gè)中斷中的每一個(gè)都各自被保存在專有RAM模塊中的向量支持著,用戶可以修改這個(gè)RAM模塊。CPU在服務(wù)中斷時(shí)自動(dòng)提取相應(yīng)的中斷向量。取出向量并保存重要的CPU寄存器需要花費(fèi)9個(gè)CPU時(shí)鐘周期。因此,CPU可以立刻響應(yīng)中斷事件。中斷的優(yōu)先順序由硬件和軟件控制。每個(gè)單個(gè)的中斷可以在PIE模塊中被使能/禁能。圖3.1概述:使用PIE模塊多路復(fù)用中斷圖3.1所示為所有多路復(fù)用的PIE中斷的中斷操作順序。不復(fù)用的中斷源直接傳送到CPU。外設(shè)級(jí):外設(shè)中出現(xiàn)一個(gè)中斷產(chǎn)生的事件。該事件對(duì)應(yīng)的中斷標(biāo)志位(IF)在寄存器中被置位。如果相應(yīng)的中斷使能(IE)位被置位,則外設(shè)向PIE控制器產(chǎn)生一個(gè)中斷請(qǐng)求。如果中斷在外設(shè)級(jí)未被使能,IF就保持置位,直到被軟件清除。如果中斷稍后被使能,并且中斷標(biāo)志仍然置位,中斷請(qǐng)求就提交到PIE。外設(shè)寄存器中的中斷標(biāo)志必須手動(dòng)清除。中斷發(fā)生和響應(yīng)過(guò)程:外設(shè)級(jí)->PIE級(jí)->CPU級(jí)

PIE級(jí):

PIE模塊將8個(gè)外設(shè)和外部引腳中斷多路復(fù)用成一個(gè)CPU中斷。這些中斷分成12組:PIE組1–PIE組12。一個(gè)組內(nèi)的中斷多路復(fù)用成一個(gè)CPU中斷。例如,PIE組1被多路復(fù)用成CPU中斷1(INT1),PIE組12被復(fù)用成CPU中斷12(INT12)。連接到剩余CPU中斷的中斷源不復(fù)用。對(duì)于非多路復(fù)用的中斷,PIE直接將中斷請(qǐng)求傳遞給CPU。對(duì)于多路復(fù)用的中斷源,PIE模塊中的每個(gè)中斷有一個(gè)相關(guān)的標(biāo)志寄存器(PIEIFRx)和使能(PIEIERx)寄存器(x=PIE組1–PIE組12)。每個(gè)位(表示為y)對(duì)應(yīng)組內(nèi)8個(gè)多路復(fù)用中斷中的一個(gè)。這樣,PIEIFRx.y和PIEIERx.y對(duì)應(yīng)PIE組x(x=1-12)的中斷y(y=1-8)。另外,每個(gè)PIE中斷組還有一個(gè)應(yīng)答位(PIEACK),稱為PIEACKx(x=1-12)。一旦向PIE控制器作出請(qǐng)求,相應(yīng)的PIE中斷標(biāo)志(PIEIFRx.y)位就被置位。如果PIE中斷使能(PIEIERx.y)位也為了指定的中斷而置位,PIE就檢查對(duì)應(yīng)的PIEACKx位來(lái)確定CPU是否準(zhǔn)備好處理來(lái)自該組的中斷。如果該組的PIEACKx位被清除,PIE就將中斷請(qǐng)求發(fā)送給CPU。如果PIEACKx被置位,PIE就等到它被清零才將INTx的請(qǐng)求發(fā)送出去。CPU級(jí):一旦請(qǐng)求發(fā)送到CPU,對(duì)應(yīng)INTx的CPU級(jí)中斷標(biāo)志(IFR)就被設(shè)置。在標(biāo)志鎖存到IFR中以后,并不服務(wù)相應(yīng)的中斷,直至CPU中斷使能(IER)寄存器或調(diào)試中斷使能寄存器(DBGIER)以及全局中斷屏蔽(INTM)位將中斷使能。3.1PIE控制器的概述中斷處理進(jìn)程如果出現(xiàn)以下條件就使能中斷標(biāo)準(zhǔn)INTM=0且IER中相應(yīng)的位為1DSP處于實(shí)時(shí)模式且CPU停止IER中的位為1且DBGIER為1表3.1使能中斷使能CPU級(jí)可屏蔽中斷的要求取決于正在使用的中斷處理進(jìn)程。在標(biāo)準(zhǔn)進(jìn)程中(絕大部分時(shí)間都使用該進(jìn)程),不使用DBGIER寄存器。當(dāng)28x處于實(shí)時(shí)仿真模式且CPU被停止時(shí),使用另一個(gè)不同的進(jìn)程。在特殊的情況下,使用DBGIER,但忽略INTM位。如果DSP處于實(shí)時(shí)模式并且CPU正在運(yùn)行,就運(yùn)用標(biāo)準(zhǔn)中斷處理進(jìn)程。CPU準(zhǔn)備服務(wù)中斷:在準(zhǔn)備過(guò)程中,清除相應(yīng)的CPUIFR和IER位,清除EALLOW和LOOP,設(shè)置INTM和DBGM,清空管道,保存返回地址,并自動(dòng)執(zhí)行上下文保護(hù)。然后從PIE模塊中取出ISR的向量。如果中斷請(qǐng)求來(lái)自一個(gè)多路復(fù)用的中斷,PIE模塊就使用組PIEIERx和PIEIFRx寄存器來(lái)解碼需要服務(wù)哪個(gè)中斷。執(zhí)行的中斷服務(wù)程序的地址直接從PIE中斷向量表中提取。PIE中96個(gè)可能的中斷,每一個(gè)中斷都有一個(gè)32位的向量。當(dāng)中斷向量被提取時(shí),PIE模塊內(nèi)的中斷標(biāo)志(PIEIFRx.y)自動(dòng)被清除。但是,當(dāng)準(zhǔn)備接收來(lái)自PIE組的更多中斷時(shí),必須手動(dòng)清除給定中斷組的PIE應(yīng)答位。3.2向量表映射在28xx器件上,中斷向量表可以映射到存儲(chǔ)器中4個(gè)不同的存儲(chǔ)位置。實(shí)際上,28xx器件只使用PIE向量表映射。這個(gè)向量映射由下面的模式位/信號(hào)來(lái)控制:使用這些位和信號(hào)的可能向量表映射如表3.2所示:表3.2中斷向量表映射(1)向量映射M0和M1向量只是一個(gè)保留模式,在28x器件上它們被用作SARAM。M1和M0向量映射保留,僅供TI測(cè)試使用。當(dāng)使用其它向量映射時(shí),M0和M1存儲(chǔ)器模塊被當(dāng)做SARAM模塊,可以不受限制地自由使用。表3.3復(fù)位操作后的向量表映射在28x器件上,復(fù)位時(shí)VMAP和M0M1MAP模式被設(shè)為1。復(fù)位時(shí)ENPIE模式被強(qiáng)制為0。復(fù)位向量總是從BootROM中提取。在復(fù)位和引導(dǎo)結(jié)束之后,應(yīng)該由用戶代碼來(lái)初始化PIE向量表。然后,應(yīng)用代碼使能PIE向量表。從這時(shí)起,中斷向量從PIE向量表中提取。注:當(dāng)復(fù)位出現(xiàn)時(shí),復(fù)位向量總是從表3.3所示的向量表中提取。復(fù)位后PIE向量表總是被禁能。復(fù)位流程圖3.3中斷源PIE模塊將8個(gè)外設(shè)和外部引腳中斷多路復(fù)用為一個(gè)CPU中斷。這些中斷被分成12組:PIE組1–PIE組12。每組有一個(gè)相關(guān)的使能PIEIER寄存器和標(biāo)志PIEIFR寄存器。這兩個(gè)寄存器用來(lái)控制到CPU的中斷流。PIE模塊也使用PIEIER和PIEIFR寄存器來(lái)解碼CPU應(yīng)該跳轉(zhuǎn)到哪個(gè)中斷服務(wù)程序。3.3.1 處理多路復(fù)用中斷的方法規(guī)則1:切勿通過(guò)軟件來(lái)清除PIEIFR的位;當(dāng)一個(gè)寫(xiě)或讀-修改-寫(xiě)PIEIFR寄存器操作發(fā)生時(shí),引入的中斷可能被丟失。要清除一個(gè)PIEIFR位,必須服務(wù)掛起中斷(pendinginterrupt)。規(guī)則2:軟件劃分中斷優(yōu)先級(jí)的方法規(guī)則3:使用PIEIER禁能中斷在清除PIEIFR和PIEIER寄存器中的位時(shí)應(yīng)該遵守3個(gè)主要規(guī)則:通過(guò)使用外設(shè)中斷使能/禁能標(biāo)志來(lái)使能或禁能一個(gè)中斷。PIEIER和CPUIER寄存器的主要目的是用軟件劃分同一個(gè)PIE中斷組內(nèi)中斷的優(yōu)先級(jí)。3.3.2 使能和禁能多路復(fù)用外設(shè)中斷的方法如果PIEIER寄存器的位需要在這個(gè)上下文環(huán)境之外被清除。有兩種方法可以實(shí)現(xiàn):方法1:使用PIEIERx寄存器來(lái)禁能中斷和保存相關(guān)的PIEIFRx標(biāo)志;方法2:使用PIEIERx寄存器來(lái)禁能中斷和清除相關(guān)的PIEIFRx標(biāo)志;3.3.3 從一個(gè)外設(shè)到CPU的多路復(fù)用中斷請(qǐng)求的流程圖3.5多路復(fù)用中斷請(qǐng)求流程圖1.PIE組內(nèi)的任何外設(shè)或外部中斷產(chǎn)生一個(gè)中斷。如果中斷在外設(shè)模塊中被使能,中斷請(qǐng)求就被發(fā)送到PIE模塊。2.PIE模塊確認(rèn)PIE組x內(nèi)的中斷(INTx.y)已經(jīng)提交一個(gè)中斷并且相應(yīng)的PIE中斷標(biāo)志位被鎖存:PIEIFRx.y=1。3.中斷請(qǐng)求要從PIE發(fā)送到CPU,必須滿足條件:a.相應(yīng)的使能位必須置位(PIEIERx.y=1)b.組的PIEACKx位必須被清除。4.如果3a和3b的條件都滿足,中斷請(qǐng)求就被發(fā)送到CPU,并且再次置位應(yīng)答位(PIEACKx=1)。PIEACKx位將保持置位,直到你將其清除(表明組的其它中斷可以從PIE發(fā)送到CPU)。5.置位CPU中斷標(biāo)志位(CPUIFRx=1),表明CPU級(jí)有一個(gè)掛起的中斷x。6.如果CPU中斷被使能(CPUIER位x=1,或者DBGIER位x=1),并且全局中斷屏蔽被清除(INTM=0),那么CPU將服務(wù)INTx。7.CPU確認(rèn)中斷并執(zhí)行自動(dòng)上下文保存,清除IER位,置位INTM以及清除EALLOW。CPU為準(zhǔn)備服務(wù)中斷所執(zhí)行的操作在TMS320C28xDSPCPU和指令集參考指南(文檔編號(hào)SPRU430)中進(jìn)行了描述。8.然后CPU將從PIE中請(qǐng)求合適的向量。9.對(duì)于多路復(fù)用的中斷,PIE模塊使用PIEIERx和PIEIFRx寄存器的當(dāng)前值來(lái)譯碼應(yīng)該使用哪個(gè)向量地址。有兩種可能的情形:a.組內(nèi)最高優(yōu)先級(jí)中斷的向量(該中斷在PIEIERx寄存器中被使能,并且在PIEIFRx中標(biāo)識(shí)為掛起)被提取出來(lái)用作跳轉(zhuǎn)地址。這樣,即使在第7步以后有一個(gè)更高優(yōu)先級(jí)的已經(jīng)使能的中斷被標(biāo)識(shí)出來(lái),它也先被服務(wù)。b.如果組內(nèi)沒(méi)有標(biāo)識(shí)出來(lái)的中斷被使能,PIE將用該組內(nèi)最高優(yōu)先級(jí)中斷的向量來(lái)響應(yīng)。該向量用作INTx.1的跳轉(zhuǎn)地址。這個(gè)操作對(duì)應(yīng)28xTRAP或INT指令。3.3.4 PIE向量表PIE向量表由一個(gè)256×16的SRAM塊組成,如果PIE模塊不使用,它也可以用作RAM(只在數(shù)據(jù)區(qū)域內(nèi))。復(fù)位時(shí)未定義PIE向量表的內(nèi)容。CPU決定INT1~INT12的中斷優(yōu)先級(jí)。例如,如果INT1.1和INT8.1同時(shí)出現(xiàn),PIE模塊將兩個(gè)中斷同時(shí)提交給CPU,CPU先服務(wù)INT1.1。PIE控制每組8個(gè)中斷的優(yōu)先級(jí)。如果INT1.1和INT1.8同時(shí)出現(xiàn),INT1.1先發(fā)送到CPU,然后再發(fā)送INT1.8給CPU。在中斷處理的向量提取過(guò)程中對(duì)中斷的優(yōu)先級(jí)進(jìn)行劃分。在96種可能的多路復(fù)用中斷中,有43個(gè)中斷目前被使用。剩余的中斷保留供未來(lái)的器件使用。這些保留的中斷可以用作軟件中斷,只要它們?cè)赑IEIFRx級(jí)被使能,前提是組內(nèi)沒(méi)有中斷正在被外設(shè)使用。否則,來(lái)自外設(shè)的中斷可能因?yàn)樵谛薷腜IEIFR時(shí)中斷標(biāo)志被意外地清除而丟失??偨Y(jié)起來(lái),在下面兩種安全的情況下,保留的中斷可以用作軟件中斷:1.組內(nèi)沒(méi)有外設(shè)正在提交中斷。2.沒(méi)有外設(shè)中斷被指定到組。例如,PIE組11和12沒(méi)有任何外設(shè)和它們相連。表3.4PIE多路復(fù)用外設(shè)中斷向量表表3.5PIE向量表3.3中斷源3.3中斷源3.4PIE配置寄存器PIE配置寄存器控制著PIE模塊的功能表3.6PIE配置和控制寄存器PIEIER50x0000–0CEA1PIE,INT5組使能寄存器PIEIFR50x0000–0CEB1PIE,INT5組標(biāo)志寄存器PIEIER60x0000–0CEC1PIE,INT6組使能寄存器PIEIFR60x0000–0CED1PIE,INT6組標(biāo)志寄存器PIEIER70x0000–0CEE1PIE,INT7組使能寄存器PIEIFR70x0000–0CEF1PIE,INT7組標(biāo)志寄存器PIEIER80x0000–0CF01PIE,INT8組使能寄存器PIEIFR80x0000–0CF11PIE,INT8組標(biāo)志寄存器PIEIER90x0000–0CF21PIE,INT9組使能寄存器PIEIFR90x0000–0CF31PIE,INT9組標(biāo)志寄存器PIEIER100x0000–0CF41PIE,INT10組使能寄存器PIEIFR100x0000–0CF51PIE,INT10組標(biāo)志寄存器PIEIER110x0000–0CF61PIE,INT11組使能寄存器PIEIFR110x0000–0CF71PIE,INT11組標(biāo)志寄存器PIEIER120x0000–0CF81PIE,INT12組使能寄存器PIEIFR120x0000–0CF91PIE,INT12組標(biāo)志寄存器圖3.6PIECTRL寄存器(地址CE0)表3.7PIECTRL寄存器地址域描述圖3.7PIE中斷應(yīng)答寄存器(PIEACK)(地址CE1)表3.8PIE中斷應(yīng)答寄存器(PIEACK)的域描述3.5PIE中斷寄存器3.5.1 PIE中斷標(biāo)志寄存器

有12個(gè)PIEIFR寄存器,每個(gè)寄存器對(duì)應(yīng)PIE模塊使用的一個(gè)CPU中斷(INT1–INT12)。圖3.8PIEIFRx寄存器(x=1~12)表3.9PIEIFRx寄存器的域描述注:切勿清除一個(gè)PIEIFR位;中斷可能在讀-修改-寫(xiě)操作過(guò)程中被丟失;清除被標(biāo)識(shí)中斷的方法請(qǐng)見(jiàn)3.3.1節(jié)。3.5.2 PIE中斷使能寄存器有12個(gè)PIEIER寄存器,每個(gè)寄存器對(duì)應(yīng)PIE模塊使用的一個(gè)CPU中斷(INT1–INT12)。圖3.9PIEIERx寄存器(x=1~12)表3.10PIEIERx寄存器(x=1~12)的域描述注:在正常操作過(guò)程中清除PIEIER位時(shí)必須十分小心。有關(guān)處理這些位的正確流程請(qǐng)見(jiàn)3.3.2節(jié)。3.5.3 CPU中斷標(biāo)志寄存器(IFR)CPU中斷標(biāo)志寄存器(IFR)是一個(gè)16位的CPU寄存器,用來(lái)識(shí)別和清除掛起的中斷。IFR包含所有CPU級(jí)可屏蔽中斷(INT1-INT14,DLOGINT和RTOSINT)的標(biāo)志位。當(dāng)PIE被使能時(shí),PIE模塊復(fù)用INT1-INT12的中斷源。當(dāng)請(qǐng)求一個(gè)可屏蔽中斷時(shí),相應(yīng)外設(shè)控制寄存器中的標(biāo)志位被設(shè)置為1。如果對(duì)應(yīng)的屏蔽位也為1,中斷請(qǐng)求就發(fā)送到CPU,設(shè)置IFR中的相應(yīng)標(biāo)志。這表明中斷正在掛起或等待響應(yīng)。下面的事件也可以清除IFR標(biāo)志: CPU響應(yīng)中斷。 28x器件被復(fù)位。注:1.要清除一個(gè)CPUIFR位,你必須向該位寫(xiě)入0,而不是1。2.當(dāng)一個(gè)可屏蔽中斷被響應(yīng)時(shí),只有IFR位自動(dòng)清除。相應(yīng)外設(shè)控制寄存器中的標(biāo)志位不清除。如果應(yīng)用要求清除控制寄存器標(biāo)志,相應(yīng)的位必須通過(guò)軟件來(lái)清除。3.當(dāng)INTR指令請(qǐng)求一個(gè)中斷并且相應(yīng)的IFR位被置位時(shí),CPU不自動(dòng)清除IFR位。如果應(yīng)用要求清除IFR位,必須通過(guò)軟件來(lái)清除。4.IMR和IFR是內(nèi)核級(jí)中斷固有的寄存器。所有外設(shè)在相應(yīng)的控制/配置寄存器中有自己的中斷屏蔽和標(biāo)志位。注:幾個(gè)外設(shè)中斷被分組為一個(gè)內(nèi)核級(jí)中斷。圖3.10中斷標(biāo)志寄存器(IFR)——CPU寄存器表3.11中斷標(biāo)志寄存器(IFR)——CPU寄存器域描述3.5.4 中斷使能寄存器(IER)和調(diào)試中斷使能寄存器(DBGIER)IER是一個(gè)16位的CPU寄存器。IER包含所有可屏蔽CPU中斷級(jí)(INT1-INT14,RTOSINT和DLOGINT)的使能位。IER不包含NMI或XRS;因此,IER對(duì)于這兩個(gè)中斷沒(méi)有影響??梢宰xIER來(lái)識(shí)別使能或禁能的中斷級(jí),寫(xiě)IER來(lái)使能或禁能中斷級(jí)。當(dāng)一個(gè)中斷被禁能時(shí),它不被響應(yīng),不管INTM位的值是什么。當(dāng)一個(gè)中斷被使能時(shí),如果相應(yīng)的IFR位為1且INTM位為0,中斷就被響應(yīng)。當(dāng)使用ORIER和ANDIER指令修改IER位時(shí),確保它們不修改位15(RTOSINT)的狀態(tài),除非存在一個(gè)實(shí)時(shí)操作系統(tǒng)。當(dāng)一個(gè)硬件中斷被服務(wù)或執(zhí)行一條INTR指令時(shí),相應(yīng)的IER位被自動(dòng)清除。當(dāng)TRAP指令請(qǐng)求中斷時(shí),IER位不自動(dòng)清除。在TRAP指令請(qǐng)求中斷的情況下,如果需要清除IER位,必須由中斷服務(wù)程序來(lái)完成。復(fù)位時(shí),所有IER位均被清零,禁能所有可屏蔽的CPU級(jí)中斷。圖3.11中斷使能寄存器(IER)——CPU寄存器表3.12中斷使能寄存器(IER)——CPU寄存器域描述3.5PIE中斷寄存器只有當(dāng)CPU在實(shí)時(shí)仿真模式中終止時(shí),才使用調(diào)試中斷使能寄存器(DBGIER)。DBGIER中使能的中斷定義成對(duì)時(shí)間要求嚴(yán)格的中斷。當(dāng)CPU在實(shí)時(shí)模式中停止時(shí),只服務(wù)對(duì)時(shí)間要求嚴(yán)格的中斷,這些中斷也在IER中被使能。如果CPU正運(yùn)行在實(shí)時(shí)仿真模式,使用標(biāo)準(zhǔn)中斷處理進(jìn)程,忽略DBGIER。和IER一樣,可以讀取DBGIER來(lái)識(shí)別使能或禁能的中斷,寫(xiě)DBGIER來(lái)使能或禁能的中斷。圖3.12調(diào)試中斷使能寄存器(DBGIER)——CPU寄存器表3.13調(diào)試中斷使能寄存器(DBGIER)——CPU寄存器的域描述3.6外部中斷控制寄存器:支持3個(gè)外部中斷,XINT1-XINT3。每個(gè)外部中斷可以選擇負(fù)邊沿或正邊沿觸發(fā),也可以被使能或禁能。屏蔽的中斷還包含一個(gè)16位自由運(yùn)行的遞增計(jì)數(shù)器,在檢測(cè)到一個(gè)有效的中斷沿時(shí)復(fù)位為0。這個(gè)計(jì)數(shù)器可以用來(lái)精確地計(jì)時(shí)中斷。表3.14中斷控制和計(jì)數(shù)器寄存器(不受EALLOW保護(hù))圖3.13外部中斷n控制寄存器(XINTnCR)表3.15外部中斷n控制寄存器(XINTnCR)的域描述對(duì)于XINT1/XINT2/XINT3來(lái)說(shuō),還有一個(gè)16位的計(jì)數(shù)器,只要檢測(cè)到一個(gè)中斷邊沿,計(jì)數(shù)器就復(fù)位為0x000。這些計(jì)數(shù)器可以用來(lái)精確計(jì)時(shí)中斷的出現(xiàn)。圖3.14外部中斷n計(jì)數(shù)器(XINTnCTR)表3.16外部中斷n計(jì)數(shù)器(XINTnCTR)的域描述3.7示例程序定時(shí)器中斷應(yīng)用示例//DESCRIPTION:////ThisexampleconfiguresCPUTimer0,1,&2andincrements//acountereachtimethetimerassertsaninterrupt.#include"DSP28x_Project.h"http://DeviceHeaderfileandExamplesIncludeFile//Prototypestatementsforfunctionsfoundwithinthisfile.interruptvoidcpu_timer0_isr(void);interruptvoidcpu_timer1_isr(void);interruptvoidcpu_timer2_isr(void);voidmain(void){//Step1.InitializeSystemControl:PLL,WatchDog,enablePeripheralClocks//ThisexamplefunctionisfoundintheDSP2802x_SysCtrl.cfile.InitSysCtrl();//Step2.InitalizeGPIO:ThisexamplefunctionisfoundintheDSP2802x_Gpio.c//fileandillustrateshowtosettheGPIOtoit'sdefaultstate.//InitGpio();//Skippedforthisexample//Step3.ClearallinterruptsandinitializePIEvectortable:DisableCPUinterruptsDINT;//InitializethePIEcontrolregisterstotheirdefaultstate.ThedefaultstateisallPIE//interruptsdisabledandflagsarecleared.//ThisfunctionisfoundintheDSP2802x_PieCtrl.cfile.InitPieCtrl();//DisableCPUinterruptsandclearallCPUinterruptflags:IER=0x0000;IFR=0x0000;//InitializethePIEvectortablewithpointerstotheshellInterruptServiceRoutines//(ISR).Thiswillpopulatetheentiretable,eveniftheinterruptisnotusedinthis//example.Thisisusefulfordebugpurposes.TheshellISRroutinesarefoundin//DSP2802x_DefaultIsr.c.ThisfunctionisfoundinDSP2802x_PieVect.c.InitPieVectTable();//Interruptsthatareusedinthisexamplearere-mappedto//ISRfunctionsfoundwithinthisfile.EALLOW;//ThisisneededtowritetoEALLOWprotectedregistersPieVectTable.TINT0=&cpu_timer0_isr;PieVectTable.TINT1=&cpu_timer1_isr;PieVectTable.TINT2=&cpu_timer2_isr;EDIS;//ThisisneededtodisablewritetoEALLOWprotectedregisters//Step4.InitializetheDevicePeripheral.Thisfunctioncanbe//foundinDSP2802x_CpuTimers.cInitCpuTimers();//Forthisexample,onlyinitializetheCpuTimers#if(CPU_FRQ_60MHZ)//ConfigureCPU-Timer0,1,and2tointerrupteverysecond://60MHzCPUFreq,1secondPeriod(inuSeconds)ConfigCpuTimer(&CpuTimer0,60,1000000);ConfigCpuTimer(&CpuTimer1,60,1000000);ConfigCpuTimer(&CpuTimer2,60,1000000);#endif#if(CPU_FRQ_50MHZ)//ConfigureCPU-Timer0,1,and2tointerrupteverysecond://50MHzCPUFreq,1secondPeriod(inuSeconds)ConfigCpuTimer(&CpuTimer0,50,1000000);ConfigCpuTimer(&CpuTimer1,50,1000000);ConfigCpuTimer(&CpuTimer2,50,1000000);#endif#if(CPU_FRQ_40MHZ)//ConfigureCPU-Timer0,1,and2tointerrupteverysecond://40MHzCPUFreq,1secondPeriod(inuSeconds)ConfigCpuTimer(&CpuTimer0,40,1000000);ConfigCpuTimer(&CpuTimer1,40,1000000);ConfigCpuTimer(&CpuTimer2,40,1000000);#endif//Toensureprecisetiming,usewrite-onlyinstructionstowritetotheentireregister.//Therefore,ifanyoftheconfigurationbitsarechangedinConfigCpuTimerand//InitCpuTimers(inDSP2802x_CpuTimers.h),thebelowsettingsmustalsobe//updated.CpuTimer0Regs.TCR.all=0x4001;//Usewrite-onlyinstructiontosetTSSbi

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論