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 ); //清除原來設(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)注
2270文章
10910瀏覽量
356591 -
中斷
+關(guān)注
關(guān)注
5文章
899瀏覽量
41552 -
Cortex-M
+關(guān)注
關(guān)注
2文章
229瀏覽量
29781 -
單片機(jī)
+關(guān)注
關(guān)注
0文章
216瀏覽量
16658
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論