【ucos-III教程】第11章_原创精品文档.pdfVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

【ucos-III教程】第11章uCOS-III内核函数分析(中)

特别说明:

1.本教程是安富莱电⼦原创。

2.安富莱STM32F407开发板资料已经全部开源,开源地址:地址链接

3.当前共配套300多个实例,4套⽤户⼿册。

第11章uCOS-III内核函数分析(中)

本期教程开始分析µCOS-III的内核函数,源码的分析采⽤先对源码进⾏注释,然后讲解函数实现的功能和相关的原理分析,最后是举⼀个

例⼦(如果这个函数是供外部函数调⽤的)。内核函数很重要,是学习任务管理,任务间通信机制的基础。希望初学的同学认真学习,这部分

应该算是µCOS-III的核⼼代码。

11.1系统配置⽂件

11.2源码⽂件

11.3µCOS-III初始化

11.4µCOS-III启动

11.5获取系统版本

11.6空闲任务

11.7临界段

11.8安全关键IEC61508

11.9任务切换

11.10调度锁

11.11Round-Robin调度

11.12总结

11.6空闲任务

⼏乎所有的⼩型RTOS中都会有⼀个空闲任务,空闲任务应该属于系统任务,是必须要执⾏的,⽤户程序不能将其关闭。

不光⼩型系统中有空闲任务,⼤型的系统⾥⾯也有的,⽐如XP,下⾯的截图就是XP中的空闲进程。

空闲任务主要有以下⼏个作⽤:

l我们不能让系统⼀直在执⾏各个应⽤任务,这样的话系统利⽤率就是100%,系统就会⼀直的超负荷运⾏,所以空闲任务很

有必要。

l为了更好的实现低功耗,空闲任务也很有必要,我们可以在空闲任务中实现睡眠,待机等低功耗措施。

11.6.1创建空闲任务OS_IdleTaskInit()

voidOS_IdleTaskInit(OS_ERR*p_err)

{

#ifdefOS_SAFETY_CRITICAL

if(p_err==(OS_ERR*)0){

OS_SAFETY_CRITICAL_EXCEPTION();

return;

}

#endif

OSIdleTaskCtr=(OS_IDLE_CTR)0;

OSTaskCreate((OS_TCB*)OSIdleTaskTCB,

(CPU_CHAR*)((void*)uC/OS-IIIIdleTask),

(OS_TASK_PTR)OS_IdleTask,

(void*)0,

(OS_PRIO)(OS_CFG_PRIO_MAX-1u),

(CPU_STK*)OSCfg_IdleTaskStkBasePtr,

(CPU_STK_SIZE)OSCfg_IdleTaskStkLimit,

(CPU_STK_SIZE)OSCfg_IdleTaskStkSize,

(OS_MSG_QTY)0u,

(OS_TICK)0u,

(void*)0,

(OS_OPT)(OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR|OS_OPT_TASK_NO_TLS),

(OS_ERR*)p_err);

}

关于任务的创建,本期教程暂时还不做介绍。

11.6.2空闲任务OS_IdleTask()

voidOS_IdleTask(void*p_arg)

{

CPU_SR_ALLOC();(1)

(2)

p_arg=p_arg;

while(DEF_ON){(3)

CPU_CRITI

文档评论(0)

166****8165 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档