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

📄 main.c

📁 uCOS-II for AT91M55800A完整实例
💻 C
字号:

/*
 * $Revision: 1.4 $
*/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "..\CPU\config.h"
#include "..\Main\t6963.h"
#include "..\uCOS270\ucos_ii.h"
#include "..\Timer\Timer.h"

#define  ClrWatchDog()  (__PIO_SODRB = WDI,__PIO_CODRB = WDI,__PIO_SODRB = WDI)

/* allocate memory for tasks' stacks */
//#ifdef SEMIHOSTED
//#define STACKSIZE       (SEMIHOSTED_STACK_NEEDS+64)
//#else

#define	STACKSIZE	512
#define N_TASKS         14      /* Number of identical tasks*/
//#endif
unsigned int Stack1[STACKSIZE];
unsigned int Stack2[STACKSIZE];
unsigned int Stack3[STACKSIZE];
unsigned int Stack4[STACKSIZE];
unsigned int Stack5[STACKSIZE];
unsigned int Stack6[STACKSIZE];
unsigned int Stack7[STACKSIZE];
unsigned int Stack8[STACKSIZE];

/* semaphores event control blocks */

OS_EVENT     *RandomSem;
unsigned char  err;

char Id1 = '1';
char Id2 = '2';
char Id3 = '3';
char Id4 = '4';
char Id5 = '5';
char Id6 = '6';
char Id7 = '7';
char Id8 = '8';

/*
 * Task running at the highest priority. 
 */
 
//------------------------------------------------------------------- 

void
 Task1(void *i)
{
    AT91StartTimer();
//    OSStatInit();


    for (;;) {
        OSSemPend(RandomSem, 0, &err);         /* Acquire semaphore to perform random numbers */
        OSStatInit();
        AT91LedSet(1);
	OSSemPost(RandomSem);                 /* Release semaphore */
        OSTimeDly(256);                       /* Delay 256 clock tick  */
    }
}

void
 Task2(void *i)
{
    for (;;) {
        OSSemPend(RandomSem, 0, &err);         /* Acquire semaphore to perform random numbers */
        AT91LedSet(2);        
        OSSemPost(RandomSem);                  /* Release semaphore */
        OSTimeDly(128);                          /* Delay 128 clock tick */
    }
}

void Task3(void *p_arg)
{
    for (;;) {
        OSSemPend(RandomSem, 0, &err);         /* Acquire semaphore to perform random numbers */
        AT91LedSet(4);        
        OSSemPost(RandomSem);                  /* Release semaphore */
        OSTimeDly(64);                          /* Delay 64 clock tick */
    }
}

void Task4(void *p_arg)
{
    for (;;) {
        OSSemPend(RandomSem, 0, &err);         /* Acquire semaphore to perform random numbers */
        AT91LedSet(8);        
        OSSemPost(RandomSem);                  /* Release semaphore */
        OSTimeDly(32);                          /* Delay 32 clock tick */
    }
}

void Task5(void *p_arg)
{
    for (;;) {
        OSSemPend(RandomSem, 0, &err);         /* Acquire semaphore to perform random numbers */
        AT91LedSet(16);        
        OSSemPost(RandomSem);                  /* Release semaphore */
        OSTimeDly(16);                          /* Delay 16 clock tick */
    }
}

void Task6(void *p_arg)
{
    for (;;) {
        OSSemPend(RandomSem, 0, &err);         /* Acquire semaphore to perform random numbers */
        AT91LedSet(32);        
        OSSemPost(RandomSem);                  /* Release semaphore */
        OSTimeDly(8);                          /* Delay 8 clock tick */
    }
}

void Task7(void *p_arg)
{
    for (;;) {
        OSSemPend(RandomSem, 0, &err);         /* Acquire semaphore to perform random numbers */
        AT91LedSet(64);        
        OSSemPost(RandomSem);                  /* Release semaphore */
        OSTimeDly(4);                          /* Delay 4 clock tick */
    }
}

void Task8(void *p_arg)
{
 
    for (;;) {
        OSSemPend(RandomSem, 0, &err);         /* Acquire semaphore to perform random numbers */
        AT91LedSet(128);        
        OSSemPost(RandomSem);                  /* Release semaphore */
        OSTimeDly(2);                          /* Delay 1 clock tick */
    }
}

//--------------------------------------------------------------------
void main(void)
{ 

    AT91LedSet(0);
    __disable_interrupt();
    AT91InitInterrupt();
    AT91InitTimer();
    fnLCMInit();
    cls();
    cursor(0,0);
    display_logo();
    cls();
    dprintf("        清平调         李白\n");    
    dprintf("一枝红艳露凝香,云雨巫山枉断肠.\n");
    dprintf("借问汉宫谁得似?可怜飞燕倚新妆.\n");
    dprintf("            Test Ok!\n");
       
    OSInit();

    RandomSem   = OSSemCreate(1);                    /* Random number semaphore */

    OSTaskCreate(Task1, (void *)&Id1, (void *)&Stack1[STACKSIZE - 1], 1);
    OSTaskCreate(Task2, (void *)&Id2, (void *)&Stack2[STACKSIZE - 1], 2);
    OSTaskCreate(Task3, (void *)&Id3, (void *)&Stack3[STACKSIZE - 1], 3);
    OSTaskCreate(Task4, (void *)&Id4, (void *)&Stack4[STACKSIZE - 1], 4);
    OSTaskCreate(Task5, (void *)&Id5, (void *)&Stack5[STACKSIZE - 1], 5);
    OSTaskCreate(Task6, (void *)&Id6, (void *)&Stack6[STACKSIZE - 1], 6);
    OSTaskCreate(Task7, (void *)&Id7, (void *)&Stack7[STACKSIZE - 1], 7);
    OSTaskCreate(Task8, (void *)&Id8, (void *)&Stack8[STACKSIZE - 1], 8);
   
    __enable_interrupt();

    OSStart();
}//main
//------------------------------------------

⌨️ 快捷键说明

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