μCOS-III简介

1.新建本地文件夹

文件夹文件夹的作用
Doc主要用来存放工程的说明文件(通常为readme.txt)。通常要在里面对整个工程的实现的功能,以及如何使用等进行简要的说明。
Project用来存放工程文件
UserμCOS-IIISource用来存放μC/COS-III源码,即操作系统的源码。
Ports用来存放接口文件(μC/COS-III与CPU连接的文件,即移植文件或系统文件)。
μCOS-CPU用来存放μC/COS-III相关的驱动程序。
μCOS-LIB用来存放用户程序(比如main.c文件)

2.裸机与多任务系统

2.1裸机系统

这种系统是先初始化好相关的硬件驱动,在进入主函数的一个死循环(如while(1){}或for( ; ; ; ){}),按顺序的执行各种事情,这个通常只适用于只需按顺序执行的事件。必要的时候可以加入中断,外部信号来了跳进中断处理,事件的处理还是按顺序执行。

2.2多任务系统

相比于裸机系统,多任务系统虽然事件响应也是通过中断来完成,但是事件处理是通过任务完成的。而在多任务系统中,任务是由系统的调度器来调度的。在RTOS操作系统中,任务和裸机中的中断一样有优先级别,优先级高者被优先执行。如果一个事件就绪了,且优先级别足够高,就可能会马上得到CPU使用权(即立马响应)。

2.2.1任务的定义及实现
1.任务及任务函数是什么

在裸机系统中,main()函数中的无限循环部分。在多任务系统中,根据不同的功能,把整个系统分割成多个独立的且带无限循环的函数,这些函数称为任务,通常称之为线程。任务/线程实际是一个函数,函数内主体无限循环并且无退出和返回值。

2.任务栈

在裸机系统中,全局变量,子函数调用时局部变量,中断发生时函数的返回地址都保存在栈区,而栈是单片机RAM中一段连续的存储空间,栈的大小由启动代码(在启动文件中汇编代码)来分配。

而在多任务系统中,每个任务(线程)都是独立的,互不干扰,在创建时要给每个任务都分配独立的栈空间,栈空间通常是预先定义好的全局数组。这些任务栈也是存储在RAM中。

3.实现任务创建

定义好了任务后我们需要创建任务(线程)才能进行工作。创建一个任务需要任务栈(CPU_STK),任务函数,任务块(OS_TCB)最终联系起来才能由系统进行统一的调度。完成联系需要调用任务创建函数来创建任务。

/*声明任务控制块(OS_TCB)。*/
static OS_TCB AppTaskStartTCB;
/*声明任务堆栈(CPU_STK)。*/
static CPU_STK AppTackStartStk[TASK_STK_SIZE];

函数如下:

void  OSTaskCreate (OS_TCB        *p_tcb,     //任务控制块
                    CPU_CHAR      *p_name,    //任务名字
                    OS_TASK_PTR    p_task,    //任务函数
                    void          *p_arg,     //传递给任务函数的参数
                    OS_PRIO        prio,      //任务优先级
                    CPU_STK       *p_stk_base,//任务堆栈基地址
                    CPU_STK_SIZE   stk_limit, //任务堆栈深度限位
                    CPU_STK_SIZE   stk_size,  //任务堆栈的大小
                    OS_MSG_QTY     q_size,    //任务内部消息队列能够接收的最大信息数目,为0时禁止接收消息
                    OS_TICK        time_quanta,//使能时间片轮转时的时间
                    void          *p_ext,      //用户补充存储区
                    OS_OPT         opt,        //
                    OS_ERR        *p_err);     //输出错误参数

任务创建好之后,还需要把任务添加到就绪列表的数组里面,表示任务已经就绪,系统随时可以调度。但是这里让系统内核完成,只需调用下函数启动系统

/* 启动多任务系统,控制权交给uC/OS-III */
  OSStart(&err);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值