关闭

UCOSII学习归纳一

246人阅读 评论(0) 收藏 举报
分类:

    在熟悉UCOSIII应用的同时,对之前应用的UCOSII做一些归纳,供以后回顾。

1.UCOSII的任务如何分类?

  1)用户创建的任务:用户最多可以创建63个任务,优先级0~62,0是最高优先级任务。

  2)系统创建的任务:空闲任务和统计任务(计算在运行所有应用程序时,CPU的使用效率)。在使用UCOSII前,必须调用OSInit(),OSInit()可以建立了空闲任务和统计任务。

  注:所有任务的优先级必须不相同。

2.UCOSII创建任务的要素?

  1)编写自己的任务函数。

  2)分配一个适合的任务堆栈。

  3)分配一个合适的任务优先级。

  4)可能还需要给任务传递一些参数。

3.任务函数的特点?

  1)没有返回值。

  2)都包含了一个死循环。

  3)都有一个void型的指针形参。

  4)死循环内必须有调度点。

  5)高优先级的任务中必须有等待延迟,让低优先级的任务有被调度的机会。

4.用OSStart()开启了UCOSII后,每个任务建立的时候,UCOSII会判断新建立的任务是否具有最高优先级,如果其优先级最高,则立即运行该任务。

5.如何检测一个任务堆栈的大小?

  考虑使用OSTaskStkChk()堆栈检查函数。此函数的运行时间与任务所指定的堆栈大小密切相关。当想确认一个任务需要多少堆栈时,此函数是很有用的。如果系统对稳定性要求高,实际分配的堆栈应大于检查的最大值得1倍。堆栈检查要求任务建立时给堆栈清零,也要注意,其实进行堆栈清零也可能是一项很费时的工作。执行OSTaskStkChk()堆栈检查函数,也就是从栈低向栈顶搜索非0的元素,记录0元素的个数。

6.何为消息邮箱?

  消息邮箱仅能提供一个指针型变量的传递,至于此指针型变量到底指向什么样的数据结构,是由使用此邮箱的用户程序共同决定的。

7.如何确定每个任务的运行次数和运行时间?

  系统的钩子函数可以解决此问题。钩子函数其实在应用中必不可少。

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:83733次
    • 积分:2195
    • 等级:
    • 排名:第17983名
    • 原创:143篇
    • 转载:2篇
    • 译文:0篇
    • 评论:22条
    最新评论