ucosii之事件标志组管理
来源:互联网 发布:淘宝被清退提示可回滚 编辑:程序博客网 时间:2024/06/14 20:02
ucosii的事件标志组有2部分组成:一是用了保存当前事件组中各事件状态的一些标志;二是等待这
些事件标志位置位或清除的任务列表。
OSFlagWaitList 指针指向一个事件标志组的等待任务列表。
ucosii 定义了两个对等待任务列表的操作:添加节点OS_FlagBlock()和删除节点OS_FlagUnlink。
一个例子
#include "includes.h"#define TASK_STK_SIZE 512 OS_STK StartTaskStk[TASK_STK_SIZE];OS_STK MyTaskStk[TASK_STK_SIZE];OS_STK YouTaskStk[TASK_STK_SIZE];OS_STK HerTaskStk[TASK_STK_SIZE];char*s1="MyTask is runing";char*s2="YouTask is runing";char*s3="HerTask is runing";INT16S key;INT8U y=0;INT8U err;INT32U Times=0;OS_FLAG_GRP *Sem_F;void StartTask(void *data);void MyTask(void *data);void YouTask(void *data);void HerTask(void *data);/***************************************************/void main(void){OSInit();PC_DOSSaveReturn();PC_VectSet(uCOS,OSCtxSw);Sem_F=OSFlagCreate(0,&err);OSTaskCreate(StartTask, (void*)0, &StartTaskStk[TASK_STK_SIZE-1], 0);OSStart();}/**********************************************************/void StartTask(void *pdata){#if OS_CRITICAL_METHOD==3OS_CPU_SR cpu_sr;#endifpdata=pdata;OS_ENTER_CRITICAL();PC_VectSet(0x08,OSTickISR);PC_SetTickRate(OS_TICKS_PER_SEC);OS_EXIT_CRITICAL();OSStatInit();OSTaskCreate(MyTask, (void*)0, &MyTaskStk[TASK_STK_SIZE-1], 3);OSTaskCreate(YouTask, (void*)0, &YouTaskStk[TASK_STK_SIZE-1], 4);OSTaskCreate(HerTask, (void*)0, &HerTaskStk[TASK_STK_SIZE-1], 5);for(;;){if(PC_GetKey(&key)==TRUE){if(key==0x1B){PC_DOSReturn();}}OSTimeDlyHMSM(0,0,3,0);}}/********************************************************/void MyTask(void *pdata){#if OS_CRITICAL_METHOD==3OS_CPU_SR cpu_sr;#endifpdata=pdata;for(;;){OSFlagPend(Sem_F, (OS_FLAGS)3,OS_FLAG_WAIT_SET_ALL, 0,&err);PC_DispStr(10,++y,s1,DISP_BGND_BLACK+DISP_FGND_WHITE);OSTimeDlyHMSM(0,0,2,0);}}/***************************************************************/void YouTask(void *pdata){#if OS_CRITICAL_METHOD==3OS_CPU_SR cpu_sr;#endifpdata=pdata;for(;;){PC_DispStr(10,++y,s2,DISP_BGND_BLACK+DISP_FGND_WHITE);OSTimeDlyHMSM(0,0,8,0);OSFlagPost(Sem_F,(OS_FLAGS)2,OS_FLAG_SET,&err);OSTimeDlyHMSM(0,0,2,0);}}/************************************************/void HerTask(void *pdata){#if OS_CRITICAL_METHOD==3OS_CPU_SR cpu_sr;#endifpdata=pdata;for(;;){PC_DispStr(10,++y,s3,DISP_BGND_BLACK+DISP_FGND_WHITE);OSFlagPost(Sem_F,(OS_FLAGS)1,OS_FLAG_SET,&err);OSTimeDlyHMSM(0,0,1,0);}}结果
- ucosii之事件标志组管理
- ucosii学习 事件标志组
- ucosII的事件标志组的使用心得
- ucosii之任务管理
- ucosii之时间管理
- UCOS事件标志组管理笔记
- 第九章 事件标志组管理
- 嵌入式系统学习——STM32之UCOS-III事件标志组和存储管理
- uC/OS-III之事件标志组
- STM32学习之:事件标志组
- UC/OS II 事件标志组管理(一)
- UC/OS II 事件标志组管理(二)
- UCOSII操作系统之事件管理机制探究
- UCOSIII事件标志组
- UCOSIII事件标志组
- keil MDK之RTX事件标志组的API函数
- 嵌入式操作系统之信号量,互斥信号量,事件标志组
- FreeRTOS之事件标志组及实现FreeRTOS看门狗
- 常用软件CD-KEY
- linux进程及进程控制
- ASIHTTPRequest类库简介和使用说明
- aaaaaaaaaa
- 20120503学习总结
- ucosii之事件标志组管理
- 实验10 实时时钟设计实验
- 破解网页禁止使用“复制”、“粘贴“
- eclipse 里的Duplicate Location 问题
- 大数阶乘
- VIM学习
- javascript闭包实例
- 百度编辑器ueditor的使用方法
- 通俗的理解三个范式