<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      中斷是一種暫停正在執(zhí)行的程序,轉(zhuǎn)而執(zhí)行另外程序,等中斷程序執(zhí)行完畢,再回到主程序的過程

      一、DSP28335的中斷系統(tǒng)介紹

      1.中斷簡介

      F28335 內(nèi)部有16個中斷線,其中包括2個不可屏蔽中斷(RESET和NMI)與14 個可屏蔽中斷。
      F28335的外部中斷分為三個等級:外設級、PIE級和CPU級;如下圖:
      在這里插入圖片描述
      圖中右上側(cè)為CPU級,左下側(cè)為PIE級,右側(cè)為外設級

      一個外設中斷源想要讓CPU產(chǎn)生中斷必須經(jīng)過這三個階段,下面對這三個等級進行介紹

      (1)外設級

      CPU 正常處理程序過程中,外設產(chǎn)生了中斷事件,那么該外設對應中斷標志寄存器 IF響應的位將被自動置位,如果該外設對應中斷使能寄存器IE中響應的使能位正好置位(需要軟件控制),則外設產(chǎn)生的中斷將向PIE控制器發(fā)出中斷申請。

      進入中斷服務后,有部分硬件外設會自動復位中斷標志寄存器,多數(shù)外設需要在中斷服務中手動復位中斷標志寄存器

      (2)PIE級(重要)

      PIE相當于一個對中斷的管理器

      由于CPU沒有能力處理所有外設級的中斷請求,因此F28335的CPU讓出了12個中斷線交給PIE模塊進行復用管理

      PIE將外設中斷分成了12個組,分別對應著CPU的12個可屏蔽中斷線,每1組由8個外設級中斷組成,這8個外設中斷分別對應相應外設接口的中斷引腳,PIE通過一個8選1的多路選擇器將這8個外設中斷組成1組
      具體的中斷對應哪個PIE組的那條中斷線呢?查手冊有下表:
      在這里插入圖片描述
      以外部中斷1即XINT1為例,該中斷分組為第一組 INT1.y的第四條 INTx.4中斷線即 INT1.4

      和外設級中斷類似,在PIE模塊內(nèi)每組中斷有相應的中斷標志位(PIEIFRx)和使能(PIEIERx.y);除此之外,每組PIE中斷(INT1~INT12)有一個響應標志位(PIEACK)。

      這三個對應圖中紅色部分:在這里插入圖片描述
      作用分別為:
      PIE控制器有中斷產(chǎn)生,相應的中斷標志位(PIEIFRx.y)將置1。
      如果相應的PIE中斷使能位也置1,則PIE將檢查相應的PIEACKx以確定CPU是否準備響應該中斷。
      PIEACKx主要作用在于選擇哪個中斷進入CPU;如果相應的PIEACKx位清零,PIE向CPU申請中斷;

      (3)CPU級

      一旦CPU申請中斷,CPU級中斷標志位(IFR)將置1。中斷標志位鎖存到標志寄存器后,只有CPU中斷使能寄存器(IER)或中斷調(diào)試使能寄存器(DBGIER)相應的使能位和全局中斷屏蔽位(INTM)被使能時才會響應中斷申請。

      綜上,中斷觸發(fā)條件可總結(jié)為下表:
      在這里插入圖片描述

      2.中斷向量表

      什么是中斷向量?

      中斷服務程序的入口地址就是中斷向量

      在使用時,中斷服務程序地址保存在SRAM中,我們不需要知道在哪(也用不到)

      (1)中斷優(yōu)先級

      28335的中斷優(yōu)先級定義比較簡單,遵循以下原則:

      a.同組內(nèi):同組內(nèi)排在前面的優(yōu)先級比排在后面的優(yōu)先級高。
      b.不同組內(nèi):排在前面組內(nèi)的任何一個中斷優(yōu)先級要比排在后面組內(nèi)的任何一個中斷的優(yōu)先級高。
      (優(yōu)先級舉例:INT1.2 > INT1.7 > INT2.2)

      二、中斷寄存器介紹

      1.PIE級中斷寄存器

      (1)PIE中斷使能寄存器(PIEIERx)

      PIE控制器一共有12個PIE中斷使能寄存器PIEIERx,分別對應于PIE控制器的12個組,每組1個,用來設置組內(nèi)中斷的使能情況。
      具體定義:
      在這里插入圖片描述

      (2)PIE中斷標志寄存器(PIEIFRx)

      PIE控制器一共有12個PIE中斷標志寄存器PIEIFRx,分別對應PIE控制器的12個組,每組1個。PIEIFR寄存器的每一位代表對應中斷的請求信號

      該位置1,表示相應的中斷提出了請求,需要CPU響應。

      CPU取出相應的中斷向量的時候,也就是說,當CPU響應該中斷的時候,該標志位被清0。

      具體定義:在這里插入圖片描述

      (3)PIE中斷應答寄存器(PIEACKx)

      如果PIE中斷控制器有中斷產(chǎn)生,則相應的中斷標志位將置1。如果相應的PIE中斷使能位也置1,則PIE將檢查PIE中斷應答寄存器PIEACK,以確定CPU是否準備響應該中斷。

      如果相應的PIEACKx清0,PIE便向CPU申請中斷;

      如果相應的PIEACKx置1,那么PIE將等待直到相應的PIEACKx清0才向CPU申請中斷

      具體定義:
      在這里插入圖片描述

      (4)PIE中斷應答寄存器(PIECTRL)

      具體定義:
      在這里插入圖片描述

      2.CPU級中斷寄存器

      (1) CPU 中斷使能寄存器(IER)

      CPU 中斷標志寄存器(IFR)是一個16位的CPU寄存器,包含CPU級可屏蔽中斷(INT1-INT14、DLOGINT 和 RTOSINT)的使能位。

      用戶可以通過讀IER來定義使能中斷或設置中斷的級別,也可以通過寫IER來激活中斷。

      用ORIER指令將相應的IER位置1可以使能中斷,利用ANDIER指令將相應的IER位置0可以禁止一個中斷

      具體定義:
      在這里插入圖片描述

      (2)CPU 中斷標志寄存器(IFR)

      CPU 中斷標志寄存器(IFR)是一個16位的CPU寄存器,用于標志和清除被執(zhí)行的中斷。CPU中斷寄存器(IFR)包含CPU級可屏蔽中斷(INT1-INT14、DLOGINT和RTOSINT)的標志位。

      當一個可屏蔽請求發(fā)生時,相應外設控制寄存器的標志位置1,如果相應的屏蔽位也是1,則該中斷請求被送到CPU,并在IFR中相應的標志位置1,這表示中斷未被執(zhí)行或等待應答

      具體定義:
      在這里插入圖片描述

      3.外部中斷相關(guān)寄存器

      (1)外部可屏蔽中斷控制寄存器(XINTnCR)

      用于使能中斷和定義觸發(fā)方式

      具體定義:在這里插入圖片描述

      (2)外部不可屏蔽中斷控制寄存器(XINTnCR)

      具體定義:
      在這里插入圖片描述

      (3)外部中斷x計數(shù)器(XINTxCTR)

      不常用
      具體定義:
      在這里插入圖片描述

      二、軟件實現(xiàn)

      1.中斷配置的步驟

      (1)失能CPU級中斷,并初始化PIE控制器寄存器和PIE中斷向量表
      代碼如下:

      InitPieCtrl();
      IER=0x0000;
      IFR=0x0000;
      InitPieVectTable();

      該步驟中,InitPieCtrl();和 InitPieVectTable();函數(shù)是TI公司已經(jīng)很封裝 好的寄存器和向量表初始化函數(shù)。
      IER(中斷使能寄存器)清零表示暫時禁用所有CPU級別的中斷
      IFR(中斷標志寄存器)清零表示清除所有掛起的中斷標志
      這兩步是為初始化中斷做準備,防止在初始化過程中發(fā)生中斷導致初始化失敗(相當于上電復位)

      (2)使能IO口時鐘,為中斷配置IO口
      以外部中斷為例,本實驗中以按鍵按下,下拉電平為中斷源,所以要配置IO為輸入,并配置相應的時鐘

      (3)設置IO口與中斷線的映射關(guān)系
      這一步是將IO與 中斷線進行連接,以外部中斷為例,XINT1-XINT2只能對GPIO0-GPIO31配置;XINT3-XINT7只對GPIO32-GPIO63配置;如下圖:
      在這里插入圖片描述
      在這里插入圖片描述
      代碼如下:

      EALLOW;
      GpioIntRegs.GPIOXINT1SEL.bit.GPIOSEL=12; //XINT1是GPIO12
      EDIS;

      (4)指定中斷向量表中斷服務函數(shù)地址
      這個通過對PIE中斷向量表寄存器的相應位進行設置,中斷服務函數(shù)名可自定義,但是要符合C語言標識符命名規(guī)則,在中斷函數(shù)名前需加上地址符“&”。在對PIE中斷向量表寄存器設置時要先聲明EALLOW,修改完成后還要聲明EDIS。
      代碼如下:

      EALLOW; //修改被保護的寄存器,修改前應添加EALLOW語句
      PieVectTable.XINT1=&EXTI1_IRQn;
      EDIS; //EDIS的意思是不允許修改被保護的寄存器

      (5)使能外設對應的PIE中斷
      由于外設中斷較多,它們是由PIE統(tǒng)一管理,所以要根據(jù)你所使用的外設中斷選擇對應的組和該組內(nèi)的通道,比如外部中斷1,它是由PIE組1的第4通道連接INT1.4
      代碼:

      PieCtrlRegs.PIEIER1.bit.INTx4=1; //使能PIE組1的INT4

      (6)設置外部中斷觸發(fā)方式并使能中斷
      該步驟主要作用是進行對XINT1CR寄存器操作進行對觸發(fā)方式和使能
      代碼:

      XIntruptRegs.XINT1CR.bit.POLARITY=0; //下降沿觸發(fā)中斷
      XIntruptRegs.XINT1CR.bit.ENABLE=1; //使能XINT1

      (7)使能CPU級中斷及全局中斷
      這個通過對IER和EINT寄存器相應位設置進行使能或者失能。

      IER|=M_INT1; //使能CPU中斷1(INT1)
      EINT; //開全局中斷
      ERTM;

      (8)編寫外部中斷服務函數(shù)
      配置好中斷后如果有觸發(fā),即會進入中斷服務函數(shù),中斷服務函數(shù)名在前面已定義好,所以要保證一致,否則將不會進入中斷服務函數(shù)內(nèi)執(zhí)行。在DSP28335軟件開發(fā)中,要在中斷服務函數(shù)名前加上關(guān)鍵字interrupt

      interruptvoidEXTI1_IRQn(void)
      {
      ...功能程序
      }

      2.外部中斷實驗

      實現(xiàn)效果:通過按鍵1對第一個LED進行中斷翻轉(zhuǎn)電平操作

      代碼:
      中斷初始化和中斷服務:

      interrupt void EXTI1_IRQn(void)
      {
      GpioDataRegs.GPCTOGGLE.bit.GPIO68=1;
      PieCtrlRegs.PIEACK.bit.ACK1 = 1;
      }
      void EXTI_Init(void)
      {
      //1.時鐘初始化
      EALLOW;
      SysCtrlRegs.PCLKCR3.bit.GPIOINENCLK = 1;
      EDIS;
      //2.GPIO按鍵配置
      EALLOW;
      //12
      GpioCtrlRegs.GPAMUX1.bit.GPIO12=0;
      GpioCtrlRegs.GPADIR.bit.GPIO12=0;//配置為輸入
      GpioCtrlRegs.GPAPUD.bit.GPIO12=0;
      GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 0;//配置為同步模式 即無濾波
      //48
      GpioCtrlRegs.GPBMUX2.bit.GPIO48=0;
      GpioCtrlRegs.GPBDIR.bit.GPIO48=1;
      GpioCtrlRegs.GPBPUD.bit.GPIO48=0;
      GpioDataRegs.GPBCLEAR.bit.GPIO48 = 1;
      EDIS;
      //3.設置IO與中斷線關(guān)系:XINT1->GPIO12
      EALLOW;
      GpioIntRegs.GPIOXINT1SEL.bit.GPIOSEL = 12;
      EDIS;
      //4.指定中斷向量表中斷服務函數(shù)地址
      EALLOW;
      PieVectTable.XINT1 = &EXTI1_IRQn;
      EDIS;
      //5.使能外設對應的PIE中斷
      PieCtrlRegs.PIEIER1.bit.INTx4 = 1;
      //6.設置下降沿觸發(fā)并使能XINT1
      XIntruptRegs.XINT1CR.bit.POLARITY = 1;
      XIntruptRegs.XINT1CR.bit.ENABLE = 1;
      //7.使能CPU級全局中斷
      IER|=M_INT1;
      EINT;
      ERTM;
      }

      main.c

      #include "DSP2833x_Device.h"     // DSP2833x Headerfile Include File
      #include "DSP2833x_Examples.h"   // DSP2833x Examples Include File
      #include "beep.h"
      #include "Key.h"
      #include "LED.h"
      void main()
      {
      InitSysCtrl();
      InitPieCtrl();
      IER=0x0000;
      IFR=0x0000;
      InitPieVectTable();
      Key_Init();
      Led_Init();
      EXTI_Init();
      while(1)
      {
      GpioDataRegs.GPCCLEAR.bit.GPIO64=1;
      }
      }
      posted on 2025-10-26 18:06  lxjshuju  閱讀(19)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品午夜福利视频234区| 亚洲综合精品第一页| av深夜免费在线观看| √天堂中文www官网在线| 久久国产精品老女人| 欧美喷水抽搐magnet| 少妇高潮激情一区二区三| 蜜桃久久精品成人无码av | 秋霞AV鲁丝片一区二区| 精品国产亚洲av麻豆特色| 日韩精品亚洲精品第一页| 狠狠色婷婷久久综合频道日韩 | 久久日产一线二线三线| 国产乱码日产乱码精品精| 如皋市| 日本不卡的一区二区三区| 国产破外女出血视频| 国产美女自卫慰黄网站| 熟女女同亚洲女同中文字幕| 日韩亚洲欧美中文高清| 亚洲夜色噜噜av在线观看| 亚洲精品国偷自产在线99人热| 69精品无人区国产一区| 中文字幕无码专区一VA亚洲V专| 激情综合五月丁香亚洲| 色老板精品无码免费视频| 一区二区三区国产亚洲网站| 亚洲一区二区三级av| 国产亚洲天堂另类综合| 少妇爽到呻吟的视频| 无码伊人久久大杳蕉中文无码 | 国产无遮挡又黄又爽免费网站 | 亚洲国产精品人人做人人爱| 亚洲线精品一区二区三八戒| 江口县| 国产91午夜福利精品| 无码人妻一区二区三区线| 好男人视频在线播放| 97精品人妻系列无码人妻| 极品美女扒开粉嫩小泬图片 | 高清国产一区二区无遮挡|