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

📄 test.c

📁 学习嵌入式arm的资料
💻 C
字号:
/*
*********************************************************************************************************
*                                                uC/OS-II
*                                          The Real-Time Kernel
*
*                           (c) Copyright 1992-2002, Jean J. Labrosse, Weston, FL
*                                           All Rights Reserved
*
*                                               EXAMPLE #1
*********************************************************************************************************
*/
#include  "config.h"
#include  "harder.h"
#include  "libvic.h"
#include   "libuart.h"


/*
*********************************************************************************************************
*                                               CONSTANTS
*********************************************************************************************************
*/

#define  TASK_STK_SIZE                  128      /* Size of each task's stacks (# of WORDs)            */

/*
*********************************************************************************************************
*                                               VARIABLES
*********************************************************************************************************
*/

OS_STK        TaskStartStk[TASK_STK_SIZE];
OS_STK        Task1Stk[TASK_STK_SIZE];
OS_STK        Task2Stk[TASK_STK_SIZE];
OS_STK        Task3Stk[TASK_STK_SIZE];
OS_STK        Task4Stk[TASK_STK_SIZE];
OS_STK        Task5Stk[TASK_STK_SIZE];

   
/*
*********************************************************************************************************
*                                           FUNCTION PROTOTYPES
*********************************************************************************************************
*/

        void  Task1(void *data);                       /* Function prototypes of tasks                  */
        void  Task2(void *data);                       /* Function prototypes of tasks                  */        
        void  Task3(void *data);                       /* Function prototypes of tasks                  */
        void  Task4(void *data);                       /* Function prototypes of tasks                  */        
        void  Task5(void *data);                       /* Function prototypes of tasks                  */
        void  TaskStart(void *data);                  /* Function prototypes of Startup task           */

/*$PAGE*/
/*
*********************************************************************************************************
*                                                MAIN
*********************************************************************************************************
*/
void Stop(void)
{
 	IODIR = 0xFF;
 	IOSET = 0xF0;
 	IOCLR = 0x0F;
 	while(1);

}

void TargetInit(void);
#define Tube (*((volatile unsigned long *) 0x0d800020))
int main (void)
{	
/* 	IODIR = 0xFF;
	IOSET = 0x0F;
	IOCLR = 0xF0;
	
	while(1);
 	__asm
 	{
 		MOV R0,#0x0d800020
		MOV R1,#0x30
 		STR R1,[R0]
 	}
 	Tube = 0x30;
 	//Tube = 0x33;
*/
	
    OSInit();    
    Beep(1);                                          /* Initialize uC/OS-II                      */
    OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 0);
    OSStart();                                             /* Start multitasking                       */
}

/*
*********************************************************************************************************
*                                              STARTUP TASK
*********************************************************************************************************
*/
void  TaskStart (void *pdata)
{
   pdata = pdata;                                         /* Prevent compiler warning                 */
   
   TargetInit();  
//   ComInit(COM1,115200);
   OSTaskCreate(Task1, (void *)0, &Task1Stk[TASK_STK_SIZE - 1], 1);
   OSTaskCreate(Task2, (void *)0, &Task2Stk[TASK_STK_SIZE - 1], 2);
   OSTaskCreate(Task3, (void *)0, &Task3Stk[TASK_STK_SIZE - 1], 3);
   OSTaskCreate(Task4, (void *)0, &Task4Stk[TASK_STK_SIZE - 1], 4);
   OSTaskCreate(Task5, (void *)0, &Task5Stk[TASK_STK_SIZE - 1], 5);
   OSTaskDel(0);      
}

void  Task1 (void *pdata)
{
   pdata = pdata;                                         /* Prevent compiler warning                 */
	//Stop();  
/*   SetPinMode(LED1,0,0);   
   SetPinMode(LED2,0,0);   
   SetPinMode(LED3,0,0);
   SetPinMode(LED4,0,0);
   SetPin(LED1);
   SetPin(LED2);
   SetPin(LED3);
   SetPin(LED4);
   for (;;)
     {      
      CommSendString(COM1,"\r\nTask1");
      OSTimeDlyHMSM(0, 0,1, 0);                         // Wait one second                         
      CplPin(LED1);     
      OSTimeDlyHMSM(0, 0,1, 0);                         // Wait one second                          
      CplPin(LED2);     
      OSTimeDlyHMSM(0, 0,1, 0);                         // Wait one second                         
      CplPin(LED3);
      OSTimeDlyHMSM(0, 0,1, 0);                        // Wait one second                         
      CplPin(LED4);      
    }    
*/
	IODIR = 0xFFFFFF;
	while(1)
	{
	IOSET = 0x1;
	OSTimeDlyHMSM(0,0,1,0);
	IOCLR = 0x1;
	OSTimeDlyHMSM(0,0,1,0);
	}
}


void  Task2 (void *pdata)
{
/*  
    int i=0;
      
   
    for (;;)
     {
       CommSendString(COM1,"\r\nTask2");                   
       if(i>=16)
        i=0;
       Display(i++);
       OSTimeDlyHMSM(0, 0,1,0);
     }        
*/
	while(1)
	{
		IOSET = 0x2;	
		OSTimeDlyHMSM(0, 0,2,0);
		IOCLR = 0x2;
		OSTimeDlyHMSM(0, 0,2,0);	
	}
}


void  Task3 (void *pdata)
{
    pdata = pdata;                                       /* Prevent compiler warning                 */
   
     for (;;)
     {      
       //ComPutChar(COM1,ComGetChar(COM1));
       IOSET = 0x4;	
		OSTimeDlyHMSM(0, 0,3,0);
		IOCLR = 0x4;
		OSTimeDlyHMSM(0, 0,3,0);                         /* Wait one second                          */ 
    }    
    
}

void  Task4 (void *pdata)
{
 
     pdata = pdata;      
     for (;;)
     {
       //CommSendString(COM1,"\r\nTask5");
       OSTimeDlyHMSM(0, 0,1,0);                                            
     }       
}

void  Task5 (void *pdata)
{
                              
    pdata = pdata; 
    
    for (;;)
    {          
       //CommSendString(COM1,"\r\nTask5");
       OSTimeDlyHMSM(0, 0,1,0);     
    }     
}




   


⌨️ 快捷键说明

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