930电子网

 找回密码
 立即注册
艾克姆科技推出最新产品STC32G12K128开发板
查看: 12601|回复: 1

STC15W4K32S4系列中断之中断优先级

[复制链接]

101

主题

333

帖子

7428

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7428
发表于 2019-6-19 09:35:25 | 显示全部楼层 |阅读模式
本帖最后由 正是河豚 于 2019-6-19 09:36 编辑
    1、中断优先级:中断系统一般允许多个中断源,当几个中断源同时向CPU请求中断,那就诞生一个优先处理哪个中断源的问题,这样中断优先级便产生了。
    2、中断嵌套:CPU按照中断源的中断优先级处理一个低优先级中断的时候,假如有另外一个更高优先级的中断源发出中断请求,那CPU需要暂停原来中断源的服务程序,转而去处理更高优先级的中断源,待处理结束后,再回到原低优先级的中断服务程序,这个过程就是中断嵌套。
    3、STC15W4K32S4系列单片机中断优先级的设置:通过设置特殊功能寄存器(IP和IP2)中的相应位,对有2个优先级中断的中断请求源进行编程。

    注:由上面寄存器描述可知一共有13个位来控制STC15W4K32S4系列单片机的13个中断的优先级选择。
    4、STC15W4K32S4系列单片机仅有1个中断优先级的是:外部中断2/INT2、外部中断3/INT3、定时器2、定时器3、定时器4、串行口3、串行口4和比较器中断。
    补充说明
    1)项目应用中如果外设使用比较多,一定注意中断优先级使用,在需要分配优先级时要合理安排外设资源。比如,如果外部中断在使用时可能要配置其优先级,那在硬件设计时最好使用外部中断0或者外部中断1引脚,否则一旦使用了其他外部中断引脚,外部中断优先级无法设置,项目需求功能就无法实现了。
    2)我们知道STC15W4K32S4系列单片机有21个中断源,从以上列举可知:13个中断可进行优先级选择,剩下8个外设只有低优先级。
    5、关于中断嵌套补充:
    1)如果一个中断正在执行过程中,另外一个同级别的中断(同为高优先级或同为低优先级)被触发,则原来的中断不会被打断,程序会执行完原来的中断后,再来响应新的中断。
    2)如果两个同级别的中断(同为高优先级或同为低优先级)同时被触发,则程序先响应自然优先级高的中断(自然优先级在STC15W4K32S4系列手册里面,称之为辅助优先级结构或者内部的查询次序),再响应自然优先级低的中断。
   


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

101

主题

333

帖子

7428

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7428
 楼主| 发表于 2019-6-20 08:52:25 | 显示全部楼层
    楼上给的建议非常好!初学者往往只想着把功能实现,而忽视对外设及一些基本概念的深入了解。程序简单的还行,稍复杂就会出现很多问题。
    1、中断服务函数一定不可执行过于复杂的任务,要尽快执行完中断又能达到实验的功能非常考验程序员水平。比如,外部中断1引脚外接一个按键,如果按键按下则及时点亮屏并执行一段比较复杂的代码,那么比较低效不可取的方式是在外部中断1的中断服务函数中放置点亮屏及执行按键按下的代码。而相对高效的多的处理方式是定义一个全局变量,按键按下进外部中断服务函数,在中断服务函数中将这个全局变量赋新值。所有点亮屏和处理按键按下的复杂代码的程序在main函数的主循环中判断定义的全局变量值来完成。
    2、把复杂的代码放置在main函数的主循环中执行的另外一个好处,就是一旦这时还有其他的中断,那么可以保证其他中断能够被及时响应。简言之,一个中断的中断任务执行时间过长,另一个中断如果优先级不够就可能会丢失中断信息,而如果中断的执行任务是在main函数中就不用担心这个问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|手机版|官方淘宝店|930电子网 ( 皖ICP备16000695号-2 )

Copyright © 合肥艾克姆电子科技有限公司
快速回复 返回顶部 返回列表