日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]一、STM32中斷分組:  STM32 的每一個(gè)GPIO都能配置成一個(gè)外部中斷觸發(fā)源,這點(diǎn)也是STM32的強(qiáng)大之處。STM32 通過根據(jù)引腳的序號不同將眾多中斷觸發(fā)源分成不同的組,比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0為第一組

一、STM32中斷分組:

  STM32 的每一個(gè)GPIO都能配置成一個(gè)外部中斷觸發(fā)源,這點(diǎn)也是STM32的強(qiáng)大之處。STM32 通過根據(jù)引腳的序號不同將眾多中斷觸發(fā)源分成不同的組,比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0為第一組,那么依此類推,我們能得出一共有16 組,STM32 規(guī)定,每一組中同時(shí)只能有一個(gè)中斷觸發(fā)源工作,那么,最多工作的也就是16個(gè)外部中斷。STM32F103的中斷控制器支持19個(gè)外部中斷/事件請求。每個(gè)中斷設(shè)有狀態(tài)位,每個(gè)中斷/事件都有獨(dú)立的觸發(fā)和屏蔽設(shè)置。STM32F103的19個(gè)外部中斷為:

線0~15:對應(yīng)外部IO口的輸入中斷。

GPIO引腳中斷標(biāo)志位中斷處理函數(shù)PA0~PG0EXTI0EXTI0_IRQHandlerPA1~PG1EXTI1EXTI1_IRQHandlerPA2~PG2EXTI2EXTI2_IRQHandlerPA3~PG3EXTI3EXTI3_IRQHandlerPA4~PG4EXTI4EXTI4_IRQHandlerPA5~PG5EXTI5EXTI9_5_IRQHandlerPA6~PG6EXTI6
PA7~PG7EXTI7
PA8~PG8EXTI8
PA9~PG9EXTI9
PA10~PG10EXTI10EXTI15_10_IRQHandlerPA11~PG11EXTI11
PA12~PG12EXTI12
PA13~PG13EXTI13
PA14~PG14EXTI14
PA15~PG15EXTI15









線16:連接到PVD輸出。

線17:連接到RTC鬧鐘事件。

線18:連接到USB喚醒事件。


二:外部中斷的配置過程:


  1、配置觸發(fā)源GPIO口:


  因?yàn)镚PIO口作為觸發(fā)源使用,所以將GPIO口配置成輸入模式,觸發(fā)模式有以下幾種:


  a.GPIO_Mode_AIN ,模擬輸入(ADC模擬輸入,或者低功耗下省電)


  b.GPIO_Mode_IN_FLOATING ,浮空輸入


  c.GPIO_Mode_IPD ,帶下拉輸入


  d.GPIO_Mode_IPU ,帶上拉輸入 


  GPIO_InitTypeDef GPIO_InitStructure;//定義結(jié)構(gòu)體


  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//使能時(shí)鐘


  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;//選擇IO口 PE2


  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//設(shè)置成上拉輸入


  GPIO_Init(GPIOE, &GPIO_InitStructure);//使用結(jié)構(gòu)體信息進(jìn)行初始化IO口


  2、使能AFIO復(fù)用時(shí)鐘功能:


  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); 

  


  3、將GPIO口與中斷線映射起來: 


  GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2);


  4、中斷線上進(jìn)行中斷初始化: 


  EXTI_InitTypeDef EXTI_InitStructure;//定義初始化結(jié)構(gòu)體


  EXTI_InitStructure.EXTI_Line=EXTI_Line2; //中斷線的標(biāo)號 取值范圍為EXTI_Line0~EXTI_Line15


  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中斷模式,可選值為中斷 EXTI_Mode_Interrupt 和事件 EXTI_Mode_Event。


  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//觸發(fā)方式,可以是下降沿觸發(fā) EXTI_Trigger_Falling,上升沿觸發(fā) EXTI_Trigger_Rising,或者任意電平(上升沿和下降沿)觸發(fā)EXTI_Trigger_Rising_Falling


  EXTI_InitStructure.EXTI_LineCmd = ENABLE;


  EXTI_Init(&EXTI_InitStructure);//根據(jù)結(jié)構(gòu)體信息進(jìn)行初始化


  5、中斷優(yōu)先級配置: 



  NVIC_InitTypeDef NVIC_InitStructure;//定義結(jié)構(gòu)體


  NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; //使能外部中斷所在的通道


  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //搶占優(yōu)先級 2,


  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02; //子優(yōu)先級 2


  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中斷通道


  NVIC_Init(&NVIC_InitStructure); //根據(jù)結(jié)構(gòu)體信息進(jìn)行優(yōu)先級初始化



  6、外部中斷服務(wù)函數(shù)的編寫:


  外部中斷函數(shù)分別為:


  EXPORT EXTI0_IRQHandler


  EXPORT EXTI1_IRQHandler


  EXPOR T EXTI2_IRQHandler


  EXPORT EXTI3_IRQHandler


  EXPORT EXTI4_IRQHandler


  EXPORT EXTI9_5_IRQHandler


  EXPORT EXTI15_10_IRQHandler


  中斷線 0-4 每個(gè)中斷線對應(yīng)一個(gè)中斷函數(shù),中斷線 5-9 共用中斷函數(shù) EXTI9_5_IRQHandler,中斷線 10-15 共用中斷函數(shù) EXTI15_10_IRQHandler?!  ?/p>


  void EXTI2_IRQHandler(void)

  {

    if(EXTI_GetITStatus(EXTI_Line2)!=RESET)//判斷某個(gè)線上的中斷是否發(fā)生


    {

      中斷邏輯…

      EXTI_ClearITPendingBit(EXTI_Line2); //清除 LINE 上的中斷標(biāo)志位

    }

  }


三、關(guān)于使用GPIO口接按鍵進(jìn)行外部中斷的配置說明:


  使用按鍵進(jìn)行外部中斷的時(shí)候,一般都需要進(jìn)行按鍵延時(shí)消抖以及松手檢測的相關(guān)處理,中斷函數(shù)可以參看以下代碼:


  void EXTI2_IRQHandler(void)

  {

    delay_ms(10);//延時(shí)消抖

    if(KEY2==0) //按鍵真的被按下

      {

        LED0=!LED0;

      }

    while(KEY2!=0);//等待松手

    EXTI_ClearITPendingBit(EXTI_Line2); //清楚中斷標(biāo)志位

  }


  當(dāng)然,如果你的按鍵是允許長按功能的,那么就進(jìn)行別的邏輯操作,這里不作研究。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