32h7配置外部中断_STM32单片机 学习资料 (连载8 EXTI中断)

嵌套向量中断控制器

特性

● 68个可屏蔽中断通道(不包含16个Cortex™-M3的中断线);

● 16个可编程的优先等级(使用了4位中断优先级);

● 低延迟的异常和中断处理;

● 电源管理控制;

● 系统控制寄存器的实现。

因为中断与Cortex M3 内核直接连接,则内核会快速的处理中断事件。

中断列表有些长,最后贴出来,暂时我们看外部中断器。

外部中断/事件控制器由20个产生事件/中断请求的边沿检测器组成,对于其它 产品,则有19个能产生事件/中断请求的边沿检测器。每个输入线可以独立地配置输入类型(脉冲 或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。每个输入线都可以独立地被屏 蔽。挂起寄存器保持着状态线的中断请求。

主要特性 EXTI控制器的主要特性如下:

● 每个中断/事件都有独立的触发和屏蔽

● 每个中断线都有专用的状态位

● 支持多达20个软件的中断/事件请求

● 检测脉冲宽度低于APB2时钟宽度的外部信号

b6b9e685f39b08ff5cf8d5f7d34d71b1.png

● 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ÉϵÄÖжϱê־λ

}

外部中断寄存器

bc116a348100dcd846670783db888cf2.png
09b50e72947945b27819bdcfa1650d63.png
2a149a237d52abfcddabff10008ff486.png
fa79f52265ba259be9d6d67c8cc6d218.png
952da31e50a7f2702b20a9a1192c1771.png
d80926ee823eee693a6c4b7281345b21.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值