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

📄 main.c

📁 ucos2完整的工程文件
💻 C
字号:
/*
 * File:        main.c
 *
 * uC/OS Real-time multitasking kernel for the ARM processor.
 *
 * This program is an example of using semaphore to
 * implement task rendevous.
 *
 * Created by Marco Graziano (marcog@crl.com).
 *
 */

#include	"includes.h"               /* uC/OS interface */

/* allocate memory for tasks' stacks */
#define	STACKSIZE	512
OS_STK Stack1[STACKSIZE];
OS_STK Stack2[STACKSIZE];
OS_STK Stack3[STACKSIZE];

/* semaphores event control blocks */
//OS_EVENT *Sem1;
//OS_EVENT *Sem2;
//OS_EVENT *Sem3;
/*
 * Task running at the highest priority. 
 */
void
 Task1(void *i)
{
	
	ARMTargetStart();
    for (;;)
    {
        /* wait for the semaphore  */
        //OSSemPend(Sem1, 0, &Reply);

        uHALr_printf("\nTask1 running");
        //Uart_Printf("1+");

        /* wait a short while */

			LED0(1);
			OSTimeDly(500);
			LED0(0);
			OSTimeDly(500);
			uHALr_printf("\nTask1 exit");

		//Uart_Printf("1-");

        /* signal the semaphore */
        //OSSemPost(Sem1);
    }
}

void
 Task2(void *i)
{

    for (;;)
    {
     

        uHALr_printf("\nTask2 running");

        /* wait a short while */

			LED1(1);
			OSTimeDly(1000);
			LED1(0);
			OSTimeDly(1000);
			uHALr_printf("\nTask2 rerun");

    }
}

void
 Task3(void *i)
{

    for (;;)
    {
        uHALr_printf("\nTask3 running");

        /* wait a short while */

			LED2(1);
			OSTimeDly(2000);
			LED2(0);
			OSTimeDly(2000);

        uHALr_printf("\nTask3 exit");
    }
}

/*
 * Main function.
 */
void Main(void)
{
	
    char Id1 = '1';
    char Id2 = '2';
    char Id3 = '3';

	Port_Init();
	Uart_Init(0,115200);
	
    Delay(1000);
    Uart_Select(0); //Select UART0
	uHALr_printf("\nstarting ucos!!\n\n") ;
	//Uart_Printf("Uc-OS ii will run at once!");
	
    /* do target (uHAL based ARM system) initialisation */
    ARMTargetInit();//包括禁止中断

    /* needed by uC/OS */
    OSInit();

    OSTimeSet(0);
    /* 
     * create the semaphores
     */
    //Sem1 = OSSemCreate(1);
    //Sem2 = OSSemCreate(1);
	//Sem3 = OSSemCreate(1);
    /* 
     * create the tasks in uC/OS and assign decreasing
     * priority to them 
     */
    OSTaskCreate(Task1, (void *)&Id1, &Stack1[STACKSIZE - 1], 1);
    OSTaskCreate(Task2, (void *)&Id2, &Stack2[STACKSIZE - 1], 2);
    OSTaskCreate(Task3, (void *)&Id3, &Stack3[STACKSIZE - 1], 3);
    /* Start the (uHAL based ARM system) system running */
    //包括打开定时器0中断,应该是这里出错

    /* start the game */
    OSStart();

    /* never reached */
}                               /* main */

⌨️ 快捷键说明

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