#include "uTask.h" #include "includes.h" pt_timer_t pt_timerPool; struct pt pt_TaskFast; struct pt pt_TaskSecond; struct pt pt_ModemATProcess; struct pt pt_ModemUartProcess; struct pt pt_ModemInitProcess; struct pt pt_LedTaskProcess; struct pt pt_socketProcess; struct pt pt_gpsProcess; struct pt pt_UIProcess; struct pt pt_UIAssistProcess; //����ִ�еļ����� PT_THREAD (ptFastTask(struct pt *pt)){ static timer_t ptTimer; PT_BEGIN(pt); //LC_RESUME(s) switch(s) { case 0: while(1){ GTMode_Detected(); PowerOffProtetion(); CommHandler();//������������ KeyHandler();//�������� ModemLedCtl();//ģ��������LED���������� MuteFlag=SetSpkLvProcess(0); powerSaveHandle(); IncomingSMS(); PTTimerStart(&pt_timerPool, &ptTimer, 1); //LC_SET(s) s = __LINE__; // case __LINE__: // if(!(condition)){ \ //δ��return; // return PT_WAITING; \ // } PT_WAIT_UNTIL(pt, PTTimerIsExpired(&ptTimer)); } PT_END(pt); } //1��ִ��һ�εļ����� PT_THREAD (ptSecondTask(struct pt *pt)){ static timer_t ptTimer; PT_BEGIN(pt); while(1){ RTC_Update(); BatterProcess(); onStartCtl(); FingerDaemonfinger(); SMSHandle(); PTTimerStart(&pt_timerPool, &ptTimer, 100); PT_WAIT_UNTIL(pt, PTTimerIsExpired(&ptTimer)); } PT_END(pt); } PT_THREAD (ptModemATProTask(struct pt *pt)){ static timer_t ptTimer; PT_BEGIN(pt); while(1){ ModemATProcess(); PTTimerStart(&pt_timerPool, &ptTimer, 1); PT_WAIT_UNTIL(pt, PTTimerIsExpired(&ptTimer)); } PT_END(pt); } //150msִ��һ��LED���� PT_THREAD (ptLedTask(struct pt *pt)){ static timer_t ptTimer; PT_BEGIN(pt); while(1){ LedProcess(0); PTTimerStart(&pt_timerPool, &ptTimer, 15); PT_WAIT_UNTIL(pt, PTTimerIsExpired(&ptTimer)); } PT_END(pt); } void ptTimerTick(void){ PTTimerTick(&pt_timerPool);//SYStick } void ptAllInit(void){ PTTimerInitPool(&pt_timerPool); PT_INIT(&pt_TaskFast); PT_INIT(&pt_TaskSecond); PT_INIT(&pt_ModemATProcess); PT_INIT(&pt_ModemUartProcess); PT_INIT(&pt_ModemInitProcess); PT_INIT(&pt_LedTaskProcess); PT_INIT(&pt_socketProcess); PT_INIT(&pt_gpsProcess); PT_INIT(&pt_UIProcess); PT_INIT(&pt_UIAssistProcess); } void ptTaskRun(void){ while(1){ InfoTick(); ptFastTask(&pt_TaskFast); ptSecondTask(&pt_TaskSecond); ptModemATProTask(&pt_ModemATProcess); ptModemUartTask(&pt_ModemUartProcess); ptModemInitTask(&pt_ModemInitProcess); ptLedTask(&pt_LedTaskProcess); ptSocketTask(&pt_socketProcess); ptGpsTask(&pt_gpsProcess); ptUITask(&pt_UIProcess); ptUIAssist(&pt_UIAssistProcess); } } //////////////////uTimer////////////////////// static unsigned int uSysTick=0;//��ϵͳ���Ϊ��λ void uSysTickUpdate(void){uSysTick++;} unsigned int uSysTickGet(void){return uSysTick;} void uTimerStart(unsigned int *timerId, unsigned int dlyTime){ *timerId=uSysTickGet()+dlyTime; } char uTimerExpired(unsigned int *timerId){ return ((uSysTickGet()>*timerId)?1:0); } /* Ӳ��ʱ ��λ10��ms�� */ void uTimerHardDly(short time_10ms){ unsigned int tick; tick=uSysTickGet()+time_10ms; while(uSysTickGet()<tick) IWDG_ReloadCounter(); } ///////////////////�滻ԭRTX�е�os_tmr_call,os_tmr_create////////////////// //���ܷ���������ɨ��,��Ϊ�ٶȲ��������������������������� //Ҫ����ϵͳ�δ���,��Ҫ�������� typedef struct{ char status; unsigned short tickStart; unsigned short tickTarget; }UTIMER_CALL_DEF; UTIMER_CALL_DEF uTimerPara[UTIMER_MAX]; void uTimerCreate(unsigned char type,int timerms){ UTIMER_CALL_DEF *uTimer; if(type >= UTIMER_MAX) return; uTimer=&uTimerPara[type]; uTimer->tickStart=0; uTimer->tickTarget=timerms; uTimer->status=1; } void uTimerCall(void){ unsigned char i; UTIMER_CALL_DEF *uTimer; for(i=0;i<UTIMER_MAX;i++){ uTimer=&uTimerPara[i]; if(uTimer->status != 0){ if(++uTimer->tickStart>=uTimer->tickTarget){ switch(i){ case UTIMER_BEEP: TIM_Cmd(TIM2, DISABLE); if(g_ucEnterGTNow)break; if(sutPocStatus.Speaker==0&&sutPocStatus.TTS==0) SpeakerDisable(); break; case UTIMER_MIC:MicEnable();break; } uTimer->status=0; } } } }