有了上一篇的基礎入門知識,使用Cube創建一個簡單的外部中斷就容易多了。
一、Cube配置
需求:使用PD10作為外部中斷(下降沿觸發)控制LED(PD12-PD14)
1.選型
STM32-F4-Discovery使用的是F407VGT6.
2.使能時鍾
3.設置GPIO
PD12-PD15對應4個LED,設置為輸出
使用PD10作為外部中斷,於是PD10設置為GPIO_EXIT10
4.根據F4-Discovery硬件配置時鍾
外部8MHz晶振,系統頻率設置168(最大只能設置168,這個可隨便設置)
5.配置
5.1首先配置GPIO的PD10(外部中斷輸入)
5.2配置GPIO的PD12-PD15
5.3配置NVIC
由於只有這一個中斷,所有優先級都設置為0
6.最后生成工程就行了。
二、Keil程序
需求:外部中斷觸發,改變四個LED的狀態。
再說一遍中斷執行順序
(1)PD10的中斷服務函數
(2)中斷服務函數原型
(3)中斷處理函數
(4)回調函數(用戶在main.c中重寫)
while(1)就不要動了,目前用不到。
編譯,下載,齊活。
最后再補充一點,中斷初始化的問題,在mian.c的main()函數中只有下面幾個初始化函數:
那么中斷的初始化去哪了呢?
其實,中斷初始化的代碼被放置到GPIO初始化函數MX_GPIO_Init(void)里了: