版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录124中断概述01STM32F407中断系统02
STM32F407中断HAL库函数0302第四章中断外部中断实例04CONTENTS知识、能力、素质目标阐述中断的基本概念阐述STM32F407中断系统构成说明STM32F407外部中断HAL库说明外部中断实例开发流程知识目标在学习和实践过程中,注重细节,培养严谨的工作态度
面对中断系统配置、调试等复杂问题时,能够运用所学知识进行分析和解决,提高问题解决能力素质目标运用STM32CubeMX软件配置中断工程运用KeilMDK软件应用HAL库函数编写程序并进行调试运用Proteus软件搭建中断仿真电路设计基于中断的实例能力目标目标01中断概述1.2.中断是处理器中的一种机制,用于响应和处理突发事件或紧急事件。当发生中断时,当前正在执行的程序会被暂时中止,处理器会跳转到中断处理程序,对中断事件进行处理,处理完中断后,处理器再返回到被中断的程序继续执行。中断的定义4.1概述中断内部中断:由处理器内部的模块或事件引发,例如定时器溢出、串口接收缓冲区非空等,可以用于定期执行特定任务、检测状态变化等外部中断:由外部设备或外部信号引发,例如按键按下、外部传感器信号变化等,可用于响应外部事件,并及时处理相关任务2.中断的优点提高系统响应速度和实时性实现任务的并行处理优化处理器资源利用增强系统可靠性和稳定性支持多种中断源和优先级管理降低系统功耗4.1概述3.2.中断源与中断屏蔽中断源(引发中断的事件或设备)硬件中断按键输入、定时器溢出、通信数据到达等软件中断由软件生成的中断,通常是调用的系统调用或异常当多个中断源同时请求中断时,中断屏蔽可以临时屏蔽某些中断,防止它们打断当前的任务或其他重要中断的处理中断屏蔽4.1概述4.中断处理过程主程序执行主程序继续执行主程序中断请求中断响应中断服务中断返回KK+1
当处理器接收到中断请求信号时暂停当前程序去处理中断,这个过程称为中断响应
中断服务程序执行完毕后,处理器返回到断点,继续执行原来的主程序,这个过程称为中断返回断点保护、现场保护、现场恢复和断点恢复4.1概述5.中断优先级与中断嵌套
在嵌入式系统中,中断优先级决定了当多个中断同时发生时,哪个中断会首先被处理。这种机制确保了关键任务能够及时得到处理,提高系统的实时性和可靠性。每个中断都被分配了一个唯一的优先级值,这个值决定了它在中断队列中的位置。中断优先级中断嵌套是指在一个中断服务程序正在执行的过程中,再次发生了一个中断请求,即发生了中断抢占。中断嵌套4.1概述02STM32F407中断系统3/23/2026NVICNestedVectoredInterruptController嵌套向量中断控制器ARMCortex-M4内核支持256个中断源,这包括16个内部中断源和240个外部中断源。此外,还提供了256级可编程的中断优先级设置。对于STM32F407微控制器来说,其支持的中断源总数为95个,具体包括13个内部中断源和82个外部中断源。同时,STM32F407还具备16个可编程优先级(使用了4位中断优先级)。STM32微控制器支持的82个中断通道是预先分配给特定外部设备的,每个中断通道都配有独立的中断优先级控制位,这些控制位每4个一组,共同构成一个32位的优先级寄存器4.2STM32F407中断系统抢占式优先级
抢占式优先级决定了中断是否能够打断其他正在执行的中断。如果两个中断的抢占式优先级不同,那么高抢占式优先级的中断将能够打断低抢占式优先级的中断,实现中断的嵌套处理。响应优先级
当两个中断的抢占式优先级相同时,如果它们同时到达,那么处理器将根据它们的响应优先级来决定先处理哪个中断,响应优先级高的中断将先被执行。
中断优先级决定了一个中断是否能被屏蔽,以及在未屏蔽的情况下何时可以响应。优先级的数值小,则优先级越高。4.2STM32F407中断系统中断向量表中断服务程序在中断响应程序的头文件stm32f4xx_it.h中被定义,但在源文件stm32f4xx_it.c中的实现通常为空或者包含一个无限循环。如果需要对特定的系统中断进行响应,需要在相应的中断服务程序函数中添加自定义的功能实现代码,也就是需要根据中断的具体处理功能,编写stm32f4xx_it.c文件中的代码,以确保在中断发生时能够执行预期的操作。4.2STM32F407中断系统中断服务函数嵌入式系统的中断服务函数是专门用于处理特定中断事件的函数。当中断发生时,处理器会暂停当前任务的执行,并跳转到相应的中断服务函数,执行与中断事件相关的特定操作。在STM32F407微控制器中,中断服务程序在启动代码文件startup_stm32f407xx.s中预先定义。内核中断通常以PPP_Handler的形式命名,而外部中断则以PPP_IRQHandler的形式命名,这里的PPP为表4.2中列出的中断名称。4.2STM32F407中断系统外部中断/事件控制器STM32F407微控制器配备了一个高级的外部中断/事件控制器EXTI,它拥有23个独立的边沿检测器,每个检测器都能够产生中断或事件请求。这些输入线允许用户独立配置多种参数。(1)输入类型:可以选择是脉冲模式还是挂起模式。(2)触发事件:可以设置为上升沿触发、下降沿触发,或者双边沿触发,即无论信号上升还是下降都会触发中断。(3)屏蔽功能:每个输入线都可以被单独屏蔽,以控制中断的触发。4.2STM32F407中断系统EXTI内部结构在STM32F407微控制器中,外部中断/事件控制器EXTI由23根外部输入线、23个产生中断/事件球的边沿检测器和APB外设接口等部分组成。外部中断、事件输入APB总线边沿检测器与在STM32F407微控制器中,如果将I/O引脚用作EXTI的外部中断/事件输入线,必须确保该引脚被配置为输入模式。外部中断/事件控制器通常挂载在APB总线上。外部事件请求的传输外部请求信号从①输入线进入控制器内部通过②边沿检测单元,该单元的运行受控于两个寄存器通过③逻辑或门,或门的另一个输入端连接着软件中断/事件寄存器通过④逻辑与门,该与门的另一个输入来自事件屏蔽寄存器EXTI工作原理外部中断请求的传输外部请求信号从①输入线进入控制器内部通过②边沿检测单元,可以选择上升沿触发、下降沿触发、双边沿触发外部中断信号与软件中断/事件寄存器共同输入③逻辑或门外部中断信号与中断屏蔽寄存器共同输入⑥逻辑与门EXTI工作原理03STM32F407中断HAL库函数宏定义:_HAL_RCC_SYSCFG_CLK_ENABLE(),将RCC_APB2外设时钟使能寄存器RCC_APB2ENR中的SYSCFGEN位设置为1,从而使能系统配置外设的时钟。在HAL库中,通常不会直接调用__HAL_RCC_SYSCFG_CLK_ENABLE()函数,而是会通过更高层次的HAL_函数来间接使能外设时钟。1.使能系统配置外设时钟STM32F407NVICHAL库函数4.3STM32F407中断HAL库函数voidHAL_NVIC_SetPriorityGrouping(uint32PriorityGroup),设置中断优先级分组。2.设置中断优先级分组STM32F407NVICHAL库函数函数原型:参数:PriorityGroup取值为NVIC_PRIORITYn,其中n=0~4,表示抢占优先级的位数为n位,响应优先级的位数为4-n位。4.3STM32F407中断HAL库函数voidHAL_NVIC_SetPriority(IRQn_TypeIRQn,uint32_tPreemptPriority,uint32_tSubPriority),设置中断的抢占优先级和响应优先级。3.设置中断优先级STM32F407NVICHAL库函数函数原型:参数:IRQn为需要配置优先级的中断,是一个IRQn_Type枚举类型的值。4.3STM32F407中断HAL库函数voidHAL_NVIC_EnableIRQ(IRQn_TypeIRQn),使能特定中断。4.使能中断STM32F407NVICHAL库函数函数原型:参数:IRQn为需要使能的中断4.3STM32F407中断HAL库函数1.读取中断标志STM32F407EXITHAL库函数
宏定义:__HAL_GPIO_EXTI_GET_IT(__EXTI_LINE__),用于检测外部中断挂起寄存器(EXTI_PR)中指定的外部中断线是否具有挂起的中断。_EXTI_LINE_代表特定的外部中断线,通常使用如GPIO_PIN_0、GPIO_PIN_1等宏定义的常量来指定。4.3STM32F407中断HAL库函数2.清除中断标志STM32F407EXITHAL库函数
宏定义:__HAL_GPIO_EXTI_CLEAR_IT(__EXTI_LINE__),用于向外部中断挂起寄存器(EXTI_PR)的特定位写入1,可以清除_EXTI_LINE_对应的中断线的挂起状态。在处理外部中断的中断服务程序中,完成中断处理后,需要调用此函数来清除挂起标志位,确保中断线能够响应后续的中断事件。4.3STM32F407中断HAL库函数3.软中断STM32F407EXITHAL库函数
宏定义:__HAL_GPIO_EXTI_GENERATE_SWIT(__EXTI_LINE__),用于将外部中断的软件中断事件寄存器(EXTI_SWIER)中对应于中断线_EXTI_LINE_的位置1,通过软件的方式产生某个外部中断。4.3STM32F407中断HAL库函数voidEXTI0_IRQHandler(void)4.中断服务例程STM32F407EXITHAL库函数函数原型:说明:EXTI0至EXTI4每条都有其独立的中断服务程序。而EXTI5至EXTI9以及EXTI10至EXTI15则分别共享一个中断服务程序,中断服务程序代码框架在结构上是相似的。4.3STM32F407中断HAL库函数voidHAL_GPIO_EXTI_IRQHandler(uint16_tGPIO_Pin),外部中断处理函数。5.中断处理函数STM32F407EXITHAL库函数函数原型:参数:GPIO_Pin触发中断的GPIO引脚号4.3STM32F407中断HAL库函数__weakvoidHAL_GPIO_EXTI_Callback(uint16_tGPIO_Pin),弱定义的回调函数,用于处理外部中断的自定义逻辑。6.中断回调函数STM32F407EXITHAL库函数函数原型:参数:GPIO_Pin触发中断的GPIO引脚号4.3STM32F407中断HAL库函数04外部中断实例用按键控制5个LED发光二极管,每次按键按下触发中断并累计按键按下次数,根据按键按下次数点亮对应发光二极管。外部中断实例需求4.4外部中断实例4.4外部中断实例STM32CubeMX配置配置STM32CubeMX工程配置系统时钟010302配置GPIO功能生成代码0405中断配置KeilMDK工程在main.c文件中加入int型变量led_number,代码如下:intlednumber=0;在main函数中加入发光二极管闪烁的应用逻辑代码,流程图如图:Proteus仿真电路Proteus中搭建仿真电路,双击Proteus原理图中的STM32F407VET6,设置加载程序文件的路径,将KeilMDK编译生成的hex
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新能科技利用推动承诺书6篇
- 根治性肝癌肝叶切除术后护理查房
- 教育培训项目完成承诺书8篇
- 人力资源招聘流程与工具清单
- 项目交付质量控制模板系统
- 2026年安徽省蚌埠局属校初三第二学期第3次练考英语试题含解析
- 云南省曲靖市重点名校2026届初三第三次质量检测试题试卷英语试题含解析
- 上海市浦东区重点中学2026届初三下学期5月热身英语试题含解析
- 2026年上海浦东第四教育署初三第六次质检语文试题含解析
- 陕西省榆林市绥德县市级名校2026年初三最后一模语文试题试卷含解析
- 线路板常识培训课件
- 水轮发电机组检修作业指导书资料
- 定压补水装置说明书
- 管致中信号与线性系统第5版答案
- 一汽大众汽车公司介绍
- 4.2《产生气体的变化》课件
- 《建筑工程项目管理》课程思政优秀案例
- 中国古代文化常识科举制度
- 护理管理学第二章管理理论和原理课件
- 超星通尔雅生命智能课后答案
- 篮球教案抢篮板球
评论
0/150
提交评论