学习UC/OS札记(-)信号量的使用
来源:互联网 发布:linux shell 系统日志 编辑:程序博客网 时间:2024/06/06 02:40
#include "includes.h"
#define TASK_STK_SIZE 512
char*s1="MyTask";
char*s2="YouTask";
INT8U err;
INT8U y=0;
INT16S key;
OS_EVENT *Fun_Semp;
OS_STK StartTaskStk[TASK_STK_SIZE];
OS_STK MyTaskStk[TASK_STK_SIZE];
OS_STK YouTaskStk[TASK_STK_SIZE];
void Fun(INT8U x,INT8U y);
void StartTask(void *data);
void MyTask(void *data);
void YouTask(void *data);
/******************************main**************************************/
void main(void)
{
Fun_Semp = OSSemCreate(1); //定义信号量
OSInit();
PC_DOSSaveReturn();
PC_VectSet(uCOS,OSCtxSw);
OSTaskCreate(StartTask,
(void*)0,
&StartTaskStk[TASK_STK_SIZE - 1],
0);
OSStart();
}
/**************************StartTask**************************************/
void StartTask(void *pdata)
{
#if OS_CRITICAL_METHOD ==3
OS_CPU_SR cpu_sr;
#endif
pdata = 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],
1);
OSTaskCreate(YouTask,
(void*)0,
&YouTaskStk[TASK_STK_SIZE-1],
2);
for(;;)
{
if(PC_GetKey(&key) == TRUE)
{
if(key == 0x1b)
{
PC_DOSReturn();
}
}
OSTimeDlyHMSM(0,0,3,0);
}
}
/****************************MyTask*******************************************/
void MyTask(void *pdata)
{
#if OS_CRITICAL_METHOD ==3
OS_CPU_SR cpu_sr;
#endif
pdata = pdata;
for(;;)
{
OSSemPend(Fun_Semp,0,&err);
PC_DispStr(0,++y,s1,DISP_BGND_BLACK+DISP_FGND_WHITE);
Fun(7,y); //调用FUN()
OSSemPost(Fun_Semp);
OSTimeDlyHMSM(0,0,1,0);
}
}
/*****************************YouTask*****************************************/
void YouTask(void *pdata)
{
#if OS_CRITICAL_METHOD ==3
OS_CPU_SR cpu_sr;
#endif
pdata = pdata;
for(;;)
{
OSSemPend(Fun_Semp,0,&err);
PC_DispStr(0,++y,s2,DISP_BGND_BLACK+DISP_FGND_WHITE);
Fun(7,y);
OSSemPost(Fun_Semp);
OSTimeDlyHMSM(0,0,2,0);
}
}
/*************************Fun*************************************************/
void Fun(INT8U x,INT8U y)
{
PC_DispStr(x,y,"diao yong Fun()",DISP_BGND_BLACK+DISP_FGND_WHITE);
}
/***********************************End***************************************/
- 学习UC/OS札记(-)信号量的使用
- uC/OS-II 学习笔记之:信号量、消息邮箱、消息队列之间的使用区别
- uC/OS-II 学习笔记之:信号量
- uC/OS-II 学习笔记:信号量
- uC/OS-II 学习笔记:信号量实验
- uC/OS-II的信号量及其操作
- uc/os-ii信号量的理解
- uc/os-iii学习笔记-资源管理(中断、信号、信号量、互斥信号量)
- uC/OS之信号量
- uc/os-ii信号量
- 学习札记--uC/OS-II处理临界区代码的三种方法小结
- 学习札记--uC/OS-II处理临界区代码的三种方法小结
- uc/os-iii学习笔记-任务同步(信号量、时间标志组)
- UC/OS-II的学习
- uc/os-ii互斥型信号量
- uc/os-ii信号量集
- uC/OS-III之信号量
- uC/OS 的中断 —— uC/OS学习笔记(三)
- Oracle Blob读写过程
- 几种读取属性文件的JAVA实现方式
- php优化方法
- VC6/VS2003编译器优化造成的bug
- [每天读一点英文:那些给我勇气的句子] A Turtle Who Taught Me Kindness
- 学习UC/OS札记(-)信号量的使用
- C语言的静态变量收藏
- 20091130_softskill
- C#附加SQL2005数据库详细代码
- java生产者消费者
- java异常处理机制
- 正则表达式
- 2009年IT两会获奖名单
- strut1.X和spring整合的二种方法