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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32中EXTI(外部中斷)和NVIC(嵌套向量中斷)的關(guān)系

          STM32中EXTI(外部中斷)和NVIC(嵌套向量中斷)的關(guān)系

          作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
          NVIC是Cortex-M3核心的一部分,關(guān)于它的資料不在《STM32的技術(shù)參考手冊》中,應(yīng)查閱ARM公司的《Cortex-M3技術(shù)參考手冊》

          Cortex-M3的向量中斷統(tǒng)一由NVIC管理
          EXTI是ST公司在其STM32產(chǎn)品上擴(kuò)展的外中斷控制。它負(fù)責(zé)管理映射到GPIO引腳上的外中斷和片內(nèi)幾個集成外設(shè)的中斷(PVD,RTC alarm,USB wakeup,ethernet wakeup),以及軟件中斷。其輸出最終被映射到NVIC的相應(yīng)通道。因此,配置EXTI中斷的過程必然包含對NVIC的配置,例如下面配置EXTI0的過程,就要首先配置EXTI控制器(使能相應(yīng)的中斷線,選擇中斷/事件模式,觸發(fā)邊沿極性),然后再配置NVIC控制器(EXTI0映射在NVIC上的通道號,中斷優(yōu)先級,中斷屏蔽狀態(tài)):

          本文引用地址:http://www.ex-cimer.com/article/201611/321173.htm


          GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0);


          EXTI_InitStructure.EXTI_Line = EXTI_Line0;
          EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
          EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; // or Rising
          EXTI_InitStructure.EXTI_LineCmd = ENABLE;
          EXTI_Init(&EXTI_InitStructure);


          NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;// EXTI0_IRQn is defined in stm32f10x.h
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
          NVIC_Init(&NVIC_InitStructure);

          EXTI0_IRQn的值,其實(shí)就是EXTI0中斷向量在中斷向量表中的位置(STM32技術(shù)參考手冊中斷向量表Position欄中的數(shù)值)



          評論


          技術(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); })();