ucosiii源码注释

11 篇文章 0 订阅
1 篇文章 0 订阅
本文介绍了在STM32F103C芯片上使用KeilC开发时,任务堆栈如何从高地址向低地址增长,并讨论了加载uC/OS-III操作系统后任务堆栈的变化。此外,还解析了调度器锁定状态下OSTimeDly()等系统延时函数会失效的情况。最后提到了OSPendMulti()函数在等待多个内核对象时的限制,指出其可能的不足。
摘要由CSDN通过智能技术生成

源码注释看↓

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 ():等待多个内核对象函数(多值信号量和消息队列),好像只能返回对象的数目,但不知道具体是哪个对象以及对象的值,如果是这样,不是很好用的感觉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值