| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| - | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 
| EXTI3[3:0] | EXTI2[3:0] | EXTI1[3:0] | EXTI0[3:0] | 
EXTIx[3:0]:EXTIx配置(x = 0~3)
0000:PA[x]引腳 0100:PE[x]引腳 0001:PB[x]引腳 0101:PF[x]引腳
0010:PC[x]引腳 0110:PG[x]引腳 0011:PD[x]引腳
(5) 外部中斷配置寄存器2 :EXTIXR2
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| - | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 
| EXTI7[3:0] | EXTI6[3:0] | EXTI5[3:0] | EXTI4[3:0] | 
EXTIx[3:0]:EXTIx配置(x = 4~7)
0000:PA[x]引腳
0100:PE[x]引腳
0001:PB[x]引腳
0101:PF[x]引腳
0010:PC[x]引腳
0110:PG[x]引腳
0011:PD[x]引腳
(6) 外部中斷配置寄存器3 :EXTIXR3
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| - | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 
| EXTI11[3:0] | EXTI10[3:0] | EXTI9[3:0] | EXTI8[3:0] | 
EXTIx[3:0]:EXTIx配置(x = 8~11)
0000:PA[x]引腳
0100:PE[x]引腳
0001:PB[x]引腳
0101:PF[x]引腳
0010:PC[x]引腳
0110:PG[x]引腳
0011:PD[x]引腳
(7) 外部中斷配置寄存器4 :EXTIXR4
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| - | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 
| EXTI15[3:0] | EXTI14[3:0] | EXTI13[3:0] | EXTI12[3:0] | 
EXTIx[3:0]:EXTIx配置(x = 12~15)
0000:PA[x]引腳
0100:PE[x]引腳
0001:PB[x]引腳
0101:PF[x]引腳
0010:PC[x]引腳
0110:PG[x]引腳
0011:PD[x]引腳
(8) APB2外設(shè)時(shí)鐘使能寄存器 :APB2ENR
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| - | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 
| - | USART1EN | - | SPI1EN | TIM1EN | ADC2EN | ADC1EN | - | IOPEEN | IOPDEN | IOPCEN | IOPBEN | IOPAEN | - | AFIOEN | 
Bit 14:USART1時(shí)鐘使能(寫1開啟,寫0關(guān)閉)
Bit 12:SPI1時(shí)鐘使能(寫1開啟,寫0關(guān)閉)
Bit 11:TIM1時(shí)鐘使能(寫1開啟,寫0關(guān)閉)
Bit 10:ADC2時(shí)鐘使能(寫1開啟,寫0關(guān)閉)
Bit 9:ADC1時(shí)鐘使能(寫1開啟,寫0關(guān)閉)
Bit 6:GPIOE時(shí)鐘使能(寫1開啟,寫0關(guān)閉)
Bit 5:GPIOD時(shí)鐘使能(寫1開啟,寫0關(guān)閉)
Bit 4:GPIOC時(shí)鐘使能(寫1開啟,寫0關(guān)閉)
Bit 3:GPIOB時(shí)鐘使能(寫1開啟,寫0關(guān)閉)
Bit 2:GPIOA時(shí)鐘使能(寫1開啟,寫0關(guān)閉)
Bit 0:輔助功能IO時(shí)鐘使能(寫1開啟,寫0關(guān)閉)
3.3.3 外部中斷配置函數(shù)
/***************************************************
Name    :EXIT_Config
Function  :外部中斷配置
Parameter  :
      GPIOx:0~6,代表GPIOA~G
      BITx:需要使能的位 
      TRIM:觸發(fā)模式
        1:下升沿
        2:上降沿
        3:任意電平觸發(fā)
Return    :None
***************************************************/
void EXIT_Config( u8 GPIOx, u8 BITx, u8 TRIM )
{
  u8 EXTADDR ;
  u8 EXTOFFSET ;
  EXTADDR = BITx/4 ;                      //得到中斷寄存器組的編號(hào)
  EXTOFFSET = ( BITx%4 )*4 ;
  RCC->APB2ENR |= 0x01 ;                    //使能io復(fù)用時(shí)鐘       
  AFIO->EXTICR[ EXTADDR ] &= ~( 0x000F<<EXTOFFSET );      //清除原來(lái)設(shè)置
  AFIO->EXTICR[ EXTADDR ] |= GPIOx<<EXTOFFSET ;        //EXTI.BITx映射到GPIOx.BITx
  EXTI->IMR |= 1<<BITx ;                    //開啟line BITx上的中斷
   if( TRIM&0x01 )  EXTI->FTSR |= 1<<BITx ;            //下降沿觸發(fā)
  if( TRIM&0x02 )  EXTI->RTSR |= 1<<BITx ;            //上升降沿觸發(fā)
}
3.4 其他文件的添加
3.4.1 寄存器定義文件
(1)添加用到的NVIC寄存器組和EXTI寄存器組的定義。

(2)定義寄存器組地址

3.4.2 sys.h文件

上圖就是添加子函數(shù)聲明,為了用于其他文件調(diào)用。
3.4.3 sys.c文件
(1)在STM32時(shí)鐘配置函數(shù)之前增加復(fù)位時(shí)鐘和中斷的功能,最終函數(shù)如下圖所示。

(2)添加剛才的兩個(gè)子函數(shù)


至此,sys文件里面最基礎(chǔ)的函數(shù)就全部添加完畢了。
- 
                                STM32
                                +關(guān)注
關(guān)注
2302文章
11108瀏覽量
370256 - 
                                中斷
                                +關(guān)注
關(guān)注
5文章
911瀏覽量
43460 - 
                                Cortex-M
                                +關(guān)注
關(guān)注
2文章
234瀏覽量
30904 
發(fā)布評(píng)論請(qǐng)先 登錄
STM32單片機(jī)學(xué)習(xí)筆記(8):外部中斷
    
STM32學(xué)習(xí)筆記14:基本問(wèn)題,來(lái)討論一下軟件架構(gòu)
STM32學(xué)習(xí)筆記(初學(xué)者快速入門)
STM32學(xué)習(xí)記錄之中斷是什么
stm32學(xué)習(xí)之中斷事件
CubeMX入門STM32 HAL庫(kù)的學(xué)習(xí)筆記
STM32入門學(xué)習(xí)筆記 精選資料分享
STM32各模塊學(xué)習(xí)筆記
stm32之中斷與外部中斷
    
STM32學(xué)習(xí)筆記--中斷系統(tǒng)
    
STM32學(xué)習(xí)筆記(五)---NVIC
    
          
        
        
STM32入門學(xué)習(xí)筆記之中斷架構(gòu)(下)
                
 
    
           
            
            
                
            
評(píng)論