第5章stm32单片机外部中断ppt课件

上传人:94****0 文档编号:240655437 上传时间:2024-04-27 格式:PPT 页数:75 大小:5.76MB
收藏 版权申诉 举报 下载
第5章stm32单片机外部中断ppt课件_第1页
第1页 / 共75页
第5章stm32单片机外部中断ppt课件_第2页
第2页 / 共75页
第5章stm32单片机外部中断ppt课件_第3页
第3页 / 共75页
资源描述:

《第5章stm32单片机外部中断ppt课件》由会员分享,可在线阅读,更多相关《第5章stm32单片机外部中断ppt课件(75页珍藏版)》请在装配图网上搜索。

1、退出退出嵌入式单片机原理及应用电气工程学院仪器科学与工程系电气工程学院仪器科学与工程系 退出嵌入式单片机原理及应用电气工程学院仪器科学与工程系1 ARM嵌入式系统概述2 STM32单片机结构和最小系统3 基于标准外设库的C语言程序设计基础4 STM32通用输入输出GPIO5 STM32外部中断6 STM32通用定时器7 STM32通用同步/异步收发器USART8 直接存储器存取DMA9 STM32的模数转换器ADC10 STM32的集成电路总线I2C11 STM32的串行外设接口SPI1ARM嵌入式系统概述第第5章章STM32单片机外部中断单片机外部中断5.15.1中断相关概念中断相关概念5.

2、2STM32F1035.2STM32F103中断系统组成中断系统组成5.35.3中断控制中断控制5.45.4中断执行过程和中断嵌套中断执行过程和中断嵌套5.5STM325.5STM32外部中断应用设计外部中断应用设计退出退出第5章STM32单片机外部中断5.1中断相关概念退出5.1中断的相关概念中断的相关概念中断中断:单片机执行主程序时,由于某个事件的原因,暂停主:单片机执行主程序时,由于某个事件的原因,暂停主程序的执行,调用相应的程序处理该事件,处理完毕后再自程序的执行,调用相应的程序处理该事件,处理完毕后再自动继续执行主程序的过程。动继续执行主程序的过程。中断的优先级中断的优先级:由中断的

3、嵌套可以看出,不同事件的重要程:由中断的嵌套可以看出,不同事件的重要程度不同。重要的事件可以打断相对不重要的事件的处理,用度不同。重要的事件可以打断相对不重要的事件的处理,用户可以根据自己的需求对不同的事件设定户可以根据自己的需求对不同的事件设定重要级别重要级别,称为中,称为中断的优先级。断的优先级。中断的嵌套中断的嵌套:如果在执行一个中断时又被另一个更重要的事:如果在执行一个中断时又被另一个更重要的事件打断,暂停该中断处理过程转去处理这个更重要的事件,件打断,暂停该中断处理过程转去处理这个更重要的事件,处理完毕后再继续处理本中断的过程,叫作中断的嵌套。处理完毕后再继续处理本中断的过程,叫作中

4、断的嵌套。中断源中断源:可以引起中断的事件称为中断源。:可以引起中断的事件称为中断源。5.1中断的相关概念中断:单片机执行主程序时,由于某个事5.1中断的相关概念中断的相关概念中断服务程序中断服务程序与与中断向量中断向量:为了处理中断而编写的程序称为:为了处理中断而编写的程序称为中断服务程序,对应中断服务程序的中断服务程序,对应中断服务程序的入口地址入口地址被称为中断向被称为中断向量。量。中断请求中断请求、中断响应中断响应、中断处理中断处理及及中断返回中断返回:中断源对主程:中断源对主程序或中断服务程序提出中断要求,叫作中断请求;主程序或序或中断服务程序提出中断要求,叫作中断请求;主程序或中断

5、服务程序接受中断请求,进入中断服务程序的过程叫作中断服务程序接受中断请求,进入中断服务程序的过程叫作中断响应;执行中断服务程序的过程叫作中断处理;中断服中断响应;执行中断服务程序的过程叫作中断处理;中断服务程序执行完毕后回到主程序或者次一级别中断服务程序的务程序执行完毕后回到主程序或者次一级别中断服务程序的过程叫作中断返回。过程叫作中断返回。中断处理的整个过程包含了中断请求、中断响应、中断处理中断处理的整个过程包含了中断请求、中断响应、中断处理及中断返回四个步骤。及中断返回四个步骤。中断系统中断系统:实现中断处理功能的软件、硬件系统称为中断系:实现中断处理功能的软件、硬件系统称为中断系统。统。

6、5.1中断的相关概念中断服务程序与中断向量:为了处理中断而5.2 STM32F103中断系中断系统组成成5.2.15.2.1中断源中断源中断源中断源 STM32F103中断系统提供中断系统提供10个系统异常个系统异常和和60个可屏蔽个可屏蔽中断中断(STM32F107系列为系列为68个)源,具有个)源,具有16个中断个中断优先级优先级。可屏蔽可屏蔽中断源中断源中断源中断源包括:包括:外部中断、定时器中断、串口中断外部中断、定时器中断、串口中断直接内存访问中断直接内存访问中断模数转换中断模数转换中断集成电路总线中断集成电路总线中断串行外设接口中断等。串行外设接口中断等。5.2STM32F103中

7、断系统组成5.2.1中断源5.2.1中断源中断源ARMCoetex-M3内核内核共支持共支持256个中断个中断,其中,其中16个内部个内部中断,中断,240个外部个外部中断和可编程的中断和可编程的256级中断优级中断优先级先级的设置。的设置。STM32目前支持的中断共目前支持的中断共84个(个(16个内个内部部+68个外部个外部),还有),还有16级级可编程的可编程的中断优先级中断优先级的设的设置,仅使用中断优先级设置置,仅使用中断优先级设置8bit中的高中的高4位。位。5.2.1中断源ARMCoetex第5章stm32单片机外部中断ppt课件5.2.2 5.2.2 中断向量:中断向量:中断向

8、量:中断向量:表表5-1 给出给出STM32F103中断向量表中断向量表5.2.2中断向量:表5-1给出STM32F103中断向复合中断源复合中断源单独中断源复合中断源复合中断源单独中断源第5章stm32单片机外部中断ppt课件5.2.3 中断控制中断控制器器NVICNVIC为为中断中断中断中断总总开关开关开关开关:支持支持68个可屏蔽中断。提供个可屏蔽中断。提供16个个可编程的优先级,支持中断嵌套,提供可编程的优先级,支持中断嵌套,提供向量中断处理向量中断处理机制机制等功能。中断发生时,等功能。中断发生时,自动获得自动获得服务例程服务例程入口地入口地址并址并直接调用,无需软件判定中断源。主要

