<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > STM32 NVIC嵌套向量中斷控制器函數(shù)分析

          STM32 NVIC嵌套向量中斷控制器函數(shù)分析

          作者: 時間:2016-11-30 來源:網(wǎng)絡(luò) 收藏

          IMR:中斷屏蔽寄存器Interrupt Mask Register 32位寄存器前19位有效
          EMR: 事件屏蔽寄存器Eventmaskregister 32位寄存器前19位有效
          RTST: 上升沿觸發(fā)選擇寄存器Rising edge trigger select register
          FTSR:下降沿觸發(fā)選擇寄存器Falling edge trigger select register
          SWIER:軟件中斷事件寄存器Software interrupt event register
          PR: 掛起寄存器Pending Register

          I/O口復(fù)用里的配置寄存器EXTICR 每個I/O口可以配置成中斷輸入


          STM32 任何一個IO口都可以配置成中斷輸入口,但是IO口的數(shù)目遠大于中斷線數(shù)(16個)。于是STM32就這樣設(shè)計,GPIOA~GPIOG的[15:0]分別對應(yīng)中斷線15~0。這樣每個中斷線對應(yīng)了最多7個IO口,以線0為例:它對應(yīng)了GPIOA.0、PIOB.0、GPIOC.0、GPIOD.0、 GPIOE.0、GPIOF.0、GPIOG.0。而中斷線每次只能連接到1個IO口上,這樣就需要EXTICR來決定對應(yīng)的中斷線配置到哪個GPIO上了。















          EXTICR在AFIO的結(jié)構(gòu)體中定義如下

          typedef struct
          {
          vu32 EVCR;
          vu32 MAPR;
          vu32 EXTICR[4];
          } AFIO_TypeDef;

          EXTIRC寄存器總共4個,因為編譯器的寄存器都是從0號開始的,所以EXTICR[0]---EXTICR[3]對應(yīng)
          <>中的EXTICR1---EXTICR4 每個EXTICR用了其中低16位.

          外部中斷配置函數(shù):
          void Ex_NVIC_Config(u8 GPIOx,u8 BITx,u8 TRIM)
          {
          u8 EXTADDR;
          u8 EXTOFFSET;
          EXTADDR=BITx/4; //得到中斷寄存器組編號
          EXTOFFSET=(BITx%4)*4; //得到偏移量 具體哪個I/O口進行設(shè)置
          RCC->APB2ENR|=0x01; //使能復(fù)用I/O口
          AFIO->EXTICR[EXTADDR]|=GPIOx<EXTI->IMR|=1<EXTI->EMR|=1<if(TRIM&0x01) EXIT->FTSR|=1<if(TRIM&0x02) EXIT->RTSR|=1<}

          注:
          TRIM為觸發(fā)方式選擇變量; 0x01下降沿觸發(fā) 0x02 上升沿觸發(fā) 0x03任意電平觸發(fā).


          上一頁 1 2 下一頁

          關(guān)鍵詞: STM32NVIC向量中斷控制器函數(shù)分

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();