📄 ex1.c
字号:
#include "includes.h"
#define TASK_STK_SIZE 256 /* Size of each task's stacks (# of WORDs) */
#define N_TASKS 3 /* Number of identical tasks */
extern void StartTimer(void);
OS_EVENT *AckMbox;
OS_EVENT *TxMbox;
OS_STK TaskStk[N_TASKS][TASK_STK_SIZE]; /* Tasks stacks */
OS_STK TaskStartStk[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()
{
INIT_C54();
counter1= counter2 = counter3 = 0;
OSInit();
OSTaskCreate(TaskStart, (void *)&counter1, (void *)&TaskStartStk[TASK_STK_SIZE - 1], 0);
OSStart();
}
void TaskStart(void *data)
{
UBYTE x;
UBYTE y;
UBYTE err;
OS_ENTER_CRITICAL();
StartTimer(); /* install the C549 Timer */
OS_EXIT_CRITICAL();
OSTaskCreate(Task1, (void *)&counter2, (void *)&TaskStk[0][TASK_STK_SIZE - 1], 1);
OSTaskCreate(Task2, (void *)&counter3, (void *)&TaskStk[1][TASK_STK_SIZE - 1], 2);
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')
{
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);
OSTimeDly(5);
OSMboxPost(AckMbox, (void *)1);
(*(int *)data)++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -