第22节中断系统.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第22节中断系统

因为至少一位子优先级,所以最多128级抢占优先级,可支持127级嵌套 例:PROGROUP=1,表示6位抢占式优先级,共64级,2位响应优先级,共4级。 因此,理论上可支持一个中断,63级的嵌套 中断优先级寄存器 使用中断优先寄存器将0 到255 个优先级分别分配给各个中断。0 代表最高优先级,255则代表最低优先级 包括:系统异常,外部中断 系统异常 外部中断 对240个外部中断,每个需要8位,所以,4个中断组成一个32位寄存器 因此,CM3最多共需60个32位寄存器 例:设定1号中断,设定抢占优先级为0,响应优先级为1. 设定2号中断,抢占优先级为1,响应优先级为0; 设定3号中断,抢占优先级为1,响应为1; 假如:优先级分组采用PROGROUP=1 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 1 PRI_1寄存器 标定抢占式优先级 响应优先级 则,嵌套关系为? 注意: 原则上,CM3 支持3 个固定的高优先级和多达256 级的可编程优先级,并且支持128级抢占 实际上,绝大多数CM3 芯片都会精简设计,以致实际上支持的优先级数会大大减小,如8级,16级,32级 原因?不需要大数量的寄存器,降低成本,以针对特定需求和对象 240级,60个32位寄存器,而8级只需2个32优先级寄存器,且优先级寄存器中,也只需其中3位 CM3允许,但有条件 1、最少有三位来表达优先级,即至少8级中断 2、表达优先级的位是优先级寄存器的高为对齐 7 6 5 4 3 2 1 0 用于表达优先级 无用 高对齐的目的:便于程序的移植。如从四位优先级移植到3位优先级系统,优先级不受影响 注意 优先级对应的数值不是0,1,2的顺序 例如,3位系统 优先级分别为: 0x0,0x20,0x40,0x60,0x80,0xa0,0xc0,0xe0 小结: 优先级分组寄存器 优先级寄存器 抢占优先级,响应优先级(子) 不同芯片,由于中断通道数不同,优先级寄存器个数不同,表达优先级位数不同,但都高对齐 对于stm32,隶属CM3子集 Cortex M3包括16个系统异常,240个外部中断 STM32包括16 个Cortex-M3 系统异常,43 个可编程中断通道,共59个中断源 绝大多数CM3 芯片都会精简设计,以致实际上支持的优先级数会大大减小,如8级,16级,32级 问题:stm32并不支持256级中断,只支持43+16=59级中断,不需用8位,即可表达 首先,16个系统异常对应的4个寄存器不变 其次,外部中断通道为43,需要10.75个32位寄存器,即11个32位寄存器 除3个高级系统异常,其他异常按优先级分为16级,因此,只需高四位来表达优先级 采用何种分组方法,则由分组寄存器来决定 2、 设置中断优先级: NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //设置中断优先级 NVIC_PriorityGroup_0 = 选择第0组 NVIC_PriorityGroup_1 = 选择第1组 NVIC_PriorityGroup_2 = 选择第2组 NVIC_PriorityGroup_3 = 选择第3组 NVIC_PriorityGroup_4 = 选择第4组 #define NVIC_PriorityGroup_0 ((u32)0x700) /* 0 bits for pre-emption priority 4 bits for subpriority */ #define NVIC_PriorityGroup_1 ((u32)0x600) /* 1 bits for pre-emption priority 3 bits for subpriority */ #define NVIC_PriorityGroup_2 ((u32)0x500) /* 2 bits for pre-emption priority 2 bits for subpriority */ #define NVIC_Pr

文档评论(0)

75986597 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档