資源描述:
《dsp中斷設(shè)置簡(jiǎn)明教程》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、一、?簡(jiǎn)述本文介紹TMS320C6000系列中斷設(shè)置的簡(jiǎn)明方法。通過(guò)示例定時(shí)器中斷,MCBSP串口接收中斷及外部中斷這三種中斷實(shí)現(xiàn)過(guò)程,介紹如何實(shí)現(xiàn)中斷各個(gè)寄存器的配置,中斷向量表書寫以及中斷服務(wù)函數(shù)。最后提供一個(gè)簡(jiǎn)要的示例程序可供大家下載使用。此示例在DSK6416的TI官方實(shí)驗(yàn)板上通過(guò)測(cè)試。由于定時(shí)器和串口工作模式較繁,因此對(duì)中斷無(wú)關(guān)部分不做介紹。二、?實(shí)現(xiàn)DSP中斷需要做哪些通用工作設(shè)置允許哪些非屏蔽中斷設(shè)置各個(gè)允許的非屏蔽中斷的中斷來(lái)源設(shè)置開啟總中斷設(shè)計(jì)中斷向量表將中斷向量表通過(guò)cmd文件掛載到指令內(nèi)存提供中斷處理
2、函數(shù)如果中斷向量表首地址掛載的不是0地址,那么需要設(shè)置中斷向量表地址寄存器對(duì)于不同的中斷源,需要做各個(gè)自己的工作,比如如果是外部中斷,那么需要設(shè)置管腳極性,即由高->低產(chǎn)生中斷抑或反之。為了照顧知識(shí)較少的讀者,下面將從一個(gè)新工程出發(fā),引導(dǎo)大家建立一個(gè)中斷示例程序。如果您對(duì)建立工程很熟悉,可以跳過(guò)此步。三、?建立新工程1.點(diǎn)擊Project->New,設(shè)置ProjectName為intexample,ProjectType為Executable,Target選擇您需要的器件,在此由于本人使用的是DSK6416評(píng)估板。因此選擇
3、TMS320C64XX。2.添加標(biāo)準(zhǔn)庫(kù)rts6400.lib,以便自動(dòng)產(chǎn)生c_int00等函數(shù)。右擊當(dāng)前工程,選擇“AddFilestoProject”,選擇庫(kù)所在路徑,一般為CCS安裝自帶,可參考本CCS3.1版本的路徑地址:CCStudio_v3.1C6000cgtoolslibrts6400.lib如果您使用的是其他器件類型,請(qǐng)?jiān)趌ib文件夾內(nèi)選擇其他器件庫(kù)。添加源文件,選擇File->New->SourceFile,保存為main.c到工程路徑下。在此文件內(nèi)書寫主函數(shù)。voidmain(void){?wh
4、ile(1);}最后通過(guò)如2步驟添加此文件到工程。3.添加寄存器別名定義頭文件。在本示例中,對(duì)需要用到的寄存器定義別名后,構(gòu)成global.h文件,內(nèi)容在后文逐步介紹。在此可以建立一個(gè)空文件,并在main.c中包括它。#include"global.h"到此,一個(gè)DSP的新工程框架制作完畢。4.添加cmd鏈接文件?為了實(shí)現(xiàn)鏈接時(shí)內(nèi)存配置,我們需要提供一個(gè)cmd文件,為了方便,可以從官方的示例程序中拷貝一份,再加以修改。?在安裝目錄下D:CCStudio_v3.1tutorial器件類型hello1示例下,會(huì)找到一個(gè)
5、hello1.cmd,?將其拷貝到本工程目錄下,并將其改名為link.cmd,最后將其添加到工程中。?由于此文件沒(méi)有聲明stack和heap,會(huì)產(chǎn)生警告,如果動(dòng)態(tài)數(shù)據(jù)較多也容易溢出。因此我們最好在此文件提供stack和heap的大小,其值可根據(jù)實(shí)際情況調(diào)整,修改后,此文件內(nèi)容類似為:-stack0x1000-heap0x1000MEMORY{??ISRAM??????:origin=0x0,????????len=0x1000000}SECTIONS{???????.vectors>ISRAM???????.text???
6、>ISRAM???????.bss????>ISRAM???????.cinit??>ISRAM???????.const??>ISRAM???????.far????>ISRAM???????.stack??>ISRAM???????.cio????>ISRAM???????.sysmem?>ISRAM}至此,工程建立完畢,可以編譯一遍,觀察是否正常。---------------------------?intexample.pjt-Debug?---------------------------[main.c]"D
7、:CCStudio_v3.1C6000cgtoolsbincl6x"-g-fr"D:/intexample/Debug"-d"_DEBUG"-mv6400-@"Debug.lkf""main.c"[Linking...]"D:CCStudio_v3.1C6000cgtoolsbincl6x"-@"Debug.lkf"BuildComplete,?0Errors,0Warnings,0Remarks.四、?定時(shí)器中斷設(shè)計(jì)首先,我們先實(shí)現(xiàn)一個(gè)定時(shí)器中斷,因?yàn)樗皇芡獠坑绊?,容易測(cè)試。在gl
8、obal.h文件中,加入控制寄存器和中斷寄存器別名定義,另外為了使用定時(shí)器1,也應(yīng)對(duì)其別名進(jìn)行定義:/*定義控制寄存器*/externcregistervolatileunsignedintAMR;????/*AddressModeRegister?????*/externcregistervolati