- 1、本文档共2页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CortexM3组优先级和子优先级的对应关系
Cortex M3组优先级和子优先级的对应关系
前面提到了Cortex M3内核中优先级分组到底是怎么进行的。但是在实际应用中,组优先级和子优先级之间怎么联系呢?
下面举一个例子,在光盘《EasyARM1138开发指南\【06】中断控制(Interrupt)\【B】中断优先级》实验的基础上稍作修改:
①第一种修改:在主函数中用IntPriorityGroupingSet(1)把中断系统分为2个组,KEY1的子优先级仍为1,KEY2的子优先级仍为2。
②第二种修改:在主函数中用IntPriorityGroupingSet(2)把中断系统分为4个组,LED1的子优先级仍为1,LED2的子优先级仍为2。
那么这两种修改之后,实验现象会有什么变化呢?实验结果如下:
①第一种修改:KEY1和KEY2所在GPIO中断相互之间不能抢占。
②第二种修改:KEY1能抢占 KEY2中断,而KEY2不能抢占KEY1。
按理说,这两次实验中KEY1的优先级都比KEY2的优先级高,为什么在实验①中KEY1不能抢占KEY2呢?
这就是上文引用的重要规则,这里重新提出来。
重要规则:多个中断源在它们的抢占式优先级相同的情况下,子优先级不论是否相同,如果某个中断已经在服务当中,则其它中断源都不能打断它(可以末尾连锁);只有抢占式优先级高的中断才可以打断其它抢占式优先级低的中断。
这样一来,意味着,实验①中KEY1和KEY2不能相互抢占是因为他们的组优先级相同,实验②中只有KEY1能抢占KEY2是因为KEY1的抢占优先级别比KEY2高。但是两次实验中KEY1和KEY2的子优先级都没变,那到底组优先级和子优先级是什么的对应关系呢?
经过总结归纳,组优先级和子优先级是什么的对应关系见表1。
表1 组优先级和子优先级的对应关系
ulBits取值a 组数 组优先级 子优先级(ucPriority)b 0 1 0 0~7 1 2 0 0~3 1 4~7 2 4 0 0、1 1 2、3 2 4、5 3 6、7 3~7 8 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 a:函数void IntPriorityGroupingSet(unsigned long ulBits)中的参数ulBits,当ulBits3时,组数=2ulBits,当ulBits=3~7时,组数=8
b:函数void IntPrioritySet(unsigned long ulInterrupt, unsigned char ucPriority)中的参数ucPriority
现在用上表来解释实验现象:
在实验①中,中断系统分为2个组,查表得KEY1和KEY2都属于的抢占优先级为0的组,所以不能相互抢占。
在实验②中,中断系统分为4个组,查表得KEY1所在组的抢占优先级别为0、KEY2所在组的抢占优先级别为1,KEY1的抢占优先级高于KEY2,所以只有KEY1能抢占KEY2。
PS:在试验中发现问题、解决问题、并记录问题让自己感觉很踏实!
——2012/4/5
有理解有误的地方,请大家给予指正!
/s/blog_6c5bc52e0100xfro.html
文档评论(0)