1 异常与中断(Cortex-M3)
1.1 异常与中断
原话:
Cortex‐M3 在内核水平上搭载了一个异常响应系统,支持为数众多的系统异常和外部中断。
其中,编号为 1-15 的对应系统异常,大于等于 16 的则全是外部中断。
除了个别异常的优先级被定死外,其它异常的优先级都是可编程的。
所有能打断正常执行流的事件都称为异常。
异常的概念包含中断的概念,即中断是异常的子集。
异常与中断都是硬件支持的。
异常表:
外部中断表:
这里的“外部中断”不是指STM32中的EXTI中断,而是所有中断。
1.2 优先级
原则上,CM3 支持 3 个固定的高优先级和多达 256 级的可编程优先级,并且支持128级抢占(preempt)优先级和128 级亚优先级。但各厂商会做裁剪。
抢占优先级即高抢占优先级任务可以打断正在执行的低抢占优先级任务,而让CPU转而执行高抢占优先级任务。
亚优先级则为多个相同抢占优先级、不同亚优先级的任务同时请求异常时,CPU会先执行高亚优先级的任务。
抢占优先级也有称为“先占优先级”。
“亚优先级”也有会被称为“响应优先级”或“子优先级”。
NVIC 中有一个寄存器是“应用程序中断及复位控制寄存器”,它里面有一个位段名为“优先级组”。
优先级组分配:(默认为7位抢占)
中断优先级组的配置一般在程序最初设置一次。(中途改变中断优先级组本人没有试过)
1.3 中断与悬起(挂起)
当中断输入脚被assert(确认有效?)后,该中断就被悬起。即使后来中断源取消了中断请求,已经被标记成悬起的中断也被记录下来。到了系统中它的优先级最高的时候,就会得到响应。
但是,如果在某个中断得到响应之前,其悬起状态被清除了(例如,在 PRIMASK 或FAULTMASK 置位的时候软件清除了悬起状态标志),则中断被取消。
当某中断的服务例程开始执行时,就称此中断进入了“活跃”状态,并且其悬起位会被硬件自动清除。
中断输入引脚有效后,中断就被悬起,即使取消请求,也会执行。
中断是否处于悬起状态,中断请求被响应的关键。
中断响应之前,请求以脉冲方式呈现的话,仅看做一次请求(悬起不被软件清除的前提下)。
中断被响应时,硬件清除悬起状态。
中断响应中,请求被释放,但又变为有效时,会再次悬起。
中断响应完成之后,中断请求仍然存在,则再次悬起,等待响应。
1.4 SVC和PendSV
SVC(System serVice Call):系统(服务)调用;
SVC异常是必须立即得到响应的,若因优先级不比当前正处理的高,或是其它原因使之无法立即响应,将上访成硬 fault。
PendSV(Pend System serVice):可悬起系统调用。
PendSV 则不同,它是可以像普通的中断一样被悬起的。
PendSV 的典型使用场合是在上下文切换时(在不同任务之间切换)。
多用于操作系统软件开发中。(uC/OS-II中就用PendSV来实现任务调度)
简单的调度方式:
1. 时间轮转(SysTick)
2. 产生一个系统调用(PendSV设置为最低优先级)
任务 A 呼叫 SVC 来请求任务切换(例如,等待某些工作完成)
OS 接收到请求,做好上下文切换的准备,并且 pend 一个 PendSV 异常。
当 CPU 退出 SVC 后,它立即进入 PendSV,从而执行上下文切换。
当 PendSV 执行完毕后,将返回到任务 B,同时进入线程模式。
发生了一个中断,并且中断服务程序开始执行
在 ISR 执行过程中,发生 SysTick 异常,并且抢占了该 ISR。
OS 执行必要的操作,然后 pend 起 PendSV 异常以作好上下文切换的准备。
当 SysTick 退出后,回到先前被抢占的 ISR 中,ISR 继续执行
ISR 执行完毕并退出后,PendSV 服务例程开始执行,并且在里面执行上下文切换
当 PendSV 执行完毕后,回到任务 A,同时系统再次进入线程模式。
1.5 CM3中断处理特色——Tail-Chainign
两个同优先级中断交接时,不执行断点恢复和断点数据恢复,直接转到下一个中断执行。
2 中断与事件(未完)
图中:
中断/事件首先经过边沿检测,确认有中断/事件请求发生,与软件中断/事件寄存器相“或”,由请求挂起寄存器记录当前有中断/事件请求发生,之后出现分支:
1. 中断:与中断屏蔽寄存器相“与”,转到NVIC控制器,由其控制。
2. 事件:与事件屏蔽寄存器相“与”,产生脉冲。
上一篇:stm32 中断号和中断处理函数建立关系
下一篇:STM32之外部中断原理
推荐阅读最新更新时间:2024-03-16 16:18
设计资源 培训 开发板 精华推荐
- PI LYTSwitch™-6系列IC 让你了解不知道的秘密看专题赢好礼!
- 轻盈点击间,掌阅无尽风采!东芝PCIM在线展会和你不见不散!
- 看MCU精品课程,让你立马变身考试达人!
- Digi-Key KOL视频来袭~资深算法工程师畅聊图像处理秘诀
- 新用户限时福利:e络盟商城迎新季,全场包邮+打折~买一只电阻也包邮!
- 【有奖问答】术业有专攻,电容我在行!
- 速度与激情,为你私人订制。R&S携多功能基础示波器带你身临其境!
- 6月6日 Microchip 直播|利用单片机设计安全关键型应用时应采取的最佳实践方法
- 【EEWORLD带你DIY】数字示波器V2.0火热进行中......
- 【已结束】力源直播【安森美 25KW 充电桩模块方案】(9:30入场)