STM32中斷自我總結

中斷可以簡單地分爲外部中斷定時器中斷
按鍵外部中斷是外部中斷中的一種,它的步驟是

  1. 配置按鍵的GPIO
  2. 配置中斷線
  3. 配置通道

第一步配置按鍵的GPIO就是非常基礎的操作。先定義一個初始化用結構體,然後使能你要使用的IO口的組號(即ABCD…)對應的時鐘,然後給結構體賦值以後塞入GPIO_Init函數就可以了。

static void Key_GPIO_Config()
{
	GPIO_InitTypeDef GPIO_InitStructure;
 
 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
 	
	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_14;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;	  
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
	GPIO_Init(GPIOD, &GPIO_InitStructure);
	
	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_15;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
 	GPIO_Init(GPIOD, &GPIO_InitStructure);
}

第二步配置中斷線有幾個要注意的問題。首先,使用哪一條中斷線?例如是PB6,就必須使用EXTI6也就是中斷線6,使用了以後PA6,PC6這些就無法再配置中斷了。因爲相同標號的GPIO口用的是同一條中斷線,也就是隻能獨佔。如果重複設置那麼前者就會被覆蓋。其次,要選擇中斷模式,可以選擇的中斷模式有上升沿進入中斷、下降沿進入中斷、上升下降沿都進入中斷、高電平進入中斷和低電平進入中斷。
3.配置內嵌向量中斷控制器NVIC
第一步,配置哪一條通道?0到4單獨自己使用一個通道,而5到9用一個通道,10到15用一個通道。所以例如PB3就應該使用3號通道,PB8使用5到9公用的通道。通道連接的是中斷服務函數,所以5到9也就共用一箇中斷服務函數了,這一般不是我們想要的效果,我們自然想要5到9能單獨實現一個功能,所以我們在5~9中要另外判斷一下是來自哪個IO口的信號,用幾個if語句爲不同的IO口實現不同的功能。第二步,配置通道的搶佔優先級和響應優先級(使用一般使用分組2)。搶佔優先級數值低的優先級越高,一個搶佔優先級高的中斷會打斷優先級比較低的中斷或是主函數,任何中斷都可以打斷主函數。響應優先級(又稱次優先級)的意思是說,當兩個搶佔優先級相同的中斷同時出現的時候,那麼先執行響應優先級高的那一個,但他們彼此並不會發生互相打斷,因爲搶佔優先級是一樣的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章