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);
}

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页