/** * @brief Pause Chronometer * @param None. * @retval None. */ void Time_Pause(void) { Time_Show(LCD_LINE2); LCD_SetCursorPos(LCD_LINE1, 0); if (PauseStatus == RESET) { STM_EVAL_LEDOn(LED2); LCD_Print(RESETDISPLAY); LastDisplay = 'P'; CLK_RTCClockConfig(CLK_RTCCLKSource_Off, CLK_RTCCLKDiv_1); STM_EVAL_LEDOff(LED1); } else { STM_EVAL_LEDOn(LED1); LCD_Print(DEFAULTDISPLAY); LastDisplay = 'D'; CLK_RTCClockConfig(CLK_RTCCLKSource_LSE, CLK_RTCCLKDiv_1); STM_EVAL_LEDOff(LED2); } /* Invert Pause Status */ PauseStatus = (BitStatus)(~PauseStatus); }
/** * @brief Main program. * @param None * @retval None */ void main(void) { /* Enable LSE */ CLK_LSEConfig(CLK_LSE_ON); /* Wait for LSE clock to be ready */ while (CLK_GetFlagStatus(CLK_FLAG_LSERDY) == RESET); /* wait for 1 second for the LSE Stabilisation */ LSE_StabTime(); /* Select LSE (32.768 KHz) as RTC clock source */ CLK_RTCClockConfig(CLK_RTCCLKSource_LSE, CLK_RTCCLKDiv_1); CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE); /* Calendar Configuration */ Calendar_Init(); /*RTC Tamper Configuration*/ Tamper_Init(); /* EvalBoard Configuration */ EvalBoard_Init(); Tamper_DelayShow(TampFilterIndex); while (1) { EnterSafeCode(); Time_Show(LCD_LINE2, SHOW_POINT2); ExitSafeCode(); } }
/** * @brief This function initializes in Ultra Low Power mode, * disable the LCD, LSE and configures the unused IOs * in output push-pull * @caller main and ADC_Icc_Test * @param None * @retval None */ void Halt_Init(void) { /* Set STM8 in low power */ PWR->CSR2 = 0x2; LCD_Cmd(DISABLE); /* To wait LCD disable */ while ((LCD->CR3 & 0x40) != 0x00); /* Set GPIO in low power*/ GPIO_LowPower_Config(); /* Stop RTC Source clock */ CLK_RTCClockConfig(CLK_RTCCLKSource_Off, CLK_RTCCLKDiv_1); #ifdef USE_LSE CLK_LSEConfig(CLK_LSE_OFF); while ((CLK->ECKCR & 0x04) != 0x00); #else CLK_LSICmd(DISABLE); while ((CLK->ICKCR & 0x04) != 0x00); #endif /* Stop clock RTC and LCD */ CLK_PeripheralClockConfig(CLK_Peripheral_RTC, DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_LCD, DISABLE); }
/** * @brief Reset Chrono to zero. * @param None. * @retval None. */ void Time_Reset(void) { PauseStatus = RESET; RTC_TimeStr.RTC_H12 = RTC_H12_AM; RTC_TimeStr.RTC_Hours = 00; RTC_TimeStr.RTC_Minutes = 00; RTC_TimeStr.RTC_Seconds = 00; RTC_SetTime(RTC_Format_BIN, &RTC_TimeStr); CLK_RTCClockConfig(CLK_RTCCLKSource_Off, CLK_RTCCLKDiv_1); }
void clock_config(void) { CLK_HSICmd(ENABLE); CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64); CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI); CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1); while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY)==RESET); CLK_PeripheralClockConfig(CLK_Peripheral_LCD, ENABLE); CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE); CLK_PeripheralClockConfig(CLK_Peripheral_TIM4, ENABLE); CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE); CLK_PeripheralClockConfig(CLK_Peripheral_TIM3, ENABLE); CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, ENABLE); };
void LCD_HardwareInit(void) { unsigned long segments = S8 | S9 | S10 | S11 | S12 | S13 | S14 | S15 | S16 | S17 | S18 | S19; CLK_RTCClockConfig(CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_2); CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE); CLK_PeripheralClockConfig(CLK_Peripheral_LCD, ENABLE); LCD_Init(LCD_Prescaler_4, LCD_Divider_24, LCD_Duty_1_3, LCD_Bias_1_3, LCD_VoltageSource_External); LCD_PortMaskConfig(LCD_PortMaskRegister_1, (uint8_t)(segments >> 8)); LCD_PortMaskConfig(LCD_PortMaskRegister_2, (uint8_t)(segments >> 16)); LCD_PortMaskConfig(LCD_PortMaskRegister_3, (uint8_t)(segments >> 24)); LCD_PulseOnDurationConfig(LCD_PulseOnDuration_0); LCD_ContrastConfig(LCD_Contrast_Level_7); LCD_Cmd(ENABLE); }
void startLcd() { int i; long j; CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE); CLK_RTCClockConfig(CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_1); CLK_PeripheralClockConfig(CLK_Peripheral_LCD, ENABLE); LCD_Init(LCD_Prescaler_1, LCD_Divider_31, LCD_Duty_1_4, LCD_Bias_1_3, LCD_VoltageSource_Internal); LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff); LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0xff); LCD_PortMaskConfig(LCD_PortMaskRegister_2, 0xff); LCD_ContrastConfig(LCD_Contrast_3V0); LCD_DeadTimeConfig(LCD_DeadTime_0); LCD_PulseOnDurationConfig(LCD_PulseOnDuration_1); LCD_Cmd(ENABLE); }
void LCD_SC_Init(void) { /* Enable LCD clock */ CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE); CLK_PeripheralClockConfig(CLK_Peripheral_LCD, ENABLE); CLK_RTCClockConfig(CLK_RTCCLKSource_LSE, CLK_RTCCLKDiv_1); /* Initialize the LCD */ LCD_Init(LCD_Prescaler_2, LCD_Divider_18, LCD_Duty_1_8, LCD_Bias_1_4, LCD_VoltageSource_Internal); /* Mask register*/ LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff); LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x3f); LCD_ContrastConfig(LCD_Contrast_Level_7); LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7); /* Enable LCD peripheral */ LCD_Cmd(ENABLE); }
/** * @brief Main program. * @param None * @retval None */ void main(void) { /* Enable LSE */ CLK_LSEConfig(CLK_LSE_ON); /* Wait for LSE clock to be ready */ while (CLK_GetFlagStatus(CLK_FLAG_LSERDY) == RESET); /* wait for 1 second for the LSE Stabilisation */ Delay_Seconds(1); /* Select LSE (32.768 KHz) as RTC clock source */ CLK_RTCClockConfig(CLK_RTCCLKSource_LSE, CLK_RTCCLKDiv_1); CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE); /*RTC Tamper Configuration*/ Tamper_Init(); /* Calendar Configuration */ Calendar_Init(); /* EvalBoard Configuration */ EvalBoard_Init(); /* RTC Time fields reset*/ Time_Reset(); /* RTC Time pause waiting for a press on SEL Key */ Time_Pause(); while (1) { EnterSafeCode(); Time_Show(LCD_LINE2); ExitSafeCode(); } }