|
最近在学习ucos ii,看书的过程中发现了些问题,希望能跟大家一起讨论一下
1.在《嵌入式实时操作系统》第二版第305页(3)看到有如下语句:
if(OSIntNesting == 1)
{
OSTCBCur->OSTCBStkPtr = Stack Pointer;
}
注释说是2.51版本中新加上去的,为的是在在中断服务子程序中保存即将被挂起的任务的堆栈指针,使移植与编译器更加无关,可是我在网上找的例程是2.86版本的,发现中断服务子程序中根本没有这两句程序啊,那么这两行程序到底是怎么回事儿?是在2.51片本中加上去,后来版本中又去掉了?还有,为什么只在OSIntNesting为1的时候才保存堆栈指针?
2.新的版本中加入了os_tmr.c文件,其中的函数是用来产生定时,我有一事不明,既然用系统延时函数已经可以实现任务的周期执行了,那么还需要这个软件定时器有什么用呢?它是有什么特别的用途吗?
|
|