进中断时,已经将全局中断屏蔽了,也就是说时钟滴答的中断也屏蔽,如果打开了pend函数,那么程序就会在这个中断里面等信号量,消息邮箱等等,,,,但是这样等是没有效果的,因为连时钟滴答的中断也屏蔽了,其他优先级高的程序的OSDelay也不能自减,也就无优先级可言,也就是也不能就绪,这样也就不能发信号量,消息邮箱等等信号了。但是中断里面的pend还在死等。也就是任务再也无法调度,永远在这个中断函数里面,就死掉了。
应该是所有的POST函数都不可以在中断中调用的,因为执行POST函数后会产生一次任务调度,而任务调度就不能再中断中执行,你仔细看OS_Sched 函数,中有个语句是if ((OSIntNesting == 0) && (OSLockNesting == 0)) 。而OSIntNesting 在中断的时候是不会等于0的,至少也会等于1,因此就不会产生调度,自然就出错了。
以上就是关于UCOSIII CAN1无法进入中断函数,求助全部的内容,包括:UCOSIII CAN1无法进入中断函数,求助、uCOS编程,请教各位大虾, 在中断里面可以不可以调用OSFlagPost发送事件,请各位大虾指点、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)