第11章 任管理.pptVIP

  1. 1、本文档共86页,可阅读全部内容。
  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文档。上传文档
查看更多
第11章 任管理

第11章 任务管理;11.1 单任务系统;11.1.1 查询方式;11.1.2 中断方式;11.2 多任务系统;多任务系统运行过程;11.3.1 任务设置;11.3.2 任务栈设置;任务栈设置;11.3.3 系统栈设置;11.3.5 RTX初始化和启动;举例;11.3.6 任务创建;举例;11.3.7 任务删除;任务删除例子;11.3.8 空闲任务;空闲任务;11.3.9 例程说明;RTX 配置;应用实例;应用实例;RTX 任务调试信息;思考题;急存磺督殖楚鄂牟捉翻淄润季沫囊工哥授蜒裴朗祷帆罗数狂辽喉品利樱仙第11章 任管理第11章 任管理;RTX内核分析;RTX任务控制块;Task States in RTX Kernel;*;*;RTX进程创建的源代码;11.4 任务优先级修改;11.4.2 任务优先级分配方案;RTX的优先度;RTX的优先度;*;11.4.3 任务优先级设置;使用举例;11.4.4 例程说明;RTX 配置;RTX 配置;RTX 任务调试信息;11.5 任务调度;11.5.1 RTX 支持的调度方式;11.5.2 抢占式调度器;抢占式调度器;RTX 抢占式调度器的实现;RTX 抢占式调度器的实现;11.5.3 时间片调度器;时间片调度器;时间片调度器例程;RTX 配置;RTX任务调试信息;11.5.4 合作式调度器;11.5.5 合作式调度器例程;RTX 配置;RTX 任务调试信息;RTX的调度总结;*;*;*;*;11.6.1 RTX 的时钟节拍;系统时钟节拍配置;11.6.2 RTX 的时间管理;11.6.2 RTX 的时间管理;函数 os_dly_wait;函数os_itv_set;函数os_itv_wait;os_dly_wait 和 os_itv_wait 的区别;RTX的时间管理函数;函数 os_time_get;例程说明;__task void AppTaskLED(void) { const uint16_t usFrequency = 200; /* 延迟周期 */ os_itv_set(usFrequency); /* 设置延迟周期 */ while (1) { bsp_LedToggle(2); bsp_LedToggle(3); os_itv_wait();//os_itv_wait是周期性延迟,os_dly_wait是相对延迟。 } } __task void AppTaskMsgPro(void) { while (1) { bsp_LedToggle(1); bsp_LedToggle(4); os_dly_wait(300); } };RTX 任务调试信息;*;RTX内核分析;RTX内核分析;开发应用程序唯一需要知道的就是操作系统提供的应用编程接口(API),并且了解各个请求代号和参数表,然后就可以使用SVC 来提出要求了(事实上,为使用方便,操作系统往往会提供一层封皮,以使系统调用的形式看起来和普通的函数调用一致。各封皮函数会正确使用SVC指令来执行系统调用——译者注)。其实,严格地讲,操作硬件的工作是由设备驱动程序完成的,只是对应用程序来说,它们也是操作系统的一部分。如图7.14 所示;另一个相关的异常是PendSV(可悬起的系统调用),它和SVC 协同使用。一方面,SVC异常是必须立即得到响应的(若因优先级不比当前正处理的高,或是其它原因使之无法立即响应,将上访成硬fault——译者注),应用程序执行SVC 时都是希望所需的请求立即得到响应。另一方面,PendSV 则不同,它是可以像普通的中断一样被悬起的(不像SVC 那样会上访)。OS 可以利用它“缓期执行”一个异常——直到其它重要的任务完成后才执行动作。悬起PendSV 的方法是:手工往NVIC 的PendSV 悬起寄存器中写1。悬起后,如果优先级不够高,则将缓期等待执行。;PendSV 的典型使用场合是在上下文切换时(在不同任务之间切换)。例如,一个系统中有两个就绪的任务,上下文切换被触发的场合可以是: ?? 执行一个系统调用 ?? 系统滴答定时器(SYSTICK)中断,(轮转调度中需要);让我们举个简单的例子来辅助理解。假设有这么一个系统,里面有两个就绪的任务,并且通过SysTick 异常启动上下文切换。如图7.15 所示。;上图是两个任务轮转调度的示意图。但若在产生SysTick 异常时正在响应一个中断,则SysTick 异常会抢占其ISR。在这种情况下,OS 不得执行上下文切换,否则将使中断请求被延迟,而且在真实系统中延迟时间还往往不可预知——任何有一丁点实时要求的系统都决不能容忍这种事。因此,在CM3 中也是严禁没商量——如果OS 在某中断活跃时尝试切

文档评论(0)

wst34008 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档