// ============================================================================ 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 } }
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; } } }