STM32学习过程记录4——外部中断

第4课,外部中断

一、32的外部中断简述

32的中断可能有很多个,其通过端口映射,可以将很多端口都作为外部中断端口。其次,其中断数受它的中断通道的数目的影响,有两种中,一种是多对一,一种是一对一。多对一是可以通过多个中断线来触发同一个中断口的函数。

二、中断的设置

1.设置简述

中断是基于一个IO口的,所以需要一个输入IO作为中断IO口,其关系为:

将IO口映射到中断寄存器即可,他们互不干扰。然后设置中断函数就可以了

2.设置过程

a 初始化IO口为输入,就是第一节课的内容

b 开启AFIO映射时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

c 将IO口映射到中断

GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5);//前者为端口,后者为引脚,例如此为PC5

d 设置中断效果和中断线,中断线如同一个中断的句柄,唯一ID标识

EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line=EXTI_Line0;//确定中断线为哪一根
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;	
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//下降沿触发
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);//根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器

e 设置NVIC分组,如同第三课

NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;//使能按键所在的外部中断通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;//抢占优先级2 
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//子优先级1
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中断通道
NVIC_Init(&NVIC_InitStructure); 

f 设置中断函数,清除中断标志

void EXTI0_IRQHandler(void)
{

    EXTI_ClearITPendingBit(EXTI_Line0);  //清除EXTI0线路挂起位
}

3.额外的注意

EXTI_InitStructure.EXTI_Line=EXTI_Line0;
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
//这两个线和通道需要对应

4.模板

void EXTIX_Init(void)
{
 EXTI_InitTypeDef EXTI_InitStructure;
 NVIC_InitTypeDef NVIC_InitStructure;

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
 GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5);

 EXTI_InitStructure.EXTI_Line=EXTI_Line0;
 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;	
 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
 EXTI_InitStructure.EXTI_LineCmd = ENABLE;
 EXTI_Init(&EXTI_InitStructure);

 
 NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 NVIC_Init(&NVIC_InitStructure);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

康娜喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值