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

📄 main.c

📁 对研究uc_os操作系统的非常有帮助
💻 C
字号:
#include "includes.h"
#include "Timer.h"


#define MAX_STK_SIZE  50

void Sys_init(void);
void timer_init(void);
void System_begin(void);

void TaskA(void* data);
void TaskB(void* data);
void TaskC(void* data);

void Main(void);

OS_STK TaskAStk[MAX_STK_SIZE+1];
OS_STK TaskBStk[MAX_STK_SIZE+1];
OS_STK TaskCStk[MAX_STK_SIZE+1];

OS_EVENT *sem;

void Main(void)
{
 //System_begin();
 OS_ENTER_CRITICAL();
 OSInit();
 
 sem=OSSemCreate(1);
 
 OSTaskCreateExt(TaskA,(void *)0,&TaskAStk[MAX_STK_SIZE],3,3,TaskAStk,50,(void *)0,OS_TASK_OPT_STK_CHK+OS_TASK_OPT_STK_CLR);
 OSTaskCreateExt(TaskB,(void *)0,&TaskBStk[MAX_STK_SIZE],4,4,TaskBStk,50,(void *)0,OS_TASK_OPT_STK_CHK+OS_TASK_OPT_STK_CLR);
 OSTaskCreateExt(TaskC,(void *)0,&TaskCStk[MAX_STK_SIZE],5,5,TaskCStk,50,(void *)0,OS_TASK_OPT_STK_CHK+OS_TASK_OPT_STK_CLR);
 
 OSStart();
}

void System_begin()
{
 rSYSCFG=CACHECFG;// Using 8KB Cache
 Port_Init();
 Uart_Init(0,115200);
 Led_Display(0xf);
 Uart_Select(0); //Select UART0
 Beep(0x1);
 Uart_Printf("\n\n*************************************************************************");
 Beep(0x0);
 Uart_Printf("\n\n*************************************************************************");
 Uart_Printf("\n                          OS_KERNEL : uC/OS-II                             ");
 Uart_Printf("\n                          The Real-Time Kernel                             ");
 Uart_Printf("\n                           Version 2.80                                    ");    
 Uart_Printf("\n                                                                           ");
 Uart_Printf("\n           (c) Copyright 1992-2005, Jean J. Labrosse, Weston, FL           ");
 Uart_Printf("\n                            All Rights Reserved                            ");
 Uart_Printf("\n             UART Config--COM:115.2kbps,8Bit,NP,UART0                      ");
 Uart_Printf("\n----------------Begin to Study Embedded System with UCOS---------------    ");
 Uart_Printf("\nuC/OS begin init........\n"); 
 Led_Display(0x0);  
}


void TaskA(void *data)
{
 INT8U errora;
 data=data;
 
 
 Sys_init();
 timer_init();
 
 
 for(;;)
 {
  OSSemPend(sem,0,&errora);
  
  OS_ENTER_CRITICAL();
  Uart_Printf("\nA");
  OS_EXIT_CRITICAL();
  
  OSSemPost(sem);
  OSTimeDly(2);
 } 
}

void TaskB(void *data)
{
 INT8U errora;
 data=data;
 
 for(;;)
 {
  OSSemPend(sem,0,&errora);
  
  OS_ENTER_CRITICAL();
  Uart_Printf("\nB");
  OS_EXIT_CRITICAL();
  
  OSSemPost(sem);
  OSTimeDly(2);
 }
}

void TaskC(void *data)
{
 INT8U errora;
 data = data;
 
 for(;;)
 {
  OSSemPend(sem,0,&errora);
  
  OS_ENTER_CRITICAL();
  Uart_Printf("\nC");
  OS_EXIT_CRITICAL();
  
  OSSemPost(sem);
  OSTimeDly(2); 
 }
}

⌨️ 快捷键说明

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