#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()

本文通过一个实例展示了在UC/OS操作系统中如何创建和使用信号量进行任务同步。`StartTask`创建了两个任务`MyTask`和`YouTask`,它们通过信号量`Fun_Semp`实现交替显示字符串。`MyTask`每1秒显示一次`s1`,而`YouTask`每2秒显示一次`s2`,在每次显示前都会获取信号量,在显示后释放信号量,确保了任务间的互斥访问。
最低0.47元/天 解锁文章
1676

被折叠的 条评论
为什么被折叠?