9、包括直接调用,无需软件判定中断源。主要包括:中断中断设置允置允许寄存器(寄存器(NVIC_ISER)中断清除允中断清除允许寄存器(寄存器(NVIC_ICER)中断中断设置挂起寄存器(置挂起寄存器(NVIC_ISPR)中断清除挂起寄存器(中断清除挂起寄存器(NVIC_ICPR)中断状中断状态寄存器(寄存器(NVIC_IABR)控制。)控制。5.2.3中断控制器NVIC为中断总开关:支持68个可屏蔽5.2.3 中断控制中断控制器器与与NVIC相关的寄存器相关的寄存器在在“stm32f10 x_map.h”文件中定义了一个文件中定义了一个结构结构体体,结构体的内容如下,结构体的内容如下STM32F1

10、03系列单片机系列单片机的中断系统在这些寄存的中断系统在这些寄存器的控制下有序执行。器的控制下有序执行。了解了解这些这些中断寄存器的中断寄存器的含义含义,才能更好的理解,才能更好的理解STM32单片机中断系统单片机中断系统的工作原理的工作原理typedef structvu32 ISER2;u32 RESERVED030;vu32 ICER2;u32 RESERVED130;vu32 ISPR2;u32 RESERVED230;vu32 ICPR2;u32 RESERVED330;vu32 IABR2;u32 RESERVED430;vu32 IPR15;NVIC_TypeDef5.2.3中断

11、控制器与NVIC相关的寄存器在“stm32f5.2.3 中断控制中断控制器器ISER2:ISER全称是:全称是:Interrupt Set-Enable Registers,中断使能寄存器组。,中断使能寄存器组。STM32F103系列的单片机可屏蔽外部中断有系列的单片机可屏蔽外部中断有60个,个,用用2个个32位的位的ISER寄存器来表示,这寄存器来表示,这2个个32位的寄存位的寄存器总共可以表示器总共可以表示64个外部中断。而个外部中断。而STM32F103系列系列单片机只用了单片机只用了ISER寄存器其中的前寄存器其中的前60位。位。ISER0的的bit0bit31分别分别对应对应是是外部

12、中断外部中断031。ISER1的的bit027对应外部中断对应外部中断3259;这样总共;这样总共60个外部中断就分别对应上了。个外部中断就分别对应上了。使能使能某个中断,必须某个中断,必须设置相应的设置相应的ISER位为位为15.2.3中断控制器ISER2:ISER全称是:Int5.2.3 中断控制中断控制器器ICER2:全称:全称Interrupt Clear-Enable Registers,是,是一个一个中断清除使能中断清除使能寄存器组。寄存器组。该寄存器组与该寄存器组与ISER寄存器功能相反,用来清除某个寄存器功能相反,用来清除某个中断的使能位。由于中断的使能位。由于NVIC的这些寄

13、存器都是的这些寄存器都是写写1有有效效的,的,写写0是是无效无效的。设置一组的。设置一组ICER 寄存器来寄存器来清除清除相应中断使能位相应中断使能位。ISPR2:全称:全称Interrupt Set-Pending Registers,是,是一个一个中断挂起控制中断挂起控制寄存器组。寄存器组。每个位对应的外部中断和每个位对应的外部中断和ISER内容是一样的。通过内容是一样的。通过向相应的位向相应的位写写1,可以,可以将正在执行的中断挂起将正在执行的中断挂起,去执去执行同级或更高级别的中断行同级或更高级别的中断。向这个寄存器组写。向这个寄存器组写0是无是无效的。效的。5.2.3中断控制器ICE

14、R2:全称Interrupt5.2.3 中断控制中断控制器器ICPR2:全称:全称Interrupt Clear-Pending Registers,是单片机,是单片机的的中断解挂中断解挂寄存器组。寄存器组。其功能和其功能和ISPR寄存器相反,对应位的内容也和寄存器相反,对应位的内容也和ISER寄存器是寄存器是一样的。通过一样的。通过写写1,可以将相应的,可以将相应的中断解挂中断解挂。写。写0无效。无效。IABR2:全称:全称Interrupt Active Bit Registers,单片机,单片机中断激中断激活标志位活标志位寄存器组。寄存器组。它是一个它是一个只读只读寄存器,寄存器,CPU

15、通过读取这个寄存器的相应位就通过读取这个寄存器的相应位就可以知道当前有哪些中断正在执行。在相应的中断执行完成可以知道当前有哪些中断正在执行。在相应的中断执行完成以后由硬件自动清零。对应位所代表的中断内容和以后由硬件自动清零。对应位所代表的中断内容和ISER一样,一样,如果相应位如果相应位为为1,则表示该位所对应的,则表示该位所对应的中断正在中断正在被被执行执行。5.2.3中断控制器ICPR2:全称Interrupt5.2.3中断控制中断控制器器IPR15:全称:全称Interrupt Priority Registers,是一个,是一个中断优先中断优先级级控制的寄存器组。控制的寄存器组。这个寄

16、存器组比较重要,这个寄存器组比较重要,STM32F103系列单片机的外部中断系列单片机的外部中断分组与这个寄存器组密切相关。分组与这个寄存器组密切相关。因为因为STM32F103系列单片机的外部中断有系列单片机的外部中断有60个,所以采用中个,所以采用中断分组的办法来确定中断的优先级。断分组的办法来确定中断的优先级。IPR寄存器组由寄存器组由15个个32位位的寄存器组成,每个可屏蔽中断占用的寄存器组成,每个可屏蔽中断占用8位位5.2.3中断控制器IPR15:全称Interrupt5.2.3 中断控制中断控制器器STM32F103支持的支持的60个中断通道已固定分配给相应的外部个中断通道已固定分

17、配给相应的外部设备,每个中断通道都具备自己的设备,每个中断通道都具备自己的中断优先级控制字节中断优先级控制字节PRI_n,每,每4个通道个通道的的8位位中断优先级控制字构成一个中断优先级控制字构成一个32位的位的优先级寄存器优先级寄存器。IPR0的的07,815,1623,2431分别对应中断编分别对应中断编号为号为03,依此类推,总共对应,依此类推,总共对应60个外部中断。个外部中断。而每个可屏蔽中断占用的而每个可屏蔽中断占用的8bit并没有全部使用,并没有全部使用,只只采采用高用高4位位。这这4位,又分为位,又分为抢占抢占优先级和优先级和响应响应优先级。抢占优先级在前,优先级。抢占优先级在

18、前,响应优先级在后。响应优先级在后。5.2.3中断控制器STM32F103支持的60个中断通道外部中断外部中断外部中断外部中断/事件控制器事件控制器事件控制器事件控制器EXTIEXTI,主要特性:,主要特性:,主要特性:,主要特性:(1)每个中断每个中断/事件都有独立的事件都有独立的触发和屏蔽触发和屏蔽;(2)每个中断线都有专用的每个中断线都有专用的状态位状态位;(3)支持多达支持多达19个个中断中断/事件请求;事件请求;(4)检测脉冲宽度低于检测脉冲宽度低于APB2时钟宽度的外部信号。时钟宽度的外部信号。第5章stm32单片机外部中断ppt课件STM32STM32外部中断外部中断 STM32

19、STM32单片机单片机8080个个通用通用I/OI/O端口端口连接到连接到1919个个外部中断外部中断/事件源事件源上。上。左图为左图为STM32STM32单片机通用单片机通用I/OI/O与与外部中断的映射关系:外部中断的映射关系:PAxPAx、PBx PBx、PCx PCx、PDxPDx和和PExPEx端口对端口对应的是同一个外部中断应的是同一个外部中断/事件源事件源EXTIxEXTIx(x(x:0-15)0-15)。STM32外部中断STM32单片机80个通用I/O端口连接第5章stm32单片机外部中断ppt课件5.2.4 相关功能寄存器相关功能寄存器5.2.4相关功能寄存器5.2.4 相

20、关功能寄存器相关功能寄存器1.中断屏蔽寄存器(中断屏蔽寄存器(EXTI_IMR)2.事件屏蔽寄存器(事件屏蔽寄存器(EXTI_EMR)3.上升沿触发选择寄存器(上升沿触发选择寄存器(EXTI_RTSR)4.下降沿触发选择寄存器(下降沿触发选择寄存器(EXTI_FTSR)5.软件中断事件寄存器(软件中断事件寄存器(EXTI_SWIER)6.中断挂起寄存器(中断挂起寄存器(EXTI_PR)5.2.4相关功能寄存器1.中断屏蔽寄存器(EXTI_I5.2.4 相关功能寄存器相关功能寄存器EXTI_IMR(Interruptmaskregister)EXTI_IMR(Interruptmaskregis

21、ter)中断屏蔽寄存器中断屏蔽寄存器中断屏蔽寄存器中断屏蔽寄存器5.2.4相关功能寄存器EXTI_IMR(Interrup5.2.4 相关功能寄存器相关功能寄存器EXTI_RTSR(Risingtriggerselectionregister)EXTI_RTSR(Risingtriggerselectionregister)上升沿触发寄存器上升沿触发寄存器上升沿触发寄存器上升沿触发寄存器5.2.4相关功能寄存器EXTI_RTSR(Rising5.2.4 相关功能寄存器相关功能寄存器EXTI_FTSR(Fallingtriggerselectionregister)EXTI_FTSR(Falli

22、ngtriggerselectionregister)下降沿触发器下降沿触发器下降沿触发器下降沿触发器5.2.4相关功能寄存器EXTI_FTSR(Fallin5.2.4 相关功能寄存器相关功能寄存器EXTI_SWIER(Softwareinterrupteventregister)EXTI_SWIER(Softwareinterrupteventregister)软件中断事件软件中断事件软件中断事件软件中断事件寄存器寄存器寄存器寄存器5.2.4相关功能寄存器EXTI_SWIER(Softw5.2.4 相关功能寄存器相关功能寄存器EXTI_PR(PendingRegister)EXTI_PR(P

23、endingRegister)中断挂起寄存器中断挂起寄存器中断挂起寄存器中断挂起寄存器5.2.4相关功能寄存器EXTI_PR(Pending5.2.4 相关功能寄存器相关功能寄存器EXTI_EMR(Eventmaskregister)EXTI_EMR(Eventmaskregister)中断事件屏蔽寄存器中断事件屏蔽寄存器中断事件屏蔽寄存器中断事件屏蔽寄存器5.2.4相关功能寄存器EXTI_EMR(Eventm5.3 中断控制中断控制5.3.1 中断屏蔽控制中断屏蔽控制中断屏蔽控制包括中断屏蔽控制包括NVIC控制和外设中断控制控制和外设中断控制EXTI。NVIC为为中断总开关中断总开关,由中断

24、设置允许寄存器(,由中断设置允许寄存器(NVIC_ISER)、中断)、中断清除允许寄存器(清除允许寄存器(NVIC_ICER)、中断设置挂起寄存器)、中断设置挂起寄存器(NVIC_ISPR)、中断清除挂起寄存器()、中断清除挂起寄存器(NVIC_ICPR)和中)和中断状态寄存器(断状态寄存器(NVIC_IABR)控制。)控制。除除GPIO由由EXTI控制控制中断外,其它的外设均有自己的中断屏蔽中断外,其它的外设均有自己的中断屏蔽控制寄存器,如定时器中断由控制寄存器,如定时器中断由DMA/中断使能寄存器中断使能寄存器(TIM_DIER)控制、串口中断由状态寄存器控制、串口中断由状态寄存器(USA

25、RT_SR)和控制和控制寄存器寄存器3(USART_CR3)控制。控制。5.3中断控制5.3.1中断屏蔽控制第5章stm32单片机外部中断ppt课件5.3.2 中断中断优先先级控制控制STM32F103系列单片机外部中断分为系列单片机外部中断分为5个组,组个组,组04。分组的。分组的设置是由设置是由SCB-AIRCR寄存器的寄存器的bit108这这3位来定义的。具体位来定义的。具体的分配关系如下表所示:的分配关系如下表所示:5.3.2中断优先级控制STM32F103系列单片机外部中为使为使STM32单片机的中断系统能及时响应并处理发生的所有单片机的中断系统能及时响应并处理发生的所有中断,系统根

26、据引起中断事件的重要性和紧迫程度,中断,系统根据引起中断事件的重要性和紧迫程度,STM32单片机的硬件将外设的中断源分为单片机的硬件将外设的中断源分为2个级别,这个级别,这2个级别就是个级别就是STM32F103系列单片机的系列单片机的抢占优先级抢占优先级和和响应优先级响应优先级;如果两个中断源的抢占优先级和响应优先级都是一样的话,如果两个中断源的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行;则看哪个中断先发生就先执行;高抢占高抢占优先级中断是可以优先级中断是可以打断打断正在进行的正在进行的低抢占低抢占优先级中断优先级中断的。而抢占优先级相同的中断,的。而抢占优先级相同的中断

27、,高响应高响应优先级中断优先级中断不可以打不可以打断断正在执行的正在执行的低响应低响应优先级中断。优先级中断。5.3.2中断优先级控制中断优先级控制为使STM32单片机的中断系统能及时响应并处理发生的所有中断响响应优先先级可可设置置为0到到15级。判断判断两个中断的两个中断的优先先级时:(1)先看先看抢占占优先先级的高低;的高低;(2)再看再看响响应优先先级的高低;的高低;(3)看中断通道向量看中断通道向量地址地址。一个一个系系统使用一个使用一个组别就完全可以就完全可以满足需要,在使足需要,在使用一个用一个组别后不要在系后不要在系统中再改中再改动组别。5.3.2中断优先级控制中断优先级控制响应

28、优先级可设置为0到15级。5.3.2中断优先级控制假定设置中断优先级为假定设置中断优先级为组组2,然后设置:,然后设置:中断中断3(RTC中断)的抢占优先级为中断)的抢占优先级为2,响应优先级为,响应优先级为1。中断中断6(外部中断(外部中断0)的抢占优先级为)的抢占优先级为3,响应优先级为,响应优先级为0。中断中断7(外部中断(外部中断1)的抢占优先级为)的抢占优先级为2,响应优先级为,响应优先级为0。求这求这3个中断的优先级顺序?个中断的优先级顺序?上面例子中的中断上面例子中的中断3和中断和中断7都可以打断中断都可以打断中断6的中断。而中的中断。而中断断7和中断和中断3却不可以相互打断(这

29、是因为他们的抢占优先级却不可以相互打断(这是因为他们的抢占优先级是相同的)。是相同的)。5.3.2中断优先级控制中断优先级控制假定设置中断优先级为组2,然后设置:5.3.2中断优先级控第5章stm32单片机外部中断ppt课件5.4中断执行过程和中断嵌套中断执行过程和中断嵌套如果系统中存在多个中断源,处理器要先判断当前中断的优先如果系统中存在多个中断源,处理器要先判断当前中断的优先级。级。多个多个中断中断请求同时到请求同时到达时,先响应优先级高的中断。达时,先响应优先级高的中断。如果它们的如果它们的抢占优先级相同抢占优先级相同,则先处理响应优先级高则先处理响应优先级高的中断。的中断。例如有三个中

30、断向量:例如有三个中断向量:中断向量中断向量抢占优先级抢占优先级响应优先级响应优先级A00B10C11如果内核正在执行如果内核正在执行C C的中断服务程序,则的中断服务程序,则能被能被抢占优先级更高的中抢占优先级更高的中断断A A打断打断;由于由于B B和和C C的抢占优先级相同,所以的抢占优先级相同,所以C C不会被不会被B B打断打断;但如果但如果B B和和C C两个中断同时到达,则响应优先级更高的两个中断同时到达,则响应优先级更高的B B会被先执行。会被先执行。11中断请求和优先级中断请求和优先级中断请求和优先级中断请求和优先级5.4中断执行过程和中断嵌套如果系统中存在多个中断源,处理5

31、.5 STM32外部中断外部中断应用用设计5.5.1 STM32外部中断常用的外部中断常用的库函数函数函数名函数名描述描述NVIC_PriorityGroupConfig设置优先级分组:抢占优先级和响应优先级设置优先级分组:抢占优先级和响应优先级NVIC_Init根据根据NVIC_InitStruct中指定的参数初始化外设中指定的参数初始化外设NVIC寄存器寄存器NVIC_SetVectorTable设置向量表的位置和偏移设置向量表的位置和偏移NVIC_SystemLPConfig选择系统进入低功耗模式的条件选择系统进入低功耗模式的条件5.5STM32外部中断应用设计5.5.1STM32第5章

32、stm32单片机外部中断ppt课件5.5.2 STM32中断中断的设计的设计1.NVIC设置置 (1)根据需要根据需要对中断中断优先先级进行行分分组,确定,确定抢占占优先先级和响和响应优先先级的个数。的个数。(2)选择中断通道中断通道,不同的引脚,不同的引脚对应不同的中断通道,不同的中断通道,在在stm32f10 x.h中定中定义了中断通道了中断通道结构体构体IRQn_Type,包含了所有型号芯片的所有中断通道。包含了所有型号芯片的所有中断通道。(3)根据系根据系统要求要求设置置中断中断优先先级,包括,包括抢占占优先先级和和响响应优先先级。(4)使能使能相相应的的中断中断,完成,完成NVIC配

33、置。配置。5.5.2STM32中断的设计1.NVIC设置5.5.2 STM32中断中断的设计的设计使用使用库函数函数NVIC_PriorityGroupConfig()实现STM32F103系列系列的的单片机中断系片机中断系统分分组5.5.2STM32中断的设计使用库函数NVIC_Pri5.5.2 STM32中断中断的设计的设计入口参数入口参数NVIC_PriorityGroup5.5.2STM32中断的设计入口参数NVIC_Prio5.5.2 STM32中断中断的设计的设计举例:如代码的第如代码的第17行所示,利用行所示,利用“NVIC_PriorityGroupConfig()”库函数将外

34、部中断分为库函数将外部中断分为组组2。即,抢占优先级可以设置为即,抢占优先级可以设置为0-3,响应优先级也是可以设置为,响应优先级也是可以设置为0-3的,这是因为它们抢占优先级占的,这是因为它们抢占优先级占2位,响应优先级也占位,响应优先级也占2位。:位。:5.5.2STM32中断的设计举例:如代码的第17行所示5.5.2 STM32中断中断的设计的设计结构体结构体“NVIC_InitTypeDef”定义定义typedefstructuint8_tNVIC_IRQChannel;uint8_tNVIC_IRQChannelPreemptionPriority;uint8_tNVIC_IRQCh

35、annelSubPriority;FunctionalStateNVIC_IRQChannelCmd;NVIC_InitTypeDef;5.5.2STM32中断的设计结构体“NVIC_Init5.5.2 STM32中断中断的设计的设计NVIC_IRQChannel参数选择需要配置的中断向量的值,如下表所示5.5.2STM32中断的设计NVIC_IRQChann5.5.2 STM32中断中断的设计的设计5.5.2STM32中断的设计5.5.2 STM32中断中断的设计的设计NVIC_IRQChannelPreemptionPriority该参数设置了成员该参数设置了成员NVIC_IRQChann

36、el中的抢占优先级的优先级别。中的抢占优先级的优先级别。NVIC_IRQChannelSubPriority该参数设置了成员该参数设置了成员NVIC_IRQChannel中的响应优先级的优先级别中的响应优先级的优先级别5.5.2STM32中断的设计NVIC_IRQChann5.5.2 STM32中断中断的设计的设计第第0组组:先占优先级(:先占优先级(抢占抢占优先级)占优先级)占0位位,从优先级(,从优先级(响应响应优先级)占优先级)占4位位,所以说所以说NVIC_IRQChannelPreemptionPriority这个参数的值只能设置这个参数的值只能设置为为0,NVIC_IRQChann

37、elSubPriority这个参数值可以设置这个参数值可以设置为为0-15;第第1组组:先占优先级(抢占优先级)占:先占优先级(抢占优先级)占1位位,从优先级(响应优先级)占,从优先级(响应优先级)占3位位,所以说所以说NVIC_IRQChannelPreemptionPriority这个参数的值可以设置这个参数的值可以设置为为0-1,NVIC_IRQChannelSubPriority这个参数的值可以设置这个参数的值可以设置为为0-7;第第2组:先占优先级(抢占优先级)占组:先占优先级(抢占优先级)占2位,从优先级(响应优先级)占位,从优先级(响应优先级)占2位,位,所以说所以说NVIC_I

38、RQChannelPreemptionPriority这个参数的值可以设置为这个参数的值可以设置为0-3,NVIC_IRQChannelSubPriority这个参数的值可以设置为这个参数的值可以设置为0-3;第第3组:先占优先级(抢占优先级)占组:先占优先级(抢占优先级)占3位,从优先级(响应优先级)占位,从优先级(响应优先级)占1位,位,所以说所以说NVIC_IRQChannelPreemptionPriority值可以设置为值可以设置为0-7,NVIC_IRQChannelSubPriority值可以设置为值可以设置为0-1;第第4组:先占优先级(抢占优先级)占组:先占优先级(抢占优先级

39、)占4位,从优先级(响应优先级)占位,从优先级(响应优先级)占0位,位,所以说所以说NVIC_IRQChannelPreemptionPriority这个参数的值可以设置为这个参数的值可以设置为0-15,NVIC_IRQChannelSubPriority这个参数的值只能设置为这个参数的值只能设置为0;5.5.2STM32中断的设计第0组:先占优先级(抢占优5.5.2 STM32中断中断的设计的设计NVIC_IRQChannelCmd该参数用来使能或者关闭指定的该参数用来使能或者关闭指定的IRQ通道。下面例通道。下面例子给出如何用库函数配置子给出如何用库函数配置STM32F103系列单片机的外

40、部中断:系列单片机的外部中断:程序代码的第程序代码的第14行定义了一个行定义了一个“NVIC_InitTypeDef”结构体类型的变量。结构体类型的变量。第第17行:设置行:设置NVIC中断分组中断分组2,2位抢占优先级,位抢占优先级,2位响应优先级;位响应优先级;第第18行:行:设置外部设置外部I0口的第口的第5-9引脚为中断通道;引脚为中断通道;第第19行:抢占优先级为行:抢占优先级为2;第第20行:行:响应优先级为响应优先级为2;第第21行:使能外部中断通道;行:使能外部中断通道;第第22行:根据行:根据NVIC_InitStructure结构体中指定的参数初始化外设结构体中指定的参数初

41、始化外设NVIC寄存器;寄存器;5.5.2STM32中断的设计NVIC_IRQChann5.5.2 STM32中断中断的设计的设计5.5.2STM32中断的设计2.中断端口配置中断端口配置 (1)首先要首先要对引脚引脚进行行配置配置,使能引脚,具体方法参考第,使能引脚,具体方法参考第4章,章,如果使用了复用功能需要打开复用如果使用了复用功能需要打开复用时钟。(2)然后然后对外部外部中断方式中断方式进行行配置配置,包括中断,包括中断线路路设置、中断置、中断或事件或事件选择、触、触发方式方式设置、使能中断置、使能中断线完成完成设置。置。其中中断其中中断线路路EXTI_Line0 EXTI_Line

42、15分分别对应EXTI0EXTI15,即每个端口的,即每个端口的16个引脚。个引脚。EXTI_Line16 EXTI_Line18分分别对应PVD输出出事件、事件、RTC闹钟事件和事件和USB唤醒醒事件。事件。5.5.2 STM32中断中断的设计的设计2.中断端口配置5.5.2STM32中断的设计这个个库函数的功能就是函数的功能就是选择哪个哪个IO引脚作引脚作为外部中断外部中断线路路,它有它有2个个输入参数,第一个入参数,第一个输入参数入参数GPIO_PortSource,作用,作用是是选择哪一哪一组GPIO端口作端口作为外部中断源,它的外部中断源,它的值可取下表中可取下表中的任意一个的任意一

43、个值:5.5.2 STM32中断中断的设计的设计这个库函数的功能就是选择哪个IO引脚作为外部中断线路,它有2输入参数输入参数GPIO_PinSource:这个参数可以选择:这个参数可以选择GPIO端口的端口的某个引脚作为中断源的输入。某个引脚作为中断源的输入。5.5.2 STM32中断中断的设计的设计输入参数GPIO_PinSource:这个参数可以选择GPI5.5.3 STM32外部中断外部中断应用用实例实例通通过按按键中断中断实现LED的亮的亮灭控制,利用控制,利用STM32F10 x的的GPIO功能功能驱动LED。采用。采用PA8连接接LED,PB6接按接按键开关。开关。5.5.3STM

44、32外部中断应用实例通过按键中断实现LE电路原理电路原理电容的作用电容的作用是消除抖动是消除抖动电路原理电容的作用是消除抖动按键抖动及单脉冲电路按键抖动及单脉冲电路抖动时间抖动时间为为10mS10mS单脉冲单脉冲按键抖动及单脉冲电路抖动时间为10mS单脉冲第5章stm32单片机外部中断ppt课件5.5.3 STM32外部中断外部中断应用用实例实例int main(void)NVIC_Configuration();/NVIC LED_Config();/GPIO-LED KEY_Config();/GPIO-KEY GPIO_ResetBits(GPIOB,GPIO_Pin_8);/低低电平,

45、点亮平,点亮LED while(1)主程序主程序5.5.3STM32外部中断应用实例intmain(v5.5.3 STM32外部中断外部中断应用用实例实例void NVIC_Configuration(void)NVIC_InitTypeDef NVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_Ini

46、tStructure.NVIC_IRQChannelSubPriority=0;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);中断优先级中断优先级NVIC配置配置5.5.3STM32外部中断应用实例voidNVIC_5.5.3 STM32外部中断外部中断应用用实例实例void LED_Config(void)GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO

47、_InitStructure.GPIO_Pin=GPIO_Pin_8;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOA,&GPIO_InitStructure);时钟使能时钟使能I/OI/O口初始化口初始化GPIO-LED5.5.3STM32外部中断应用实例voidLED_C5.5.3 STM32外部中断外部中断应用用实例实例void KEY_Config(void)GPIO_InitTypeDef GPIO_InitStruc

48、ture;EXTI_InitTypeDef EXTI_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO-KEY I/OI/O口初始化口初始化时钟设置时钟设置5.5.3STM32外部中断应用实例voidKEY_C5.5.3 STM3

49、2外部中断外部中断应用用实例实例GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource6);EXTI_InitStructure.EXTI_Line=EXTI_Line6;EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStructure);外部中断初始化外部中断初始化

50、GPIO-KEY 5.5.3STM32外部中断应用实例外部中断初始化GPI5.5.3 STM32外部中断外部中断应用用实例实例void KEY_Config(void)中中定定义了一个了一个“EXTI_InitStructure”,这个个结构体构体类型型在库文件中如在库文件中如下定义下定义:Typedef structuint32_t EXTI_Line;EXTIMode_TypeDef EXTI_Mode;EXTITrigger_TypeDef EXTI_Trigger;FunctionalState EXTI_LineCmd;EXTI_InitTypeDef函数说明函数说明5.5.3STM

51、32外部中断应用实例voidKEY_C5.5.3 STM32外部中断外部中断应用用实例实例1:uint32_t EXTI_Line这个这个参数参数就是让我们选择哪条就是让我们选择哪条外部的中断线,该参数可取的值外部的中断线,该参数可取的值EXTI_InitStructure5.5.3STM32外部中断应用实例1:uint32_t2:EXTI_Mode该参数让我们设置中断线路的模式,是该参数让我们设置中断线路的模式,是事件请求还是中断请求,该参数可取的值:事件请求还是中断请求,该参数可取的值:STM32单片机的中断与事件有何区别?5.5.3 STM32外部中断外部中断应用用实例实例EXTI_In

52、itStructureSTM32单片机的中断与事件有何区别?5.5.3STM35.5.3 STM32外部中断外部中断应用用实例实例中断是需要是需要CPU参与参与的,需要软件的中断服务的,需要软件的中断服务函数函数才才能能完成完成,中断后产生相应的结果,中断后产生相应的结果;事件是靠是靠脉冲发生器产生脉冲发生器产生一个脉冲一个脉冲,进而由硬件自动完进而由硬件自动完成这个事件,并且产生相应的结果。成这个事件,并且产生相应的结果。可以这样简单的认为可以这样简单的认为,事件事件机制提供了一个机制提供了一个完全由硬完全由硬件件自动完成自动完成触发触发到到产生结果产生结果的这么一个通道的这么一个通道,不需

53、要软不需要软件的参与件的参与,降低了降低了CPU的负荷的负荷,节省了中断资源,提高节省了中断资源,提高了响应速度了响应速度(硬件总快于软件硬件总快于软件),事件是利用硬件来提,事件是利用硬件来提升升CPU芯片处理事件能力的一个有效方法。芯片处理事件能力的一个有效方法。5.5.3STM32外部中断应用实例3:EXTI_Trigger 设置了线路的触发边沿(设置了线路的触发边沿(3种触发方种触发方式:上升沿触发式:上升沿触发,下降沿触发和上升沿和下降沿触发)下降沿触发和上升沿和下降沿触发)EXTI_LineCmd 用来开启或者关闭选中线路。它可以用来开启或者关闭选中线路。它可以被设为被设为ENAB

54、LE 或者或者DISABLE。5.5.3 STM32外部中断外部中断应用用实例实例EXTI_InitStructure3:EXTI_Trigger设置了线路的触发边沿(3种触发5.5.3 STM32外部中断外部中断应用用实例实例RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);如果我们在编程中,用的是如果我们在编程中,用的是IO口的复用功能,就必须开启该复口的复用功能,就必须开启该复用时钟,当把用时钟,当把GPIO相应的引脚作为相应的引脚作为外部中断输入外部中断输入的时候,就是的时候,就是用到了用到了

55、IO的的复用功能复用功能,所以必须要开启,所以必须要开启复用功能时钟(复用功能时钟(AFIO)。时钟设置时钟设置5.5.3STM32外部中断应用实例RCC_APB2Pe5.5.3 STM32外部中断外部中断应用用实例实例void EXTI9_5_IRQHandler(void)if(EXTI_GetITStatus(EXTI_Line6)!=RESET)GPIO_WriteBit(GPIOA,GPIO_Pin_8,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_8);EXTI_ClearITPendingBit(EXTI_Line6);中

56、断服务程序中断服务程序5.5.3STM32外部中断应用实例中断服务程序5.5.3 STM32外部中断外部中断应用用实例实例“if(EXTI_GetITStatus(EXTI_Line5)!=RESET)”判判断一下是否真的产生了断一下是否真的产生了EXTI Line中断中断中断服务程序说明中断服务程序说明5.5.3STM32外部中断应用实例中断服务程序说明EXTI_ClearITPendingBit()函数函数的作用就是清除中断的作用就是清除中断标志位。志位。5.5.3 STM32外部中断外部中断应用用实例实例中断服务程序说明中断服务程序说明5.5.3STM32外部中断应用实例中断服务程序说明

57、voidNVIC_Config(void)NVIC_InitTypeDefNVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;N

58、VIC_Init(&NVIC_InitStructure);voidLED_Config(void)GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENBALE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOB,&GPIO_InitStruc

59、ture);完整程序完整程序voidNVIC_Config(void)完整程序完整程序完整程序voidKEY_Config(void)GPIO_InitTypeDefGPIO_InitStructure;EXTI_InitTypeDefEXTI_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENBALE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;GPIO_Init(GPIOB,&GPIO_InitStru

60、cture);GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSourcd6);EXTI_InitStructure.EXTI_Line=EXTI_Line6;EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStructure);完整程序intmain(void)NVIC_C

61、onfiguration();/NVICLED_Config();/GPIO-LEDKEY_Config();/GPIO-KEYGPIO_ResetBits(GPIOB,GPIO_Pin_8);/低低电平,点亮平,点亮LEDwhile(1)voidEXTI9_5_IRQHandler(void)if(EXTI_GetITStatus(EXTI_Line6)!=RESET)GPIO_WriteBit(GPIOB,GPIO_Pin_8,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_8);EXTI_ClearITPendingBit(EXTI_Line6);intmain(void)总结:总结:使用外部使用外部IO口引脚中断的基本步口引脚中断的基本步骤 1.IO口初始化;口初始化;2.设置好相置好相应的的时钟;3.设置相置相应的中断;的中断;4.把相把相应的的IO口口设置置为中断中断线路并初始化;路并初始化;5.编写中断函数写中断函数总结:使用外部IO口引脚中断的基本步骤

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!