新闻中心

EEPW首页>嵌入式系统>设计应用> STM32 NVIC嵌套向量中断控制器函数分析

STM32 NVIC嵌套向量中断控制器函数分析

作者: 时间:2016-11-30 来源:网络 收藏

IMR:中断屏蔽寄存器Interrupt Mask Register 32位寄存器前19位有效
EMR: 事件屏蔽寄存器Eventmaskregister 32位寄存器前19位有效
RTST: 上升沿触发选择寄存器Rising edge trigger select register
FTSR:下降沿触发选择寄存器Falling edge trigger select register
SWIER:软件中断事件寄存器Software interrupt event register
PR: 挂起寄存器Pending Register

I/O口复用里的配置寄存器EXTICR 每个I/O口可以配置成中断输入


STM32 任何一个IO口都可以配置成中断输入口,但是IO口的数目远大于中断线数(16个)。于是STM32就这样设计,GPIOA~GPIOG的[15:0]分别对应中断线15~0。这样每个中断线对应了最多7个IO口,以线0为例:它对应了GPIOA.0、PIOB.0、GPIOC.0、GPIOD.0、 GPIOE.0、GPIOF.0、GPIOG.0。而中断线每次只能连接到1个IO口上,这样就需要EXTICR来决定对应的中断线配置到哪个GPIO上了。















EXTICR在AFIO的结构体中定义如下

typedef struct
{
vu32 EVCR;
vu32 MAPR;
vu32 EXTICR[4];
} AFIO_TypeDef;

EXTIRC寄存器总共4个,因为编译器的寄存器都是从0号开始的,所以EXTICR[0]---EXTICR[3]对应
< >中的EXTICR1---EXTICR4 每个EXTICR用了其中低16位.

外部中断配置函数:
void Ex_NVIC_Config(u8 GPIOx,u8 BITx,u8 TRIM)
{
u8 EXTADDR;
u8 EXTOFFSET;
EXTADDR=BITx/4; //得到中断寄存器组编号
EXTOFFSET=(BITx%4)*4; //得到偏移量 具体哪个I/O口进行设置
RCC->APB2ENR|=0x01; //使能复用I/O口
AFIO->EXTICR[EXTADDR]|=GPIOx< EXTI->IMR|=1< EXTI->EMR|=1< if(TRIM&0x01) EXIT->FTSR|=1< if(TRIM&0x02) EXIT->RTSR|=1< }

注:
TRIM为触发方式选择变量; 0x01下降沿触发 0x02 上升沿触发 0x03任意电平触发.


上一页 1 2 下一页

关键词:STM32NVIC向量中断控制器函数分

评论


相关推荐

技术专区

关闭