Ejemplo n.º 1
0
int main(void)
{
  leds.initHW();

  NVIC_SetPriorityGrouping( NVIC_PriorityGroup_4 );

  leds.write( 0x0F );  delay_bad_ms( 200 );
  leds.write( 0x0A );  delay_bad_ms( 200 );
  leds.reset( 0x0F );  delay_bad_ms( 200 );

  xTaskCreate( task_leds, "leds", 2*def_stksz, 0, 1, 0 );
  xTaskCreate( task_usart2_send, "send", 2*def_stksz, 0, 1, 0 );
  xTaskCreate( task_usart2_recv, "recv", 2*def_stksz, 0, 1, 0 );
  xTaskCreate( task_string_send, "ss",     def_stksz, 0, 1, 0 );

  us2.initIRQ( configKERNEL_INTERRUPT_PRIORITY, 0 );
  us2.initHW();
  us2.init();
  us2.itConfig( USART_IT_RXNE, ENABLE );
  us2.setOnRecv( on_received_char );
  us2.enable();

  vTaskStartScheduler();
  die4led( 0xFF );

  return 0;
}
Ejemplo n.º 2
0
int main(void)
{
  NVIC_SetPriorityGrouping(3);

  // enable all GPIO clocks
  RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
  RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN;
  RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN;
  RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN;
  RCC->AHB1ENR |= RCC_AHB1ENR_GPIOEEN;

  top_r_led::mode(GPIO_OUTPUT);
  top_g_led::mode(GPIO_OUTPUT);
  top_b_led::mode(GPIO_OUTPUT);
  bot_r_led::mode(GPIO_OUTPUT);
  bot_g_led::mode(GPIO_OUTPUT);
  bot_b_led::mode(GPIO_OUTPUT);

  top_r_led::high();
  top_g_led::high();
  top_b_led::low();
  bot_r_led::low();
  bot_g_led::high();
  bot_b_led::high();

  // setup encoders
  RCC->APB1ENR |= RCC_APB1ENR_TIM3EN | RCC_APB1ENR_TIM5EN;
  left_enc_a::mode(GPIO_ALTERNATE | GPIO_AF_TIM5);
  left_enc_b::mode(GPIO_ALTERNATE | GPIO_AF_TIM5);
  right_enc_a::mode(GPIO_ALTERNATE | GPIO_AF_TIM3);
  right_enc_b::mode(GPIO_ALTERNATE | GPIO_AF_TIM3);
  left_enc.init();
  right_enc.init();

  // setup motors
  RCC->APB2ENR |= RCC_APB2ENR_TIM1EN;
  RCC->APB1ENR |= RCC_APB1ENR_SPI2EN;
  tim1_ch1::mode(GPIO_ALTERNATE | GPIO_AF_TIM1);
  tim1_ch1n::mode(GPIO_ALTERNATE | GPIO_AF_TIM1);
  tim1_ch2::mode(GPIO_ALTERNATE | GPIO_AF_TIM1);
  tim1_ch2n::mode(GPIO_ALTERNATE | GPIO_AF_TIM1);
  sck::mode(GPIO_ALTERNATE | GPIO_AF_SPI2);
  miso::mode(GPIO_ALTERNATE | GPIO_AF_SPI2);
  mosi::mode(GPIO_ALTERNATE | GPIO_AF_SPI2);
  left_motor.init();
  right_motor.init();

  // setup usart
  RCC->APB2ENR |= RCC_APB2ENR_USART1EN;
  usart1.init(115200);
  NVIC_SetPriority(USART1_IRQn, 1);
  NVIC_EnableIRQ(USART1_IRQn);

  // setup imu
  imu.init(100000);

  // setup systick
  SysTick_Config(SystemCoreClock/1000);
  system_clock = 0;
  __enable_irq();
  
  while(1)
  {
    imu.update(system_clock);
  }

}