ARM微控制器与嵌入式系统 课件 19 外部中断_第1页
ARM微控制器与嵌入式系统 课件 19 外部中断_第2页
ARM微控制器与嵌入式系统 课件 19 外部中断_第3页
ARM微控制器与嵌入式系统 课件 19 外部中断_第4页
ARM微控制器与嵌入式系统 课件 19 外部中断_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ARM微控制器与嵌入式系统

EXTI—外部中断/事件控制器主讲人:景妮琴北京电子科技职业学院内容外部中断EXTI—外部中断/事件控制器EXTI功能框图中断/事件线外部中断配置中断服务程序外部中断按键实验编程要点STM32微控制器外部中断外部中断是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。在没有干预的情况下,单片机的程序在封闭状态下自主运行,如果在某一时刻需要响应一个外部事件(比如有按键按下),这时就会用到外部中断。具体来讲,外部中断就是在单片机的一个引脚上,由于外部因素导致了一个电平的变化(比如由高变低),而通过捕获这个变化,单片机内部自主运行的程序就会被暂时打断,转而去执行相应的中断处理程序,执行完后又回到原来中断的地方继续执行原来的程序。这个引脚上的电平变化,就申请了一个外部中断事件,而这个能申请外部中断的引脚就是外部中断的触发引脚。EXTI—外部中断/事件控制器外部中断/事件控制器包含多达23个用于产生事件/中断请求的边沿检测器。每根输入线都可单独进行配置,以选择类型(中断或事件)和相应的触发事件(上升沿触发、下降沿触发或边沿触发)。每根输入线还可单独屏蔽。挂起寄存器用于保持中断请求的状态线。EXTI功能框图EXTI功能框图中断/事件线STM32F4的每个IO都可以作为外部中断输入。

STM32F4的中断控制器支持23个外部中断/事件请求:EXTI线0~15:对应外部IO口的输入中断。EXTI线16:连接到PVD输出。EXTI线17:连接到RTC闹钟事件。EXTI线18:连接到USBOTGFS唤醒事件。EXTI线19:连接到以太网唤醒事件。EXTI线20:连接到USBOTGHS(在FS中配置)唤醒事件。EXTI线21:连接到RTC入侵和时间戳事件。EXTI线22:连接到RTC唤醒事件。中断/事件线每个外部中断线可以独立的配置触发方式(上升沿,下降沿或者双边沿触发),触发/屏蔽,专用的状态位。从上面可以看出,STM32F4供IO使用的中断线只有16个,但是STM32F4xx系列的IO口多达上百个,那么中断线怎么跟io口对应呢?中断/事件线GPIO与中断线关联1、GPIOx与EXTIx对应2、每一个GPIO都可以作为外部中断引脚中断/事件线16个中断线并不是分配的16个中断服务函数:在STM32F407xx微控制器外部中断向量共7个。EXTI0_IRQnEXTI1_IRQnEXTI2_IRQnEXTI3_IRQnEXTI4_IRQnEXTI9_5_IRQnEXTI15_10_IRQn外部中断线0、1、2、3、4分别对应外部中断向量EXTI0_IRQn至EXTI4_IRQn外部中断线9-5共用中断向量EXTI9_5_IRQn外部中断线15-10共用中断向量EXTI15_10_IRQn外部中断配置步骤1、开启GPIO时钟、系统配置时钟2、配置端口3、GPIO与中断线关联4、中断线配置5、中断向量优先级配置6、中断服务函数外部中断配置步骤1、开启GPIO时钟、系统配置时钟开启GPIO时钟、系统配置时钟RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //开启GPIO时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);//开启SYSCFG时钟

注:STM32F4xx微控制器使用外部中断时都需要开启SYSCFG时钟外部中断配置步骤2、配置端口GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; //选择端口GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN;//输入模式GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;//浮空输入GPIO_Init(GPIOI,&GPIO_InitStructure); //初始化配置STM32F4xx微控制器中每一个GPIO都可以作为外部中断引脚。GPIO工作模式可以作为浮空输入模式,但是如果使用按键,按下时为低电平,就应该配置成UP,这样保证在没有按下按键时是高电平,按下时是低电平。外部中断配置步骤3、GPIO与中断线关联//GPIO中断线关联SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOI,EXTI_PinSource4);SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOI,EXTI_PinSource5);SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOI,EXTI_PinSource6);SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOI,EXTI_PinSource7);注:在STM32F1xx标准外设库中使用GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource12);函数实现。外部中断配置步骤4、中断线配置EXTI结构体:typedefstruct{uint32_tEXTI_Line;//中断线

EXTIMode_TypeDefEXTI_Mode;//中断模式

EXTITrigger_TypeDefEXTI_Trigger;//触发方式

FunctionalStateEXTI_LineCmd;//中断线使能或失能}EXTI_InitTypeDef;外部中断配置步骤4、中断线配置(1)EXTI_Line的取值范围EXTI_Line0EXTI_Line1EXTI_Line2...EXTI_Line15外部中断配置步骤4、中断线配置(2)EXTI_Mode的取值范围EXTI_Mode_Interrupt 中断请求例如:EXTI线x中断EXTI_Mode_Event 事件请求例如:连接到EXTI线的可编程电压检测(PVD)中断连接到EXTI线的RTC唤醒中断连接到EXTI线的USBOn-The-GoFS唤醒中断外部中断配置步骤4、中断线配置(3)EXTI_Trigger取值范围:EXTI_Trigger_Rising 上升沿触发EXTI_Trigger_Falling 下降沿触发EXTI_Trigger_Rising_Falling 上升沿下降沿触发外部中断配置步骤4、中断线配置(4)EXTI_LineCmd取值范围ENABLE 使能DISABLE 失能外部中断配置步骤5、中断向量优先级配置typedefstruct{uint8_tNVIC_IRQChannel;//中断向量

uint8_tNVIC_IRQChannelPreemptionPriority;//抢占优先级

uint8_tNVIC_IRQChannelSubPriority;//响应优先级

FunctionalStateNVIC_IRQChannelCmd;//中断向量使能或失能}NVIC_InitTypeDef;外部中断配置步骤5、中断向量优先级配置(1)NVIC_IRQChannel取值范围:在STM32F407xx微控制器中共91个中断向量。例如:EXTI线0中断DMA1流0全局中断ADC1、ADC2和ADC3全局中断CAN1TX中断TIM1捕获比较中断USART1全局中断。。。外部中断配置步骤5、中断向量优先级配置(1)NVIC_IRQChannel取值范围:在STM32F407xx微控制器外部中断向量共7个。EXTI0_IRQnEXTI1_IRQnEXTI2_IRQnEXTI3_IRQnEXTI4_IRQnEXTI9_5_IRQnEXTI15_10_IRQn外部中断线0、1、2、3、4分别对应外部中断向量EXTI0_IRQn至EXTI4_IRQn。外部中断线9-5共用中断向量EXTI9_5_IRQn外部中断线15-10共用中断向量EXTI15_10_IRQn5、中断向量优先级配置(2)NVIC_IRQChannelPreemptionPriority和NVIC_IRQChannelSubPriority取值范围STM32微控制器中断优先级由抢占优先级与响应优先级决定,抢占优先级和响应优先级取值范围由中断分组决定。NVIC_PriorityGroupNVIC_IRQChannel抢占优先级NVIC_IRQChannel响应先级描述NVIC_PriorityGroup_000-15抢占优先级0位响应先级4位NVIC_PriorityGroup_10-10-7抢占优先级1位响应先级3位NVIC_PriorityGroup_20-30-3抢占优先级2位响应先级2位NVIC_PriorityGroup_30-70-1抢占优先级3位响应先级1位NVIC_PriorityGroup_40-150抢占优先级4位响应先级0位外部中断配置步骤5、中断向量优先级配置NVIC_IRQChannelPreemptionPriority和NVIC_IRQChannelSubPriority取值范围中断向量抢占优先级响应优先级A01抢占优先级相同,响应优先级数值小的优先级高B02A12响应优先级相同,抢占优先级数值小的优先级高B02A10抢占优先级比相应优先级高B02A11抢占优先级和响应优先级均相同,则中断向量编号小的先执行B11外部中断配置步骤抢占式优先级>响应优先级>中断表中的排位顺序5、中断向量优先级配置(2)NVIC_IRQChannelPreemptionPriority和NVIC_IRQChannelSubPriority取值范围1)优先级分组配置NVIC_PriorityGroupConfig(uint32_tNVIC_PriorityGroup);NVIC_PriorityGroup_0NVIC_PriorityGroup_1NVIC_PriorityGroup_2NVIC_PriorityGroup_3NVIC_PriorityGroup_4//设置中断组为0示例4NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

外部中断配置步骤5、中断向量优先级配置(2)NVIC_IRQChannelPreemptionPriority和NVIC_IRQChannelSubPriority取值范围2)抢占优先级和响应优先级配置NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);//设置中断组为0示例4NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//抢占优先级,优先级0组的抢占优先级为0,主要靠子优先级NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//响应优先级

外部中断配置步骤5、中断向量优先级配置(3)NVIC_IRQChannelCmd取值范围ENABLE

使能DISABLE

失能

外部中断配置步骤6、外部中服务函数

EXTI0_IRQHandlerEXTI1_IRQHandlerEXTI2_IRQHandlerEXTI3_IRQHandlerEXTI4_IRQHandlerEXTI9_5_IRQHandlerEXTI15_10_IRQHandler外部中断向量0、1、2、3、4分别指向EXTI0_IRQHandler至EXTI4_IRQHandler函数。外部中断向量9_5指向EXTI9_5_IRQHandler函数。外部中断向量15_10指向EXTI15_10_IRQHandler函数。外部中断配置步骤6、外部中服务函数例如:voidEXTI4_IRQHandler(void){if(EXTI_GetITStatus(EXTI_Line4)) //判断相应中断线是否触发中断{if(GPIO_ReadInputDataBit(GPIOI,GPIO_Pin_4)==0) //判断相应GPIO电平{EXTI_ClearITPendingBit(EXTI_Line4); //清除相应中断线中断标志位}}}外部中断配置步骤①voidSYSCFG_EXTILineConfig(uint8_tEXTI_PortSourceGPIOx,uint8_tEXTI_PinSourcex);//设置IO口与中断线的映射关系exp:SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE,EXTI_PinSource2);②voidEXTI_Init(EXTI_InitTypeDef*EXTI_InitStruct);//初始化中断

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论