电子说
(4) 外部中断配置寄存器1 :EXTIXR1
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关闭)
/***************************************************
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 ; //上升降沿触发
}
(1)添加用到的NVIC寄存器组和EXTI寄存器组的定义。
(2)定义寄存器组地址
上图就是添加子函数声明,为了用于其他文件调用。
(1)在STM32时钟配置函数之前增加复位时钟和中断的功能,最终函数如下图所示。
(2)添加刚才的两个子函数
至此,sys文件里面最基础的函数就全部添加完毕了。
全部0条评论
快来发表一下你的评论吧 !