📄 main.c
字号:
#include <includes.h>
#define MAX_STK_SIZE 64
extern void serial_initial(void);
void TaskStartyya(void *yydata) reentrant;
void TaskStartyyb(void *yydata) reentrant;
void TaskStartyyc(void *yydata) reentrant;
OS_STK TaskStartStkyya[MAX_STK_SIZE+1];//注意:我在ASM文件中设置?STACK空间为40H即64,不要超出范围。
OS_STK TaskStartStkyyb[MAX_STK_SIZE+1];//用户栈多一个字节存长度
OS_STK TaskStartStkyyc[MAX_STK_SIZE+1];
void *MessageStorage[2];
OS_EVENT *Uart0ReviceMbox;
INT8U err,i;
INT8U *cp,*Buf;
INT8U *o,*t,*th,*f;
void main(void)
{
o="one";
t="two";
th="three";
f="four";
OSInit();
serial_initial();
InitTimer0();
Uart0ReviceMbox = OSQCreate(MessageStorage,2);
OSTaskCreate(TaskStartyya, (void *)0, &TaskStartStkyya[0],2);
OSTaskCreate(TaskStartyyb, (void *)0, &TaskStartStkyyb[0],3);
OSTaskCreate(TaskStartyyc, (void *)0, &TaskStartStkyyc[0],4);
OSStart();
}
void TaskStartyya(void *yydata) reentrant
{
yydata=yydata;
for(;;){
cp = (INT8U *)OSQPend(Uart0ReviceMbox, 80, &err); /* 接收数据 */
if(cp==o) {
printf("one\n");
}
else if(cp==t) printf("two\n");
else if (cp==th) printf("three\n");
else if(cp==f) printf("four\n");
else printf("wait timeout\n");
}
}
void TaskStartyyb(void *yydata) reentrant
{
yydata=yydata;
for(;;){
i=P0;
switch(i)
{
case 1: Buf="one";break;
case 2: Buf="two";break;
case 4: Buf="three";break;
case 8: Buf="four";break;
default: Buf="error";break;
}
if((Buf==o)||(Buf==t)||(Buf==th)||(Buf==f)) OSQPost(Uart0ReviceMbox, (void *)Buf);
//OSTimeDly(2*OS_TICKS_PER_SEC);
}
}
void TaskStartyyc(void *yydata) reentrant
{
yydata=yydata;
for(;;){
printf("t3.\n");
//OSTimeDly(3*OS_TICKS_PER_SEC);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -