第4章 外部中断_第1页
第4章 外部中断_第2页
第4章 外部中断_第3页
第4章 外部中断_第4页
第4章 外部中断_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

嵌入式系统原理及应用第4章外部中断1中断基本概念2STM32外部中断3EXTI应用实例45课后作业本章总结HAL_GPIO_ReadPinHAL_GPIO_TogglePinHAL_GPIO_WritePin中断概念本节小结4.1中断基本概念中断概念1.中断中断:MCU执行主程序时,出现了某些意外或紧急事件,需要MCU紧急处理,此时主程序被打断,MCU转而处理紧急事件,处理完毕后再返回继续执行主程序的过程。中断服务程序通常为一个函数,该函数实现紧急事件处理功能。中断源16+67断点程序指针:指向当前主程序运行指令的下一条指令中断概念1.中断中断中断处理刻不容缓大局意识中断概念2.中断向量

中断服务程序在内存中的入口地址称为中断向量,把系统中所有中断向量集中起来放到存储器的某一区域内,这个存储中断向量的存储区域称为中断向量表。3.嵌套向量中断控制器嵌套向量中断控制器(NVIC,NestedVectoredInterruptController)是STM32中断系统的核心,其作用是为所有中断提供优先级,实现中断嵌套。中断概念4.中断优先级中断优先级表示中断的重要程度,STM32具有两类优先级,即抢占优先级(preemptionpriority)和响应优先级(subpriority),可通过中断优先级寄存器(NVIC_IPR)进行分组配置。中断优先级寄存器采用8位表示优先级,理论上可以配置256个中断优先级,实际上STM32只用了高4位,并可通过编程将这4位分组为抢占优先级和响应优先级。中断优先级用数字表示,数字越小,优先级越高,中断分组默认配置为第4组。判断中断优先级时先判断抢占优先级,抢占优先级高,则该中断优先级高。如果抢占优先级相同,则根据响应优先级判断,如果响应优先级也相同,则根据中断通道向量地址判断。中断概念4.中断优先级优先级分组抢占优先级响应优先级第0组:NVIC_PriorityGroup_0无4位/16级(0~15)第1组:NVIC_PriorityGroup_11位/2级(0~1)3位/8级(0~7)第2组:NVIC_PriorityGroup_22位/4级(0~3)2位/4级(0~3)第3组:NVIC_PriorityGroup_33位/8级(0~7)1位/2级(0~1)第4组:NVIC_PriorityGroup_44位/16级(0~15)无中断概念5.中断执行顺序

多个中断发生时,MCU根据中断优先级确定中断执行顺序,中断执行遵循如下规则:

(1)允许中断嵌套,即优先执行抢占优先级高的中断。如执行中断A时,发生了抢占优先级更高的中断B,则暂停中断A处理过程转去处理中断B,处理完中断B后再继续处理中断A,这个过程称为中断嵌套。

中断嵌套只与抢占优先级有关,抢占优先级不同,才能发生中断嵌套。

(2)当抢占优先级相同时,根据中断发生顺序执行,哪个中断先发生,则先执行哪个中断,如果几个抢占优先级相同的中断同时发生,则优先执行响应优先级高的中断。中断概念5.中断执行顺序有三个中断A、B、C和D,抢占优先级和响应优先级分别为(3,1)、(2,2)、(1,3)和(2,3),则根据中断发生顺序有以下几种执行情况:(1)当4个中断同时发生时,中断执行顺序为C、B、D、A。(2)执行中断A时,发生了中断B,由于中断B的抢占优先级更高,因此可以打断中断A,即发生中断嵌套。(3)执行中断B时,发生了中断D,由于中断B和中断D的响应优先级相同,不会产生嵌套,中断B执行完后,再执行中断D。如果中断B和中断D同时发生,由于中断B的响应优先级更高,因此先执行中断B。本节小结理解中断概念;掌握中断优先级分组;理解中断执行顺序。EXTI主要特征EXTI内部电路4.2STM32外部中断EXTI应用步骤本节小结4.2.1EXTI主要特征STM32外部中断是通常指引脚电平变化引起的中断,由NVIC和外部中断事件控制器(EXTI,ExtendedInterruptsandEventsController)控制。EXTI负责管理所有的外部中断和内部异步事件,并产生中断请求。STM32外部中断的主要特征如下:(1)可产生最多39和事件/中断请求,包括25个可配置中断和14个直接中断;(2)每个事件/中断具有独立的屏蔽控制;(3)可配置中断包括IO引脚中断和部分其它外设中断,支持上升沿或下降沿触发,并且具有专用的状态位用于指示中断源。(4)直接中断主要是部分外设产生的唤醒事件,用于唤醒设备,其状态标志由相应外设提供。(5)所有中断可通过软件进行模拟。4.2.2EXTI内部电路4.2.2EXTI内部电路EXTI之所有能够实现中断控制,是因为其具有严谨合理的硬件电路,以STM32L4系列为例,其EXTI内部电路结构如图4-2所示,主要由边沿检测电路、下降沿触发选择寄存器、上升沿触发选择寄存器、中断屏蔽寄存器、挂起请求寄存器等构成。下面以GPIO中断为例讲解其工作原理,欲产生GPIO中断,首先应配置下降沿触发选择寄存器或(和)上升沿触发选择寄存器,当其相应位配置为1时,边沿检测电路即可检测到电平变化;然后配置中断屏蔽寄存器相应位为1,当边沿检测电路检测到电平变化时,即可将挂起请求寄存器相应位置1,进而引发中断,CPU响应该中断后即可执行响应的中断服务程序。综上所述,中断提供了一个完全由硬件自动完成的程序执行通道,不要软件的参与,降低了CPU的负荷,提高了响应速度,是利用硬件提升MCU处理事件能力的有效方法。4.2.3EXTI应用步骤EXTI是最常用的功能之一,主要用于开关量监测,采用STM32CubeIDE进行开发时,EXTI的配置主要包括引脚功能选择、工作模式详细配置、NVIC设置和中断服务程序实现四大步骤。1.引脚功能选择以引脚PC0为例,首先选中PC0,然后设置其为GPIO_EXTI0。2.工作模式详细配置4.2.3EXTI应用步骤EXTI是最常用的功能之一,主要用于开关量监测,采用STM32CubeIDE进行开发时,EXTI的配置主要包括引脚功能选择、工作模式详细配置、NVIC设置和中断服务程序实现四大步骤。3.NVIC设置4.中断服务程序实现voidHAL_GPIO_EXTI_Callback(uint16_tGPIO_Pin){ /*判断引脚*/ if(GPIO_Pin==User_Label) { /*具体功能实现*/ }}本节小结1.理解EXTI内部电路原理;2.掌握EXTI应用步骤。按键控制LED本节小结4.3应用实例按键控制LED1.电路原理及需求分析采用按键控制LED,按键和LED相关电路原理图如图所示,按键一段接高电平,另一端经限流电阻接GPIO引脚,下方电容和电阻构成硬件消抖电路,按键松开时读取引脚为低电平,按键按下时读取引脚为高电平。按键控制LED1.电路原理及需求分析(1)LED1(PA0)用于指示系统工作状态,上电或复位后,系统进行初始化,初始化完成后,LED1先以0.5s的间隔闪烁3次,然后进入正常运行状态,LED1以1s的间隔闪烁。(2)按键K1通过轮询的方式控制LED2,每按一次K1,LED2状态发生一次改变。(3)按键K2通过外部中断的方式控制LED2,每按一次K1,LED2状态发生一次改变。按键控制LED2.实现过程(1)创建工程及最小系统配置。(2)引脚功能配置。(3)编程实现工程。main.c/*USERCODEBEGIN4*/

/*外部中断回调函数*/voidHAL_GPIO_EXTI_Callback(uint16_tGPIO_Pin){ if(GPIO_Pin==K2_Pin) { HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);

温馨提示

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

评论

0/150

提交评论