/** * @brief Main program. * @param None * @retval None */ int main(void) { RCC_ClocksTypeDef RCC_Clocks; /* SysTick end of count event each 10ms */ RCC_GetClocksFreq(&RCC_Clocks); SysTick_Config(RCC_Clocks.HCLK_Frequency / 100); /********************输出 初始化 ******************/ PWM_init(); STM324xG_LCD_Init(); LCD_Clear(BLACK);/* Clear the LCD */ LCD_SetBackColor(BLACK);/* Set the LCD Back Color */ LCD_SetTextColor(WHITE);/* Set the LCD Text Color */ LCD_DisplayStringLine(LINE(0), " Hello jaja. I'm xiaohei01"); /********************输入 初始化 ******************/ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);/*!< 3 bits for pre-emption priority 1 bits for subpriority */ Encoder_init(); //encoder tim8 usart_init();//通信COM usart2 115200 IMU_init(); if (get_mode()==1) { IMU_BE10(); } KEY_init(); AD_Init(); GPS_int(); TIM2_Configuration(); printf("uart init OK 2 \r\n"); while(1) { if(LCD_flag) { LCD_flag=0; lcd_refresh(); } } }
int main() { uint32_t data1, data2; SYS_TICK_init(); data1 = SYS_TICK_timeOut(0,0); while (SYS_TICK_timeOut(1, data1) < 1000); // Keep power supply RCC->AHBENR |= RCC_AHBENR_GPIOAEN; // Clock for GPIOA GPIO_config(0x0A, 3, GPIO_MODE_GP, GPIO_PULL_Floating, GPIO_TYPE_Pushpull, GPIO_SPEED_400k, 0); GPIO_config(0x0A, 7, GPIO_MODE_GP, GPIO_PULL_Floating, GPIO_TYPE_Pushpull, GPIO_SPEED_400k, 0); Power3VOn; Power5VOn; KEY_init(); MENU_init(); USART_init(); #ifdef USART_debug USART_send("Peripherals initialized.\n"); #endif RFM69W_init(); _BUZZER_init(); _LED_init(); _LED_off(); #ifdef USART_debug USART_send("External devices initialized.\n"); #endif // Block device while the power button is still pressed while(GPIOA->IDR & GPIO_IDR_IDR_0); _BUZZER_alarm_set_vol_list(2); _BUZZER_alarm_set_tone_list(2); _BUZZER_alarm_set_tempo_list(2); for(;;) { _actual->menu_fun(GetKeys()); // Holding key for GoUpTime will make menu to go up, to level 0 if (GPIOA->IDR & GPIO_IDR_IDR_2) { data2 = SYS_TICK_timeOut(0, 0); while (GPIOA->IDR & GPIO_IDR_IDR_2) { // Keep blinking if (_actual == _Syg_1_menu || _actual->par == _Syg_1_menu) _LED_blink_on(MENU_LED_SYG1); if (_actual == _Syg_2_menu || _actual->par == _Syg_2_menu) _LED_blink_on(MENU_LED_SYG2); if (_actual == _Syg_3_menu || _actual->par == _Syg_3_menu) _LED_blink_on(MENU_LED_SYG3); if (_actual == _Syg_4_menu || _actual->par == _Syg_4_menu) _LED_blink_on(MENU_LED_SYG4); if (SYS_TICK_timeOut(1, data2) > GoUpTime) { _LED_set_color(MENU_LED_Menu, 0, 0, 0); _LED_on(); #ifdef USART_debug USART_send("Going up to level 0.\n"); #endif _actual = _actual->par; } } } // Holding key for TurnOffTime will make device to turn off if (GPIOA->IDR & GPIO_IDR_IDR_0) { data1 = SYS_TICK_timeOut(0, 0); while (GPIOA->IDR & GPIO_IDR_IDR_0) { // Keep blinking if (_actual == _Syg_1_menu || _actual->par == _Syg_1_menu) _LED_blink_on(MENU_LED_SYG1); if (_actual == _Syg_2_menu || _actual->par == _Syg_2_menu) _LED_blink_on(MENU_LED_SYG2); if (_actual == _Syg_3_menu || _actual->par == _Syg_3_menu) _LED_blink_on(MENU_LED_SYG3); if (_actual == _Syg_4_menu || _actual->par == _Syg_4_menu) _LED_blink_on(MENU_LED_SYG4); if (SYS_TICK_timeOut(1, data1) > TurnOffTime) { _LED_off(); #ifdef USART_debug USART_send("Power off detected. System backed up. Switching off.\n"); #endif Power3VOff; Power5VOff; // Preventing from further code execution for (;;); } } } } }