示例#1
0
void setup()
{
	setupSystemClock();
	setup_system_tick(SYSTEM_TICK_FREQ);
	setupUART();
#ifdef GPS
	setupGPS();
#endif
	I2C_Init();
	FlashInit();
	UpdateBoardVersion(false);
#ifdef OPTION_RC
	RC_Init();
	if(IsSSVConnected())
		Battery_Init();
	LED_Init();
	TIMER_Init();
	stabilizerInit();
#endif
#ifdef ABROBOT
  ABRobotMotorInit();
#endif
	nvtAHRSInit();
	SensorsInit();
	ChronographSet(ChronMain);
}
示例#2
0
void main(void)
   {
	// Initialize all tasks
	Speech_Init();
	UART_Init(BAUD9600);
	Timer0_Init(500);   
	Elecmotor_Init();
	Button_Init();
	Battery_Init();
	Sensor_Init();
	Alarm_Init();
	Function_init();
	Function_S_init();

   // Add Tasks
   hSCH_Add_Task(Elecmotor_update, 1000, 1, 1);		// 1ms/ticket
   hSCH_Add_Task(Button_update, 1500, 200, 1);		// 100ms/ticket
   hSCH_Add_Task(Speech_update, 1500, 1000, 1);		// 0.5s/ticket
   hSCH_Add_Task(Sensor_update, 2000, 1, 1);			// 1ms/ticket
	hSCH_Add_Task(Alarm_update, 3000, 2000, 1);		// 1s/ticket
   hSCH_Add_Task(Function_update, 1500, 4000, 1);	// 2s/ticket
   hSCH_Add_Task(Function_s_update, 2000, 1, 1);	// 1ms/ticket
	
	// Start the program.
	hSCH_Start();
	while(1)
      {
		// Excute the program.
		hSCH_Dispatch_Tasks();
		}
   }
示例#3
0
文件: api.c 项目: el303/pses
void api_init(void) {
	CILCR_LVL = 0;
	interrupts_init();

	// button
	PIER07_IE0 = 1;
	PIER07_IE1 = 1;
	PIER07 |= 0x0c;
	PUCR07 |= 0x0c;

	Sema = 0;
	vSemaphoreCreateBinary(Sema);

	//Seg_Init();
	Drive_Init();

	//FRAM_Init();

	Us_Init();
	//CarId_Init();
	ADC_Init();
	Battery_Init();
	Linesensor_Init();

	//wirelessInit();

	Serial_Init();

	__EI();
}
/*******************************************************************************
**函    数: KeyInit
**功    能: 初始化
**参    数: unitID      --单元号
**返    回: void
*******************************************************************************/
void KeyInit(u8 unitID)
{
    u8 i;
	Battery_Init();
    Init_OLED();
    _74HC595_Init();
    ShowLED_OpenAll();
    
    if(1 == Battery_GetPercent(&gPowerPercent))
    {
        if(gPowerPercent <= 8)   //电量小于8%时自动提示用户充电,3s以后休眠
        {
            OLED_ShowPicAt(36,2,56,32,PicPower);
            Thread_Login(ONCEDELAY, 0,3000,&Standby_Mode);
            for(;;);       
        }
    }
    
    EEPROM_Read(ADDR_PASSWORD, 4, &gPassword[0]);
    if((gPassword[0]>6)||(gPassword[1]>6)||(gPassword[2]>6)||(gPassword[3]>6))
    {
        gPassword[0] = 0;
        gPassword[1] = 0;
        gPassword[2] = 0;
        gPassword[3] = 0;
    }
    if((gPassword[0]==0)||(gPassword[1]==0)||(gPassword[2]==0)||(gPassword[3]==0))
    {
        gPswFlag = 0;       //无密码
    }
    else gPswFlag = 1;      //有密码
        
    Thread_Login(FOREVER, 0, 5 , &Key_Handle);           //5ms 按键
    Thread_Login(FOREVER, 0, 100, &LowPower_CheckTime);   //100ms*100 = 10s  睡眠 
    Thread_Login(FOREVER, 0, 200 ,&Battery_Show);    
    
    Get_CurrentKeyState(&gKeyPrevState);
    if((gKeyPrevState.KeyValue > MAX_TOUCH_KEY)||(!gKeyPrevState.KeyValue))
    {
        gKeyPrevState.KeyValue = first_key;
    }
	if((gKeyPrevState.KeyType > KEY_LONG)||(KEY_NONE == gKeyPrevState.KeyType))
	{
		gKeyPrevState.KeyType = KEY_SHORT;
	}
	gKeyCh[gKeyPrevState.KeyValue].Status = gKeyPrevState.KeyType;
	for(i = 1;i < MAX_TOUCH_KEY;i++)
	{
		if(gKeyPrevState.KeyStatusVal[i] > 1)
		{
			gKeyPrevState.KeyStatusVal[i] = SW_OFF;
		}
		gKeyStatus[i].Status = gKeyPrevState.KeyStatusVal[i];
	}
	switch(gKeyPrevState.KeyType)
	{
		case KEY_SHORT:
		{
			if(SW_ON == gKeyStatus[gKeyPrevState.KeyValue].Status)
			{
				OLED_ShowHalfPicAt(4,PicTab[gKeyPrevState.KeyValue]);
			}
			else
			{
				OLED_ShowHalfPicAt(4,PicTab[gKeyPrevState.KeyValue + 32]);
			}
		}break;
		case KEY_LONG:
		{
			OLED_ShowHalfPicAt(4,PicTab[gKeyPrevState.KeyValue + 16]);
		}break;
		default:break;
	}
    Battery_Show_State();
    
    Upload(1);
}