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

📄 ex1.c

📁 uC/OS-II在EP7312微处理器的移植源程序
💻 C
字号:
/**************************************************************************
*                                                                         *
*   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"
#include "consol.h"
#include "lcd.h"
#include "wait.h"
#include "keybd.h"
#include "menu.h"
#include "horse_run.h"
#include "beep_run.h"
#include "num_run.h"
#include "oscillograph.h"
#include "ad.h"
#include "dac.h"


/* ********************************************************************* */
/* Global definitions */


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

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

OS_STK           Task1Stk[TASK_STK_SIZE];             /* Task #1    task stack                         */
//OS_STK           Task2Stk[TASK_STK_SIZE];             /* Task #2    task stack                         */
//OS_STK           Task3Stk[TASK_STK_SIZE];             /* Task #3    task stack                         */
//OS_STK           Task4Stk[TASK_STK_SIZE];             /* Task #4    task stack             
//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;
extern unsigned int sine[120];

/* ********************************************************************* */
/* Local functions */


void Task1(void *data)
{
	char key = 0;

	init_lcd();
	generate_sine(2.5,3000);

	while ( 1 ) {
		/* display start menu */
		start_menu();

		key = keyscan();

		switch ( key ) {

		case '1':
		{
			horse_run();
			break;
		} /* case '1' */

		case '2':
		{
			num_run();
			break;
		} /* case '2' */

		case '3':
		{
			beep_run();

			break;
		} /* case '3' */

		case '4':
		{
			
			int i,j,currx,curry;
 			int currybak[70] = {0};
    			unsigned short adval,tmp;
    			j = 0;
			i = 0;
    			currx = 0;
			clear_lcd();

			while ( 1 ) {
				write_db(sine[j],DAC1);
        			if(++j == 40)
            				j = 0;
				 write_w(0x0,CHN1ADD);
        			while((read_b(CPLDSTAT) & ADINT));   

        			adval = read_db(DATAOLE);
        			adval = read_db(DATAOEN);
        			if(currx==70){
            				currx = 0;
            				clear_wave(currybak);
        			}
       			 	tmp = adval & 0xf00;
        			curry = tmp >> 8;  
        			currybak[i] = curry;        
        			plot_adw(currx,curry);
        			if(++i == 70)
            				i = 0;
        			currx++;
				
				/* wait for a while here */
				wait(100);
			
				key = keyscan();
				
				if ( key != 'x' ) break;
			} /* while (1) : inner */
			break;
		} 
		
		}/* switch ( key ) */
	}

}

void TaskStart (void *data)
{
        U8 i;
        data = data;                            /* Prevent compiler warning */

        CONSOL_Printf("uC/OS-II, The Real-Time Kernel ARM Ported version\n");
        //CONSOL_Printf("Jean J. Labrosse/ (Ported by) Michael Anburaj\n");
        CONSOL_Printf("EXAMPLE #1\n");
    
        FRMWRK_vStartTicker(OS_TICKS_PER_SEC);  /* The Tick timer is started much earlier */

        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 */
                //CONSOL_Printf("#%d",i);
                //OSTaskCreate(Task1,&TaskData[i],  &TaskStk[i][TASK_STK_SIZE - 1], i + 1);
        } 

        OSTaskCreate(Task1,(void *)0,  &Task1Stk[TASK_STK_SIZE - 1],  20);       

        while(1)

        {
                CONSOL_Printf("\n# Parameter1: No. Tasks  %d\n", OSTaskCtr);           /* Display #tasks running */

	       CONSOL_Printf("# Parameter2: CPU Usage in %% %d  %\n",OSCPUUsage);     /* Display CPU usage in % */
		
		i = CONSOL_Readc( );
		if (1 == i)
		{
			CONSOL_Printf( "uc/os is quit!");
			return;
		}

        	       //OSCtxSwCtr = 0;
          	//OSTimeDly(32768);
                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, 0, &TaskStartStk[TASK_STK_SIZE - 1], 0);
        //FRMWRK_vStartTicker(OS_TICKS_PER_SEC);  /* os_cfg.h */
        OSStart();                              /* Start multitasking                                       */
}


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

⌨️ 快捷键说明

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