中级会员
 
- 积分
- 254
- 金钱
- 254
- 注册时间
- 2015-8-25
- 在线时间
- 27 小时
|

楼主 |
发表于 2015-11-20 08:37:13
|
显示全部楼层
回复【2楼】bj2008wyou:
---------------------------------
不好意思,因为程序太大,把部分任务函数贴出来,因为现在创建的第一个任务函数感觉都没有执行,望有过类似经验的大侠,帮帮忙,不胜感激
#include "system.h"
#include "task.h"
#include "lcs550_cfg.h"
#include "key_scan.h"
#include "usart.h"
// ---------------------------------
#if HostOrExpansion > 0
#include "lcd240128.h"
#include "Audio2259.h"
#include "beep.h"
#else
#include "delay.h"
#endif //HostOrExpansion
#include "system.h"
// ---------------------------------
// --------?¨????????????------------
//???§????0??10?¨?ê??TASK_START_PRIO??OS_LOWEST_PRIO??
#define AppStart_PRIO 1 //
#define SystemAdmin_PRIO 3
#define Mianban_PRIO 4
#define SlaveAdmin_PRIO 6
__align(8) static OS_STK AppStart_Stk[SystemAdmin_TASK_STK_SIZE];
__align(8) static OS_STK Mianban_Stk[Mianban_TASK_STK_SIZE];
__align(8) static OS_STK SystemAdmin_Stk[SystemAdmin_TASK_STK_SIZE];
__align(8) static OS_STK SlaveAdmin_Stk[SlaveAdmin_TASK_STK_SIZE];
//因为没有没有实现支持不同堆栈大小,所以都设置为一样的大小
#define Mianban_TASK_STK_SIZE TASK_STK_SIZE //??°????í??????????
#define AppStart_TASK_STK_SIZE TASK_STK_SIZE //???????í??????????
#define SystemAdmin_TASK_STK_SIZE TASK_STK_SIZE //???????í??????????
#define SlaveAdmin_TASK_STK_SIZE TASK_STK_SIZE //???????í??????????
u8 System_Step_Flag; //±ê???????????????ê?????÷???÷???×????
//System_Step_Flag??0??9=??????????10??29=?÷?ú????????0xff=????OK??
u8 SlaveAdmin_Step_Flag; //±ê?????????í?????÷???×????
//SlaveAdmin_Step_Flag????0xff=OK??
u8 Mianban_Step_Flag; //±ê????°????í?????÷???×????
// ---------------------------------
int main(void)
{
InitSystem();
System_Step_Flag = 0;
SlaveAdmin_Step_Flag = 0;
Mianban_Step_Flag = 0;
OSInit();
System_Step_Flag = 1;
OSTaskCreate(AppStart, (void *)0, (OS_STK*)&AppStart_Stk[SystemAdmin_TASK_STK_SIZE-1], AppStart_PRIO);
System_Step_Flag = 2;
OSStart();
}
void AppStart(void *ppdata)
{
u8 i;
OS_CPU_SR cpu_sr = 0;
ppdata = ppdata;
TIM_Cmd(TIM2,ENABLE);//?????¨?±?÷2
OSStatInit(); //??????????????.?????á???±1????×ó??
System_Step_Flag = 10;
#if HostOrExpansion > 0
Audio_2259_ClearRegister(0x88);
Audio_2259_Mute_Overall(0x88, 0); //??????
Video_Strobe(0x00);
#endif //
IP_State = NoIP; //??IP
//***************??±???°??à??********************************
#if HostOrExpansion > 0
MianbanType = LCD09; //LCD+9°??ü??°?
OS_ENTER_CRITICAL(); //????±??¤
OSTaskCreate(Mianban_LCD09, (void *)0, (OS_STK*)&Mianban_Stk[Mianban_TASK_STK_SIZE-1], Mianban_PRIO);
OS_EXIT_CRITICAL(); //????????
#endif //HostOrExpansion
//**********************************************************/
System_Step_Flag = 11;
//***************????????????********************************
OS_ENTER_CRITICAL(); //????±??¤
#if HostOrExpansion > 0
SystemMood_NewFlag = 1;
SystemMode_NewFlag = 1;
MICQueue_NewFlag = 1;
#else
SystemMood_NewFlag = 0;
SystemMode_NewFlag = 0;
MICQueue_NewFlag = 0;
ExpansionSendBuffer_Rn = 0; //
ExpansionSendBuffer_Wn = 0; //
ExpansionSendBuffer_N = 0; //
ExpansionBegBuffer_Rn = 0; //
ExpansionBegBuffer_Wn = 0; //
ExpansionBegBuffer_N = 0; //
Serial0DoBuffer.Rn = 0; //
Serial0DoBuffer.Wn = 0; //
Serial0DoBuffer.N = 0; //
#endif //
if(SystemMode.Mode == 0x00 || SystemMode.Mode == 0xff) //EEPROM?????????§???è????????????
{
SystemMode.Mode = SystemMode_Mode_Default;
SystemMode.LanguageFlag = SystemMode_LanguageFlag_Default;
SystemMode.VideoCom = SystemMode_VideoCom_Default;
#if HostOrExpansion > 0
SystemMode.OutVOL = SystemMode_OutVOL_Default;
SystemMode.InVOL = SystemMode_InVOL_Default;
#if  honeState_SaveEN > 0
SystemMode.PhoneFlag = 0;
#endif //PhoneState_SaveEN
#endif //HostOrExpansion
SystemMode.NewDoMode = SystemMode_NewDoMode_Default;
#if HostOrExpansion > 0
Adr_Own.S = 0x0000;
#else
Adr_Own.S = 0xffff;
#endif //
switch(SystemMode.Mode)
{
case C_ONLY ://?÷??ר??
SystemMode.MaxNumber = 0;
break;
case FREE ://×???????
SystemMode.MaxNumber = 0xff;
break;
case U_SINGLE ://????????
SystemMode.MaxNumber = 1;
break;
//case FIFO ://????????
//case LIFO ://?ó??????
//case LIMIT ://????·???
//case Apply ://?ê??·???
default:
SystemMode.MaxNumber = 3;
break;
}
VideoAllotData.BallAdr = 0;
for(i = 0; i < 4; ++i)
{
VideoAllotData.Recall = 1;
//VideoAllotData.Recall = 0;
}
//VideoAllotData.Recall[0] = 1; //±????°?°????
//SystemDate_NewFlag = 1;
}
else //???????§
{
#if HostOrExpansion > 0
if(Adr_Own.HL.L != 0xff && Adr_Own.HL.H != 0xff && Adr_Own.HL.L != 0x00) //???·???§
{
IP_State = OffLine;
}
else
{ Adr_Own.S = 0x0000; }
#else
if(Adr_Own.HL.L != 0xff && Adr_Own.HL.H != 0xff && Adr_Own.HL.L != 0x00) //???·???§
{
IP_State = OffLine;
}
else
{ Adr_Own.S = 0xffff; }
#endif //
}
OS_EXIT_CRITICAL(); //????????
#if HostOrExpansion == 0
RandBasicSeed ^= Adr_Own.HL.L;
RandBasicSeed ^= Adr_Own.HL.H;
// SystemMode =Mode_Null;
IP_State = NoIP; //??IP
Serial0_SendNNN = 0;
TI0_EN_Flag = 1;
//Serial_ReceiveNNN =0;
NoIP_RandomTest_AllSameNember = 0;
NoIP_RandomTest_Sames = 0;
NoIP_RandomTest_Flag = FALSE;
NoIP_RandomTest_CRC.S = 0xffff;
// UnitState =State_NULL; //????×???????
// State_ZXDO_Flag =State_NULL; //×???????
OKFlag_Expansion_Flag = FALSE;
GetMCUID();
#endif //
//**********************************************************/
System_Step_Flag = 15;
//*************** ?????????? ********************************
UART4_Config_Init(19200); // ???????????¨????????0??????1????19200bps??
//InitSerial_Hasten();//?????????÷???????è??
Time2_Init(200-1, 360-1); //200????@29.4912MHz
Time3_Init(200-1, 360-1);
//**********************************************************/
System_Step_Flag = 16;
//*************** ?????????? ********************************
Serial1_Free = 0; //?¨·?????????
Serial1_Receiver = 0; //?¨·?????????
//VideoAllotFlag = 0; //
//VideoModifyFlag = 0; //
VideoSetFlag = 0; //
Video_BallAdr = 0;
Video_Recall = 0;
Video_GotoRecall_Time = 0;
Video_GotoRecall_Wait = 1;
Video_GotoRecall_RetryWait = 0;
VideoQueue_N = 0;
//**********************************************************/
System_Step_Flag = 17;
System_Step_Flag = 18;
OS_ENTER_CRITICAL(); //????±??¤
OSTaskCreate(SlaveAdmin, (void *)0, (OS_STK*)&SlaveAdmin_Stk[SlaveAdmin_TASK_STK_SIZE-1], SlaveAdmin_PRIO);
OSTaskCreate(SystemAdmin, (void *)0, (OS_STK*)&SlaveAdmin_Stk[SlaveAdmin_TASK_STK_SIZE-1], SystemAdmin_PRIO);
OS_EXIT_CRITICAL(); //????????
System_Step_Flag = 19;
//OSTaskChangePrio(OS_PRIO_SELF, SystemAdmin_PRIO); //??±?±????????????????????í????
System_Step_Flag = 20;
Serial1_Free = 1; //?¨·?????????
System_Step_Flag = 29;
#if HostOrExpansion > 0
  hone_NewFlag = 0;
Audio_Phone_Do0();
#endif //
while(1)
{
OSTimeDlyHMSM(0, 0, 0, 250); //
OS_ENTER_CRITICAL(); //????±??¤
if(SlaveAdmin_Step_Flag >= 0xf5 && Mianban_Step_Flag >= 0x16) { break; }
OS_EXIT_CRITICAL(); //????????
}
#if HostOrExpansion > 0
Audio_Phone_Do1();
#endif //
Audio_Mute = Audio_Mute_Close; //????
#if HostOrExpansion > 0
SetInVOL(SystemMode.InVOL);
SetOutVOL(SystemMode.OutVOL);
#endif //
OS_EXIT_CRITICAL(); //????????
System_Step_Flag = 50;
while(1)
{
if(Online_Number_ON_Ower > 0 || Mianban_Step_Flag >= 0x25) { break; }
OSTimeDlyHMSM(0, 0, 0, 500); //
for(i = 3; i; --i)
{
if(Mianban_Step_Flag >= 0x25) { break; }
Beep();
OSTimeDlyHMSM(0, 0, 0, 100); //
Beep_Close();
OSTimeDlyHMSM(0, 0, 0, 100); //
}
}
#if HostOrExpansion == 0
for(i = 20; IP_State != OnLine; --i)
{
if(i == 0) //10=1??
{
if(TI0_EN_Flag) //??????????±???·???
{
Serial0_Free = 1; //
BegDo(1);
}
else
{
TI0_EN_Flag = 1;
}
i = 10; //10=1??
}
OSTimeDlyHMSM(0, 0, 0, 100); //
Expansion_LED = !Expansion_LED; //?ì??
}
#endif //HostOrExpansion
//System_Step_Flag=70;
System_Step_Flag = 0xff;
Beep();
OSTimeDlyHMSM(0, 0, 0, 500); //
Beep_Close();
while(SlaveAdmin_Step_Flag < 0xff) { OSTimeDlyHMSM(0, 0, 0, 100); } //
OSTaskDel(OS_PRIO_SELF);
}
void SystemAdmin(void *ppdata)
{
OS_CPU_SR cpu_sr = 0;
ppdata = ppdata;
for(;;)
{
if(MianbanType == LCD09) //LCD+3°??ü??°?
{
// SW_In(LCD09_UP, LCD09_UP_Key, 0);
// SW_In(LCD09_MENU, LCD09_MENU_Key, 0);
// SW_In(LCD09_DOWN, LCD09_DOWN_Key, 0);
// SW_In(LCD09_RETURN, LCD09_RETURN_Key, 0);
// SW_In(LCD09_LEFT, LCD09_LEFT_Key, 0);
// SW_In(LCD09_RIGHT, LCD09_RIGHT_Key, 0);
// SW_In(LCD09_INC, LCD09_INC_Key, 0);
// SW_In(LCD09_DEC, LCD09_DEC_Key, 0);
// SW_In(LCD09_OK, LCD09_OK_Key, 0);
}
OS_ENTER_CRITICAL(); //????±??¤
if(Video_GotoRecall_Wait > 0)
{
Video_GotoRecall_Wait--;
if(Video_GotoRecall_Wait == 0)
{
Video_Direction(Video_BallAdr, 0x00);
Video_GotoRecall(Video_BallAdr, Video_Recall);
Video_GotoRecall_RetryWait = Video_GotoRecall_RetryWaitTimes;
Video_GotoRecall_Time = 0;
}
}
if(Video_GotoRecall_RetryWait > 0)
{
Video_GotoRecall_RetryWait--;
if(Video_GotoRecall_RetryWait == 0)
{
Video_GotoRecall(Video_BallAdr, Video_Recall);
Video_GotoRecall_Time = 0;
}
}
if(Video_GotoRecall_Time < 0xff)
{
Video_GotoRecall_Time++;
}
OS_EXIT_CRITICAL(); //????????
OSTimeDly(1);
}
}
void Mianban_LCD09(void *ppdata)
{
OS_CPU_SR cpu_sr=0;
ppdata = ppdata;
OSTimeDlyHMSM(0,0,1,0);
LCD240128_Init();//??????LCD
Mianban_Step_Flag = 1;
//????????????
LCD240128_ClearDisplay(128);
#if  ureEnglish_EN==0
if(SystemMode.LanguageFlag == Language_CH)
{
LCD240128_Draw(0, 0, 240, 128, CH_nBitmapDot_Start, 1);
}
else{
LCD240128_Draw(0, 0, 240, 128, EN_nBitmapDot_Start, 1);
}
#else
LCD240128_Draw(0, 0, 240, 128, EN_nBitmapDot_Start, 1);
#endif //PureEnglish_EN
OSTimeDlyHMSM(0, 0, 3, 0); //
//*****************************????????????**********************************
Mianban_Step_Flag = 0x10;
if(SlaveAdmin_Step_Flag >= 0xf5 && Online_Number_ON_Ower == 0)
{
LCD240128_ClearDisplay(128);
if(SystemMode.LanguageFlag == Language_CH)
{
LCD240128_Display_Norm(72, 44, "?ì?é????????", 0);
LCD240128_Display_Norm(72, 68, "?ò°??°OK?±?ü", 0);
}
else
{
LCD240128_Display_Norm(56, 44, "Check connection ", 0); //LCD240128_PutChar5x8//LCD240128_Display_Norm
LCD240128_Display_Norm(56, 68, " or press \"OK\".", 0);
}
Mianban_Step_Flag = 0x15;
while(Online_Number_ON_Ower == 0)
{
Mianban_Step_Flag = 0x16;
if(LCD09_OK_Key.Type != IsNoKey && LCD09_OK_Key.DoFlag != LCD09_OK_Key.Type)//???íSET?ü??????
{
while(LCD09_OK_Key.Type == IsShortKey) { OSTimeDly(1); } //?±°??ü=?????ò?¤°??±????????????
LCD09_OK_Key.DoFlag = LCD09_OK_Key.Type;
Mianban_Step_Flag = 0x25;
break;
}
OSTimeDlyHMSM(0, 0, 0, 20); //
}
}
//****************************************************************************
//*****************************????????????**********************************
if(Mianban_Step_Flag < 0x25)
{
Mianban_Step_Flag = 0x30;
#if UnitNumber_ShowEN > 0
LCD240128_ClearDisplay(LCD240128_ClrAll);
#endif //UnitNumber_ShowEN
while(SlaveAdmin_Step_Flag < 0xf5 || Mianban_Step_Flag < 0xf5) //||Online_Number_Ower==0
{
#if UnitNumber_ShowEN > 0
Mianban_LCD09_UnitNumber_Show();
#endif //UnitNumber_ShowEN
Mianban_Step_Flag = 0xf5;
OSTimeDlyHMSM(0, 0, 0, 200); //
}
#if UnitNumber_ShowEN > 0
Mianban_LCD09_UnitNumber_Show();
OSTimeDlyHMSM(0, 0, 2, 0); //
#endif //UnitNumber_ShowEN
}
//****************************************************************************
Mianban_PageRecord_Turn(Mianban_LCD09_HomePage_Flag);
#define LCD240128_Clr() {LCD240128_ClearDisplay(128);LCD240128_HangMove(0);}
while(1)
{
u8  age;
OS_ENTER_CRITICAL(); //????±??¤
  age = Mianban_PageR.Record[Mianban_PageR.Page];
OS_EXIT_CRITICAL(); //????????
switch(Page)
{
case Mianban_LCD09_VideoSetMenu_Flag://
LCD240128_Clr();
Mianban_LCD09_VideoSetMenu();
break;
case Mianban_LCD09_UnitSetMenu_Flag://
LCD240128_Clr();
Mianban_LCD09_UnitSetMenu();
break;
case Mianban_LCD09_VideoAllot_Flag://
LCD240128_Clr();
Mianban_LCD09_VideoAllot();
break;
case Mianban_LCD09_VideoFastAllot_Flag://
LCD240128_Clr();
Mianban_LCD09_VideoFastAllot();
break;
case Mianban_LCD09_VideoModify_Flag://
LCD240128_Clr();
Mianban_LCD09_VideoModify();
break;
case Mianban_LCD09_VideoCom_Flag://
LCD240128_Clr();
Mianban_LCD09_VideoCom();
break;
case Mianban_LCD09_Menu_Flag ://
LCD240128_Clr();
Mianban_LCD09_Menu();
break;
case Mianban_LCD09_HomePage_Flag ://
Mianban_LCD09_HomePage();
break;
case Mianban_LCD09_ConferenceMode_Flag ://
LCD240128_Clr();
Mianban_LCD09_ConferenceMode();
break;
case Mianban_LCD09_SpeakingNumber_Flag ://
LCD240128_Clr();
Mianban_LCD09_SpeakingNumber();
break;
case Mianban_LCD09_SetInVOL_Flag ://
Mianban_LCD09_SetInVOL();
break;
case Mianban_LCD09_SetOutVOL_Flag ://
Mianban_LCD09_SetOutVOL();
break;
case Mianban_LCD09_PhoneConference_Flag ://
LCD240128_Clr();
Mianban_LCD09_PhoneConference();
break;
case Mianban_LCD09_LanguageSet_Flag ://
LCD240128_Clr();
Mianban_LCD09_LanguageSet();
break;
#if UnitNumber_ShowEN > 0
case Mianban_LCD09_UnitNumber_Flag ://
LCD240128_Clr();
Mianban_LCD09_UnitNumber();
break;
#endif //UnitNumber_ShowEN
#if SystemInfo_EN > 0
case Mianban_LCD09_SystemInfo_Flag ://
LCD240128_Clr();
Mianban_LCD09_SystemInfo();
break;
#endif //SystemInfo_EN
//case Mianban_LCD09_Reset_Flag://
// LCD240128_Clr();
// Mianban_LCD09_Reset();
// break;
case Mianban_LCD09_BallReset_Flag://
LCD240128_Clr();
Mianban_LCD09_BallReset();
break;
case Mianban_LCD09_UnitReset_Flag://
LCD240128_Clr();
Mianban_LCD09_UnitReset();
break;
default:
Mianban_PageRecord_Turn(Mianban_LCD09_HomePage_Flag);
break;
}
}
} |
|