您好、欢迎来到现金彩票网!
当前位置:ag视讯 > 高优先级中断 >

STC12C5A60S2 中断系统优先级疑问

发布时间:2019-07-12 16:49 来源:未知 编辑:admin

  当单片机正在执行低优先级中断函数时,高优先级中断到来。程序是执行完低优先级中断函数再应对高优先级中断还是先去执行高优先级中断函数?同样的,若正在执行高优先级中断函数,低优...

  当单片机正在执行低优先级中断函数时,高优先级中断到来。程序是 执行完低优先级中断函数再应对高优先级中断 还是 先去执行高优先级中断函数 ?

  同样的,若正在执行高优先级中断函数,低优先级中断到来,程序会如何响应?展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部单片机正在执行低优先级中断函数时,高优先级中断到来,就先去执行高优先级中断函数,这就叫中断嵌套。高级中断执行结束,再继续执行低级中断。

  反过来,就不会响应低级中断了。只有高级中断结束了,才能去响应低级中断的。

  虽然中断级别是这样设置的,但实际中,很难就遇到高级中断打断低级中断的情况。

  通常要求中断函数要短,不能写太多,更不允许在中断函数中延时,要及时返回主程序,以便响应其它中断。这是写中断函数的最基础要求了。追问有个问题,我用定时器0生成PWM,定时器1用来从外部采样计算并且调整定时器0的PWM。结果就出现这种情况:由于定时器1内采样后的计算花费时间较长,一旦采样计算开始,就好像定时器0的中断被忽略了一样,PWM处于停滞状态(保持定时器1中断引发后IO的状态),直到定时器1内中断函数(采样计算)执行完成后,定时器0才会继续工作,PWM也恢复正常。这是为什么?追答因为定时器0和1,是同一级的(你没有设置优先级),所以,在执行定时器1的中断程序时,就不会响应定时器0的中断了。只有定时器1的中断结束后才能再响应定时器0的中断。

  有两种解决方法,一是,设置定时器0中断为优先级。这样,在执行定时器1的中断程序时,定时器0可以打断。

  二是,定时器1的计算放在主程序中完成,中断程序只是从外部采样,把采样的结果还回到主程序来计算,这样,就算是计算的时间再长,也会响应定时器0的中断的。

http://bed-plans.net/gaoyouxianjizhongduan/601.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有