本文用STM32CubeIDE軟件實(shí)現(xiàn)STM32外部中斷實(shí)例。
新建工程
“File”-“New”-“STM32 Project”。
輸入芯片型號(hào)STM32F103ZE。
選擇相應(yīng)封裝,下一步。
填寫項(xiàng)目名,選擇工程位置,下一步。
配置時(shí)鐘、調(diào)試模式
選擇高速外部時(shí)鐘。
HCLK總線時(shí)鐘處輸入72,回車,配置使用最高時(shí)鐘頻率。
調(diào)試模式選擇串行,方便下載程序。
配置管腳外設(shè)
本實(shí)例中用到了LED1與KEY_LEFT,找到相應(yīng)電路圖。
可見LED1對(duì)應(yīng)PC0管腳,低電平點(diǎn)亮。按鍵K1對(duì)應(yīng)PE2管腳,低電平有效。
PC0配置為GPIO_Output,GPIO輸出模式
PE2配置為GPIO_EXTI2,GPIO中斷線2。
對(duì)GPIO進(jìn)行配置,可以看到PC0、PE2兩個(gè)管腳。
PC0管腳的配置:
GPIO輸出電平,“High”,復(fù)位后高電平,LED1熄滅狀態(tài)。
GPIO模式,“Output Push Pull”,推挽輸出,相關(guān)文章:梳理清楚推挽、開漏、OC、OD。
GPIO上拉下拉,“Pull-up”,上拉,默認(rèn)高電平,避免管腳電平狀態(tài)不穩(wěn)定
PE2管腳的配置,GPIO模式這里有6個(gè)選項(xiàng),分別是:
上升沿觸發(fā)的外部中斷
下降沿觸發(fā)的外部中斷
上升/下降沿觸發(fā)的外部中斷
上升沿觸發(fā)的事件中斷
下降沿觸發(fā)的事件中斷
上升/下降沿觸發(fā)的事件中斷
“外部中斷”與“事件中斷”的區(qū)別:
“事件中斷”可以由硬件自動(dòng)完成這個(gè)事件產(chǎn)生的結(jié)果,比如引起DMA操作、AD轉(zhuǎn)換等,響應(yīng)速度更快。
而本例中需要中斷服務(wù)函數(shù)才能完成中斷后產(chǎn)生的結(jié)果,是“外部中斷”
由電路圖可知,KEY1按鍵按下時(shí)為低電平,過(guò)程中會(huì)產(chǎn)生一個(gè)下降沿,所以選擇“下降沿外部中斷”這一項(xiàng)。
按鍵低電平有效,選擇上拉,給管腳一個(gè)穩(wěn)定的電平狀態(tài),不按下時(shí)為默認(rèn)的高電平。
配置NVIC嵌套向量中斷控制器
NVIC就是用來(lái)控制中斷響應(yīng)的,如下圖列出了各個(gè)中斷??梢苑謩e配置其使能狀態(tài)、搶占優(yōu)先級(jí)與響應(yīng)優(yōu)先級(jí)。
因?yàn)镻E2配置為GPIO_EXTI2中斷,它出現(xiàn)在了列表中。同時(shí)出現(xiàn)的還有SysTick,它是HAL_Delay的時(shí)基來(lái)源,如下圖note處所說(shuō)的,每隔一個(gè)固定時(shí)間產(chǎn)生一次中斷。
因?yàn)橄挛闹袛喾?wù)函數(shù)代碼中用到了HAL_Delay延時(shí)函數(shù),把SysTick與EXTI2的搶占優(yōu)先級(jí)分別設(shè)置為0與2。在這里,數(shù)值越大優(yōu)先級(jí)越小。
配置中斷服務(wù)函數(shù)
進(jìn)行上述配置之后,點(diǎn)擊生成代碼。
本實(shí)例中的中斷類型是“外部中斷”,通過(guò)中斷服務(wù)函數(shù)來(lái)實(shí)現(xiàn)。
打開stm32f1xx_it.c文件,找到中斷服務(wù)函數(shù),它調(diào)用了GPIO中斷服務(wù)函數(shù)。
F3找到這個(gè)函數(shù)的定義,在清除中斷標(biāo)志位后,進(jìn)入了Callback回調(diào)函數(shù)。
這個(gè)Callback函數(shù)也是一個(gè)弱化函數(shù),,可以重寫,如下圖的__weak標(biāo)識(shí)。
回到stm32f1xx_it.c文件,在末尾user code處寫上中斷發(fā)生時(shí)要實(shí)現(xiàn)的結(jié)果。
責(zé)任編輯:haq
-
STM32
+關(guān)注
關(guān)注
2264文章
10854瀏覽量
354288 -
軟件
+關(guān)注
關(guān)注
69文章
4699瀏覽量
87087
原文標(biāo)題:STM32外部中斷實(shí)例
文章出處:【微信號(hào):c-stm32,微信公眾號(hào):STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論