建立任务, OSTaskCreateExt()
stk_size 用于指定堆栈成员数目的容量。也就是说,如果堆栈的入口宽度为 4 字节宽,那么 stk_size 为 10000 是指堆栈有 40000 个字节,意思就是数据的宽度*长度=堆栈的大小。μC/OS-Ⅱ支持的处理器的堆栈既可以从上(高地址)往下(低地址)长也可以从下往上长
。用户在调用 OSTaskCreate()或 OSTaskCreateExt()的时候必须知道 堆栈是怎样长的, 当 OS_CPU.H 文件中的 OS_STK_GROWTH 置为 1 时,用户需要将堆栈的最高内存地址传递 给任务创建函数 - 一般默认为1,我们需要改为0,才能从堆栈的最低内存开始传递参数。堆栈检验, OSTaskStkChk()
为了适应系统以后的升级和扩展,用户应该多分配 10%-100%的堆栈空间
因为 μC/OS-Ⅱ不允许多个任务具有相同的优先级,所以 OSTaskChangePrio()需要检验新优
先级是否是合法的(即不存在具有新优先级的任务)有时候将任务挂起是很有用的。挂起任务可通过调用 OSTaskSuspend()函数来完成。被
挂起的任务只能通过调用 OSTaskResume()函数来恢复。OSMboxPend(MboxTimeDly, TIMEOUT, &err); 用邮箱可以实现互斥锁的功能,也可以实现延时的功能
消息队列是一个循环的缓冲区,圆形的。如果此时消息队列已满,那么该消息将由于不能插入到消息队列中而丢失。
OSSemPend()和 OSMboxPend()函数一样,不能在中断服务子程序中调用 OSQPend(),因为中断服务子程序是不能等待的。