- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
《嵌入式技术应用》课程
uCOSIII操作系统学习
适用平台:STM32F10x
主讲教师:杜锋
uCOSIII任务管理(2)
目录
Contents
1
UCOSIII任务堆栈
2
UCOSIII任务控制块
3知识目标
UCOSIII任务就绪表
了解知道
掌握了解
掌握理解
掌握
1.UCOSIII任务堆栈
任务堆栈的创建
◆任务堆栈是任务的重要部分,堆栈是在RAM中按照“先进先出(FIFO)”的原则组织的一块连续的
存储空间。为了满足任务切换和响应中断时保存CPU寄存器中的内容及任务调用其它函数时的需
要,每个任务都应该有自己的堆栈。
◆任务堆栈创建:
#defineSTART_STK_SIZE512//堆栈大小
CPU_STKSTART_TASK_STK[START_STK_SIZE];//定义一个数组来作为任务堆栈
◆任务堆栈的大小:
◆CPU_STK为CPU_INT32U类型,也就是unsignedint类型,为4字节的,那么任务
堆栈START_TASK_STK的大小就为:512X4=2048字节!
1.UCOSIII任务堆栈
任务堆栈初始化
◆任务如何才能切换回上一个任务并且还能接着从上次被中断的地方开始运行?
●恢复现场即可,现场就是CPU的内部各个寄存器。
◆在创建一个新任务时,必须把系统启动这个任务时所需的CPU各个寄存器初始值事先存放在
任务堆栈中。
◆这样当任务获得CPU使用权时,就把任务堆栈的内容复制到CPU的各个寄存器,从而可以任务
顺利地启动并运行。
1.UCOSIII任务堆栈
任务堆栈初始化函数
◆把任务初始数据存放到任务堆栈的工作就叫做任务堆栈的初始化,UCOSIII提供了完成堆栈初
始化的函数:OSTaskStkInit()。
CPU_STK*OSTaskStkInit(OS_TASK_PTRp_task,
void*p_arg,
CPU_STK*p_stk_base,
CPU_STK*p_stk_limit,
CPU_STK_SIZEstk_size,
OS_OPTopt)
◆用户一般不会直接操作堆栈初始化函数,任务堆栈初始化函数由任务创建函数OSTaskCreate()
调用。不同的CPU对于的寄存器和对堆栈的操作方式不同,因此在移植UCOSIII的时候需要用户
根据各自所选的CPU来编写任务堆栈初始化函数。
1.UCOSIII任务堆栈
任务堆栈的使用
◆前面我们创建了一个任务堆栈,怎么使用这个任务堆栈?
◆作为任务创建函数OSTaskCreate()的参数,函数OSTaskCreate()如下:
voidOSTaskCreate(OS_TCB*p_tcb,
CPU_CHAR*p_name,
OS_TASK_PTRp_task,
v
您可能关注的文档
- 《嵌入式应用技术》课件——第6讲 功能实现与程序下载.pdf
- 《嵌入式应用技术》课件——第4讲 STM32 PWM介绍.pdf
- 《嵌入式应用技术》课件——第14讲 GPIO工作原理2-寄存器说明.pdf
- 《嵌入式应用技术》课件——第7讲 功能实现与程序下载.pdf
- 《嵌入式应用技术》课件——第7讲 功能实现与程序下载 (1).pdf
- 《嵌入式应用技术》课件——第1讲 学习引入 (1).pdf
- 《嵌入式应用技术》课件——第3讲 STM32定时器介绍.pdf
- 《嵌入式应用技术》课件——第7讲 MDK5软件入门-STM32固件库和CMSIS标准 .pdf
- 《嵌入式应用技术》课件——第11讲 ISP串口下载.pdf
- 《嵌入式应用技术》课件——第3讲 调光系统显示程序设计.pdf
文档评论(0)