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外設時鐘使能寄存器 :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時鐘使能(寫1開啟,寫0關閉)
Bit 12:SPI1時鐘使能(寫1開啟,寫0關閉)
Bit 11:TIM1時鐘使能(寫1開啟,寫0關閉)
Bit 10:ADC2時鐘使能(寫1開啟,寫0關閉)
Bit 9:ADC1時鐘使能(寫1開啟,寫0關閉)
Bit 6:GPIOE時鐘使能(寫1開啟,寫0關閉)
Bit 5:GPIOD時鐘使能(寫1開啟,寫0關閉)
Bit 4:GPIOC時鐘使能(寫1開啟,寫0關閉)
Bit 3:GPIOB時鐘使能(寫1開啟,寫0關閉)
Bit 2:GPIOA時鐘使能(寫1開啟,寫0關閉)
Bit 0:輔助功能IO時鐘使能(寫1開啟,寫0關閉)
3.3.3 外部中斷配置函數
/***************************************************
Name :EXIT_Config
Function :外部中斷配置
Parameter :
GPIOx:0~6,代表GPIOA~G
BITx:需要使能的位
TRIM:觸發模式
1:下升沿
2:上降沿
3:任意電平觸發
Return :None
***************************************************/
void EXIT_Config( u8 GPIOx, u8 BITx, u8 TRIM )
{
u8 EXTADDR ;
u8 EXTOFFSET ;
EXTADDR = BITx/4 ; //得到中斷寄存器組的編號
EXTOFFSET = ( BITx%4 )*4 ;
RCC->APB2ENR |= 0x01 ; //使能io復用時鐘
AFIO->EXTICR[ EXTADDR ] &= ~( 0x000F<<EXTOFFSET ); //清除原來設置
AFIO->EXTICR[ EXTADDR ] |= GPIOx<<EXTOFFSET ; //EXTI.BITx映射到GPIOx.BITx
EXTI->IMR |= 1<<BITx ; //開啟line BITx上的中斷
if( TRIM&0x01 ) EXTI->FTSR |= 1<<BITx ; //下降沿觸發
if( TRIM&0x02 ) EXTI->RTSR |= 1<<BITx ; //上升降沿觸發
}
3.4 其他文件的添加
3.4.1 寄存器定義文件
(1)添加用到的NVIC寄存器組和EXTI寄存器組的定義。
(2)定義寄存器組地址
3.4.2 sys.h文件
上圖就是添加子函數聲明,為了用于其他文件調用。
3.4.3 sys.c文件
(1)在STM32時鐘配置函數之前增加復位時鐘和中斷的功能,最終函數如下圖所示。
(2)添加剛才的兩個子函數
至此,sys文件里面最基礎的函數就全部添加完畢了。
-
STM32
+關注
關注
2270文章
10915瀏覽量
356754 -
中斷
+關注
關注
5文章
900瀏覽量
41590 -
Cortex-M
+關注
關注
2文章
229瀏覽量
29788 -
單片機
+關注
關注
0文章
216瀏覽量
16658
發布評論請先 登錄
相關推薦
評論