国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

STM32GPIO外部中斷總結

發布時間:2018-4-27 18:33    發布者:技術小白
關鍵詞: 嵌入式單片機
1
STM32中斷分組

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

線 0~15:對應外部 IO 口的輸入中斷。

線 16:連接到 PVD 輸出。

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

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

2
外部中斷的配置過程

1.配置觸發源GPIO口

因為GPIO口作為觸發源使用,所以將GPIO口配置成輸入模式,觸發模式有以下幾種:

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

b.GPIO_Mode_IN_FLOATING ,浮空輸入

c.GPIO_Mode_IPD ,帶下拉輸入

d.GPIO_Mode_IPU ,帶上拉輸入 

GPIO_InitTypeDef GPIO_InitStructure;//定義結構體

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

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

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//設置成上拉輸入

GPIO_Init(GPIOE, &GPIO_InitStructure);//使用結構體信息進行初始化IO口


2.使能AFIO復用時鐘功能

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); 

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

GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2);

4.中斷線上進行中斷初始化

EXTI_InitTypeDef EXTI_InitStructure;//定義初始化結構體

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

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

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

EXTI_InitStructure.EXTI_LineCmd = ENABLE;

EXTI_Init(&EXTI_InitStructure);//根據結構體信息進行初始化


5.中斷優先級配置

NVIC_InitTypeDef NVIC_InitStructure;//定義結構體

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

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //搶占優先級 2,

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02; //子優先級 2

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

NVIC_Init(&NVIC_InitStructure); //根據結構體信息進行優先級初始化

6.外部中斷服務函數的編寫

外部中斷函數分別為:

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 每個中斷線對應一個中斷函數,中斷線 5-9 共用中斷函數 ,EXTI9_5_IRQHandler,中斷線 10-15 共用中斷函數 EXTI15_10_IRQHandler。 
void EXTI2_IRQHandler(void)

{

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

{

 中斷邏輯…

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

   }

}

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

{

 delay_ms(10);//延時消抖

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

  {

   LED0=!LED0;

  }

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

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

}

當然,如果你的按鍵是允許長按功能的,那么就進行別的邏輯操作,這里不作研究。

信盈達靠技術打天下
以下課程可免費試聽C語言電子PCB、STM32、LinuxFPGA、JAVA、安卓等。
想學習的你和我聯系預約就可以免費聽課了。
宋工企鵝號:35--24-65--90-88   Tel/WX:173--17--95--19--08


本文地址:http://m.qingdxww.cn/thread-525133-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 利用SAM E54 Xplained Pro評估工具包演示CAN轉USB橋接器以及基于CAN的主機和自舉程序應用程序
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 热99这里只有精品 | 99久久精品免费看国产 | 欧美视频网站在线观看 | 花季传媒v3.0.3 | 国产亚洲精aa在线观看香蕉 | 欧美日韩一区二区三区高清不卡 | 国产麻豆久久 | 91在线麻豆| 欧美日韩色黄大片在线视频 | 国产一区二区精品在线观看 | 日本综合色 | 欧美一区二区三区免费看 | 蜜桃臀久久伊人福利 | 色综合久久综合欧美综合网 | 日韩免费视频播播 | 爱操在线| 日本天堂网在线观看 | 草草伊人 | 日韩在线观看一区 | 欧美曰逼 | 最近最新2019中文字幕6 | 国产123| 色成人亚洲 | 国产手机在线国内精品 | 欧美精品成人久久网站 | 九九re| 一个人的视频免费在线观看 | 97在线观看免费 | 亚洲女人天堂a在线播放 | 亚洲丶国产丶欧美一区二区三区 | 美女裸身无档视频免费 | 青青网在线视频 | 成视频年人黄网站免费动漫 | 亚洲国产精久久久久久久春色 | 亚洲精品九色在线网站 | 樱桃视频黄色 | 97在线视频免费观看 | 重口调教女虐女长篇小说 | 亚洲 欧美 成人日韩 | 2017天天操| 美女胸又大又黄又www小说 |