stm32中断(NVIC与EXTI)

stm32中断(NVIC与EXTI)

ID:41286058

大小:26.98 KB

页数:10页

时间:2019-08-21

stm32中断(NVIC与EXTI)_第1页
stm32中断(NVIC与EXTI)_第2页
stm32中断(NVIC与EXTI)_第3页
stm32中断(NVIC与EXTI)_第4页
stm32中断(NVIC与EXTI)_第5页
资源描述:

《stm32中断(NVIC与EXTI)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一、本章大纲一、嵌套向量中断控制器—NVICCM3内核搭载了一个异常响应系统,通过NVIC(嵌套向量中断控制器)来管理和配置。NVIC是一个总的控制器,相当于51的IE,不论是来自CM3内部的异常还是来自外设的中断,都进入该控制器进行处理和逻辑控制。并且NVIC还通过优先级系统,来控制中断的嵌套。1.中断优先级①优先级的数值越小,则优先级越高。②NVIC支持中断嵌套,使得高优先级异常会抢占低优先级异常。③有3个系统异常:复位、NMI(不可屏蔽中断)以及硬件失效(Hardfault),它们有固定的优先级,并且它们的优先级号是负数,从而高于所有其他异常。原则上,NV

2、IC支持3个固定的高优先级和多达256级的可设置优先级,用一个字节的8个比特位来表示。STM32F107采用最高有效位对齐,在设计时裁掉表达优先级的4个低端有效位,所以只支持16级优先级。2.抢占优先级与从优先级NVIC中有一个寄存器是“应用程序中断及复位控制寄存器”,它里面有一个位段名为“优先级组”。它把优先级分为2个位段:MSB所在的位段对应抢占优先级,抢占优先级决定了抢占行为。LSB所在的位段对应从优先级,从优先级则处理“内务”。在STM32F107中,只使用4个位来表达优先级([7:4]),如果抢占优先级组从比特5处分,则得到4级抢占优先级,且在每个抢占

3、优先级的内部有4个从优先级(00011011)。3.中断输入与悬起当中断输入脚被置为有效后,该中断就被“悬起”。所谓“悬起”,也就是等待、就绪的意思。即使后来中断源撤消了中断请求,已经被标记成悬起的中断也被记录下来。当某中断的服务程序开始执行时,就称此中断进入了“活跃”状态,并且其悬起位会被硬件自动清除。在一个中断活跃后,直到其服务例程执行完毕,并且返回后,才能对该中断的新请求予以响应。当NVIC响应一个中断时,会自动完成以下三项工作,以便安全、准确地跳转到相应的中断服务程序:入栈:把8个寄存器的值压入栈。当响应中断时,如果当前的代码正在使用PSP,则压入PSP

4、(进程堆栈),否则就压入MSP(主堆栈)。一旦进入了服务例程,就一直使用主堆栈。在自动入栈的过程中,将寄存器写入堆栈的顺序与时间顺序无关,CM3会保证正确的寄存器被保存到正确的位置。取向量:当数据总线(系统总线)进行入栈操作时,指令总线(I-Code总线)正在从向量表中找出正确的中断向量与对应的服务程序入口地址。更新寄存器。注意:①如果在某个中断得到响应之前,其悬起状态被清除了,则中断被取消。②新请求在得到响应时,由硬件自动清零其悬起标志位。③如果中断源咬住请求信号不放,该中断就会在其上次服务例程返回后再次被置为悬起状态。④如果某个中断在得到响应之前,其请求信号

5、以若干的脉冲的方式呈现,则被视为只有一次中断请求⑤如果在服务例程执行时,中断请求释放了,但是在服务例程返回前又重新被置为有效,则NVIC会记住此动作,重新悬起该中断。1.中断返回当中断完成,返回主程序时,NVIC自动完成以下两步:①出栈:先前压入栈中的寄存器在这里恢复。内部的出栈顺序与入栈时的相对应,堆栈指针的值也改回先前的值。②更新NVIC寄存器:伴随着中断的返回,它的活动位也被硬件清除。对于外部中断,倘若中断输入再次被置为有效,则悬起位也将再次置位,新一次的中断响应序列也会再次开始。1.CM3异常和中断系统--SYSTICK定时器SysTick定时器被捆绑在

6、NVIC中,用于产生SysTick异常(异常号15)。它又叫滴答中断,它的作用是规定不同任务执行时间,防止一个任务一直霸占系统。此外,还有操作系统提供的各种定时功能,都与滴答中断有关。在STM32F107中,系统嘀嗒校准值固定为9000,当系统嘀嗒时钟设定为9MHz(HCLK/8的最大值)时产生1ms时间基准。对于SysTick,库函数文件misc.c中也有一个函数可以对其时钟源进行配置,该函数的原型为:SysTick_CLKSourceConfig()/*source(源头);config(配置)voidSysTick_CLKSourceConfig(uint

7、32_tSysTick_CLKSource);SysTick_CLKSource描述SysTick_CLKSource_HCLK_Div8SysTick时钟源为 AHB时钟除以8SysTick_CLKSource_HCLKSysTick时钟源为 AHB时钟2.中断向量当发生了异常或中断,并且要响应它时,CM3需要定位其服务程序的入口地址。通过入口地址找到相应的中断服务程序。这些入口地址存储在“(异常)向量表”中。缺省情况下,CM3认为(异常)向量表位于零地址处,且各向量占用4字节。STM32F107的异常响应系统是CM3的裁剪和细化。在STM32F107中,这种

8、映射关系具体体现在启动代

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。