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

📄 test.c.bak

📁 s3c44b0x上实现的ucos+tftp
💻 BAK
字号:
/**************************************************************************
*                                                                         *
*   PROJECT     : ARM port for UCOS-II                                    *
*                                                                         *
*   MODULE      : EX1.c                                                   *
*                                                                         *
*   AUTHOR      : Michael Anburaj                                         *
*                 URL  : http://geocities.com/michaelanburaj/             *
*                 EMAIL: michaelanburaj@hotmail.com                       *
*                                                                         *
*   PROCESSOR   : Any processor                                           *
*                                                                         *
*   IDE         : Any IDE                                                 *
*                                                                         *
*   DESCRIPTION :                                                         *
*   This is a sample code to test UCOS-II.                                *
*                                                                         *
**************************************************************************/


#include "includes.h"


struct __FILE { int handle;   /* Add whatever you need here */};
FILE __stdout;
/* ********************************************************************* */
/* Global definitions */


/* ********************************************************************* */
/* File local definitions */

#define  TASK_STK_SIZE 256                      /* Size of each task's stacks (# of WORDs) */
#define  NO_TASKS           10                  /* Number of identical tasks */

OS_STK   TaskStk[NO_TASKS][TASK_STK_SIZE];      /* Tasks stacks */
OS_STK   TaskStartStk[TASK_STK_SIZE];
char     TaskData[NO_TASKS];                    /* Parameters to pass to each task */
OS_EVENT *RandomSem;


/* ********************************************************************* */
/* Local functions */
void tick_hook(void)
{
	rI_ISPC = (unsigned int)1 << 8;
}

int fputc(int ch, FILE *f)
{
    /* Place your implementation of fputc here     */
    /* e.g. write a character to a UART, or to the */
    /* debugger console with SWI WriteC            */

    char tempch = ch;
    Uart_SendByte(tempch);
    return ch;
}

void demo_printf(void)
{
  Uart_Printf("Hello World\n");
}

void demo_sprintf(void)
{
  int x;
  char buf[20];

  for (x=1; x<=5; x++)
  {
    sprintf(buf, "Hello Again %d\n", x);
    printf("%s", buf);
  }
}


void Task (void *data)
{
        U8 err;

        while(1)
        {
                //OSSemPend(RandomSem, 0, &err);  /* Acquire semaphore to perform random numbers */
                //OSSemPost(RandomSem);           /* Release semaphore */
                Uart_SendByte(*(char *)data); /* Display the task number on the screen */
                demo_printf();
                OSTimeDly(5);                   /* Delay 5 clock tick */
        }
}

void TaskStart (void *data)
{
        U8 i;
        char key;

        data = data;                            /* Prevent compiler warning */

        Uart_Printf("uC/OS-II, The Real-Time Kernel ARM Ported version\n");
        Uart_Printf("Jean J. Labrosse/ (Ported by) Michael Anburaj\n");
        Uart_Printf("EXAMPLE #1\n");

        Uart_Printf("Determining  CPU's capacity ...\n");
        FRMWRK_vStartTicker(OS_TICKS_PER_SEC);  /* The Tick timer is started much earlier */
        Uart_Printf("FRMWRK_vStartTicker FRMWRK_vStartTicker\n");

        //OSStatInit();                           /* Initialize uC/OS-II's statistics */

        for (i = 0; i < NO_TASKS; i++)
        {                                       /* Create NO_TASKS identical tasks */
                TaskData[i] = '0' + i;          /* Each task will display its own letter */
                Uart_Printf("#%d",i);
                OSTaskCreate(Task, (void *)&TaskData[i], (void *)&TaskStk[i][TASK_STK_SIZE - 1], i + 1);
        }

        Uart_Printf("\n# Parameter1: No. Tasks\n");
        Uart_Printf("# Parameter2: CPU Usage in %%\n");
        Uart_Printf("# Parameter3: No. Task switches/sec\n");
        Uart_Printf("<-PRESS 'ESC' TO QUIT->\n");
        while(1)
        {
                //Uart_Printf(" %d", OSTaskCtr);    /* Display #tasks running */
                //Uart_Printf(" %d", OSCPUUsage);   /* Display CPU usage in % */
                //Uart_Printf(" %d\n", OSCtxSwCtr); /* Display #context switches per second */
                //OSCtxSwCtr = 0;
            	Uart_Printf("TaskStart ...\n");
               

                OSTimeDlyHMSM(0, 0, 1, 0);      /* Wait one second */
        }
}


/* ********************************************************************* */
/* Global functions */

void APP_vMain (void)
{
        OSInit();                               /* Initialize uC/OS-II                                      */
        RandomSem = OSSemCreate(1);             /* Random number semaphore                              */
        OSTaskCreate(TaskStart, (void *)0, (void *)&TaskStartStk[TASK_STK_SIZE - 1], 0);
        //FRMWRK_vStartTicker(OS_TICKS_PER_SEC);  /* os_cfg.h */
        OSStart();                              /* Start multitasking                                       */
}


/* ********************************************************************* */




static void Timer5Interrupt()
{
        rI_ISPC=BIT_TIMER5;                  // Clear pending bit -- Watchdog timer
        OSTimeTick();
}


void C_IRQHandler(void)
{
        U32 temp,i;
        temp=rI_ISPR;
        if(temp==0) return;
        for(i=0;i<26;i++){
        	if(temp&0x1==1){
        		break;
        	}
        	else{
        		temp=temp>>1;
        	}
        }
		if(i==26){
        	return;
        }
        temp=i<<2;
        ((void(*)(void))(*((U32 *)(_ISR_STARTADDRESS+0x20+temp))))();
}

 
void Main(void)
{
        rSYSCFG=CACHECFG;   // Using 8KB Cache//
    	Port_Init();
   	 	Uart_Init(0,57600);
    	Delay(10);
    	Uart_Select(0); //Select UART0
    	Led_Display(0x07);
     	//pISR_IRQ = (U32)UCOS_IRQHandler;        
        APP_vMain();
}

⌨️ 快捷键说明

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