其中事件块是各个同步量(这里我把互斥量,信号量,邮箱,队列统称为同步量,
不是很科学,图个方便。事件标志组不是以事件块为基础的,不过原理也差不多)
的基础。os_task.c 任务管理代码。
os_flag.c
os_mbox.c
os_mutex.c
os_q.c
os_sem.c 各个同步量管理代码。
os_mem.c 内存管理代码。
os_time.c 时间管理代码,主要做各种延时。
os_tmr.c
os_cpu.h: 进行数据类型定义,处理器相关代码和几个函数原型。
os_cpu_c.c: 定义一些用户 hook 函数。
os_cpu_a.asm: 移植需要用汇编代码完成的函数,主要就是任务切换函数。
os_dbg.c: 内核调试相关数据和函数,可以不改。
而版本286的结构
PORT
Source
APP
其中source中的所有模块都包括了ucos_ii.h这个文件的内容是定义所有模块都会用到的类型,和函数声明
1) #include <app_cfg.h> debug 应用程序的配置
#include <os_cfg.h> 操作系统的配置
#include <os_cpu.h> CPU的配置
2) 宏定义
3)类型定义
4)全局变量(声明、定义)
5)函数的声明
这个顺序很好
main函数中队ucos的使用
OSInit();
OSTaskCreate(startup_task, (void *)0, &startup_task_stk[STARTUP_TASK_STK_SIZE - 1], STARTUP_TASK_PRIO);
OSTaskCreate(task1, (void *)0, &task1_stk[APP_TASK_1_STK_SIZE-1], APP_TASK_1_PRIO);
OSTaskCreate(task2, (void *)0, &task2_stk[APP_TASK_2_STK_SIZE-1], APP_TASK_2_PRIO);
OSStart();
过程是系统初始化,然后创建任务,然后开启多任务