📄 main.c
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -