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 + -
显示快捷键?