STM32中的EXTI外部中断知识

首先,我们先介绍一下EXTI外部中断应用需要了解的一些定义,多余的定义在这里不做解释

1.中断的定义 :

在主程序的运行过程中,出现了特定的中断触发条件(中断源),CPU自动暂停正在执行的程序,转头去处理这个中断源,处理完成后继续完成剩下没完成的主程序,就叫做中断.

例如:对于外部中断来说,可以是引脚的电平发生了变化.

        对于定时器来说,可以是定时器的时间到了.

        对于串口通信来说,可以是接收到了数据.

编写中断函数的时候,函数名有特定要求,关于函数名的定义在startup_stm32xxxmd.s下可以查看

进入中断函数的条件需要在EXTI_InitTypeDef* EXTI_InitStruct类型的结构体中定义trigger参数,选择上升沿,下降沿,或者是双边沿.

2.NVIC(Nested Vectored Interrupt Controller即嵌套向量中断控制器):

NVIC是一个内核的寄存器,要看他的使用手册的话,需要我们去cortex-m3里面看

NVIC是直接集成在CPU内核中的,如果将CPU比作一位医生,那么NVIC就是一个挂号系统,他负责分配为不同的中断源分配不同的优先级,然后告诉CPU应该先处理哪一个中断源,从而做到中断源的有序处理.    

STM32中的EXTI外部中断知识_第1张图片

NVIC对应的相关函数(NVIC属于CPU的内核寄存器,相关函数可以在misc.h里面看):

1.NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);

函数的作用:初始化NVIC,参数需要传输一个NVIC_InitTypeDef类型的结构体的指针,这个类型的结构体存放着以下几个参数

uint8_t (char类型)NVIC_IRQChannel;                //中断请求通道    

  uint8_t (char类型)NVIC_IRQChannelPreemptionPriority;  //确立抢占优先级

  uint8_t (char类型)NVIC_IRQChannelSubPriority;        //确认响应优先级

  FunctionalState ()NVIC_IRQChannelCmd;                //负责控制某个中断通道的开关状态

2.NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);

函数的作用:设置抢占优先级和响应优先级的分组.

//如果要处理多个中断,需要把这个函数放在MAIN主函数之中,否则如果调用不同的硬件的中断函数的时候,状态可能一直刷新,导致有序地处理先后中断顺序.

3.EXTI(External Interrupt即外部中断/事件控制器):

负责处理IO口的一个电平变化,当检测到对应的IO口发生了电平变化,会向NVIC提出中断申请,NVIC给这些不同优先级的事件排序后发送给CPU进行处理 .

支持的触发机制:上升沿,下降沿,双边沿,事件触发.

触发响应方式:中断响应和事件响应

EXTI的相关对应函数:

1.EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);

函数作用:EXTI的初始化,参数需要传递一个EXTI_InitTypeDef* EXTI_InitStruct类型的结构体指针.

EXTI_InitTypeDef* EXTI_InitStruct包含以下几个参数:

uint32_t EXTI_Line;           //参数用于指定你想要配置的EXTI线路。两个线路中间加一个|的符号,可以指定两条线路

EXTIMode_TypeDef EXTI_Mode;                //选择中断响应/事件响应

EXTITrigger_TypeDef EXTI_Trigger;                //选择中断触发条件,上升沿,下降沿,双边沿

FunctionalState EXTI_LineCmd;                        //开启/关闭

4.AFIO的两个功能:

1复用功能重映射

2中断的引脚选择

STM32中的EXTI外部中断知识_第2张图片

AFIO相关的函数解析:

1.RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//使能AFIO的时钟

2.GPIO_EXTILineConfig(GPIO_PortSourceGPIOx, GPIO_PinSource_x);

//将外部中断的x号线映射到GPIOx,即选择Pxxx为外部中断引脚

你可能感兴趣的:(stm32,嵌入式硬件,单片机)