標(biāo)題: STM32F407初學(xué)之中斷:外部中斷點亮LED燈 [打印本頁]

作者: csy-2015-06    時間: 2018-9-23 17:55
標(biāo)題: STM32F407初學(xué)之中斷:外部中斷點亮LED燈
選擇中斷源(EXTI0~EXTI22選擇其一)
PA0產(chǎn)生上升沿:EXTI0
PE2~4產(chǎn)生下降沿:EXTI2~4

初始化:
1.初始化IO口:之前的按鍵初始化即可
2.模塊時鐘使能RCC->APB2ENR
  IO口映射到相應(yīng)的外部中斷配置器
SYSCFG external interrupt configuration register 1
GPIO口中斷映射到芯片內(nèi)部的IO口配置寄存器->SYSCFG寄存器

例如:配置PE2
        RCC->APB2ENR |=0x01<<14;
        //選擇中斷源(EXTI2映射到PE)
        SYSCFG->EXTICR[0] &=~(0x0f<<8);   //EXTICR[0]~EXTICR[3]分別對應(yīng)寄存器EXTICR1~4
        SYSCFG->EXTICR[0] |=(0x04<<8);

映射概念:首先外部中斷的io口都有對應(yīng)的外部中斷寄存器,以IO口數(shù)字序列編號
PA0在EXTI0  PB0在EXTI0
其次每個EXTI都對應(yīng)一個四位的外部中斷寄存器。配置見標(biāo)號8.2.4  EXTI0在EXTICR1的第0~3位
EXTI3在EXTICR1的12~16位、、EXTI4在EXTICR1的0~3位 [中文參考手冊8.2.1]
(小結(jié):先找引腳再找組)
映射PE2
EXTI2->EXTICR1的8~11位。
SYSCFG->EXTICR[0] |=(0x04<<8);   
//注意!EXTICR[0]~EXTICR[3]對應(yīng)EXTICR1~4,寄存器的寫法跟寄存器編號不一致


3.選擇邊沿檢測方式(上升沿檢測,下降沿檢測,雙邊沿檢測)
EXTI->FTSR |=0x01<<2;//下降沿檢測
FTSR:Falling trigger selection register

EXTI->RTSR &=~(0x01<<2);  //上升沿檢測關(guān)閉
RTSR:Rising trigger selection register
4.屏蔽軟中斷
EXTI->SWIER =0;
Software interrupt event register
5.屏蔽事件
Event mask register
EXTI->EMR =0;

6.模塊級中斷使能(設(shè)置中斷屏蔽寄存器)
Interrupt mask register
0:屏蔽來自 x 線的中斷請求
1:開放來自 x 線的中斷請求
EXTI->IMR |=0x01<<2;

7.系統(tǒng)級中斷使能(設(shè)置NVIC)
NVIC_SetPriority(EXTI2_IRQn,NVIC_EncodePriority (7-2, 2,2));

8.編寫中斷服務(wù)函數(shù)(清標(biāo)志:掛起請求寄存器)
EXTI->PR |=0x01<<2;//清標(biāo)志
通過對中斷狀態(tài)寄存器寫1可以清楚標(biāo)志



STM32F407系列學(xué)習(xí)心得
簡單串口初始化:
STM32F407初學(xué)之串口:查詢方式收發(fā)字符串教程與源碼
http://www.torrancerestoration.com/bbs/dpj-135607-1.html
(出處: 單片機論壇)


STM32F407初學(xué)之串口中斷收發(fā)符串教程與源碼
http://www.torrancerestoration.com/bbs/dpj-135708-1.html
(出處: 單片機論壇)



STM32F407初學(xué)之中斷:外部中斷點亮LED燈.zip

1.49 MB, 下載次數(shù): 18, 下載積分: 黑幣 -5






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1