版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ARM微控制器与嵌入式系统
NVIC嵌套向量中断控制器主讲人:景妮琴北京电子科技职业学院内容中断和异常嵌套向量中断控制器NVIC优先级中断编程要点中断和异常中断:中断是指来自CPU执行指令以外的事件发生后,处理机暂停正在运行的程序,转去执行处理该事件的程序的过程。异常:异常是指源自CPU执行指令内部的事件发生后,处理机暂停正在运行的程序,转去执行该事件的过程。广义的中断包括中断和异常,统一称为中断(异常)如无特殊说明,异常就是中断,中断就是异常中断和异常STMF4系列在内核水平上搭载了一个异常响应系统,支持为数众多的系统异常和外部中断,其中系统异常有10个,外部中断81个。除了个别的异常优先级被定死以外,其他异常都是可编程的当一个异常发生时,硬件会自动比较该异常的优先级是否比当前的异常优先级更高。如果发现来了更高优先级的异常,处理器就会中断当前的中断服务例程(或者是普通程序),而服务新来的异常——即立即抢占。在stm32f4xx.h中可以查询到IRQn_Type这个结构体中包含了F4系列全部的异常声明。F4的异常清单中断和异常中断与异常的执行过程
这个图重新画一下向量中断支持当开始响应一个中断后,CM4会自动定位一张向量表,并且根据中断号从表中找出ISR的入口地址,然后跳转过去执行。不需要像以前的ARM那样,由软件来分辨到底是哪个中断发生了,也无需半导体厂商提供私有的中断控制器来完成这种工作。这么一来,中断延迟时间大为缩短。嵌套向量中断控制器NVICNVIC:嵌套向量中断控制器,属于内核外设,管理着包括内核和片上所有外设的中断相关的功能。两个重要的库文件:core_cm4.h和misc.ccore_cm4.h定义:在配置中断时一般只用ISER,ICER,IP这三个寄存器。优先级NVIC中有一个NVIC_IPRx用来配置外部中断的优先级IPR的宽度为8位,原则上每个外部中断可配置的优先级为0~255,数值越小,优先级越高。CM4芯片做了精简设计,实际上只使用了4位支持优先级。bit7bit6bit5bit4bit3bit2bit1bit0用于表达优先级未使用,读回为0优先级用于表达优先级的这4位,又被分组成抢占优先级(主优先级)和子优先级。如果有多个中断同时响应,抢占优先级高的就会抢占优先级低的优先得到执行当抢占优先级相同时,就比较子优先级如果抢占优先级和子优先级都相同,就比较他们的硬件中断编号,编号越小,优先级越高bit7bit6bit5bit4bit3bit2bit1bit0用于表达优先级未使用,读回为0F4的异常清单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位优先级分组中断向量抢占优先级响应优先级A01抢占优先级相同,响应优先级数值小的优先级高B02A12响应优先级相同,抢占优先级数值小的优先级高B02A10抢占优先级比响应优先级高B02A11抢占优先级和响应优先级均相同,则中断向量编号小的先执行B11抢占优先级与响应优先级示例抢占式优先级>响应优先级>中断表中的排位顺序中断编程要点使能外设某个中断初始化NVIC结构体typedefstruct{uint8_tNVIC_IRQChannel; //中断源uint8_tNVIC_IRQChannelPreemptionPriority;//抢占优先级uint8_tNVIC_IRQChannelSubPriority; //响应优先级FunctionalStateNVIC_IRQChannelCmd; //中断向量使能或失能}NVIC_InitTypeDef;编写中断服务程序初始化NVIC结构体-中断源NVIC_IRQChannel中断源取值范围在STM32F407xx微控制器中共91个中断向量,具体可参考STM32参考手册。例如:EXTI线0中断DMA1流0全局中断ADC1、ADC2和ADC3全局中断CAN1TX中断TIM1捕获比较中断USART1全局中断初始化NVIC结构体-中断源在STM32F407xx微控制器基本定时器(TIM6、TIM7)中断向量共2个。分别为:TIM6_DAC_IRQn,TIM7_IRQn(名称不能更改)NVIC_InitStructure.NVIC_IRQChannel=TIM6_DAC_IRQn;//名称不能更改。(1)优先级分组配置NVIC_PriorityGroupConfig(uint32_tNVIC_PriorityGroup);NVIC_PriorityGroup_0NVIC_PriorityGroup_1NVIC_PriorityGroup_2NVIC_PriorityGroup_3NVIC_PriorityGroup_4//设置中断组为0示例4NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
初始化NVIC结构体-优先级配置(2)抢占优先级和响应优先级配置//设置中断组为0示例4
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);//抢占优先级,优先级0组的抢占优先级为0,主要靠子优先级NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//响应优先级NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;
初始化NVIC结构体-优先级配置(3)NVIC_IRQChannelCmd取值范围ENABLE
使能DISABLE
失能NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//把设置写入NVIC的结构体中NVIC_Init(&NVIC_InitStructure);初始化NVIC结构体-使能NVICNVIC配置示例在stm32f4xx_it.c中完成中断服务程序。voidTIM6_DAC_IRQHandler(void)//名称不能更改{ if(TIM_GetITStatus(TIM6,TIM_IT_Update)!=RESET) { a++; if(a==100) a=0;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年沪科版九年级地理下册阶段测试试卷含答案
- 2025年新科版必修2历史下册月考试卷
- 二零二五版模具维修与翻新服务合同4篇
- 二零二五年度智慧城市建设年薪制合同4篇
- 2025年度养老康复派遣员工康复治疗合同4篇
- 2025年度面包烘焙原料绿色认证采购合同3篇
- 2025年度设施农业专用化肥农药定制配送合同4篇
- 2024版离婚债务解决方案合同范例一
- 二零二五年度煤炭期货交易居间代理合同3篇
- 2025年度农业科技园区建设与管理合同范例4篇
- 撂荒地整改协议书范本
- 国际贸易地理 全套课件
- GB/T 20878-2024不锈钢牌号及化学成分
- 诊所负责人免责合同范本
- 2024患者十大安全目标
- 印度与阿拉伯的数学
- 会阴切开伤口裂开的护理查房
- 实验报告·测定鸡蛋壳中碳酸钙的质量分数
- 部编版小学语文五年级下册集体备课教材分析主讲
- 电气设备建筑安装施工图集
- 《工程结构抗震设计》课件 第10章-地下建筑抗震设计
评论
0/150
提交评论