⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.c

📁 一个UCOS操作系统在W77E58单片机上的移植实例
💻 C
字号:
/*
*********************************************************************************************************
*                                               uC/OS-II
*                                         The Real-Time Kernel
*
*                                             Author:陈是知
*                                          All Rights Reserved
*                                                 beta1
*                                            高速串口收发演示
*********************************************************************************************************
*/

#include <includes.h>
/*
*********************************************************************************************************
*                                              CONSTANTS
*********************************************************************************************************
*/

#define          TASKSTART_ID        4                /* 任务的ID                                      */


#define          TASKSTART_PRIO      4                /* 任务的优先级                                  */


/*
*********************************************************************************************************
*                                         LOCAL GLOBAL VARIABLES
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                              VARIABLES
*********************************************************************************************************
*/
OS_STK        TaskStartStk[TASK_STK_SIZE];             /* 声明启动任务堆栈                              */

/*
*********************************************************************************************************
*                                         FUNCTION PROTOTYPESZ
*********************************************************************************************************
*/
void  TaskStart(void *cszdata) reentrant;              /* 声明任务原型                                   */


/*
*********************************************************************************************************
*                                                  MAIN
*********************************************************************************************************
*/
void main(void)
{  
    OS_STK *ptos;
    OS_STK *pbos;
    INT32U  size;

    OSInit();                                         /* 初始化uC/OS-II                                 */
    InitTimer0();                                     /* 初始化定时器0                                  */
    CommInit();                                       /* 初始化串口                                     */

    ptos        = &TaskStartStk[0];                   /* 51的堆栈是从下向上递增的,所以栈顶为最低地址   */     
    pbos        = &TaskStartStk[TASK_STK_SIZE - 1];
    size        = TASK_STK_SIZE;
                                                      /* 建立TaskStart任务                              */
    OSTaskCreateExt(TaskStart,                                               
                   (void *)0,   
                   ptos,
                   TASKSTART_PRIO,
                   TASKSTART_ID,
                   pbos,
                   size,
                   (void *)0,
                   OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);

    OSStart();                                        /* 开始执行                                       */
}

/*
*********************************************************************************************************
*                                               STARTUP TASK
*********************************************************************************************************
*/
void  TaskStart (void *cszdata) reentrant
{  
    INT8U ch;
	INT8U err;
    cszdata = cszdata;                                     /* 防止编译警告                              */
    
    
    
    
    
    ET0=1;	   
/*在系统调用OSInit()时会自动创建一个优先级最低的系统任务,创建过程中会调用OS_EXIT_CRITICAL()打开EA。*/      
	                 /*注意!在最高优先级任务循环前打开定时器中断,以满足在OSStart()前不产生中断的要求。*/
                     /*切记将ET0=1;放在最高优先级任务里,这样ET0=1总能被第一个执行。                    */
					 /*若在InitTimer0()里打开T0中断,则违反了在OSStart()前不产生中断的要求。            */

    for(;;)
    {  
	 ch  = CommGetChar(&err);
	 if(err==COMM_NO_ERR)
     CommPutChar(ch); 
     //OSTimeDly(OS_TICKS_PER_SEC);                           /* 延时一秒                                 */   
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -