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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32F4——NVIC中斷優(yōu)先級及外部中斷

          STM32F4——NVIC中斷優(yōu)先級及外部中斷

          作者: 時間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
          NVIC中斷優(yōu)先級

          一、簡介:

          CM4內(nèi)核可以支持256個中斷,包括16個內(nèi)核中斷和240個外部中斷,256級的可編程中斷設(shè)置。對于STM32F4沒有用到CM4內(nèi)核的所有東西,只是用到了一部分,對于STM32F40和41系列共有92個中斷,其中有10個內(nèi)核中斷和82個可屏蔽中斷,常用的為82個可屏蔽中斷。

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

          二、相關(guān)寄存器:

          ISER[8]—中斷使能寄存器組,用來使能中斷,每一位控制一個中斷,由于上面已經(jīng)說明了控制82個可屏蔽的中斷,因此利用ISER[0~2]這三個32位寄存器就夠了。一下的幾個寄存器同理。

          ICER[8]—中斷除能寄存器組,用來消除中斷。

          ISPR[8]—中斷掛起控制寄存器組,用來掛起中斷。

          ICPR[8]—中斷解掛控制寄存器組,用來解除掛起。

          IABR[8]—中斷激活標(biāo)志寄存器組,對應(yīng)位如果為1則表示中斷正在被執(zhí)行。

          IP[240]—中斷優(yōu)先級控制寄存器組,它是用來設(shè)置中斷優(yōu)先級的。我們只用到了IP[0]~IP[81],每個寄存器只用到了高4位,這4位又用來設(shè)置搶占優(yōu)先級和響應(yīng)優(yōu)先級(有關(guān)搶占優(yōu)先級和響應(yīng)優(yōu)先級后面會介紹到),而對于搶占優(yōu)先級和響應(yīng)優(yōu)先級各占多少位則由AIRCR寄存器控制,相關(guān)設(shè)置如下圖所示:

          關(guān)于搶占優(yōu)先級和響應(yīng)優(yōu)先級的理解,可以將它們簡單的理解為兩個級別,搶占優(yōu)先級的級別要比響應(yīng)優(yōu)先級的級別高,簡單的理解為一個為長輩的一個為晚輩的,晚輩要讓著長輩,因此搶占優(yōu)先級的中斷可以打斷響應(yīng)優(yōu)先級的中斷,而同級別的中斷就得有個先來后到的了,先來的先執(zhí)行。

          三、相關(guān)庫函數(shù)應(yīng)用

          1、中斷優(yōu)先級分組函數(shù):void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup),用來設(shè)置設(shè)置中斷優(yōu)先級的分組,就是設(shè)置AIRCR寄存器的值。

          2、中斷初始化:NVIC_Init(),用來設(shè)置一個中斷的相關(guān)參數(shù),包括中斷通道、搶占優(yōu)先級、響應(yīng)優(yōu)先級、通道使能。

          外部中斷

          一、簡介:

          STM32F4的每一個IO都可以作為外部中斷的中斷輸入口,其中斷控制器支持22個中斷/事件請求。其中有:1、EXTI線0~15:外部IO口的輸入中斷。2、線16:PVD輸出。3、線17:RTC鬧鐘事件。4、線18:USB OTG FS喚醒事件。5、線19:以太網(wǎng)喚醒。6、線20:USB OTG HS喚醒事件。7、線21:RTC入侵和時間戳事件。8、線22:RTC喚醒事件。

          二、IO口與中斷線的對應(yīng):

          STM32F4IO口遠(yuǎn)比16根中斷線要多,如果要對應(yīng)上就需要多個IO口公用一根中斷線,由于每一組IO口都有16個IO口,則可以做如下對應(yīng),即:PA0、PB0、……、PI0,對應(yīng)中斷線0,依次類推則可以做好相應(yīng)對應(yīng)?;谠摻Y(jié)構(gòu)則有了如下的配置過程。

          三、外部中斷配置:

          1、使能IO口時鐘,初始化IO口。

          2、開啟SYSCFG時鐘,設(shè)置IO口和中斷線的映射。相關(guān)函數(shù)為:void SYSCFG_EXTILineConfig(uint8_t EXTI_PortSourceGPIOx,uint8_t EXTI_PinSourcex)

          3、初始化線上中斷,設(shè)置相關(guān)參數(shù)。相關(guān)函數(shù)為:EXTI_Init();相關(guān)參數(shù)包括:中斷線、中斷模式、中斷觸發(fā)條件、中斷線使能。

          4、配置中斷分組。相關(guān)函數(shù)為:NVIC_Init();相關(guān)參數(shù)包括:中斷通道、搶占優(yōu)先級、響應(yīng)優(yōu)先級、使能中斷通道。

          5、編寫中斷服務(wù)函數(shù)。即中斷觸發(fā)后執(zhí)行的相關(guān)代碼。與其相關(guān)的有兩個函數(shù)為:ITStatus EXTI_GetITStatus(uint32_t EXTI_Line),用來判斷線上中斷是否發(fā)生。void EXTI_ClearITPendingBit(uint32_t EXTI_Line),用來在中斷函數(shù)結(jié)束時清除中斷標(biāo)志位。

          總結(jié):

          有關(guān)NVIC的中斷優(yōu)先級配置和外部中斷的相關(guān)結(jié)構(gòu)和配置就介紹到這里,這些介紹是編寫相關(guān)代碼的基礎(chǔ),在理解的基礎(chǔ)上也要去書寫相關(guān)的代碼和例程,同時設(shè)計(jì)的相關(guān)中斷觸發(fā)事件來多用,用的多了自然會在理論的基礎(chǔ)上得到升華。給自己加油吧??!



          評論


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