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

          新聞中心

          STM32 EXIT

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

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

          這張圖是一條外部中斷線或外部事件線的示意圖,途中信號(hào)線上劃有一條斜線,旁邊標(biāo)志19字樣的注釋,表示這樣的線路共有19套,途中的藍(lán)色虛線箭頭,標(biāo)出了外部中斷信號(hào)的傳輸路徑,首先外部信號(hào)從編號(hào)1的芯片管腳進(jìn)入,經(jīng)過編號(hào)2的邊沿檢測(cè)電路,通過編號(hào)3的或門進(jìn)入中斷掛起請(qǐng)求寄存器,最后經(jīng)過編號(hào)4的與門輸入到NVIC中斷控制器,在這個(gè)通道上游4個(gè)控制選項(xiàng),外部的信號(hào)收件經(jīng)過邊沿檢測(cè)電路,這個(gè)邊沿檢測(cè)電路受上升沿或下降沿選擇寄存器控制,用戶可以使用這兩個(gè)寄存器控制需要哪一個(gè)邊沿產(chǎn)生中斷,因?yàn)檫x擇上升沿或下降沿是分別受2個(gè)平行的寄存器控制,所以用戶可以同時(shí)選擇上升沿或是下降沿,而如果只有一個(gè)寄存器控制,那么只能選擇一個(gè)邊沿了,接下來是編號(hào)3的或門,這個(gè)或門的另一個(gè)輸入時(shí)“軟件中斷/事件寄存器”,從這里可以看出,軟件可以優(yōu)先于外部信號(hào)請(qǐng)求一個(gè)中斷或事件,即當(dāng)“軟件中斷/事件寄存器”的對(duì)應(yīng)位為1時(shí),不管外部信號(hào)如何,編號(hào)3的或門都會(huì)輸出有效信號(hào)。

          一個(gè)中斷或事件請(qǐng)求信號(hào)經(jīng)過編號(hào)3的或門后,進(jìn)入掛起請(qǐng)求寄存器到此之前,中斷和事件的信號(hào)傳輸通路都是一致的,也就是說,掛起請(qǐng)求寄存器中記錄了外部信號(hào)的電平變化,外部請(qǐng)求信號(hào)最后經(jīng)過編號(hào)4的與門,向NVIC中斷控制器發(fā)出一個(gè)中斷請(qǐng)求,如果中斷屏蔽寄存器的對(duì)應(yīng)位為0,則該請(qǐng)求信號(hào)不能傳輸?shù)脚c門的另一端,實(shí)現(xiàn)了中斷的屏蔽

          途中的紅色箭頭,標(biāo)出了外部事件信號(hào)的傳輸路徑,外部請(qǐng)求信號(hào)經(jīng)過編號(hào)3的或門后,進(jìn)入編號(hào)5的郁悶,這個(gè)與門的作用于編號(hào)4的與門類似,用于引入事件屏蔽寄存器的控制;最后脈沖發(fā)生器把一個(gè)跳變的信號(hào)轉(zhuǎn)變位一個(gè)單脈沖,輸出到芯片中的其他功能,

          從這張圖中可以看出,從外部激勵(lì)信號(hào)來看,中斷和事件是沒有分別的,只是在芯片內(nèi)部分開,一路信號(hào)會(huì)向CPU產(chǎn)生中斷請(qǐng)求,另一路信號(hào)會(huì)向其他功能模塊發(fā)送脈沖觸發(fā)信號(hào),其他功能模塊如何響應(yīng)這個(gè)信號(hào),則由對(duì)應(yīng)的模塊自己決定。

          在圖上部的APB總線和外設(shè)模塊接口,是每一個(gè)功能模塊都有的部分

          總結(jié):

          中斷請(qǐng)求:當(dāng)產(chǎn)生中斷的時(shí)候,會(huì)執(zhí)行對(duì)應(yīng)的中斷處理程序

          事件請(qǐng)求:當(dāng)產(chǎn)生事件的時(shí)候,會(huì)想向其他模塊發(fā)送觸發(fā)信號(hào),對(duì)于其他模塊如何處理這個(gè)信號(hào),則由模塊自己決定!

          #include"exti.h"

          voidEXTI_Config(void)
          {
          EXTI_GPIO_Config();
          EXTI_InitStructure();

          }

          voidEXTI_GPIO_Config(void)
          {
          GPIO_InitTypeDefGPIO_InitStructure;

          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);


          NVIC_Exti();

          GPIO_InitStructure.GPIO_Pin=GPIO_Pin_14|GPIO_Pin_15;
          GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
          GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//上拉輸
          GPIO_Init(GPIOE,&GPIO_InitStructure);

          GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10|GPIO_Pin_11;
          GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
          GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
          GPIO_Init(GPIOB,&GPIO_InitStructure);
          }

          voidEXTI_InitStructure(void)
          {
          EXTI_InitTypeDefEXTI_InitStructure;
          EXTI_InitStructure.EXTI_Line=EXTI_Line14;
          EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
          EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
          EXTI_InitStructure.EXTI_LineCmd=ENABLE;
          EXTI_Init(&EXTI_InitStructure);
          }

          voidNVIC_Exti(void)
          {
          NVIC_InitTypeDefNVIC_InitStructure;
          NVIC_InitStructure.NVIC_IRQChannel=EXTI15_10_IRQn;
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
          NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
          NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
          NVIC_Init(&NVIC_InitStructure);
          }



          /*********************************************************************************
          *********************************************************************************/
          #include"exti.h"

          /*
          *函數(shù)名:NVIC_Configuration
          *描述:配置嵌套向量中斷控制器NVIC
          *輸入:無
          *輸出:無
          *調(diào)用:內(nèi)部調(diào)用
          */
          staticvoidNVIC_Configuration(void)
          {
          NVIC_InitTypeDefNVIC_InitStructure;

          /*Configureonebitforpreemptionpriority*/
          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

          /*配置P[A|B|C|D|E]0為中斷源*/
          NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn;
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
          NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
          NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
          NVIC_Init(&NVIC_InitStructure);
          }

          /*
          *函數(shù)名:EXTI_PB0_Config
          *描述:配置PB0為線中斷口,并設(shè)置中斷優(yōu)先級(jí)
          *輸入:無
          *輸出:無
          *調(diào)用:外部調(diào)用
          */
          voidEXTI_PB0_Config(void)
          {
          GPIO_InitTypeDefGPIO_InitStructure;
          EXTI_InitTypeDefEXTI_InitStructure;

          /*configtheextiline(PB0)clockandAFIOclock*/
          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);

          /*configtheNVIC(PB0)*/
          NVIC_Configuration();

          /*EXTIlinegpioconfig(PB0)*/
          GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
          GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;//上拉輸入
          GPIO_Init(GPIOB,&GPIO_InitStructure);

          /*EXTIline(PB0)modeconfig*/
          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;//下降沿中斷
          EXTI_InitStructure.EXTI_LineCmd=ENABLE;
          EXTI_Init(&EXTI_InitStructure);
          }



          /*********************************************************************************
          *********************************************************************************/
          #include"stm32f10x_it.h"
          voidEXTI15_10_Handler(void)
          {
          if(EXTI_GetITStatus(EXTI_Line14)!=RESET)//確認(rèn)產(chǎn)生了EXTILine中斷
          {

          GPIO_ResetBits(GPIOE,GPIO_Pin_3);
          EXTI_ClearITPendingBit(EXTI_Line14);//清除中斷標(biāo)志位
          }
          }





          /*
          *注意:中斷服務(wù)程序函數(shù)名有兩種命名方法
          *EXTI0_IRQHandler
          *EXTI9_5_IRQHandler
          *
          *
          *
          *
          *
          */



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

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