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

📄 ex1.c

📁 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 "beep.h"
#include "lcd.h"
#include "color.h"
#include "graphic.h"
#include "character.h"



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


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

#define  TASK_STK_SIZE 256                      /* Size of each task's stacks (# of WORDs) */
#define  NO_TASKS           2                  /* 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;


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

void Task1(void *data)
{
	int interval = 50;
	while(1)
	{
	beep_on();
	wait(interval);
	beep_off();
	OSTimeDly(100);
	}
}

void  Task2 (void *data)
{
    data = data;
    for (;;) {
	clear_local_lcd(20,8,1);
	display_string(20, 8, "|",  GREEN);
        	OSTimeDly(200);
        	clear_local_lcd(20,8,1);
	display_string(20, 8, "\\", GREEN);
        	OSTimeDly(200);
	clear_local_lcd(20,8,1);
        	display_string(20, 8, "-",  GREEN);
        	OSTimeDly(200);
	clear_local_lcd(20,8,1);
        	display_string(20, 8, "/",  GREEN);
        	OSTimeDly(200);
    }
}
void TaskStart (void *data)
{
	
        U8 i;
        INT16U j,k;

        char  s[10];
        char str0[] = "uC/OS-II, The Real-Time Kernel";
        char str1[] = "sy and stam";
        char str2[] = "EXAMPLE #1";
        char str3[] = "Task         ";
        char str4[] = "------------- ";
        char str5[] = "TaskStart():";
        //char str6[] = "TaskClk()  :";
        char str7[] = "Task1()    :";
        char str10[] = "Task2()    :";
        char str8[] = "<-PRESS 'ANYKEY' TO QUIT->";
        char str9[] = "#Tasks:             CPU Usage:   %";
        //char str10[] = "#Task switch/sec: ";
        data = data;                            /* Prevent compiler warning */

        init_lcd();

        display_string(5,  0, str0, GREEN);
        display_string(15,  1, str1, GREEN);
        display_string(15,  2, str2, GREEN);
        display_string( 0,  3, str3, GREEN);
        display_string( 0, 4, str4, GREEN);
        display_string( 0, 5, str5, GREEN);
        //display_string( 0, 6, str6, GREEN);
        display_string( 0, 6, str7, GREEN);
        display_string(0, 14, str8, GREEN);
        display_string(0, 7, str10, GREEN);

	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);       
        OSTaskCreate(Task2,(void *)0,  &Task2Stk[TASK_STK_SIZE - 1],  21);       
        

        display_string( 0, 10, str9, GREEN);
        //display_string( 0, 9, str10, GREEN);

        while(1)

        {

		OSCtxSwCtr = 0;
		CONSOL_Printf("# Parameter2: CPU Usage in %% %d  %\n",OSCPUUsage);
 
		j = sprintf(s,"%d",OSCPUUsage);
		clear_local_lcd(30,10,j);
		display_string(30,  10, s, GREEN);
		k = sprintf(s,"%d",OSTaskCtr);
		clear_local_lcd(10,10,k);
		display_string(10,  10, s, GREEN);

		i = CONSOL_Readc( );
		if (1 == i)
		{
			CONSOL_Printf( "uc/os is quit!");
			beep_off();
			return;
		}
          	//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], 12);
        //FRMWRK_vStartTicker(OS_TICKS_PER_SEC);  /* os_cfg.h */
        OSStart();                              /* Start multitasking                                       */
}


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

⌨️ 快捷键说明

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