Skocz do zawartości

RTC w Nucleo-F103RB odmierza zbyt długie sekundy


Destroyer2137

Pomocna odpowiedź

Cześć,

próbowałem pobawić się STM32 na rejestrach i mam problem z RTC na tytułowej płytce. Skonfigurowałem wszystko i faktycznie RTC odmierza czas i miga diodą, ale jedna odmierzona "sekunda" trwa jakieś dwie rzeczywiste. Próbowałem zmienić prescaler na 16384, ale nie pomogło - jedna odmierzona "sekunda" trwa... może 1,8 zwykłej. Próbowałem wyłączyć pin A5 i wysyłać sobie czas przez USART, problem ten sam. Do pinu VBAT podłączona jest bateria CR2032. Nie mam pomysłu, co może być nie tak, więc proszę o pomoc.

 

#include "stm32f1xx.h"


void A5_config()
void RTC_config();

int main(void)
{
	SystemCoreClock = 8000000;

	HAL_Init();
	A5_config();
	RTC_config();

    uint32_t czas_obecny = RTC->CNTL;
    uint32_t czas_poprzedni = czas_obecny;

	while (1)
	{
		czas_obecny = RTC->CNTL;
		if (czas_obecny != czas_poprzedni)
		{
		    czas_poprzedni = czas_obecny;
		    GPIOA->ODR ^= (1<<5);
		}







	}
}

void A5_config()
{
	RCC->APB2ENR |= (1<<2);		//włącz zegar dla portu A
	GPIOA->CRL |= (1<<20);		//mode output...
	GPIOA->CRL &= ~(0b11<<22);	//...general purpose output push-pull
}


void RTC_config()
{
	RCC->APB1ENR |= (0b11<<27);			//wlacz zegar dla power interface i backup interface
	PWR->CR |= (1<<8);					//disable backup domain write protection
	RCC->BDCR |= (1<<0);				//LSE on
	while((RCC->BDCR & (1<<1)) == 0);	//poczekaj na ustabilizowanie LSE
	RCC->BDCR |= (0b01<<8);				//wybierz LSE jako zrodlo
	RCC->BDCR |= (1<<15);				//wlacz rtc
	while((RTC->CRL & (1<<5)) == 0);	//poczekaj na zakonczenie ostatniego wpisu do rejestrow RTC
	RTC->CRL |= (1<<4);					//wejdz w tryb konfiguracyjny RTC
	while((RTC->CRL & (1<<5)) == 0);
	RTC->PRLL |= (32767<<0);			//prescaler na 32kHz
	while((RTC->CRL & (1<<5)) == 0);
	while((RTC->CRL & (1<<3)) == 0);	//czekaj na synchronizacje rejestrow RTC
	RTC->CRL &= ~(1<<4);				//opusc tryb konfiguracyjny RTC
}

 

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.