查看:2392|回复:0
-
/******************************************************************************
- * File : main.c
- * Function : 主文件
- * Description: None
- * Version : V1.00
- * Author : WXP
- * Date :
- * History :
-
******************************************************************************/
- #include "includes.h"
- //START 任务
- //设置任务优先级
- #define START_TASK_PRIO 10 //开始任务的优先级设置为最低
- //设置任务堆栈大小
- #define START_STK_SIZE 64
- //任务堆栈
-
OS_STK START_TASK_STK[START_STK_SIZE];
- //任务函数
- void start_task(void *pdata);
-
- //LED0任务
- //设置任务优先级
- #define LED0_TASK_PRIO 7
- //设置任务堆栈大小
- #define LED0_STK_SIZE 64
- //任务堆栈
-
OS_STK LED0_TASK_STK[LED0_STK_SIZE];
- //任务函数
- void led0_task(void *pdata);
- //LED1任务
- //设置任务优先级
- #define LED1_TASK_PRIO 6
- //设置任务堆栈大小
- #define LED1_STK_SIZE 64
- //任务堆栈
-
OS_STK LED1_TASK_STK[LED1_STK_SIZE];
- //任务函数
- void led1_task(void *pdata);
- int main(void)
- {
- Bsp_Init();
- OSInit();
-
OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO );//创建起始任务
- OSStart();
-
- while(1)
- {
- }
- }
-
- //开始任务
- void start_task(void *pdata)
- {
- OS_CPU_SR cpu_sr=0;
- pdata = pdata;
- OS_ENTER_CRITICAL(); //进入临界区(无法被中断打断)
-
OSTaskCreate(led0_task,(void *)0,(OS_STK*)&LED0_TASK_STK[LED0_STK_SIZE-1],LED0_TASK_PRIO);
-
OSTaskCreate(led1_task,(void *)0,(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],LED1_TASK_PRIO);
-
OSTaskSuspend(START_TASK_PRIO); //挂起起始任务.
- OS_EXIT_CRITICAL(); //退出临界区(可以被中断打断)
- }
- //LED0任务
- void led0_task(void *pdata)
- {
- while(1)
- {
- LED2(ON);
- OSTimeDlyHMSM(0,0,0,200);
- LED2(OFF);
- OSTimeDlyHMSM(0,0,0,200);
- }
- }
- //LED1任务
- void led1_task(void *pdata)
- {
- while(1)
- {
- LED3(ON);
- OSTimeDlyHMSM(0,0,0,500);
- LED3(OFF);
- OSTimeDlyHMSM(0,0,0,500);
- }
- }
-
4.24 MB, 下载次数: 24, 下载积分: 黑币 -5