STM32Cubev6 外部中斷
工作環(huán)境:
STM32CubeMXv6
Keil5
????比起直接掃描IO口讀取引腳狀態(tài)進(jìn)行輸入檢測(cè)的方法,

????使用外部中斷會(huì)更加實(shí)用且不會(huì)影響主程序的應(yīng)用狀態(tài),進(jìn)入中斷后會(huì)改變相應(yīng)的標(biāo)志位,而main.c的while循環(huán)中則一直查詢對(duì)應(yīng)的標(biāo)志位,只要查到則會(huì)執(zhí)行對(duì)應(yīng)操作。
????首先,右鍵需要檢測(cè)輸入的IO口,勾選GPIO_EXIT5;

????
????打開(kāi)左側(cè)的下拉框System Core,點(diǎn)擊GPIO選項(xiàng),在下方的配置框中更改GPIO Pull-up/Pull-down:
No pull-up and no pull-down:無(wú)上拉下拉
Pull-up:上拉
Pull-down:下拉
User Label:用戶命名(選填)

????如果有需要更改觸發(fā)模式的可以在GPIO Mode中修改:
External Interrupt Mode with Rising edge trigger detection:帶上升沿觸發(fā)檢測(cè)的外部中斷模式
External Interrupt Mode with Rising edge trigger detection:帶上升沿觸發(fā)檢測(cè)的外部中斷模式
External Interrupt Mode with Falling edge trigger detection:帶下降沿觸發(fā)檢測(cè)的外部中斷模式
External Interrupt Mode with Rising/Falling edge trigger detection:帶上升/下降沿觸發(fā)檢測(cè)的外部中斷模式
External Event Mode with Rising edge trigger detection:具有上升沿觸發(fā)檢測(cè)的外部事件模式
External Event Mode with Falling edge trigger detection:具有下降沿觸發(fā)檢測(cè)的外部事件模式
External Event Mode with Rising/Falling edge trigger detection:具有上升/下降沿觸發(fā)檢測(cè)的外部事件模式

????再打開(kāi)左側(cè)的下拉框System,點(diǎn)擊NVIC選項(xiàng);

? ????可以在Priority Group中選擇中斷優(yōu)先級(jí)組;

????勾選EXTI line[9:5] interrupts開(kāi)啟中斷;

設(shè)置完成后
點(diǎn)擊Project Manager頁(yè)面,輸入工程名和工程位置,選擇工具鏈和IDE為MDK-ARM,版本為5.27;

打開(kāi)左側(cè)Code Generater菜單勾選Generate peripheral initialization as a pair of'.c/.h'file per peripheral;?

最后點(diǎn)擊右上角的GENERATE CODE按鈕后生成代碼。
生成代碼后打開(kāi)工程文件夾,用Keil5打開(kāi)工程。

????編譯,為了使得我們的代碼盡可能解耦合,所以我們?cè)诠こ涛募A中新建一個(gè)user_gpioit.c和對(duì)應(yīng)的user_gpioit.h文件,在這個(gè).c文件中我們寫(xiě)入以下函數(shù)
? ? 在對(duì)應(yīng)頭文件user_uart.h中寫(xiě)入以下內(nèi)容
????在主函數(shù)的include中加入include
????然后再在主循環(huán)里加入中斷標(biāo)志位檢測(cè)
好了,現(xiàn)在我們就可以在main里用外部中斷來(lái)完成業(yè)務(wù)了
參考資料:
STM32F7開(kāi)發(fā)指南-HAL庫(kù)版本_V1.1
HAL庫(kù)教程4:外部中斷? ? https://yatao.blog.csdn.net/article/details/89164659