main.c
来自「KEIL上实现UCOS移植的源代码程序」· C语言 代码 · 共 190 行
C
190 行
/****************************************Copyright (c)**************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: main.c
** Last modified Date: 2004-09-16
** Last Version: 1.0
** Descriptions: The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by: Chenmingji
** Created date: 2004-09-16
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
** mcu123.com add keil
********************************************************************************************************/
#include "config.h"
#include "stdlib.h"
#define TaskStkLengh 64 //Define the Task0 stack length 定义用户任务0的堆栈长度
OS_STK TaskStartStk [TaskStkLengh]; //Define the Task0 stack 定义用户任务0的堆栈
OS_STK Task1Stk [TaskStkLengh];
OS_STK Task2Stk [TaskStkLengh];
OS_STK Task3Stk [TaskStkLengh];
OS_EVENT *Uart0ReviceMbox;
void TaskStart(void *pdata); //Task0 任务0
void Task1(void *pdata);
void Task2(void *pdata);
void TaskUart0Revice(void *pdata);
uint8 const SEND_STRING[]="HELLO WORLD!\n";
void PC_DispChar(uint8 *cp)
{
OS_ENTER_CRITICAL();
UART0Putch(0xff);
UART0Putch(*cp++);
UART0Putch(*cp++);
UART0Putch(*cp++);
UART0Putch(*cp++);
OS_EXIT_CRITICAL();
}
int main (void)
{
OSInit ();
//OSTaskCreate (Task0,(void *)0, &TaskStk[TaskStkLengh - 1], 2);
OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TaskStkLengh- 1], 0);
OSStart ();
return 0;
}
/*********************************************************************************************************
** Task0 任务0
********************************************************************************************************/
void TaskStart(void *pdata)
{
pdata = pdata;
TargetInit ();
//InitialiseUART0(9600);
OSTaskCreate(Task1, (void *)0, &Task1Stk[TaskStkLengh - 1], 1);
//OSTaskCreate(Task2, (void *)0, &Task2Stk[TaskStkLengh - 1], 2);
OSTaskDel(0);
//while (1)
//{
// OSTimeDly(10);
//}
}
//void Task1(void *pdata)
//{
//pdata=pdata;
// IO0DIR = 0xFFFFFF;
// while(1)
// {
// IO0SET = 0x4;
// OSTimeDlyHMSM(0,0,2,0);
/// IO0CLR = 0x4;
// OSTimeDlyHMSM(0,0,2,0);
// }
//}
uint8 const ShowTable[11] = {
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x00};
// 0 1 2 3 4 5 6 7 8 9
void Task1(void *pdata)
{
//UART0_SendStr(SEND_STRING);
//OSTimeDlyHMSM(0,0,4,0);
// while(1)
// {
//OSTimeDly(10);
// UART0_SendByte(UART0_RecvByte());
// }
uint8 *cp;
uint8 err;
pdata = pdata; /* 避免编译警告 */
Uart0ReviceMbox = OSMboxCreate(NULL); /* 建立邮箱 */
if (Uart0ReviceMbox == NULL)
{
while (1);
}
OSTaskCreate(TaskUart0Revice, (void *)0,
&Task3Stk[TaskStkLengh - 1], 5); /* 创建任务 */
//TargetInit(); /* 目标板初始化 */
for (;;)
{
cp = (uint8 *)OSMboxPend(Uart0ReviceMbox, 0, &err); /* 接收数据 */
//if (cp[0] == 0x80)
// { /* led显示 */
// cp[2] = ShowTable[cp[2]];
// }
// else
// { /* 屏幕显示 */
// cp[2] = cp[2] +'0';
// }
PC_DispChar(cp); /* 显示接收到的数据 */
}
}
/*********************************************************************************************************
** 函数名称: TaskUart0Revice
** 功能描述: μCOS-II的任务
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块:
**
** 作 者: 陈明计
** 日 期: 2003年7月1日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void TaskUart0Revice(void *pdata)
{
uint8 *cp;
uint8 Buf[4], temp, i;
pdata = pdata; /* 避免编译警告 */
for (;;)
{
//err:
cp = Buf;
//while (UART0Getch() != 'a'); /* 接收数据头 */
for (i = 0; i < 4; i++)
{
temp = UART0Getch();
//if (temp == 'a')
// {
// goto err;
//}
*cp++ = temp;
}
OSMboxPost(Uart0ReviceMbox, (void *)Buf);
}
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?