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

📄 main8.c

📁 Bycore是一个嵌入式操作系统内核。Bycore包括内存管理、任务管理、中断管理、任务互斥、同步与通信管理等功能。Bycore全部由C语言完成
💻 C
📖 第 1 页 / 共 5 页
字号:
#include "cpu.h"
#include "regdef.h"
#include "drivers\uart.h"
#include "include\core.h"
#include "include\pipe.h"
#include "include\mailbox.h"
#include "include\mem.h"


#define STACK_SIZE 4096
#define SAME_PRIO 63
#define TMP_SEM_ID 150



pipe_t *p1;
pipe_t *p2;
pipe_t *p3;
pipe_t *p4;
pipe_t *p5;
pipe_t *p6;

char_t *msg[20] =  {
    { "The first message!" },
    { "The sencond message !" },
    { "The third message!" },
    { "The fourth message!" },
    { "The fifth message!" },
    { "The sixth message!" },
    { "The seventh message!" },
    { "The eighth message!" },
    { "The ninth message!" },
    { "The tenth message!" },
    { "The eleventh message!" },
    { "The twelveth message!" },
    { "The thirteenth message!" },
    { "The fourteenth message!" },
    { "The fifteenth message!" },
    { "The sixteenth message!" },
    { "The seventeenth message!" },
    { "The eighteenth message!" },
    { "The ninteenth message!" },
    { "The twentith message!" }
};

void Task0(void) {
    uword_t err, err1, i;
    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print(".....................\n");
            Print("Task0 is running!\n");
            for(i = 0; i < 30; i++) {
                pipeSend(p1, msg[i], &err1);
            }
            Print("Sending message to pipe1 is over!\n");
            Print(".....................\n\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(65);
    }
}



void Task1(void) {
    uword_t err, err1;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task1   is running!\n");
            Print("Task1   wants to send some data to pipe1!\n");
            pipeSend(p1, msg[0], &err1);
            if(err1 == PIPE_ID_NOT_MATCH) {
                Print(0,
                           "Task1 was refused to send some data to pipe1!\n\n");
            }
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(65);
    }
}



void Task2(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task2   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(68);
    }
}



void Task3(void) {
    uword_t err, err1;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task3   is running!\n");
            Print("Task3   wants to send some data to pipe2!\n");
            pipeSend(p2, msg[2], &err1);
            if(err1 == PIPE_ID_NOT_MATCH) {
                Print(0,
                           "Task3 was refused to send some data to pipe2!\n\n");
            }
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(68);
    }
}



void Task4(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task4   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(65);
    }
}



void Task5(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task5   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(65);
    }
}




void Task6(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task6   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(45);
    }
}



void Task7(void) {
    uword_t err, err1;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task7   is running!\n");
            Print("Task7   wants to send some data to pipe3!\n");
            pipeSend(p3, msg[6], &err1);
            if(err1 == PIPE_ID_NOT_MATCH) {
                Print(0,
                           "Task7 was refused to send some data to pipe3!\n\n");
            }
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(68);
    }
}



void Task8(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task8   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(68);
    }
}



void Task9(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task9  is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(568);
    }
}



void Task10(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task10   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(68);
    }
}



void Task11(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task11   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(458);
    }
}



void Task12(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task12   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(35);
    }
}



void Task13(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task13   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(45);
    }
}



void Task14(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task14   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(23);
    }
}



void Task15(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task15   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(35);
    }
}



void Task16(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task16   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(23);
    }
}



void Task17(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task17   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(35);
    }
}



void Task18(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task18   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(24);
    }
}



void Task19(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task19   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(23);
    }
}



void Task20(void) {
    uword_t err, err1, i;
    char_t *str;

    while(1) {
        str = (char_t*)kmalloc(51);
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print(".....................\n");
            Print("Task20 is running!\n");
            Print("Now retrieve date from pipe1\n");
            for(i = 0; i < 30; i++) {
                if((str = (char_t*)pipeRev(p1, &err1)) != NULL) {
                    Print("the %d message is:\n", i);
                    Print("%s\n\n", str);
                }
            }
            Print(".....................\n\n");
            semPost(TMP_SEM_ID, NULL);
        }
        kfree(str);
        osWait(24);
    }
}



void Task21(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task21   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(23);
    }
}



void Task22(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task22   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(35);
    }
}



void Task23(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task23   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(123);
    }
}



void Task24(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task24   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(100);
    }
}



void Task25(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task25   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(56);
    }
}



void Task26(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task26   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(58);
    }
}



void Task27(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task27   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(56);
    }
}



void Task28(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task28   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(45);
    }
}



void Task29(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task29   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(156);
    }
}



void Task30(void) {
    uword_t err, err1, i;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print(".....................\n");
            Print("Task30 is running!\n");
            for(i = 0; i < 30; i++) {
                pipeSend(p2, msg[i], &err1);
            }
            Print("Sending message to pipe2 is over!\n");
            Print(".....................\n\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(125);
    }
}



void Task31(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task31   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(354);
    }
}



void Task32(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task32   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(125);
    }
}



void Task33(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task33   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(12);
    }
}



void Task34(void) {
    uword_t err, err1;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task34   is running!\n");
            Print("Task34   wants to send some data to pipe4!\n");
            pipeSend(p4, msg[8], &err1);
            if(err1 == PIPE_ID_NOT_MATCH) {
                Print(0,
                           "Task34 was refused to send some data to pipe14\n\n")
                           ;
            }
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(568);
    }
}



void Task35(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task35   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(456);
    }
}



void Task36(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task36   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(125);
    }
}



void Task37(void) {
    uword_t err;

    while(1) {
        semGain(TMP_SEM_ID, NULL, &err);
        if(err == SEM_OK) {
            Print("Task37   is running!\n");
            semPost(TMP_SEM_ID, NULL);
        }
        osWait(111);
    }
}



void Task38(void) {
    uword_t err;

⌨️ 快捷键说明

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