📄 ex1.c
字号:
/*
*********************************************************************************************************
* uC/OS-II
* The Real-Time Kernel
*
* (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
* All Rights Reserved
*
* Test codes for TMS320C5402
*
* File : EX1.C
* By : Zhang Zhenhua
*********************************************************************************************************
*/
#include "includes.h"
#include <stdio.h>
#define N_TASKS 2
OS_EVENT * AckMbox;
OS_EVENT * TxMbox;
OS_STK TaskStk[N_TASKS][OS_DEF_TASK_STK_SIZE]; /* Tasks stacks */
OS_STK TaskStartStk[OS_DEF_TASK_STK_SIZE];
void TaskStart(void *data); /* Function prototypes of Startup task */
void Task1(void *data); /* Function prototypes of tasks */
void Task2(void *data);
short counter1, counter2, counter3;
void main()
+{
counter1=counter2=counter3=0;
Init_Timer(); //定时器初始化
OSInit(); //ucos初始化
OSTaskCreate(TaskStart,(void *)&counter1,(void *)&TaskStartStk[OS_DEF_TASK_STK_SIZE - 1], 1);
OSStart();
}
void TaskStart(void *data)
{ UBYTE err;
data=data;
Start_Timer();
OSTaskCreate(Task1, (void *)&counter2, (void *)&TaskStk[0][OS_DEF_TASK_STK_SIZE - 1], 5);
OSTaskCreate(Task2, (void *)&counter3, (void *)&TaskStk[1][OS_DEF_TASK_STK_SIZE - 1], 6);
AckMbox = OSMboxCreate((void*)0); //建立油箱机制
TxMbox = OSMboxCreate((void*)0);
for (;;)
{puts("11111");
OSTimeDly(10);
}
}
void Task1 (void *data)
{
UBYTE err;
char txmsg;
data=data;
txmsg = 'A';
for (;;) {
while (txmsg <= 'Z')
{
puts("Post ");putchar(txmsg);putchar('\n');
OSMboxPost(TxMbox, (void *)&txmsg);
OSMboxPend(AckMbox, 0, &err);
txmsg++;
}
txmsg = 'A';
}
}
void Task2(void *data)
{
char *rxmsg;
UBYTE err;
data=data;
for (;;) {
rxmsg = (char *)OSMboxPend(TxMbox, 0, &err); //获得对资源的访问权,这里油箱作为二值信号亮
puts("Received ");putchar(*rxmsg);putchar('\n');
OSTimeDly(0.1); //这里时间设得很小是为了防止从第二次以后任务1给任务2发消息但任务2还在挂起
OSMboxPost(AckMbox, (void *)1); //释放对资源的访问权
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -