CH03-03-STM32F40x的中断模块原理.pptx
-
资源ID:96595999
资源大小:6.07MB
全文页数:43页
- 资源格式: PPTX
下载积分:20金币
快捷下载

会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
CH03-03-STM32F40x的中断模块原理.pptx
嵌入式系统原理与开发设计主讲人:赖树明东莞理工学院STM32F40 x的中断模块原理05STM32F40 x外部中断示例01ARM中断基础知识02Cortex-M4中断体系03STM32F40X中断管理04STM32F40 x外部中断模块06STM32F40 x外部中断作业0101ARM中断基础知识中断概述中断执行流程中断的入口中断优先级中断的嵌套中断的意义ARM中断基础知识中断概述01程序在运行过程中发生了外部或内部事件时,中断了正在执行的程序,转到处理这个外部或内部事件为行为称为中断。ARM中断基础知识中断执行流程01中断服务函数:中断发生时,处理器自动跳转去执行的函数称为中断服务函数。执行流程:当中断发生时,处理器自动跳转去执行中断事件对应的代码,执行完成后重新返回断点处继续运行。中断处理流程ARM中断基础知识中断入口01MCU上每个外设都有自己的中断事件,当发生中断时,各自要处理的中断事件也是不相同,如何让处理器正确自动处理当前中断事务呢?给每个外设中断事件分配一个固定的入口地址程序中只要把中断函数保存到入口地址处,发生中断时,硬件自动跳转去入口处,执行此处的中断函数中断入口ARM中断基础知识中断优先级01MCU芯片上每个外设都有中断事件,实际使用过程中会出现各种复杂的需求,如多个中断同时发生应该先处理哪个事件,当前正在处理一个中断事件,又发生了新的中断事件,应该如何处理?芯片设计在中断系统中加入了中断优先级机制,即给每个外设中断事件指定一个中断级别,通常情况下,高优先级可以抢占低优先级的处理器使用权。示例:你有两个手机,同一个时间点都有电话(1一个老爸送钱,2另一个催还款)进来-先接哪一个?你自己评判标准-优先级问题中断 当多个事件同时发生,应该先执行哪一个根据中断设定优先级来决定。中断优先级ARM中断基础知识中断嵌套01中断嵌套:当前处理器正在执行中断服务程序,发生了更高等级的中断,处理器转去执行更高级别中断服务程序的行为称为中断嵌套。根据优先级法则:只要更高优先级的中断事件发生了,都可以抢占低优先级的中断服务函数CPU使用权,执行完高优先级中断服务程序后返回被抢占的低优先级中断服务器程序的断点继续运行。中断嵌套ARM中断基础知识中断意义01提高处理器的综合运行效率更及时处理不可预测的事件:使得复杂功能代码编程更容易实现 -学习后,自己写代码才可以体会中断意义0202Cortex-M4中断体系NVIC(嵌套向量中断控制器)介绍NVIC优先级介绍NVIC通用API函数NVIC初始化步骤-虚席以待-虚席以待-Cortex-M4中断体系NVIC中断控制器介绍02pCortex-M4的中断的构成分为两部分:NVIC中断控制器+模块级中断使能(外设中断使能)。pNVIC中断控制器是属于内核的-ARM公司设计pNVIC中断控制器是Cortex-M3/4的中断控制中心,由NVIC中断控制器决定中断的优先级。pCortex-M4的中断入口有256个,能够支持的中断嵌套是128级。p使用中断功能:配置好NVIC中断控制器(核心级)NVIC简介Cortex-M4中断体系 NVIC优先级介绍02p抢占优先级:含义是不同等级间的中断可以嵌套,高优先级可以中断低优先级,数字小的优先级高。A中断正在执行 -比它高的事件发生,抢占CPU执行新中断程序p响应优先级:含义是不同响应优先级的中断不能嵌套,但是当抢占优先级相同,响应优先级不同,多个中断源同时发生中断时候,响应优先级高的中断事件会优先响应,数字小的优先级高 。p自然(不可修改,固定的)优先级:就是NVIC控制器的中断源编号,数字小的,优先级高。作用:当抢占优先级和响应优先级都相同的中断源同时发生中断时候,自动优先级高的优先响应。不存在嵌套行为。p优先级等级小结:抢占优先级响应优先级自然优先级,抢占优先级决定是否可以嵌套,响应优先级和自然优先级决定同时发生时,先响应谁(如果抢占相同,才依据响应,如果抢占和响应都相同,自然优先级才会起作用)优先级Cortex-M4中断体系 NVIC优先级介绍02含义是不同等级间的中断可以嵌套,高优先级可以中断低优先级,数字小的优先级高。ARM 公司规范中使用8位二进制表示优先级。抢占优先级在 STM32 中每个中断源使用 4 个比特位设置中断源的优先级,这4个比特位可以有5种分配方式,如下。ARM 公司规定具体芯片实现不能少于3位。STM32F4中断表示组编号PRIGROUP区域(3位)AIRCR10:8 0 xE000_ED0C抢占优先级位数响应优先级位数抢占优先级可配置范围响应优先级可配置范围00 x0704001510 x0613010720 x0522030330 x0431070140 x03400150参考参考 Cortex M3与与M4权威指南权威指南.pdf 文档Chapter 7-Exceptions and Interrupts 章节有对 PRIGROUP 域说明Cortex-M4中断体系 NVIC优先级介绍02Cortex-M4中断体系NVIC通用API函数021、NVIC分组设置原型:void NVIC_SetPriorityGrouping(uint32_t PriorityGroup)参数:PriorityGroup:分组方式对应的值函数说明Cortex-M4中断体系NVIC通用API函数022、NVIC优先级编码 原型:uint32_t NVIC_EncodePriority(uint32_t PriorityGroup,uint32_t PreemptPriority uint32_t SubPriority);功能:根据组号,抢占优先级,子优先级数值编码成一个32位数字参数:PriorityGroup:分组方式对应的值;也就是AIRCR10:8中的值。PreemptPriority:正确的抢占优先级值,比如分组2,范围是03取值,SubPriority 正确的子优先级值,比如分组2,范围是03取值,示例:uint32_t Priority=NVIC_EncodePriority(7-2,1,2);说明:分组2,抢占优先级是1,响应优先级是2。返回:编码后的值,这个值就是写入对应中断源中断寄存器中的值。注意:这个函数并没有写入寄存器中。函数说明Cortex-M4中断体系NVIC通用API函数023、NVIC优先级设置原型:void NVIC_SetPriority(IRQn_Type IRQn,uint32_t priority)功能:该函数用于设置指定中断源的中断优先级。参数:IRQn_Type:在stm32F40 x.h中定义,枚举类型,定义芯片所有的中断编号。IRQn:中断源编号(实际上就是自然优先级编号);priority:中断优先级,即 NVIC_EncodePriority 函数编码的返回值。示例:设置外设中断1NVIC_SetPriority(7,priority)或 NVIC_SetPriority(EXTI1_IRQn,priority)函数说明Cortex-M4中断体系NVIC通用API函数024、NVIC中断使能原型:void NVIC_EnableIRQ(IRQn_Type IRQn)功能:使能指定中断源。示例:要使能外部中断NVIC_EnableIRQ(7);/不建议这样写,可读性不好。或:NVIC_EnableIRQ(EXTI1_IRQn);/建议这样写,可读性好。函数说明Cortex-M4中断体系中断初始化步骤02p设置中断分组方式:NVIC_SetPriorityGroupingp确定中断源的抢占优先级和响应优先级,使用NVIC_EncodePriority函数编码p把编码后的中断优先级数值使用 NVIC_SetPriority函数写入优先级配置寄存。p使能对应中断源,使用 NVIC_EnableIRQ 函数。NVIC配置流程p具体外设模块配置步骤:p配置目标外设中断相关的寄存器p模块级别的使能和禁止控制:每个外设模块都有。p编写中断服务函数:1)在 startup_stm32f40_41xxx.s 中找到中断入口,以确定中断函数名字;2)在c文件中编写一个无返回值,无类型的函数:void 函数名(void)3)函数名为 startup_stm32f40_41xxx.s 确定的名字。外设中断配置流程0303STM32F40X中断管理中断表示中断向量表中断服务程序-虚席以待-虚席以待-中断表示03STM32F40X中断管理在 STM32 中每个中断源使用 4个比特位设置中断源的优先级,这4个比特位可以有5种分配方式,如下。ARM公司规定具体芯片实现不能少于3位。STM32F4中断表示组编号PRIGROUP区域(3位)AIRCR10:8 0 xE000_ED0C抢占优先级位数响应优先级位数抢占优先级可配置范围响应优先级可配置范围00 x0704001510 x0613010720 x0522030330 x0431070140 x03400150参考参考 Cortex M3与与M4权威指南权威指南.pdf 文档Chapter 7-Exceptions and Interrupts 章节有对 PRIGROUP 域说明中断向量表03STM32F40X中断管理请参考:STM32F4xx中文参考手册.pdf:第第1010章:章:中断和事件中断和事件表表45.STM32F405xx/07xx45.STM32F405xx/07xx和和STM32F415xx/17xxSTM32F415xx/17xx的向量表的向量表 中断向量表中断服务程序03STM32F40X中断管理STM32F4的外设中断服务函数名是固定的,在 startup_stm32f40_41xxx.s 文件中已经定义好,如下所示。概述函数原型:无返回值,无参数,即 void xxxx_IRQHandler(void)如窗口看门狗中断程序:void WWDG_IRQHandler(void)这里写中断服务程序代码 函数原型0404STM32F40 x外部中断外部中断概述外部中断框架外中断GPIO映射外中断相关寄存器外中断服务函数STM32F40 x外部中断外部中断概述04p外部中断/事件控制器由23个产生事件/中断请求的边沿检测器组成。p每个输入线可以独立地配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。p每个输入线都可以独立地被屏蔽(禁止/使能)。p挂起寄存器保持着状态线的中断请求。概述STM32F40 x外部中断外部中断框架04pSTM32F4外部中断模块的内部结构图如下:概述STM32F40 x外部中断外部中断GPIO映射04映射说明STM32F405xx/07xx多达 140 个 GPIO,通过以下方式连接到 16个外部中断/事件线:STM32F40 x外部中断外中断相关寄存器04寄存器说明1.中断屏蔽寄存器(EXTI_IMR)STM32F40 x外部中断外中断相关寄存器04寄存器说明2、事件屏蔽寄存器(EXTI_EMR):STM32F40 x外部中断外中断相关寄存器043、上升沿触发选择寄存器(EXTI_RTSR)寄存器说明STM32F40 x外部中断外中断相关寄存器044、下降沿触发选择寄存器(EXTI_FTSR)寄存器说明STM32F40 x外部中断外中断相关寄存器045、软件中断事件寄存器(EXTI_SWIER):寄存器说明STM32F40 x外部中断外中断相关寄存器04.6、挂起寄存器(EXTI_PR):寄存器说明STM32F40 x外部中断外中断服务函数名04外部中断服务程序名可以在 startup_stm32f40_41xxx.s 文件中找到DCD EXTI0_IRQHandler ;EXTI Line0 DCD EXTI1_IRQHandler ;EXTI Line1 DCD EXTI2_IRQHandler ;EXTI Line2 DCD EXTI3_IRQHandler ;EXTI Line3 DCD EXTI4_IRQHandler ;EXTI Line4DCD EXTI9_5_IRQHandler ;External Line9:5sDCD EXTI15_10_IRQHandler ;External Line15:10s 外部中断2的中断服务程序:void EXTI2_IRQHandler(void)EXTI-PR=1 AHB1ENR|=1 MODER&=(3 PUPDR&=(3 APB2ENR|=1 EXTICR0&=(0 x0F FTSR|=1 RTSR|=1 IMR|=1 PR|=1 0;/EXTI 中断挂起位,写1,清零。/以下是你自由写的代码led1_reverse();/取反LED1灯状态,你自己写的led控制函数 05STM32F40 x按键中断示例按键中断硬件分析0606STM32F40X按键中断编程作业作业概述作业任务描述作业概述根据本章内容讲解,编写实验箱的4个按键中断代码STM32F40 x按键中断编程作业06作业任务1.根据实验板硬件原理图,实例课堂上4个按键中断代码。2.根据实验板硬件原理图,结合上节LED示例实现按键控制LED灯(一个按键控制一个LED,按一下亮,按一下灭,如此循环)。07致谢ACKNOWLEDGEMENTS感谢聆听,如有不足之处敬请指出,欢迎提出您的宝贵建议!致谢