📄 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 /* Number of identical tasks */
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);
void Task1(void *data); /* Function prototypes of tasks */
void Task2(void *data); /* Function prototypes of Startup task */
short counter1, counter2, counter3;
main()
{
counter1= counter2 = counter3 = 0;
Init_Timer();
OSInit();
OSTaskCreate(TaskStart, (void *)&counter1, (void *)&TaskStartStk[OS_DEF_TASK_STK_SIZE - 1], 4);
OSStart();
}
void TaskStart(void *data)
{
UBYTE x;
UBYTE y;
UBYTE err;
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); /* Create 2 message mailboxes */
TxMbox = OSMboxCreate((void*)0);
for (;;) {
(*(int *)data)++;
err++;
OSTimeDly(100); /* Delay 1 clock tick */
}
}
void Task1 (void *data)
{
UBYTE err;
char txmsg;
txmsg = 'A';
for (;;) {
while (txmsg <= 'Z')
{
puts("Post ");putchar(txmsg);putchar('\n');
OSMboxPost(TxMbox, (void *)&txmsg);
OSMboxPend(AckMbox, 0, &err);
txmsg++;
}
txmsg = 'A';
(*(int *)data)++;
err++;
}
}
void Task2(void *data)
{
char *rxmsg;
UBYTE err;
for (;;) {
rxmsg = (char *)OSMboxPend(TxMbox, 0, &err);
puts("Received ");putchar(*rxmsg);putchar('\n');
OSTimeDly(5);
OSMboxPost(AckMbox, (void *)1);
(*(int *)data)++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -