📄 main.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 + -