嵌套向量中断控制器
特性
● 68个可屏蔽中断通道(不包含16个Cortex™-M3的中断线);
● 16个可编程的优先等级(使用了4位中断优先级);
● 低延迟的异常和中断处理;
● 电源管理控制;
● 系统控制寄存器的实现。
因为中断与Cortex M3 内核直接连接,则内核会快速的处理中断事件。
中断列表有些长,最后贴出来,暂时我们看外部中断器。
外部中断/事件控制器由20个产生事件/中断请求的边沿检测器组成,对于其它 产品,则有19个能产生事件/中断请求的边沿检测器。每个输入线可以独立地配置输入类型(脉冲 或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。每个输入线都可以独立地被屏 蔽。挂起寄存器保持着状态线的中断请求。
主要特性 EXTI控制器的主要特性如下:
● 每个中断/事件都有独立的触发和屏蔽
● 每个中断线都有专用的状态位
● 支持多达20个软件的中断/事件请求
● 检测脉冲宽度低于APB2时钟宽度的外部信号
● EXTI线16连接到PVD输出
● EXTI线17连接到RTC闹钟事件
● EXTI线18连接到USB唤醒事件
● EXTI线19连接到以太网唤醒事件
.通过AFIO_EXTICRx配置GPIO线上的外部中断/事件,必须先使能AFIO时钟。
//外部中断初始化
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
KEY_Init(); //
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //
//
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2);
EXTI_InitStructure.EXTI_Line=EXTI_Line2; //KEY2
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
KEY_Init(); 函数如下所示
先需要对对应的IO口进行配置,
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA| RCC_APB2Periph_GPIOE,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;//KEY0-KEY2
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //
GPIO_Init(GPIOE, &GPIO_InitStructure);//
//外部中断处理函数
void EXTI2_IRQHandler(void)
{
delay_ms(10);//Ïû¶¶
if(KEY2==0) //°´¼üKEY2
{
LED0=!LED0;
}
EXTI_ClearITPendingBit(EXTI_Line2); //Çå³ýLINE2ÉϵÄÖжϱê־λ
}