34890|52

159

帖子

0

TA的资源

裸片初长成(初级)

楼主
 

STM32 中断与嵌套NVIC 快速入门。 [复制链接]

TM32 中断与嵌套NVIC 快速入门。
我也是靠看这本书才弄懂的:
Cortex-M3 权威指南
Joseph Yiu 著
宋岩 译
其实很简单。
//CM3 有 最多240个中断(通常外部中断写作IRQs),就是 软件上说的 IRQ CHANAELx(中断通道号x)
每个中断有自己的可编程的中断优先级【 有唯一对应的 中断优先级寄存器 】.
由于CM3支持 硬件中断嵌套,所以可以有 256 级的可编程优先级
和 256级中断嵌套【 书上称:抢占(preempt) 优先级】
所以大家可以设:
IRQ CHANAEL 0 通道 = 2    中断优先级    WWDG 窗口定时器中断
IRQ CHANAEL 1 通道 = 0    中断优先级    PVD 联到EXTI的电源电压检测(PVD)中断
IRQ CHANAEL 3 通道 = 255  中断优先级    RTC 实时时钟(RTC)全局中断
IRQ CHANAEL 6 通道 = 10   中断优先级    EXTI0 EXTI线0中断
.....
IRQ CHANAEL 239 通道 =  (0
这个实在是太恐怖了! 是的,其实CM3 并没有这样做。
实在的芯片例如STM32等就只有设计来可用才64级可编程优先级和8级中断嵌套。
对 64级中断就是说:( INT0 到 INT63)这个大家比较好理解,其它的64···239就不用了。
IRQ CHANAEL 0
。。。
IRQ CHANAEL  63
而8级中断嵌套这又是何解呢?
是这样的,上面说 一个 【中断】对应 一个【中断优先级寄存器】,而这个寄存器是 8 位的。
当然就是 256级了。而现在就用了 它其中的 BIT7,IT6,BIT5 三位来表示,而且是MSB对齐的。
用了3 个位来表达优先级(MSB 对齐的我们能够使用的8 个优先级为:0x00(最高),0x20,0x40,0x60,0x80,0xA0,0xC0 以及0xE0。)
这样我们在【中断优先级寄存器】就不能按理论的填 0到255之间的数了,
而只能填0x00(最高),0x20,0x40,0x60,0x80,0xA0,0xC0 以及0xE0。)
所以大家可以设:
IRQ CHANAEL 0 通道 = 0x20  中断优先级    WWDG 窗口定时器中断
IRQ CHANAEL 1 通道 = 0x40  中断优先级    PVD 联到EXTI的电源电压检测(PVD)中断
IRQ CHANAEL 3 通道 = 0x20  中断优先级    RTC 实时时钟(RTC)全局中断
IRQ CHANAEL 6 通道 = 0xA0  中断优先级    EXTI0 EXTI线0中断
.....
IRQ CHANAEL 63 通道 =  【0x00(最高),0x20,0x40,0x60,0x80,0xA0,0xC0 以及0xE0。)】
大家注意到了,上面通道0和通道3 的优先级都是0X20, 这怎么办?
// 如果优先级完全相同的多个异常同时悬起,则先响应异常编号最小的那一个。如IRQ #0会比IRQ #3 先得到响应
而且文中还讲了 【优先级分组】,这又是什么回事?
其实我回头看来,这个【优先级分组】和【抢占优先级】【亚优先级】都毫无意义的。
如果当时用 256级即是 把【中断优先级寄存器】的8位都全用上,就没这个必要了。还什么优先级分组呢!
就是因为厂家现在【偷工减料】,才搞出这个明堂来的。
是这样的,在 应用程序中断及复位控制寄存器(AIRCR) 中的 10:8 位【3位】是表示【优先级分组】
它作用主要是 用于对【中断优先级寄存器】『我们现在中用了BIT7,BIT6,BIT5三位』的功能的说明。
有一个表,在《Cortex-M3 权威指南》的110页, 例如我们把AIRCR的10:8 位设为【5】 ,
查表可得【抢占优先级】=【7:6】,【亚优先级】=【5:0】,
对于【中断优先级寄存器】只用了BIT7,6,5, 因此我们可以看作是 【7:6】,【5】。那4-0 可以不管。
现在我们的 IRQ0=0X20, IRQ3=0X20, 也就是  【0 0 1 0  】『 bit7=0,bit6=0,bit5=1,bit4=0』
因为大家(IRQ0/IRQ3)的 【抢占优先级】=【7:6】都是0, 说明它们的中断相应级别是一样的。
再继续判断它们哪个更优先的责任就要看【5】,结果连【5】都是一样的!
那就按默认:
// 如果优先级完全相同的多个异常同时悬起,则先响应异常编号最小的那一个。如IRQ #0会比IRQ #3 先得到响应
此帖出自stm32/stm8论坛

