/*------------------------------------------------------- 功能 : 初始化 输入 : void 返回 : void Copyright : yitiandelan. ---------------------------------------------------------*/ void BSP_Init(void) { BSP_OSC_Init(); #if (configUSE_LED == 1) BSP_LED_Init(); #endif #if (configUSE_DAC == 1) BSP_DAC_Init(); #endif #if (configUSE_ADC123 == 1) BSP_ADC_Init(); #endif #if (configUSE_ExternADC == 1) BSP_ADC_ex_Init(); #endif #if (configUSE_LCD == 1) BSP_LCD_Init(); #endif #if (configUSE_CODEC == 1) BSP_CODEC_Init(); #endif #if (configUSE_PWM == 1) BSP_TIM3_Init(); #endif #if (configUSE_RTT == 1) BSP_RTT_Init(); #endif #if (configUSE_USB == 1) BSP_USB_Init(); #endif #if (configUSE_MPU == 1) BSP_MPU_Init(); #endif }
/** * @brief Manages Menu Process. * @param None * @retval None */ void Menu_Process(void) { tsl_user_status_t tsl_status; /* background menu: entry menu */ switch(menu_state) { case BACKGROUND_MENU: BSP_EPD_SetFont(&Font16); BSP_EPD_DrawImage(0, 0, 72, 172, Background_pic); BSP_EPD_DisplayStringAt(0, 13, (uint8_t*)"STM32L053", RIGHT_MODE); BSP_EPD_SetFont(&Font12); BSP_EPD_DisplayStringAt(87, 8, (uint8_t*)"DISCOVERY", LEFT_MODE); BSP_EPD_DisplayStringAt(71, 3, (uint8_t*)"DEMONSTRATION", LEFT_MODE); BSP_EPD_DisplayStringAt(94, 0, (uint8_t*)"V1.0.0", LEFT_MODE); BSP_EPD_RefreshDisplay(); HAL_Delay(2000); menu_state = MAIN_MENU; break; /* main menu */ case MAIN_MENU: BSP_EPD_Clear(EPD_COLOR_WHITE); BSP_EPD_DrawImage(5, 0, 48, 48, Mouse_pic); BSP_EPD_DrawImage(130, 0, 48, 26, Batery_pic); BSP_EPD_DrawImage(60, 0, 16, 60, Slider_pic); BSP_EPD_SetFont(&Font12); BSP_EPD_DisplayStringAt(0, 13, (uint8_t*)"STM32L053 Demonstration", CENTER_MODE); BSP_EPD_DisplayStringAt(56, 7, (uint8_t*)"USE LTS to", LEFT_MODE); BSP_EPD_DisplayStringAt(53, 4, (uint8_t*)"Select Demo", LEFT_MODE); BSP_EPD_DrawRect(2, 12, 166, 5); BSP_EPD_RefreshDisplay(); menu_state = MODULE_MENU; break; case MODULE_MENU: MyLinRots[0].p_Data->Position = 0; /* Execute STMTouch Driver state machine */ tsl_status = tsl_user_Exec(); if(tsl_status != TSL_USER_STATUS_BUSY) { if(LINEAR_DETECT) { /* USB Module Menu*****************************************************/ if((LINEAR_POSITION >= 1 ) && (LINEAR_POSITION <= 127)) { menu_state = USB_MENU; } /* PWR Module Menu*****************************************************/ else if ((LINEAR_POSITION >= 128 ) && (LINEAR_POSITION < 255)) { menu_state = PWR_MENU; } } } break; case USB_MENU: BSP_EPD_Clear(EPD_COLOR_WHITE); BSP_EPD_DrawImage(13, 4, 28, 146, FullSlider_pic); BSP_EPD_SetFont(&Font12); BSP_EPD_DisplayStringAt(0, 13, (uint8_t*)"STM32L053 USB Demo", CENTER_MODE); BSP_EPD_DisplayStringAt(15, 1, (uint8_t*)"LEFT RIGHT UP DOWN", LEFT_MODE); BSP_EPD_DrawRect(2, 12, 166, 5); BSP_EPD_DrawRect(145, 0, 26, 4); BSP_EPD_SetFont(&Font8); BSP_EPD_DisplayStringAt(146, 1, (uint8_t*)"B1 Ex", LEFT_MODE); BSP_EPD_RefreshDisplay(); MyLinRots[0].p_Data->Position = 0; /* USB Clock config */ USBClock_Enable(); /* USB Initialization */ BSP_USB_Init(); ButtonPressed = 0; while(ButtonPressed == 0) { /* Execute STMTouch Driver state machine */ tsl_status = tsl_user_Exec(); if(tsl_status != TSL_USER_STATUS_BUSY) { USB_process(tsl_status); } } /* USB Clock disable */ USBClock_Disable(); /* USB DeInitialize */ USBD_DeInit(&USBD_Device); ButtonPressed = 0; menu_state = MAIN_MENU; break; case PWR_MENU: BSP_LED_Off(LED4); BSP_LED_Off(LED3); /* Power Main IDD Menu ****************************************************/ BSP_EPD_Clear(EPD_COLOR_WHITE); BSP_EPD_DrawImage(30, 0, 16, 60, Slider_pic); BSP_EPD_DrawImage(3, 4, 32, 32, Run_pic); BSP_EPD_DrawImage(50, 4, 32, 29, Sleep_pic); BSP_EPD_DrawImage(90, 4, 32, 29, LPSleep_pic); BSP_EPD_DrawImage(130, 4, 32, 32, Stop_pic); BSP_EPD_SetFont(&Font12); BSP_EPD_DisplayStringAt(0, 13, (uint8_t*)"STM32L053 IDD Demo", CENTER_MODE); BSP_EPD_DrawRect(2, 12, 166, 5); BSP_EPD_DrawRect(113, 0, 57, 3); BSP_EPD_SetFont(&Font8); BSP_EPD_DisplayStringAt(116, 1, (uint8_t*)"B1 to Exit", LEFT_MODE); BSP_EPD_RefreshDisplay(); MyLinRots[0].p_Data->Position = 0; MyLinRots[0].p_Data->StateId = TSL_STATEID_RELEASE; ButtonPressed = 0; tsl_status = tsl_user_Exec(); while((ButtonPressed == 0) && ((MyLinRots[0].p_Data->StateId != TSL_STATEID_DETECT) || (LINEAR_POSITION == 0)) && (!LINEAR_POSITION)) { tsl_status = tsl_user_Exec(); } if(MyLinRots[0].p_Data->StateId == TSL_STATEID_DETECT) { /* Run mode menu ********************************************************/ if((LINEAR_POSITION >= 1 ) && (LINEAR_POSITION <= 64)) { Idd_Run_process(); BSP_EPD_Clear(EPD_COLOR_WHITE); BSP_EPD_SetFont(&Font12); BSP_EPD_DisplayStringAt(0, 13, (uint8_t*)"MCU in Run Mode", CENTER_MODE); BSP_EPD_DrawRect(2, 12, 166, 5); BSP_EPD_DisplayStringAt(8, 7, (uint8_t*)"Current consumption", LEFT_MODE); BSP_EPD_DisplayStringAt(8, 3, str, LEFT_MODE); BSP_EPD_DrawRect(113, 0, 57, 4); BSP_EPD_SetFont(&Font8); BSP_EPD_DisplayStringAt(116, 1, (uint8_t*)"B1 to Exit", LEFT_MODE); BSP_EPD_RefreshDisplay(); } /* Sleep mode menu ******************************************************/ else if ((LINEAR_POSITION >= 65 ) && (LINEAR_POSITION <= 127)) { /* Display before entering Sleep mode */ BSP_EPD_Clear(EPD_COLOR_WHITE); BSP_EPD_SetFont(&Font12); BSP_EPD_DisplayStringAt(0, 13, (uint8_t*)"MCU in Sleep Mode", CENTER_MODE); BSP_EPD_DrawRect(2, 12, 166, 5); BSP_EPD_RefreshDisplay(); /* Execute Sleep */ Idd_Sleep_process(); /* Display after wakeup from Sleep mode */ BSP_EPD_Clear(EPD_COLOR_WHITE); BSP_EPD_DisplayStringAt(0, 13, (uint8_t*)"Wake up from Sleep", CENTER_MODE); BSP_EPD_DrawRect(2, 12, 166, 5); BSP_EPD_DisplayStringAt(8, 7, (uint8_t*)"Current consumption", LEFT_MODE); BSP_EPD_DisplayStringAt(8, 3, str, LEFT_MODE); BSP_EPD_DrawRect(113, 0, 57, 4); BSP_EPD_SetFont(&Font8); BSP_EPD_DisplayStringAt(116, 1, (uint8_t*)"B1 to Exit", LEFT_MODE); BSP_EPD_RefreshDisplay(); } /* LP Sleep menu ********************************************************/ else if ((LINEAR_POSITION >= 128 ) && (LINEAR_POSITION <= 191)) { /* Display before entering LP Sleep mode */ BSP_EPD_Clear(EPD_COLOR_WHITE); BSP_EPD_SetFont(&Font12); BSP_EPD_DisplayStringAt(0, 13, (uint8_t*)"MCU in LPSleep Mode", CENTER_MODE); BSP_EPD_DrawRect(2, 12, 166, 5); BSP_EPD_RefreshDisplay(); /* Execute LP SLEEP */ Idd_LPSleep_process(); /* Display after wakeup from LP Sleep mode */ BSP_EPD_Clear(EPD_COLOR_WHITE); BSP_EPD_DisplayStringAt(0, 13, (uint8_t*)"Wake up from LPSleep", CENTER_MODE); BSP_EPD_DrawRect(2, 12, 166, 5); BSP_EPD_DisplayStringAt(8, 7, (uint8_t*)"Current consumption", LEFT_MODE); BSP_EPD_DisplayStringAt(8, 3, str, LEFT_MODE); BSP_EPD_DrawRect(113, 0, 57, 4); BSP_EPD_SetFont(&Font8); BSP_EPD_DisplayStringAt(116, 1, (uint8_t*)"B1 to Exit", LEFT_MODE); BSP_EPD_RefreshDisplay(); } /* Stop menu ************************************************************/ else { /* Display before entering Stop mode */ BSP_EPD_Clear(EPD_COLOR_WHITE); BSP_EPD_SetFont(&Font12); BSP_EPD_DisplayStringAt(0, 13, (uint8_t*)"MCU in Stop Mode", CENTER_MODE); BSP_EPD_DrawRect(2, 12, 166, 5); BSP_EPD_RefreshDisplay(); /* Execute STOP Process */ Idd_Stop_process(); /* Display after wakeup from Stop mode */ BSP_EPD_Clear(EPD_COLOR_WHITE); BSP_EPD_DisplayStringAt(0, 13, (uint8_t*)"Wake up from STOP", CENTER_MODE); BSP_EPD_DrawRect(2, 12, 166, 5); BSP_EPD_DisplayStringAt(8, 7, (uint8_t*)"Current consumption", LEFT_MODE); BSP_EPD_DisplayStringAt(8, 3, str, LEFT_MODE); BSP_EPD_DrawRect(113, 0, 57, 4); BSP_EPD_SetFont(&Font8); BSP_EPD_DisplayStringAt(116, 1, (uint8_t*)"B1 to Exit", LEFT_MODE); BSP_EPD_RefreshDisplay(); } ButtonPressed = 0; while(ButtonPressed == 0) { } menu_state = PWR_MENU; } else /* BUTTON_KEY != 0 */ { menu_state = MAIN_MENU; } break; default: break; } }