void LCD_SC_DisplayRemainGas(void) { uint32_t gas = 5; uint8_t gas_bcd[6] = {0}; gas = DataMem_GetRemainGas(); Covertu32To6bitBCD(gas,gas_bcd); if(!lcd_is_on) { LCD_SC_Init(); lcd_is_on = 1; } disp_icon |= DISP_STERE_ICON; lcd_disp_info.is_disp_digits = 1; lcd_disp_info.is_disp_dot = 1; lcd_disp_info.is_disp_icon = 1; lcd_disp_info.p_disp_contex = gas_bcd; lcd_disp_info.disp_contex_len = sizeof(gas_bcd); lcd_disp_info.disp_dot_num = 4; lcd_disp_info.p_disp_icon = &disp_icon; LCD_SC_Init(); LCD_SC_Display(&lcd_disp_info); LCD_SC_DoDisp(); delay1s(10); disp_icon &= 0; memset(&lcd_disp_info, 0, sizeof(lcd_disp_info_t)); LCD_SC_Display(&lcd_disp_info); /* Initialize the LCD */ LCD_Cmd(DISABLE); LCD_DeInit(); }
/*********************************************************************** * @brief Handles the event for LCD displaying. * @param None * @retval None ************************************************************************/ void lcd_event_handler(void * p_event_data, uint16_t event_size) { lcd_event_t * lcd_event_tmp = p_event_data; uint8_t temp[6] = {8,8,8,8,5,6}; uint32_t u32temp = 654321; switch(lcd_event_tmp->eLcd_event) { case LCD_INIT: #ifdef LCD_DEBUG printf("LCD_INIT ...\r\n"); #endif LCD_SC_Init_A(); LCD_SC_DeInit(); break; case lCD_HANDLE: #ifdef LCD_DEBUG printf("lCD_HANDLE ...\r\n"); #endif if(!lcd_is_on) { LCD_SC_Init(); lcd_is_on = 1; } disp_icon |= (DISP_VALVE_CLOSE_ICON | DISP_STERE_ICON); lcd_disp_info.is_disp_digits = 1; lcd_disp_info.is_disp_dot = 1; lcd_disp_info.is_disp_icon = 1; lcd_disp_info.p_disp_contex = temp; lcd_disp_info.disp_contex_len = sizeof(temp); lcd_disp_info.disp_dot_num = 2; lcd_disp_info.p_disp_icon = &disp_icon; LCD_SC_Init(); LCD_SC_Display(&lcd_disp_info); LCD_SC_DoDisp(); delay1s(2); disp_icon &= 0; memset(&lcd_disp_info, 0, sizeof(lcd_disp_info_t)); LCD_SC_Display(&lcd_disp_info); /* Initialize the LCD */ LCD_Cmd(DISABLE); LCD_DeInit(); lcd_event.eLcd_event = LCD_DEINIT; app_sched_event_put(&lcd_event,sizeof(lcd_event),lcd_event_handler); break; case LCD_DISPLAY_REMAIN_GAS: #ifdef LCD_DEBUG printf("LCD_DISPLAY_REMAIN_GAS ...\r\n"); #endif LCD_SC_DisplayRemainGas(); lcd_event.eLcd_event = LCD_DEINIT; app_sched_event_put(&lcd_event,sizeof(lcd_event),lcd_event_handler); break; case LCD_DEINIT: #ifdef LCD_DEBUG printf("LCD_DEINIT ...\r\n"); #endif /* Initialize the LCD */ LCD_Cmd(DISABLE); LCD_DeInit(); LCD_SC_DeInit(); lcd_is_on = 0; break; default: break; } }
/** * @brief Save Demonstration context (GPIOs Configurations, peripherals,...). * @param None * @retval None */ void IDD_Measurement_SaveContext(void) { GPIO_InitTypeDef GPIO_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; /* Deinitialize all peripherals used in the Demo */ DAC_DeInit(); ADC_DeInit(ADC1); DMA_DeInit(DMA1_Channel2); SPI_DeInit(SPI1); TIM_DeInit(TIM2); EXTI_DeInit(); TIM_DeInit(TIM6); LCD_DeInit(); SYSCFG_DeInit(); I2C_DeInit(I2C1); COMP_DeInit(); GPIOA_MODER = GPIOA->MODER; GPIOB_MODER = GPIOB->MODER; GPIOC_MODER = GPIOC->MODER; GPIOD_MODER = GPIOD->MODER; GPIOE_MODER = GPIOE->MODER; GPIOH_MODER = GPIOH->MODER; GPIOA_PUPDR = GPIOA->PUPDR; GPIOB_PUPDR = GPIOB->PUPDR; GPIOC_PUPDR = GPIOC->PUPDR; GPIOD_PUPDR = GPIOD->PUPDR; GPIOE_PUPDR = GPIOE->PUPDR; GPIOH_PUPDR = GPIOH->PUPDR; /* Configure all GPIO port pins in Analog Input mode */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_Init(GPIOE, &GPIO_InitStructure); GPIO_Init(GPIOH, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = IDD_CNT_EN_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(IDD_CNT_EN_GPIO_PORT, &GPIO_InitStructure); /* Configure IDD_CNT_EN pin as output push-pull ----------------------------*/ GPIO_SetBits(IDD_CNT_EN_GPIO_PORT, IDD_CNT_EN_PIN); /* Connect Button EXTI Line to Button GPIO Pin */ SYSCFG_EXTILineConfig(IDD_WAKEUP_EXTI_PORTSOURCE, IDD_WAKEUP_EXTI_PINSOURCE); /* Configure IDD_WAKEUP pin as input pull-down -----------------------------*/ GPIO_InitStructure.GPIO_Pin = IDD_WAKEUP_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(IDD_WAKEUP_GPIO_PORT, &GPIO_InitStructure); /* Configure the IDD_WAKEUP EXTI Line */ EXTI_ClearITPendingBit(IDD_WAKEUP_EXTI_LINE); EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Line = IDD_WAKEUP_EXTI_LINE; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); /* Enable the EXTI Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = IDD_WAKEUP_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); }