#include "app_inc.h"     

//===========================================================================
//任务名称：task_main
//功能概要：MQX自启动任务，主要实现全局变量初始化、创建其他任务、安装用户ISR
//参数说明：未使用
//===========================================================================
void task_main(uint32_t initial_data)
{
    //1.全局变量初始化
	//创建信号量组件，初始可容纳3个信号量，每次扩展1个信号量空间，无数量上限
	_sem_create_component(3, 1, 0);
	//创建写信号量，初值为宏ARRAY_SIZE所定义的值
	//信号量非严谨，不采用优先级继承，等待队列采用FIFO调度
	_sem_create("SEM_WRITE", ARRAY_SIZE, 0);
	//创建读信号量
	_sem_create("SEM_READ", 0, 0);
	//创建共享区访问信号量
	_sem_create("SEM_INDEX", 1, 0);
	fifo.READ_INDEX  = 0;
	fifo.WRITE_INDEX = 0;
	//局部变量定义
	_mqx_uint  i;

    //2.外设初始化
    light_init(Light_D1,LIGHT_OFF);      //灯1初始化
    light_init(Light_D2,LIGHT_OFF);      //灯2初始化
    
    //3.创建其他任务
	_task_create(0, TASK_A, 0);          //创建run_A任务
	_task_create(0, TASK_B, 0);          //创建run_B任务	
	for (i = 0; i < NUM_WRITERS; i++)    //创建多个写任务
	{
		_task_create(0, TASK_WRITE, (uint_32) i);
	}
	_task_create(0, TASK_READ, 0);	//创建读任务
    
    //4.安装用户ISR
    
         
    //------------执行完毕，本任务进入阻塞态-----------------------------------
    _task_block();                    
}
