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

📄 main.c

📁 ucosII在ARM7上的移植源代码
💻 C
字号:

#include "../SOURCE/includes.h"               
#include "../inc/44blib.h"
#include "..\inc\44b.h"
#include "../target/target.h"


#define	STACKSIZE	512

OS_STK StartTaskStk[STACKSIZE];//移植代码中的堆栈结构都按照"满减"顺序设计,在创建任务时的堆栈为初始&TaskStk[STACKSIZE]
OS_STK MyTaskStk[STACKSIZE];
OS_STK YouTaskStk[STACKSIZE];
OS_STK HerTaskStk[STACKSIZE];

char *s1="\nMyTask is Operating !";
char *s2="\nYouTask is Operating !";
char *s3="\nHerTask is Operating !";
INT8U err;

OS_FLAG_GRP *Sem_F;

void	StartTask(void *data);
void	MyTask(void *data);
void	YouTask(void *data);
void	HerTask(void *data);






int Main(int argc, char **argv)
{
	
	Port_Init();													//s3c44b0x的IO端口的配置及初始化
	Uart_Init(0,115200);                                            //串口的初始化
	Uart_Select(0);                                                 //使用UART0
    Uart_Printf("Hello!uCOS-II Systerm !\r\n");
    ARMTargetInit();                                                //初始化中断系统和定时器0
	OSInit();                                                       //初始化OS
	Sem_F=OSFlagCreate(0,&err);                                     //创建信号量集
	OSTaskCreate(StartTask,(void *)0,&StartTaskStk[STACKSIZE],0);   //创建起始任务
	OSStart();                                                      //运行任务
	return 0;
}


void	StartTask(void *pdata)
{
	pdata=pdata;
	ARMTargetStart();                                               //配置和打开中断,系统时钟开始运行
  	OSTaskCreate(MyTask,(void *)s1,&MyTaskStk[STACKSIZE],3);		//创建起任务
  	OSTaskCreate(YouTask,(void *)s2,&YouTaskStk[STACKSIZE],4);		//创建起任务
  	OSTaskCreate(HerTask,(void *)s3,&HerTaskStk[STACKSIZE],5);		//创建任务
  	do{
  	OSTaskDel(0);   												//删除此任务                                              
  	}while(1);
}

void  	MyTask(void *pdata)
{
  for(;;)
  {
   OSFlagPend(Sem_F,(OS_FLAGS)3,OS_FLAG_WAIT_SET_ALL,0,&err);       //请求信号量集的第0和第1位且都置1。
   Uart_Printf(pdata);
   OSTimeDlyHMSM(0,0,2,0);                                          //延时2秒
  }
}

void	YouTask(void *pdata)
{
 for(;;)
 {
  Uart_Printf(pdata);
  OSTimeDlyHMSM(0,0,8,0);                                          //延时8秒
  OSFlagPost(Sem_F,(OS_FLAGS)2,OS_FLAG_SET,&err);				   //发送信号量集。使信号量集的第1位置1
  OSTimeDlyHMSM(0,0,2,0);                                          //延时2秒
 }
}

void	HerTask(void *pdata)	
{
 	for(;;)
 	{
 	 Uart_Printf(pdata);
 	 OSFlagPost(Sem_F,(OS_FLAGS)1,OS_FLAG_SET,&err);              //发送信号量集。使信号量集的第0位置1
 	 OSTimeDlyHMSM(0,0,1,0);                                      //延时1秒
 	}
}	

⌨️ 快捷键说明

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