ucos-ii实例3 信号量控制LED

这是学ARM9和ADS1.2的一个很好的例程,这个例程简单易懂。
// 这个例程可以用开发板是的LED灯和仿真器来测试硬件的好坏,
// 还可以CACHE对程序运行速度的影响,测试设置FCLK的频率。
// LED test
//2004.10.25
//***************************************************

#include "config.h"


//=======================================
#include "app_cfg.h"
#include "Printf.h"
//=========================================
OS_STK MainTaskStk[MainTaskStkLengh];
OS_STK Task0Stk [Task0StkLengh];       // Define the Task0 stack
OS_STK Task1Stk [Task1StkLengh];       // Define the Task1 stack

OS_EVENT *semled;

int data = 0x60;

int Main(int argc, char **argv)
{

//初始化目标板
TargetInit();

//初始化uC/OS  
   OSInit ();
  
   //初始化系统时基
   OSTimeSet(0);

semled=OSSemCreate(1);
   //创建系统初始任务
   OSTaskCreate (MainTask,(void *)0, &MainTaskStk[MainTaskStkLengh - 1], MainTaskPrio);                          

OSStart ();

return 0;
}

void MainTask(void *pdata) //Main Task create taks0 and task1
{
  
   #if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU status register */
   OS_CPU_SR cpu_sr;
   #endif
   OS_ENTER_CRITICAL();

Timer0Init();//initial timer0 for ucos time tick
ISRInit();   //initial interrupt prio or enable or disable
//GUI_Init();
rGPBCON = 0x155555;
OS_EXIT_CRITICAL();

OSStatInit();
OSTaskCreate (Task0,(void *)0, &Task0Stk[Task0StkLengh - 1], Task0Prio);
OSTaskCreate (Task1,(void *)0, &Task1Stk[Task1StkLengh - 1], Task1Prio);


while(1)
{

    // GUI_DispString("hello word");
   OSTimeDly(OS_TICKS_PER_SEC);

}

}


void Task0 (void *pdata) //task for test
{

U8 err;

while(1){
OSSemPend(semled, 0, (U8* )&err);
   rGPBDAT=data;
OSTimeDlyHMSM(0,0,1,0);
// OSSemPost(semled);

}
}


void Task1 (void *pdata) //task for test
{
U8 err;
while(1){
   OSSemPend(semled, 0, (U8* )&err);
   rGPBDAT=~data;
   OSTimeDlyHMSM(0,0,1,0);
   OSSemPost(semled);

}


}

 

posted on 2013-03-08 12:11  AI_JJ  阅读(255)  评论(0)    收藏  举报

导航