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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32學(xué)習(xí)之外部中斷

          STM32學(xué)習(xí)之外部中斷

          作者: 時(shí)間:2016-12-02 來(lái)源:網(wǎng)絡(luò) 收藏
          之前看了網(wǎng)上有關(guān)外部中斷的使用介紹,覺(jué)得很簡(jiǎn)單,現(xiàn)在想想有那種想法真是浮躁,不要做浮躁的嵌入式工程師,要腳踏實(shí)地。今天把外部中斷實(shí)驗(yàn)做了一下,不做不知道,一作就是沒(méi)做出來(lái),網(wǎng)上參考別人的程序和有關(guān)資料還是沒(méi)做出來(lái),最后到群里問(wèn)了問(wèn),被一個(gè)叫STM32的網(wǎng)友發(fā)現(xiàn)了我的問(wèn)題,改過(guò)來(lái)之后程序按照自己的想法執(zhí)行。
          下面介紹一下今天的使用總結(jié):
          STM32中,每一個(gè)GPIO都可以觸發(fā)一個(gè)外部中斷,但是,GPIO的中斷是以組位一個(gè)單位的,同組間的外部中斷同一時(shí)間只能使用一個(gè)。比如說(shuō),PA0,PB0,PC0,PD0,PE0,PF0,PG0這些為1組,如果我們使用PA0作為外部中斷源,那么別的就不能夠再使用了,在此情況下,我們智能使用類(lèi)似于PB1,PC2這種末端序號(hào)不同的外部中斷源。每一組使用一個(gè)中斷標(biāo)志EXTIx。EXTI0 – EXTI4這5個(gè)外部中斷有著自己的單獨(dú)的中斷響應(yīng)函數(shù),EXTI5-9共用一個(gè)中斷響應(yīng)函數(shù),EXTI10-15共用一個(gè)中斷響應(yīng)函數(shù)。
          上面這一段話把外部中斷介紹的很詳細(xì)。要注意的是紅字部分,今天我使用的外部中斷管腳是PB.7 PB.8 PB.9 這幾個(gè)管腳正好對(duì)應(yīng)在一個(gè)中斷響應(yīng)函數(shù)里EXTI5-9。
          //選擇中斷管腳PB.7 PB.8 PB.8
          GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource7);
          GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource8);
          GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource9);
          EXTI_InitStructure.EXTI_Line = EXTI_Line7 | EXTI_Line8 | EXTI_Line9; //選擇中斷線路7 8 9
          在這里我出錯(cuò)了EXTI_InitStructure.EXTI_Line 選中的中斷管腳要和GPIO_EXTILineConfig 選中的管腳保持一致 也就是上面說(shuō)的
          我們智能使用類(lèi)似于PB1,PC2這種末端序號(hào)不同的外部中斷源這句話。
          源代碼如下
          /*
          ********************************************************************************
          ** 函數(shù)名稱(chēng) : void EXTI_Configuration(void))
          ** 函數(shù)功能 : 外部中斷初始化
          ** 輸 入 : 無(wú)
          ** 輸 出 : 無(wú)
          ** 返 回 : 無(wú)
          ********************************************************************************
          */
          void EXTI_Configuration(void)
          {
          EXTI_InitTypeDef EXTI_InitStructure;
          RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //復(fù)用時(shí)鐘
          //清空中斷標(biāo)志
          EXTI_ClearITPendingBit(EXTI_Line2);
          EXTI_ClearITPendingBit(EXTI_Line3);
          EXTI_ClearITPendingBit(EXTI_Line5);
          //選擇中斷管腳PB.7 PB.8 PB.8
          GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource7);
          GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource8);
          GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource9);
          EXTI_InitStructure.EXTI_Line = EXTI_Line7 | EXTI_Line8 | EXTI_Line9; //選擇中斷線路7 8 9
          EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //設(shè)置為中斷請(qǐng)求,非事件請(qǐng)求
          EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //設(shè)置中斷觸發(fā)方式為下降沿觸發(fā)
          EXTI_InitStructure.EXTI_LineCmd = ENABLE; //外部中斷使能
          EXTI_Init(&EXTI_InitStructure);
          }
          void EXTI9_5_IRQHandler(void)
          {
          if(EXTI_GetITStatus(EXTI_Line7) != RESET)
          {
          //添加中斷處理程序
          //點(diǎn)亮LED
          PC1_H;
          PC3_H;
          PC13_L;
          EXTI_ClearFlag(EXTI_Line7);
          EXTI_ClearITPendingBit(EXTI_Line7);
          }
          if(EXTI_GetITStatus(EXTI_Line8) != RESET)
          {
          //添加中斷處理程序
          //點(diǎn)亮LED燈
          PC1_H;
          PC3_L;
          PC13_H;
          EXTI_ClearFlag(EXTI_Line8);
          EXTI_ClearITPendingBit(EXTI_Line8);
          }
          if(EXTI_GetITStatus(EXTI_Line9) != RESET)
          {
          //添加中斷處理程序
          //點(diǎn)亮LED燈
          PC1_L;
          PC3_H;
          PC13_H;
          EXTI_ClearFlag(EXTI_Line9);
          EXTI_ClearITPendingBit(EXTI_Line9);
          }
          }



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

          評(píng)論


          技術(shù)專(zhuān)區(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); })();