// gsr-20130609-itjin: added 1ms function void wait_1ms(u16 ms_1) { s16 tmp_ms = ms_1 / 10; u16 delay_cnt = 0; // Wait over 10ms if(tmp_ms > 0) { wait_10ms(tmp_ms); } // Wait 1ms tmp_ms = ms_1 % 10; delay_cnt = 100; while(tmp_ms--) { delay_cnt = 100; while(delay_cnt--); }; }
/* ===================================================================*/ void set_Mode() { windowT win; operating_mode = MODE_BUTTON; clear_leds(TOPSIDE); LEDred_SetVal(); LEDgreen_SetVal(); LEDblue_SetVal(); // button pressed while (! ButtonReleased) { // wait till button released wait_10ms(2); } if (ButtonLongPressed) { ButtonLongPressed = FALSE; // toggle low energy mode if (energy_mode == ENERGY_LOW || energy_mode == ENERGY_ALWAYS_ON) { if (energy_mode == ENERGY_LOW) { energy_mode = ENERGY_STANDARD; } set_led(TOPSIDE, LED1, WHITE); LEDred_ClrVal(); LEDgreen_ClrVal(); LEDblue_ClrVal(); oled_setState(OLED_ON); } else { energy_mode = ENERGY_LOW; set_led(TOPSIDE, LED1, YELLOW); LEDred_ClrVal(); LEDgreen_ClrVal(); oled_setState(OLED_OFF); } write_ledColumn(TOPSIDE); wait_10ms(100); clear_leds(TOPSIDE); LEDred_SetVal(); LEDgreen_SetVal(); LEDblue_SetVal(); write_ledColumn(TOPSIDE); wait_ledColumn(); ButtonReleased = FALSE; ButtonPressed = FALSE; ButtonLongPressed = FALSE; } else { // start/stop trip ButtonPressed = FALSE; ButtonReleased = FALSE; if (tripMode == TRIP_STOPPED) { // stopped -> start trip tripMode = TRIP_STARTED; chronoMode = TRIP_STARTED; set_led(TOPSIDE, LED1, GREEN); LEDgreen_ClrVal(); } else { // started (or paused) -> stop trip tripMode = TRIP_STOPPED; chronoMode = TRIP_STOPPED; set_led(TOPSIDE, LED1, RED); LEDred_ClrVal(); // save the configuration and data set_params(); save_params(); } write_ledColumn(TOPSIDE); wait_10ms(100); if (ButtonPressed) { // reset trip set_led(TOPSIDE, LED1, BLUE); LEDblue_ClrVal(); LEDred_SetVal(); LEDgreen_SetVal(); write_ledColumn(TOPSIDE); tripDistance = 0.0; maxSpeed = 0.0; avgSpeed = 0.0; tripElevationGain = 0.0; maxAltitude = 0.0; chronoTime = 0.0; tripTime = 0.0; while (! ButtonReleased) { // wait till button released wait_10ms(2); } ButtonPressed = FALSE; ButtonReleased = FALSE; ButtonLongPressed = FALSE; wait_10ms(100); } clear_leds(TOPSIDE); write_ledColumn(TOPSIDE); wait_ledColumn(); } operating_mode = NORMAL; }
/******************************************************************************* * Function Name : main. * Description : main routine. * Input : None. * Output : None. * Return : None. *******************************************************************************/ int main(void) { /* Initialize the Demo */ bsp_init_rcc(); bsp_init_gpio(); bsp_init_interrupt(); #ifdef DEV_KIT_ADC_CONV_TEST bsp_init_adc(); DMA_Initial(); #endif /* DEV_KIT_ADC_CONV_TEST */ #ifdef DEV_KIT_STEP_MOTOR_TEST step_motor_enable(DISABLE); #endif /* DEV_KIT_STEP_MOTOR_TEST */ register_timer_function(timer2ServiceFunction, timer2_event); #ifdef DEV_KIT_STEP_MOTOR_TEST register_timer_function(timer3ServiceFunction, isr_left_motor_event); register_timer_function(timer4ServiceFunction, isr_right_motor_event); #endif /* DEV_KIT_STEP_MOTOR_TEST */ register_rtc_function(rtcServiceFunction, rtc_event); bsp_init_timer2(); #ifdef DEV_KIT_STEP_MOTOR_TEST bsp_init_timer3(DISABLE); bsp_init_timer4(DISABLE); #endif /* DEV_KIT_STEP_MOTOR_TEST */ bsp_init_irq_usart1(); //bsp_init_dma_usart1(); // 10msec wait_10ms(1); // User LED ON bsp_led_on(ledUser); #ifdef DEV_KIT_LED_TEST //led_rotate_test(); s_satus_led_flag = 1; // Go status led #endif /* DEV_KIT_LED_TEST */ welcome(); usart1_transmit_string("\r\n*****************************************************************************\r\n"); usart1_transmit_string("User led ( on )\r\n"); usart1_transmit_string("Initialize gpio service.\r\n"); usart1_transmit_string("Start USART1 service on mode interrupt.\r\n"); usart1_transmit_string_format("BaudRate = %d, Databit = %dbit, StopBits = %d, Parity = no, FlowControl = none\r\n", 115200, 8, 1); usart1_transmit_string("\r\n*****************************************************************************\r\n"); display_menu(); usart1_tx_proc(); #ifdef DEV_KIT_I2C_TOUCH_KEY_TEST i2c_GPIO_Config(); #endif /* DEV_KIT_I2C_TOUCH_KEY_TEST */ while( 1 ) { #ifdef DEV_KIT_I2C_TOUCH_KEY_TEST i2c_Test_Example(); #endif /* DEV_KIT_I2C_TOUCH_KEY_TEST */ #ifdef DEV_KIT_ADC_CONV_TEST // test_func_adc_conv(); #endif /* DEV_KIT_ADC_CONV_TEST */ if( run_menu_selection() != 0 ) display_menu(); motor_all(3000, ACT_GO_FORWARD, NOT_ADJUSMENT); // 300cm wait_1ms(2000); // 5seconds motor_all(3000, ACT_GO_BACKWARD, NOT_ADJUSMENT); wait_1ms(2000); motor_all(1000, ACT_GO_FORWARD, ADJUSMENT_FRONT); wait_1ms(2000); robot_turn(TURN_LEFT, TURN_90_DEGREE); wait_1ms(2000); robot_turn(TURN_RIGHT, TURN_90_DEGREE); wait_1ms(2000); motor_all(10000, ACT_GO_FORWARD, SETTING_ONLY); while((g_left_mot.step_count <= MM_TO_STEP(700)) || (g_right_mot.step_count <= MM_TO_STEP(700))) { if(300 < robot_read_sensor(SENSOR_TOP_AD)) { motor_stop(STOP_EMERGENCY); break; } } motor_stop(STOP_NORMAL); wait_1ms(3000); test_func_robot_turn(TURN_LEFT, 200); wait_1ms(3000); test_func_robot_smooth_turn(TURN_LEFT); wait_1ms(5000); } }