main.c
来自「此代码是ucos-II在凌阳61单片机上的移植」· C语言 代码 · 共 110 行
C
110 行
#include "includes.h"
#include <spce061a.h>
#define MAX_STK_SIZE 50 //堆栈字数50个
void delay();
void SerialInit(void);
void Output();
void TaskA(void* data);
void TaskB(void* data);
void TaskC(void* data);
OS_STK TaskAStk[MAX_STK_SIZE+1];
OS_STK TaskBStk[MAX_STK_SIZE+1];
OS_STK TaskCStk[MAX_STK_SIZE+1];
char StringA[10]="Task A\n\t";
char StringB[10]="Task B\n\t";
char StringC[10]="Task C\n\t";
OS_EVENT* sem;
int main(void)
{
*P_TimeBase_Setup = C_TMB1_64Hz;
*P_INT_Ctrl = C_IRQ6_TMB1;
OSInit();
// chip initial here
sem=OSSemCreate(1);
SerialInit();
OSTaskCreate(TaskA,(void *)0,TaskAStk,2); //任务堆栈向上增长
OSTaskCreate(TaskB,(void *)0,TaskBStk,3);
OSTaskCreate(TaskC,(void *)0,TaskCStk,4);
OSStart();
return 0; //永远不会返回0
}
void TaskA(void* data)
{
INT8U erra;
OSTickISR();
for(;;)
{
//Output(StringA,7);
OSSemPend(sem,0,&erra);
// Output(StringA,8);
*P_IOA_Attrib=0xffff;
*P_IOA_Dir=0xffff;
*P_IOA_Data=0xff00;
OSSemPost(sem);
OSTimeDly(100*OS_TICKS_PER_SEC);
}
}
void TaskB(void* data)
{
INT8U errb;
for(;;)
{
OSSemPend(sem,0,&errb);
// Output(StringB,8);
OSSemPost(sem);
*P_IOA_Data=0x0000;
OSTimeDly(100*OS_TICKS_PER_SEC);
}
}
void TaskC(void* data)
{
INT8U errc;
for(;;)
{
OSSemPend(sem,0,&errc);
// Output(StringC,8);
OSSemPost(sem);
*P_IOA_Data=0xf000;
OSTimeDly(100*OS_TICKS_PER_SEC);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?