uCOS-II 学习笔记之事件管理--------事件管理程序
2014-01-12 20:38
549 查看
事件控制块(ECB)
事件控制块的数据结构
1、事件控制块(ECB)的初始化
2、
事件控制块的数据结构
typedef struct os_event { INT8U OSEventType; /* Type of event control block (see OS_EVENT_TYPE_xxxx) */ void *OSEventPtr; /* Pointer to message or queue structure */ INT16U OSEventCnt; /* Semaphore Count (not used if other EVENT type) */ OS_PRIO OSEventGrp; /* Group corresponding to tasks waiting for event to occur */ OS_PRIO OSEventTbl[OS_EVENT_TBL_SIZE]; /* List of tasks waiting for event to occur */ #if OS_EVENT_NAME_EN > 0u INT8U *OSEventName; #endif } OS_EVENT;
1、事件控制块(ECB)的初始化
static void OS_InitEventList (void) { #if (OS_EVENT_EN) && (OS_MAX_EVENTS > 0u) #if (OS_MAX_EVENTS > 1u) INT16U ix; INT16U ix_next; OS_EVENT *pevent1; OS_EVENT *pevent2; OS_MemClr((INT8U *)&OSEventTbl[0], sizeof(OSEventTbl)); /* Clear the event table */ for (ix = 0u; ix < (OS_MAX_EVENTS - 1u); ix++) { /* Init. list of free EVENT control blocks */ ix_next = ix + 1u; pevent1 = &OSEventTbl[ix]; pevent2 = &OSEventTbl[ix_next]; pevent1->OSEventType = OS_EVENT_TYPE_UNUSED; pevent1->OSEventPtr = pevent2; #if OS_EVENT_NAME_EN > 0u pevent1->OSEventName = (INT8U *)(void *)"?"; /* Unknown name */ #endif } pevent1 = &OSEventTbl[ix]; pevent1->OSEventType = OS_EVENT_TYPE_UNUSED; pevent1->OSEventPtr = (OS_EVENT *)0; #if OS_EVENT_NAME_EN > 0u pevent1->OSEventName = (INT8U *)(void *)"?"; /* Unknown name */ #endif OSEventFreeList = &OSEventTbl[0]; #else OSEventFreeList = &OSEventTbl[0]; /* Only have ONE event control block */ OSEventFreeList->OSEventType = OS_EVENT_TYPE_UNUSED; OSEventFreeList->OSEventPtr = (OS_EVENT *)0; #if OS_EVENT_NAME_EN > 0u OSEventFreeList->OSEventName = (INT8U *)"?"; /* Unknown name */ #endif #endif #endif }
2、
相关文章推荐
- ZOJ 3279 Ants 二分树状数组
- uva 11269 - Setting Problems(相邻交换法)
- 文本分类的两种方法
- C#打开一个文本文件并读写
- 27-反弹的球
- 编译busybox的时候出现error: field 'in' has incomplete type
- vim之<F12> 一键生成tags的一些小优化
- 父类--子类
- MTK Android 菜鸟上手之旅
- Leetcode: Longest Common Prefix
- Caused by: org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.t
- ios define NSLog debug 应用发布nslog注释
- 自然语言处理中文 工具包
- 【磁盘处理相关方法】3,得到最空闲的磁盘
- C#读写文本文件
- 在何时该用什么方式编译WinCE
- 旧书重温:0day2【9】第六章 攻击c++的虚函数
- perl cgi编程简介
- 图像增强
- 字面量理解