📄 ex1.c
字号:
/*********************************************************************************************************
** Small RTOS
** The Real-Time Kernel
** (c) Copyright 2002-2003, chenmingji
** All Rights Reserved
** V1.50.0
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: ext1.c
**创 建 人: 陈明计
**最后修改日期: 2004年8月8日
**描 述: ext1源代码。
**
********************************************************************************************************/
#include "includes.h"
void TaskA(void *Pdata);
void TaskB(void *Pdata);
void TaskC(void *Pdata);
void TaskD(void *Pdata);
OS_STK TaskStk[3][OS_TASK_STK_SIZE];
int main(void)
{
OSInit();
OSTaskStkSize=OS_TASK_STK_SIZE;
OSTaskStkSizeHard=OS_TASK_STK_SIZE_HARD;
OSSetRoundTick(6,2);
OSTaskCreate(TaskA, NULL, &(TaskStk[0][OSTaskStkSize -1]), 4, 0, OSTaskStkSize, 0, 0);
_SEI(); /* 重要: CPU进入休眠之前必须开中断 */
while(1)
{
_SLEEP(); /* CPU进入休眠状态 */
}
}
void TaskA(void *Pdata)
{
uint8 *p;
uint8 c;
Pdata = Pdata;
TargetInit();
OSTaskCreate(TaskB, NULL, &(TaskStk[1][OSTaskStkSize -1]), 5, 1, OSTaskStkSize, 0, 0);
/* 创建任务TaskB 处于就绪状态 */
OSTaskCreate(TaskC, NULL, &(TaskStk[2][OSTaskStkSize -1]), 6, 2, OSTaskStkSize, 0, 0);
/* 创建任务TaskC 处于就绪状态 */
c = '4'; /* 初始化发送消息的内容 */
while (1)
{
OSMsgPost(2, &c); /* 向TaskID=2的任务(TaskC)发送消息 */
/* 消息内容为: 字符型变量 c 的地址 */
/* TaskC 任务信息 得到消息位 置位 */
p = (uint8 *)OSMsgBackPend(0, &c); /* 调整当前任务为等待消息回应状态(OS_STAT_MSG_BACK) */
/* 并从对应的优先级链表中删除 */
/* 任务自己放弃CPU 程序切换到优先级最高的就绪任务 */
/* 当任务调度再次执行TaskA时 */
/* CPU将从该函数中OSSched()程序后开始执行 */
/* 返回值p为得到的消息 *p=6(0x1DE) */
c = *p; /* 更新发送消息的内容 */
}
}
void TaskB(void *Pdata)
{
uint8 *p;
uint8 c;
Pdata = Pdata;
c = '5';
while (1)
{
OSMsgPost(2, &c);
p = (uint8 *)OSMsgBackPend(0, &c);
c = *p;
}
}
void TaskC(void *Pdata)
{
uint8 *p;
TASK_ID TaskId;
uint8 c, err;
Pdata = Pdata;
c = '6';
while (1)
{
p = (uint8 *)OSMsgPend(0, &TaskId, &err); /* 得到消息链表中一个消息 先进先出 */
/* 并将消息指针指向下一个将接受的消息 */
/* TaskId返回该消息的发送任务 */
/* err返回操作是否成功 */
err = *p;
OSMsgBackPost(TaskId, &c); /* 任务TaskC向任务TaskId反馈消息 */
}
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -