main.c

来自「嵌入式开发」· C语言 代码 · 共 104 行

C
104
字号
/*
*********************************************************************************************************
* 文件: Main.C
* 描述: 主程序文件.
* 编写: 深思 (001-12345@sohu.com).
*********************************************************************************************************
*/

#include "includes.h"

static void TestTask1(void *pdata);
static void TestTask2(void *pdata);
static void TestTask3(void *pdata);

#define TaskStkLeath 60                                 /* 任务堆栈大小.    */
OS_STK TestTask1Stk[TaskStkLeath];
OS_STK TestTask2Stk[TaskStkLeath];
OS_STK TestTask3Stk[TaskStkLeath];

/*
********************************************************************************************************
* 函数: int main (void).
* 描述: 主程序函数.
********************************************************************************************************
*/
int main (void)
{
    PINSEL0 = 0x00000000;		                // 设置所有管脚连接GPIO.
    PINSEL1 = 0x00000000;
    IODIR   = LED1|LED2|LED3|LED4;			    // 设置 LED1-4 控制口为输出.
    IOCLR = LED4;
    IOCLR = LED3;
    IOCLR = LED2;
    IOCLR = LED1;

    OSInit();
    (void)OSTaskCreateExt(TestTask1,(void *)1,&TestTask1Stk[TaskStkLeath-1],1,0,&TestTask1Stk[0],TaskStkLeath,(void *)0,OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
    (void)OSTaskCreateExt(TestTask2,(void *)2,&TestTask2Stk[TaskStkLeath-1],2,0,&TestTask2Stk[0],TaskStkLeath,(void *)0,OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
    (void)OSTaskCreateExt(TestTask3,(void *)3,&TestTask3Stk[TaskStkLeath-1],3,0,&TestTask3Stk[0],TaskStkLeath,(void *)0,OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
    OSStart();
    while(1);
}

/*
********************************************************************************************************
* 函数: void TestTask1(void *pdata).
* 描述: 任务1, 控制 LED1 闪烁.
********************************************************************************************************
*/
static void TestTask1(void *pdata)
{
    pdata = pdata;
    SysClkInit();

    while(1) {
        OSTimeDly(100);                                 /* 随便改吧,可以产生不同效果哟. */
        IOCLR = LED1;
        OSTimeDly(50);
        IOSET = LED1;
    }
}

/*
********************************************************************************************************
* 函数: void TestTask2(void *pdata).
* 描述: 任务2, 控制 LED2 闪烁.
********************************************************************************************************
*/
static void TestTask2(void *pdata)
{
    pdata = pdata;

    while(1) {
        OSTimeDly(10);
        IOCLR = LED2;
        OSTimeDly(30);
        IOSET = LED2;
    }
}

/*
********************************************************************************************************
* 函数: void TestTask3(void *pdata).
* 描述: 任务3, 控制 LED3 闪烁.
********************************************************************************************************
*/
static void TestTask3(void *pdata)
{
    pdata = pdata;

    while(1) {
        OSTimeDly(50);
        IOCLR = LED3;
        OSTimeDly(60);
        IOSET = LED3;
    }
}

/*
********************************************************************************************************
* End.
********************************************************************************************************
*/

⌨️ 快捷键说明

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