Exemple #1
0
/*!
 * @brief Initialisation thread. runs once.
 */
void InitThread(void *data)
{
	for (;;)
	{
		OS_SemaphoreWait(InitSemaphore, 0);

		Random_Init();
		//Switches mate
		Switch_Init(S1Callback, (void *) 0, S2Callback, (void *) 0);

		Toggle_Init(ToggleModeFinished);
		Game_Init(GameModeFinished);

		Touch_Init();

//Initialize all the modules
		LEDs_Init();

		I2C_Init(100000, MODULE_CLOCK);
		Accel_Init(&AccelSetup);

		PIT_Init(MODULE_CLOCK, &PitCallback, (void *) 0);
		PIT_Set(500000000, bFALSE);
		PIT_Enable(bTRUE);

		Packet_Init(BAUD_RATE, MODULE_CLOCK);
		Flash_Init();
		CMD_Init();

		//Best to do this one last
		//TODO: disabled for yellow
    RTC_Init((void (*)(void*))OS_SemaphoreSignal, (void *) RtcSemaphore);

		Timer_Init();
		Timer_Set(&PacketTimer);
		Timer_Set(&AccTimer);

		CMD_SpecialGetStartupValues();

		LEDs_On(LED_ORANGE);
	}
}
//=====================================================================================================================
int main (void)
{
	BYTE*	pReadBuffer;
	BYTE*	pWriteBuffer;
	DWORD	Version;

	PINSEL0		=	0;
	PINSEL1		=	0;

	Init_IO();
	CLK_Init();
	CLK_SetupTimer(cCLK_TimerBlink,	500,	Main_BlinkLED);

	CMD_Init((DWORD*)&pWriteBuffer,	(DWORD*)&pReadBuffer);


	IOCLR	=	cPB_LED1	+	cPB_LED2	+	cPB_LED3;
	while(1)
	{
		IOCLR	=	cPB_LED1;
		if	(!CMD_GetVersion((WORD*)(&Version)))
		{
			continue;
		}
		if	(!(CMD_Detect()))
		{	continue;	}
		IOSET	=	cPB_LED1;


		//等待But0按下,则开始写数据
		if	(IOPIN	&	cPB_BUT0)
		{	continue;	}

		DoTest2(pReadBuffer,	pWriteBuffer);

	}

}