Код: Выделить всё
void RTC_init(void)
{
RCC->APB1ENR|=RCC_APB1ENR_PWREN;
PWR->CR|=PWR_CR_DBP;
RCC->CSR|=RCC_CSR_LSION;
while(!(RCC->CSR&RCC_CSR_LSIRDY));
if(RTC->ISR&RTC_ISR_INITS)return;
RCC->BDCR|=RCC_BDCR_BDRST;
RCC->BDCR&=~RCC_BDCR_BDRST;
RCC->BDCR&=~RCC_BDCR_RTCSEL;
RCC->BDCR|=(RCC_BDCR_RTCSEL_1);
RCC->BDCR|=RCC_BDCR_RTCEN;
RTC->WPR=0xCA;
RTC->WPR=0x53;
RTC->ISR|=RTC_ISR_INIT;
while(!(RTC->ISR&RTC_ISR_INITF));
RTC->PRER=249;
RTC->PRER=249|(127<<16);
RTC->CR|=RTC_CR_FMT;
RTC->ISR&=~RTC_ISR_INIT;
RTC->WPR=0;
RTC->WPR=0;
}
sprintf(text_buf, "%i:%02d",((RTC->TR>>20)&3)*10+((RTC->TR>>16)&0xF),((RTC->TR>>12)&7)*10+((RTC->TR>>8)&0xF));//выводим время
sprintf(text_buf, "%i %s %i",((RTC->DR>>4)&3)*10+(RTC->DR&0xF),month[((RTC->DR>>12)&1)*10+((RTC->DR>>8)&0xF)-1],((RTC->DR>>20)&0xF)*10+((RTC->DR>>16)&0xF)+2000);//выводим дату

only pure true norwegian blackx 

