用了ucosII,但是三个任务只有LIGHT_TASK_PRIO 這个在运行,是怎么回事
#include "led.h"
#include "beep.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "includes.h"
#include "adc.h"
#include "LIGHT.h"
unsigned char LIG1[10]="LIG1";
unsigned char lig1,lig2,lig3,u=0;
#define START_TASK_PRIO 10
#define START_STK_SIZE 64
OS_STK START_TASK_STK[START_STK_SIZE];
void start_task(void *pdata);
#define LM_TASK_PRIO 8
#define LM_STK_SIZE 64
OS_STK LM_TASK_STK[LM_STK_SIZE];
void LM_task(void *pdata);
#define BEEP_TASK_PRIO 7
#define BEEP_STK_SIZE 64
OS_STK BEEP_TASK_STK[BEEP_STK_SIZE];
void beep_task(void *pdata);
#define LIGHT_TASK_PRIO 6
#define LIGHT_STK_SIZE 64
OS_STK LIGHT_TASK_STK[LIGHT_STK_SIZE];
void LIGHT_task(void *pdata);
int main(void)
{
delay_init();
NVIC_Configuration();
// uart_init(9600);
BEEP_Init();
initLCDM();
light_gpio();
Adc_Init();
// LED_Init();
LM_Cler();
// KEY_Init();
OSInit();
OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO );
OSStart();
}
void start_task(void *pdata)
{
OS_CPU_SR cpu_sr=0;
pdata = pdata;
OSStatInit();
OS_ENTER_CRITICAL();
OSTaskCreate(LM_task,(void *)0,(OS_STK*)&LM_TASK_STK[LM_STK_SIZE-1],LM_TASK_PRIO);
OSTaskCreate(beep_task,(void *)0,(OS_STK*)&BEEP_TASK_STK[BEEP_STK_SIZE-1],BEEP_TASK_PRIO);
OSTaskCreate(LIGHT_task,(void *)0,(OS_STK*)&LIGHT_TASK_STK[LIGHT_STK_SIZE-1],LIGHT_TASK_PRIO);
OSTaskSuspend(START_TASK_PRIO);
OS_EXIT_CRITICAL();
}
void LM_task(void *pdata)
{
//extern unsigned char lig3;
// unsigned char uu[]={0};
LM_Cler();
while(1)
{
// sprintf((char*)uu,"%x",lig3);
// LM_ShowString(0,0,uu);
delay_ms(1000);
LM_Cler();
// delay_ms(1000);
}
}
void beep_task(void *pdata)
{
while(1)
{
BEEP=1;
delay_ms(200);
BEEP=0;
delay_ms(940);
}
}
void LIGHT_task(void *pdata)
{
unsigned int xms=1;
// unsigned char u=0;
while(1)
{
if(LIGHT_G1==0||LIGHT_G2==0)
{
LIGHT_LNF=0;
if(LIGHT_G1==0&&LIGHT_G2==1)
{
if(LIGHT_L1>flag_adc)
{
delay_ms(xms);
if(LIGHT_L1>flag_adc)
{
lig1=1;
}
}
if(LIGHT_L1<flag_adc&&u==0)
{
delay_ms(xms);
if(LIGHT_L1<flag_adc)
{
lig1=0;
u=1;
}
}
}
if(LIGHT_G1==0&&LIGHT_G2==0)
{
if(LIGHT_L1>flag_adc)
{
delay_ms(xms);
if(LIGHT_L1>flag_adc)
{
lig1++;
}
}
if(LIGHT_L1<flag_adc)
{
delay_ms(xms);
if(LIGHT_L1<flag_adc&&u==1)
{
lig1<<=1;
u=2;
}
}
}
if(LIGHT_G2==0&&LIGHT_G1==1)//Åöμ½μúèy¸ö¸Dó|μ㣬¶áμúèyμãtμ
{
if(LIGHT_L1>flag_adc)
{
delay_ms(xms);
if(LIGHT_L1>flag_adc)
{
lig1++;
}
}
if(LIGHT_L1<flag_adc)
{
delay_ms(xms);
if(LIGHT_L1<flag_adc)
{
lig1<<=1;
u=0;
}
}
}
lig3=(lig1<<4)|lig2;
lig1=lig2=0;
LM_Cler();
}
else
{
LIGHT_LNF=1;
sprintf((char*)LIG1,"%x",lig3);
LM_ShowString(0,0,LIG1);
// LM_ShowChar(90,0,':');
}
}
}
|