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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32F104VG (一)中斷與外部中斷

          STM32F104VG (一)中斷與外部中斷

          作者: 時(shí)間:2016-11-19 來(lái)源:網(wǎng)絡(luò) 收藏
          一、基礎(chǔ)知識(shí)

          1.ARM的中斷優(yōu)先級(jí)分硬件優(yōu)先級(jí)和軟件優(yōu)先級(jí)兩種

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

          其中軟件優(yōu)先級(jí)又由搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)組成

          2.中斷的優(yōu)先級(jí)采用編號(hào)小優(yōu)先的原則。

          3.一般情況:

          1).如果設(shè)定了軟件優(yōu)先級(jí),先看軟件優(yōu)先級(jí):

          具有高搶占式優(yōu)先級(jí)的中斷可以在具有低搶占式優(yōu)先級(jí)的中斷處理過(guò)程中被響應(yīng),即中斷嵌套,或者說(shuō)高搶占式優(yōu)先級(jí)的中斷可以嵌套低搶占式優(yōu)先級(jí)的中斷。

          當(dāng)兩個(gè)中斷源的搶占式優(yōu)先級(jí)相同時(shí),這兩個(gè)中斷將沒(méi)有嵌套關(guān)系,當(dāng)一個(gè)中斷到來(lái)后,如果正在處理另一個(gè)中斷,這個(gè)后到來(lái)的中斷就要等到前一個(gè)中斷處理完之后才能被處理。如果這兩個(gè)中斷同時(shí)到達(dá),則中斷控制器根據(jù)他們的響應(yīng)優(yōu)先級(jí)高低來(lái)決定先處理哪一個(gè)。

          2).后看硬件優(yōu)先級(jí)

          如果他們的搶占式優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)都相等,則根據(jù)他們?cè)谥袛啾碇械呐盼豁樞驔Q定先處理哪一個(gè)。

          4. 特殊情況
          軟件優(yōu)先級(jí)設(shè)置對(duì)復(fù)位、NMI、硬件故障無(wú)效,他們的優(yōu)先級(jí)始終比外部中斷
          5.軟件優(yōu)先級(jí)的分組
          中斷優(yōu)先級(jí)分組就是把優(yōu)先級(jí)寄存器分割,分開(kāi)哪幾位是響應(yīng)優(yōu)先級(jí),哪幾位是搶占優(yōu)先級(jí)。至于怎樣設(shè)置分組:每一個(gè)ARM的M4中斷優(yōu)先級(jí)設(shè)計(jì)為可編程的8位,具體到stm32f4就只留給用戶4位共16級(jí)的可編程優(yōu)先級(jí),其中低4位已被占用。也就是說(shuō)stm32f4的優(yōu)先級(jí)分組情況采用NVIC_PriorityGroup_x, x=0~4表示,對(duì)應(yīng)如下表格:

          [10:8]

          分割點(diǎn)

          搶占優(yōu)先級(jí)位

          響應(yīng)優(yōu)先級(jí)位

          搶占優(yōu)先級(jí)數(shù)

          響應(yīng)優(yōu)先級(jí)數(shù)

          0b011(組4)

          xxxx

          [7:4]

          none

          16(0~15)

          1(0~0)

          0b100(組3)

          xxx.y

          [7:5]

          [4]

          8

          2

          0b101(組2)

          xx.yy

          [7:6]

          [5:4]

          4(0~3)

          4(0~3)

          0b110(組1)

          x.yyy

          [7]

          [6:4]

          2

          8

          0b111(組0)

          yyyy

          none

          [7:4]

          1

          16

          二、具體實(shí)例


          1.分析:
          1).開(kāi)關(guān)沒(méi)有按下去時(shí)候,GPIO為高電平,開(kāi)關(guān)按下去時(shí)候?yàn)榈碗娖健?/div>
          2).對(duì)應(yīng)GPIO為低電平時(shí)候?qū)Ⅻc(diǎn)亮二極管。
          PE12-->EXIT12
          PE13-->EXIT13
          PE14-->EXIT14
          PE15-->EXIT15
          在中斷向量表中可以查到EXTIRCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
          SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource12);
          SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource13);
          SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource14);
          SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource15);
          2)配置并初始化中斷線
          /* 配置 EXTI LineXXX */
          EXTI_InitStructure.EXTI_Line = EXTI_Line12 | EXTI_Line13 | EXTI_Line14 | EXTI_Line15;
          EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
          EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
          EXTI_InitStructure.EXTI_LineCmd = ENABLE;
          EXTI_Init(&EXTI_InitStructure);
          3)配置并初始化
          NVIC_InitTypeDef NVIC_InitStructure;
          /* 設(shè)置NVIC優(yōu)先級(jí)分組為Group2:4個(gè)搶占式優(yōu)先級(jí),4響應(yīng)式優(yōu)先級(jí) */
          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
          /* 中斷優(yōu)先級(jí)配置 最低優(yōu)先級(jí) 這里一定要分開(kāi)的設(shè)置中斷,不能夠合并到一個(gè)里面設(shè)置 */
          NVIC_Init(&NVIC_InitStructure);
          NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x03;
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
          NVIC_Init(&NVIC_InitStructure);
          2.2中斷處理函數(shù)部分
          void EXTI15_10_IRQHandler(void)
          {
          if(EXTI_GetITStatus(EXTI_Line12) != RESET)
          {
          EXTI_ClearITPendingBit(EXTI_Line12); /* 清除中斷標(biāo)志位 */
          //do something
          }

          if(EXTI_GetITStatus(EXTI_Line13) != RESET)
          {
          EXTI_ClearITPendingBit(EXTI_Line13); /* 清除中斷標(biāo)志位 */
          //do something
          }
          if(EXTI_GetITStatus(EXTI_Line14) != RESET)
          {
          EXTI_ClearITPendingBit(EXTI_Line14); /* 清除中斷標(biāo)志位 */
          //do something
          }
          if(EXTI_GetITStatus(EXTI_Line15) != RESET)
          {
          EXTI_ClearITPendingBit(EXTI_Line15); /* 清除中斷標(biāo)志位 */
          //do something
          }

          }



          關(guān)鍵詞: STM32F104VG中斷外部中

          評(píng)論


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