你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 1013|回复: 0

【MCU实战经验】+STM3的NVIC

[复制链接]

2

主题

15

回帖

0

蝴蝶豆

新手上路

最后登录
2020-6-26
发表于 2014-4-21 15:50:12 | 显示全部楼层 |阅读模式
 1.异常可分为系统异常和外部中断,异常优先级也即分为系统异常优先级和外部中断优先级。
2.中断矢量的顺序决定了异常的硬件优先级。若不进行软件设置异常的优先级(软件优先级),
异常优先级就决定于硬件优先级。
3.异常一旦指定软件优先级后,硬件优先级则无效。(按:错,1.应是软优于硬,2.局部还是全体?)
4.不管硬软,复位,NMI,和硬故障这3个异常的优先级始终依次最高。
5.用户可设置的最高优先级为0 号优先级,其仅次于复位,NMI 以及硬件故障的第4 优先级。
  0号优先级也是所有可调整优先级的默认优先级。(按:是否意味都要设置?)
6.系统异常的优先级可通过系统处理器优先级寄存器组进行控制(写入)。
该寄存器组是:NVIC_SYS_PRI1-3 0xE000ED18-23 共12个字节。
顺序地对应从4开始的12个系统异常中断号NVIC_SYS_PRI4-12:
存储器管理,总线故障,使用故障,保留, 保留,保留,保留,SVCall, 调试监控,保留,PendSV,SysTick。
   其中,只有PendSV,SysTick可以通过软件来触发(设置挂起pendSV位),方法是:将中断控制状态寄存器0xE000ED04的[28]PENDSVSET,[26] PENDSTSET置1。
7. 外部中断指的是除系统异常之外的异常,也即中断号等于和大于16 的异常。外部中断的0 号中断对应于NVIC 的16 号中断,依次类推.
   外部中断的优先级可通过外部中断优先级寄存器组(又称"中断优先级寄存器")进行控制(写入)。
该寄存器组是:0xE000E400-41F 共32个字节。顺序地对应32个中断号:
中断0的优先级(PRI_0),就放在0xE000E400;中断31的优先级(PRI_31),就放在 0xE000E41F。
8. CortexM3规定的优先级是256级,但具体的采用CortexM3内核的IC可以是8级
(例Stellaris的LM3S系列)或16级(例ST的STM32系列),也可以更大。
 所以,对于这2个IC,写入系统处理器优先级寄存器和中断优先级寄存器组的值(PRI_N,8Bit)分别只有高3Bit和高4Bit才是有效的,其余5Bit和4Bit没有意义。
9. 优先级分组 (姜按:“CortexM3 参考手册中的这段话,还是摘录在下面,尽管我认为这个机制对于STM32这个IC,几乎没有意义。)
为了对具有大量中断的系统加强优先级控制,NVIC 支持优先级分组机制。应用中断和复位控制寄存器中的PRIGROUP 区(3Bit)来将每个PRI_N 中的值分为占先优先级区和次优先级区。我们将占先优先级称为组优先级。如果有多个挂起异常共用相同的组优先级,则需使用次优先级区来决定同组中的异常的优先级,这就是同组内的次优先级。组优先级和次优先级的结合就是通常所说的优先级。如果两个挂起异常具有相同的优先级,则挂起异常的编号越低优先级越高。这与优先级机制是一致的。
10. 应用:在程序中改变优先级的最快办法是“字节写”。
回复

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版