最新回复

xiexei fenxiang haodongxi  详情 回复 发表于 2012-10-14 00:04
点赞 关注
 

回复
举报

33

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
我有好久没有来了
此帖出自stm32/stm8论坛
 
 

回复

2万

帖子

74

TA的资源

管理员

板凳
 
要常来看看啊!
此帖出自stm32/stm8论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

4
 
看不懂,请举个例子.外部中断一直没搞定.3.0版本里面没有NVIC相关说明啊!
此帖出自stm32/stm8论坛
 
 
 

回复

41

帖子

0

TA的资源

纯净的硅(初级)

5
 
做人要厚道,看贴要回贴!
此帖出自stm32/stm8论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(中级)

6
 
感謝,先複製下來
慢慢研讀XD
此帖出自stm32/stm8论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

7
 
谢谢
此帖出自stm32/stm8论坛
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

8
 
谢谢
此帖出自stm32/stm8论坛
 
 
 

回复

31

帖子

0

TA的资源

禁止发言

9
 
学习一下!@!!!
此帖出自stm32/stm8论坛
 
 
 

回复

28

帖子

0

TA的资源

一粒金砂(中级)

10
 

学习了

此帖出自stm32/stm8论坛
 
 
 

回复

39

帖子

0

TA的资源

一粒金砂(高级)

11
 
学习一下!@!!!
此帖出自stm32/stm8论坛
 
 
 

回复

113

帖子

0

TA的资源

一粒金砂(中级)

12
 
谢谢了!学习了!
此帖出自stm32/stm8论坛
 
个人签名中国人民解放军总装备部
 
 

回复

10

帖子

0

TA的资源

一粒金砂(初级)

13
 
有点明白了,要是要程序就更好了。。。。
谢楼主
此帖出自stm32/stm8论坛
 
 
 

回复

19

帖子

0

TA的资源

一粒金砂(初级)

14
 

顶一个
此帖出自stm32/stm8论坛
 
个人签名just do it
 
 

回复

52

帖子

0

TA的资源

一粒金砂(中级)

15
 

回复 楼主 zjw50001 的帖子

这本书哪里有下啊?
此帖出自stm32/stm8论坛
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

16
 

头脑麻木了

看的头疼,但还是懂了点。
此帖出自stm32/stm8论坛
 
 
 

回复

702

帖子

0

TA的资源

一粒金砂(高级)

17
 
谢谢~~~~~~~~~
此帖出自stm32/stm8论坛
 
个人签名你好呀
 
 

回复

48

帖子

0

TA的资源

一粒金砂(中级)

18
 
感谢分享~~~~学习了~~~~~~~~~~~~
此帖出自stm32/stm8论坛
 
 
 

回复

471

帖子

0

TA的资源

一粒金砂(高级)

19
 
没懂,几个中断源想要改变优先级怎么弄呢
此帖出自stm32/stm8论坛
 
 
 

回复

41

帖子

0

TA的资源

一粒金砂(中级)

20
 
偶一初学者,有用的东东都下
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表