国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品
電子工程網(wǎng)
標(biāo)題:
STM32GPIO外部中斷總結(jié)
[打印本頁]
作者:
技術(shù)小白
時(shí)間:
2018-1-17 15:19
標(biāo)題:
STM32GPIO外部中斷總結(jié)
1
STM32中斷分組
STM32 的每一個(gè)GPIO都能配置成一個(gè)外部中斷觸發(fā)源,這點(diǎn)也是 STM32 的強(qiáng)大之處。STM32 通過根據(jù)引腳的序號(hào)不同將眾多中斷觸發(fā)源分成不同的組,比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0為第一組,那么依此類推,我們能得出一共有16 組,STM32 規(guī)定,每一組中同時(shí)只能有一個(gè)中斷觸發(fā)源工作,那么,最多工作的也就是16個(gè)外部中斷。STM32F103 的中斷控制器支持 19 個(gè)外部中斷/事件請(qǐng)求。每個(gè)中斷設(shè)有狀態(tài)位,每個(gè)中斷/事件都有獨(dú)立的觸發(fā)和屏蔽設(shè)置。STM32F103 的19 個(gè)外部中斷為:
線 0~15:對(duì)應(yīng)外部 IO 口的輸入中斷。
線 16:連接到 PVD 輸出。
線 17:連接到 RTC 鬧鐘事件。
線 18:連接到 USB 喚醒事件。
2
外部中斷的配置過程
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)號(hà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)先級(jí)配置
NVIC_InitTypeDef NVIC_InitStructure;//定義結(jié)構(gòu)體
NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; //使能外部中斷所在的通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //搶占優(yōu)先級(jí) 2,
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02; //子優(yōu)先級(jí) 2
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中斷通道
NVIC_Init(&NVIC_InitStructure); //根據(jù)結(jié)構(gòu)體信息進(jìn)行優(yōu)先級(jí)初始化
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è)中斷線對(duì)應(yīng)一個(gè)中斷函數(shù),中斷線 5-9 共用中斷函數(shù) ,EXTI9_5_IRQHandler,中斷線 10-15 共用中斷函數(shù) EXTI15_10_IRQHandler。
void EXTI2_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line2)!=RESET)//判斷某個(gè)線上的中斷是否發(fā)生
{
中斷邏輯…
EXTI_ClearITPendingBit(EXTI_Line2); //清除 LINE 上的中斷標(biāo)志位
}
}
使用按鍵進(jìn)行外部中斷的時(shí)候,一般都需要進(jìn)行按鍵延時(shí)消抖以及松手檢測(cè)的相關(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)行別的邏輯操作,這里不作研究。
信盈達(dá)靠技術(shù)打天下
以下課程可免費(fèi)試聽C語言、電子、PCB、STM32、Linux、FPGA、JAVA、安卓等。
想學(xué)習(xí)的你和我聯(lián)系預(yù)約就可以免費(fèi)聽課了。
宋工企鵝號(hào):35--24-65--90-88 Tel/WX:173--17--95--19--08
歡迎光臨 電子工程網(wǎng) (http://www.qingdxww.cn/)
Powered by Discuz! X3.4
主站蜘蛛池模板:
2020国产精品
|
japan在线观看
|
欧美人成人亚洲专区中文字幕
|
欧美日本日韩aⅴ在线视频 欧美日本日韩
|
精品国产免费一区二区三区
|
国产一区二区在线看
|
91精选视频
|
四虎影院免费在线
|
国模肉肉大尺度啪啪人体150p
|
激情图片激情视频激情小说
|
亚洲丶国产丶欧美一区二区三区
|
91视频免费视频
|
99久久精品久久久久久清纯
|
91免费公开视频
|
香蕉久久夜色精品国产2020
|
精品国产一区在线观看
|
南京巨根无套操到你窒息
|
成人爽爽激情在线观看
|
亚洲高清在线观看播放
|
99精品国产兔费观看久久99
|
久久久久久国产精品免费免
|
国产一久久香蕉国产线看观看
|
青青久热
|
精品欧美一区二区三区在线观看
|
日本在线视频精品
|
久久精品视频99精品视频150
|
麻豆
|
国产精品欧美在线观看
|
羞羞视频免费网站
|
日韩欧美小视频
|
久久精品视屏
|
成年男女免费视频网站
|
欧美男人天堂网
|
动漫av在线播放
|
日本高清视频在线观看
|
欧美网站视频
|
亚洲色图综合在线
|
久久九九热re6这里有精品
|
在线视频亚洲
|
99久热
|
失乐园电视剧日本第6集
|