源码注释看↓
uC/OS-III - 标签 - 飞起的小田 - 博客园https://www.cnblogs.com/tianxxl/tag/uC%2FOS-III/
自己的一些理解:
1、keil c中调试,stm32f103c,栈STACK由高地址向低地址增长,不加载操作系统时,函数的局部变量放在栈STACK中,加载操作系统后,每个任务自己 用到的局部变量均存放在自己的任务堆栈中,即类似如下定义的任务堆栈中(在线仿真可看到局部变量位置),所以堆栈大小的设置要综合考虑任务中局部变量大小及嵌套的函数中局部变量大小及嵌套层次来确定。
CPU_STK Task1Stk[TASK1_STK_SIZE]
2、调度器上锁以后,系统延时函数OSTimeDly()、OSTimeDlyHMSM()失效,返回错误OS_ERR_SCHED_LOCKED,相当于程序延时时间为0,也不进行任务调度,接着运行下一行代码。
if (OSSchedLockNestingCtr > (OS_NESTING_CTR)0u) { /* Can't delay when the scheduler is locked */
*p_err = OS_ERR_SCHED_LOCKED;
return;
}
3、OSPendMulti ():等待多个内核对象函数(多值信号量和消息队列),好像只能返回对象的数目,但不知道具体是哪个对象以及对象的值,如果是这样,不是很好用的感觉。