今天講解“STM32F103 EXIT中斷”,關(guān)于EXIT中斷里面有很多學(xué)問(wèn),以我的工作經(jīng)驗(yàn)來(lái)看,有幾點(diǎn)是特別容易犯錯(cuò)的,我會(huì)在文章最后重點(diǎn)講解。
每次講解的不僅僅是基礎(chǔ),而是重點(diǎn),不起眼的重點(diǎn),容易被人忽視的重點(diǎn)。關(guān)注微信公眾號(hào)“EmbeddDeveloper”還有更多精彩等著你。
今天提供并講解的軟件工程,基于前面的軟件工程“TIM延時(shí)”修改而來(lái)。若有疑問(wèn),請(qǐng)關(guān)注微信公眾號(hào)獲取更多信息。
本著免費(fèi)分享的原則,將講解的工程源代碼分享給大家,還望看到的朋友分享、關(guān)注和推廣一下微信公眾號(hào),增加一下人氣。
每天提供下載的“軟件工程”都是在硬件板子上進(jìn)行多次測(cè)試、并保證沒(méi)問(wèn)題才上傳至360云盤。
今天的軟件工程下載地址(360云盤):
https://yunpan.cn/cPhvyer3vIwXh訪問(wèn)密碼 57e1
STM32F10x的資料可以在我360云盤下載:
https://yunpan.cn/crBUdUGdYKam2訪問(wèn)密碼 ca90
工程概要說(shuō)明:定義一個(gè)按鍵(可自己定義),每按鍵一次,響應(yīng)中斷一次,在中斷函數(shù)中LED提示燈變化一次,用戶可更加實(shí)際情況在中斷函數(shù)做出相應(yīng)操作,這里只是一個(gè)模板。
關(guān)于“STM32F103EXIT中斷”我把重要的幾點(diǎn)在下面分別講述,若不明白,請(qǐng)關(guān)注微信公眾號(hào)“EmbeddDeveloper”查閱或留言。
一、RCC時(shí)鐘配置
該函數(shù)位于在bsp.c文件下面;
使能RCC時(shí)鐘:RCC_APB2Periph_GPIOC和 RCC_APB2Periph_AFIO(針對(duì)該工程主要的兩項(xiàng),引腳PC13和復(fù)用功能)。
二、EXIT配置
該函數(shù)位于在bsp.c文件下面;
對(duì)應(yīng)外部中斷(按鍵)的引腳,這里兩處必須匹配。
三、NVIC配置
該函數(shù)位于在bsp.c文件下面;
對(duì)EXIT的中斷控制器進(jìn)行配置
注意:
EXTI15_10_IRQn包含EXTI10 ---EXTI15共6條外部中斷線,也就是說(shuō)共用一個(gè)中斷入口,需要在中斷里面判斷是哪一個(gè)中斷。
四、中斷函數(shù)
該函數(shù)位于在stm32f10x_it.c文件下面;
這里需要判斷是哪個(gè)中斷,這里的操作根據(jù)自己實(shí)際情況條添加代碼。
五、今天的重點(diǎn)提示
A.外部中斷IO
STM32所有的IO引腳都可以配置成外部中斷引腳,見(jiàn)手冊(cè):
B.中斷入口
程序中“EXTI9_5_IRQHandler” 和 “EXTI15_10_IRQHandler”可能開(kāi)始學(xué)習(xí)的人不明白,其實(shí)很簡(jiǎn)單,就是綜合了幾個(gè)EXIT中斷,入口都在這里。
C.細(xì)心的朋友會(huì)發(fā)現(xiàn)我“中斷函數(shù)”中有一句else{EXTI->PR = 0xFC00;},估計(jì)很多人都不明白。這里告訴大家,這句else其實(shí)很重要,特別是正式工作的人(我工作親身經(jīng)驗(yàn)),為什么重要,在與移植工程時(shí),或許之前的工程開(kāi)啟了其他中斷,但移植過(guò)后沒(méi)有屏蔽,從而導(dǎo)致進(jìn)入中斷,而中斷標(biāo)志位又沒(méi)有清除掉(else就是清除標(biāo)志位),致使不停止中斷中執(zhí)行。