uC/OS-II学习笔记(1)

本文是针对uC/OS-II操作系统的基础教程,适合初学者。通过一个范例展示了如何创建和管理10个显示数字的任务,涉及任务堆栈、信号量、中断向量、任务创建和CPU利用率计算。文章详细解释了代码逻辑,包括任务的无限循环、任务间的同步与通信、任务调度和资源访问控制。
                                                                               by WC 7.9.2015

本文假设读者对uC/OS-II和多任务知之甚少,但有一定的C语言和单片机基础。为的是为了从0开始学习uC/OS-II。流程图如下图示:
这里写图片描述

1## 范例1 ##
范例1程序结果
范例一演示uC/OC-II的多任务处理能力。共有10个任务在屏幕上面随机的位置显示一个0~9的数字。每个任务只显示同一个数字。其包含了13个任务,在运行窗口的左下角增加了两个内部任务。注意:context switch指CPU寄存器内容的切换,其实就是任务切换。

LI.1 TEXT.C

#include "includes.h"                                                                        【1】                 
#define  TASK_STK_SIZE           512       /* Size of each task's stacks (# of WORDs)  */    【2】    
#define  N_TASKS                 10       /* Number of identical tasks                 */    【3】                  
OS_STK        TaskStk[N_TASKS][TASK_STK_SIZE];        /* Tasks stacks                  */    【4】 
OS_STK        TaskStartStk[TASK_STK_SIZE];                                                   【5】
char          TaskData[N_TASKS];                  /* Parameters to pass to each task   */    【6】     
OS_EVENT     *RandomSem;
说明:在程序的最后加了索引【?】,L1.1【1】表示程序L.1.1标号1地方的代码.

L1.1【1】:所有的头文件都放在了主控头文件includes.h中,这样写结构简单。后面需要时会继续讲解LI.1中的内容,先看main函数。
L1.1【2】:任务堆栈长度。
L1.1【3】:该程序任务的个数。
L1.1【4】:堆栈空间。
L1.1【5】:栈顶。
L1.1【6】:定义一个数组,存放0~9的ASCII字符。

LI.2 TEXT.C,main()

void  main (void)
{
 PC_DispClrScr(DISP_FGND_WHITE + DISP_BGND_BLACK);    /* Clear the screen         */1】             
 OSInit();     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值