RTOS环境中的中断程序应该注意的问题

1.  中断程序决不能获取信号量,读取可能会空的队列或者信箱,等待事件等,如果某个中断程序调用了RTOS函数,并被阻塞,那么除了该中断程序之外,被中断的任务也会被阻塞。即使该任务有最高的优先级也是如此。

2.中断程序不能对有任务等待的队列或者信箱执行写操作,不能设置事件,释放信号量等,如果某个中断程序破坏了这个规则。操作系统会把控制从该中断程序切换掉,而去运行另外一个任务,这样这个中断程序就会长时间得不到完成,从而阻塞了所有的低先级甚至是全部的中断。

3 如果你的系统允许中断嵌套,以及更高优先级的中断可以中断较低优先级的中断,那么就要另外考虑。如果更高优先级的中断程序调用了任何的RTOS函数,那么低优先级的中断程序,必须让操作系统知道该低优先级的中断程序是何时发生的?否则最高优先级的中断程序结束以后,操作系统调度程序可能会去运行其他任务,而不是让低优先级的中断程序继续完成,很显然,在所有的中断程序完成之前,不应该让操作系统调度程序运行。

猜你喜欢

转载自blog.csdn.net/rannar/article/details/82114633