示例#1
0
// ============================================================================
int main( void )
{
	int	ch = 0;
	uint32_t ccount = 0;
	uint32_t lastTick;
	int pwm;

	SystemCoreClockUpdate();
	SysTick_Config( SystemCoreClock / HB_HZ);

	// Enable peripheral clocks
	// TODO:	Remove GPIOCEN when moving to the smaller CPU
	RCC->AHBENR |= (RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN | RCC_AHBENR_GPIOCEN);
	
#ifdef USE_USART
	InitUSART(400);
#endif	// USE_USART

	InitLED();
	InitServo();

	configButtons();

	while( 1 ) {
		if ( curTick > (HB_HZ) ) {
			curTick -= (HB_HZ);

			// Once per second processing...

		}
		if ( curTick != lastTick ) {
			lastTick = curTick;

			// On each timer tick move the turnout slightly closer to the new position
			for ( int idx=0; idx<SERVO_COUNT; ++idx ) {
				if ( servo[idx].currentPos < servo[idx].targetPos ) {
					servo[idx].currentPos += SERVO_DELTA;
					if ( servo[idx].currentPos > servo[idx].targetPos ) {
						servo[idx].currentPos = servo[idx].targetPos;
					}
				}
				else
				if ( servo[idx].currentPos > servo[idx].targetPos ) {
					servo[idx].currentPos -= SERVO_DELTA;
					if ( servo[idx].currentPos < servo[idx].targetPos ) {
						servo[idx].currentPos = servo[idx].targetPos;
					}
				}
			}

			TIM1->CCR1 = servo[SERVO1].currentPos;
			TIM1->CCR2 = servo[SERVO2].currentPos;
			TIM1->CCR3 = servo[SERVO3].currentPos;
			TIM1->CCR4 = servo[SERVO4].currentPos;

			btnCheck();
		}
#ifdef USE_USART
		if ( usartTxEmpty() ) {
			usartWriteByte(ch+33);
			++ch;
			ch &= 0x3F;
		}
#endif	// USE_USART
	}
}
示例#2
0
void main (void)
{
	// Stop WDT
	WDTCTL = WDTPW | WDTHOLD;		// Stop watchdog timer
	_BIS_SR(GIE);
	runtimerA2();
	//Perform initializations (see peripherals.c)
	configTouchPadLEDs();
	configDisplay();
	configCapButtons();

	CAP_BUTTON keypressed_state;
	while(1)
	{
		switch(state)
		{
			case WelcomeScreen:
	    		GrClearDisplay(&g_sContext);
	    		GrStringDrawCentered(&g_sContext, "MSP430 HERO!", AUTO_STRING_LENGTH, 51, 22, TRANSPARENT_TEXT);
	    		GrStringDrawCentered(&g_sContext, "Press S1 to Start", AUTO_STRING_LENGTH, 51, 42, TRANSPARENT_TEXT);
	    		GrFlush(&g_sContext);
	    		//Changes the state to Game Starting if button 1 is pressed
	    		if (configButtons() == 1)
	    		{
	    			state = GameStarting;
	    		}
	    		else state = WelcomeScreen;
	    	break;

			case GameStarting:
				if (led_on ==1)
				{
					GrClearDisplay(&g_sContext);
					GrStringDrawCentered(&g_sContext, "3", AUTO_STRING_LENGTH, 51, 22, TRANSPARENT_TEXT);
					GrFlush(&g_sContext);
					configLEDs(3);
					led_on = 0;
				}
				else if (led_on ==2)
				{
					GrClearDisplay(&g_sContext);
					GrStringDrawCentered(&g_sContext, "2", AUTO_STRING_LENGTH, 51, 22, TRANSPARENT_TEXT);
					GrFlush(&g_sContext);
					configLEDs(2);
					led_on = 0;
				}
				else if (led_on == 3)
				{
					GrClearDisplay(&g_sContext);
					GrStringDrawCentered(&g_sContext, "1", AUTO_STRING_LENGTH, 51, 22, TRANSPARENT_TEXT);
					GrFlush(&g_sContext);
					configLEDs(1);
					led_on = 0;
				}
				else if (led_on == 4)
				{
					GrClearDisplay(&g_sContext);
					GrStringDrawCentered(&g_sContext, "GO", AUTO_STRING_LENGTH, 51, 22, TRANSPARENT_TEXT);
					GrFlush(&g_sContext);
					configLEDs(0);
					led_on = 0;
				}
	    	break;
		}
	}
}