本文主要是介绍UCOSII归纳三,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.OS_TCB任务控制块全部驻留在RAM中,这是值得注意的,特别是在RAM缺乏的时候。
2.任务的管理:
1:建立和删除任务。(注意:任务删除要考虑任务资源的释放。)
2:请求删除任务:如果任务A运行一段时间已经拥有了一些资源,而任务B想删除它,要是强制删除,这些资源可能没有释放。
3:改变任务优先级。
4:挂起和恢复任务。
3.信号量由两部分组成:信号量的计数值和等待该信号量任务的等待列表。主要用于资源共享和任务同步。
4.Malloc和free对内存操作的缺点:1:多次操作会产生内存碎片。2:执行时间并不确定。
5.可重入的代码可以被一个以上的任务调用,而不必担心数据的破坏。
6.void OSCtxSw(void);//用户任务切换
void OSIntCtxSw(void);//中断任务切换
void OSStartHighRdy(void);//操作系统第一次启动的时候调用的任务切换。
void OSPendSV(void);//用户中断处理函数
7.任务函数的局部变量越多,嵌套层数越多,堆栈越偏大,也要注意堆栈对齐问题。
8.Volatile作用是阻止编译器进行优化,每次读取或修改值的时候,都必须重新从内存中或外设寄存器中读取或修改,防止从缓冲处读取的值是过期的。
9.Volatile应用场合:
1:中断ISR中修改,供其它程序检测的变量。
2:多任务下任务共享的变量资源。
3:外设的寄存器地址。
10.STM32中UCOSII的系统时钟节拍
void SysTick_Handler(void)
{
if(delay_osrunning==1)//OS开始跑了,才执行正常的调度处理
{ OSIntEnter(); //进入中断
OSTimeTick(); //判断延迟的任务是否到达时间等
OSIntExit(); //触发任务切换软中断
}
}
这篇关于UCOSII归纳三的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!