
uC/OS-II
文章平均质量分 90
lwbeyond
这个作者很懒,什么都没留下…
展开
-
uC/OS-II 中的任务
一. 任务的基本概念1. 任务分三个部分:任务控制块,任务堆栈,任务程序代码。任务控制块:关联了任务代码的程序控制块,它记录了任务的各个属性;任务堆栈:用来保存任务的工作环境。任务程序代码:就是任务的执行部分。2. 任务的状态睡眠状态:任务在没有配备任务控制块或被剥夺了作务控制块时的状态。就绪状态:配备了任务控制块并在任务就绪表中进行了就绪登记。运行原创 2013-04-03 13:20:42 · 1899 阅读 · 0 评论 -
uC/OS-II任务间的同步及事件
一. 什么是同步为了实现各个任务之间的合作和无冲突的运行,在各任务之间必须建立一些制约关系。一是各任务间应该具有一种互斥关系,即对于某个共享资源,如果一个任务正在使用,则其他任务只能等待,等到该任务释放该资源后,等待的任务之一才能使用它;二是相关的任务在执行上要有先后次序,一个任务要等其伙伴发来通知,或建立了某个条件后才能继续执行,否则只能等待。任务之间的这种制约的合作运行机制原创 2013-04-07 11:03:53 · 3412 阅读 · 0 评论 -
uC/OS-II的信号量及其操作
一. 信号量的概念信号量的最初目的,是为了给共享资源设立一个标志,该标志表示该共享资源被占用的情况。当事件控制块成员OSEventType的值被设置成OS_EVENT_TYPE_SEM时,这个事件控制块描述的就是一个信号量。信号量由信号量计数器和等待任务表两部分组成:信号量使用事件控制块的成员OSEventCnt作为计数器,而用数组OSEventTb1[]来充当等待任务表。原创 2013-04-07 17:40:03 · 5762 阅读 · 1 评论 -
uC/OS-II互斥信号量与任务优先级反转
一. 任务优先级反转的概念当任务以独占方式使用共享资源时,会出出低优先级任务先于高优先级任务而被运行的现象,这就是所谓的任务优先级反转。例如:1. 任务A和任务C都要使用同一共享资源S,现在假设任务A和任务B都在等待与各自任务相关的事件发生而处于等待状态,而任务C正在运行,且在t1时刻取得了信号量的并开始访问共享资源S。2. 如果在任务C使用共享资源S过程中的t2时刻,任务原创 2013-04-08 11:11:11 · 4648 阅读 · 0 评论 -
uC/OS-II消息邮箱及其操作
如果要在任务与任务之间传递一个数据,可以用消息邮箱,它的原理是在存储器中建立一个数据缓冲区,然后就以这个缓冲区为中介来实现任务间的数据传递。一. 消息邮箱的操作1. 创建消息邮箱OS_EVENT *OSMboxCreate (void *msg);调用此函数须先定义msg的初始值,在一般的情况下,这个初始值为NULL;但也可以事先定义一个邮箱,然后把邮箱指针做为参数。原创 2013-04-09 10:21:17 · 6429 阅读 · 0 评论 -
uC/OS-II消息队列及操作
使用消息队列可在任务之间传递多条消息,消息队列由三部分组成:事件控制块、消息队列和消息。事件控件块成员OSEventPtr指向一个叫做队列控制块(OS_Q)的结构,该结构管理着一个数组MsgTb1[],该数组中的元素都是指向消息的指针。一. 消息队列的操作1. 创建消息队列OS_EVENT *OSQCreate (void **start, INT16U size);st原创 2013-04-09 14:21:41 · 4111 阅读 · 1 评论