UCOS
文章平均质量分 81
_JMC
这个作者很懒,什么都没留下…
展开
-
UCOS-II任务管理
uC/OS-II任务管理: µC/OS-Ⅱ可以管理多达 64 个任务,并从中保留了四个最高优先级和四个最低优先级的任务供自己使用,所以用户可以使用的只有 56 个任务。任务的优先级越高,反映优先级的值则越低。任务的创建:OSTaskCreate()和OSTaskCreateExt() OSTaskCreateExt()是 OSTaskCreate()的扩展版本,提供了一些附原创 2017-04-20 10:57:32 · 982 阅读 · 0 评论 -
UCOS-II时间管理
uC/OS-II时间管理:任务延时函数, OSTimeDly(INT16U ticks) 申请该服务的任务可以延时一段时间,这段时间的长短是用时钟节拍的数目来确定的。实现这个系统服务的函数叫做 OSTimeDly()。调用该函数会使µC/OS-Ⅱ进行一次任务调度,并且执行下一个优先级最高的就绪态任务。任务调用 OSTimeDly()后,一旦规定的时间期满或者有其它的任务通过调用 OSTi原创 2017-04-20 10:59:51 · 1818 阅读 · 0 评论 -
UCOS-II任务间通信(信号量、邮箱、消息队列)
保护任务之间的共享数据和提供任务之间的通讯方法:利用宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()来关闭和打开中断,这可以用于多任务或者任务和ISR共享某些数据时可以采用这种方法。利用OSSchedLock()和OSSchedUnlock()对uC/OS-II中的任务调度器上锁和开锁。利用信号量、邮箱和消息队列。 一个任务或者中断服务子程序原创 2017-04-20 11:00:52 · 8204 阅读 · 0 评论 -
UCOS-II内存管理
内存管理: 我们知道,在 ANSI C 中可以用 malloc()和 free()两个函数动态地分配内存和释放内存。但是,在嵌入式实时操作系统中,多次这样做会把原来很大的一块连续内存区域,逐渐地分割成许多非常小而且彼此又不相邻的内存区域,也就是内存碎片。由于这些碎片的大量存在,使得程序到后来连非常小的内存也分配不到,我们讲到过用 malloc()函数来分配堆栈时,曾经讨论过内存碎片的问题。另原创 2017-04-20 11:03:41 · 1009 阅读 · 0 评论 -
实时操作系统概念
定义全局变量的方法: #ifdef OS_GLOBALS //当在.c文件中定义该宏时则把.h文件中的变量定义为全局变量,否则只声明为外部变量。 #define OS_EXT #else #define OS_EXT extern #endif OS_EXT INT32U OSIdleCtr; OS_EXT INT32U OSIdleCtrRun;原创 2017-04-20 10:52:21 · 436 阅读 · 0 评论 -
UCOS-II任务管理1
任务控制块: 一旦任务建立了,任务控制块OS_TCBs将被赋值,任务控制块是一个数据结构当任务的CPU使用权限被剥夺时,uC/OS用它来保存该任务的状态。typedef struct os_tcb{ OS_STK *OSTCBStkPtr;//指向任务栈顶的指针, #if OS_TASK_CREATE_EXT_EN void *OSTCBExtPtr;//指向用户定原创 2017-04-20 10:56:41 · 322 阅读 · 0 评论 -
UCOS-II任务设计
UCOS-II任务设计任务函数的结构:在用户任务函数中,必须包含至少一次对操作系统服务函数的调用,否则比其优先级低的任务将无法得到运行的机会,这是用户任务与普通函数的明显区别。任务函数按照执行方式分为三类:单次执行、周期执行、事件触发三类。单次执行的任务:此类任务只执行一次,执行后就自行删除。void MyTask (void *pdata) //单次执行的任务函数{原创 2017-04-20 14:59:21 · 2066 阅读 · 0 评论