Skocz do zawartości

Ustawienie bitu RRS w rejestrze PWR_CR3 mikrokontrolera STM32L476RGT6 oraz zapis zmiennych w SRAM2


Pomocna odpowiedź

Napisano

Cześć,

Realizuję właśnie 6 lekcję kursu STM32L4 z forbot (https://forbot.pl/blog/kurs-stm32l4-oszczedzanie-energii-5-lat-na-baterii-id46581) i chciałbym zachować zasilanie SRAM2 w trybie Standby 🙂

Mógłby mi ktoś przybliżyć ręczne ustawianie bitów w rejestrze bez używania biblioteki HAL?
- Chodzi mi szczególnie o RRS w rejestrze PWR_CR3 wspomniany w kursie.

Interesowałoby mnie też jak wybrać konkretne adresy do zapisywania deklarowanych zmiennych (żeby faktycznie były w SRAM2).

Dziękuję za każdą odpowiedź i docenię również odesłanie do innych artykułów, materiałów.
 

/PS: Dla ludzi niewtajemniczonych w kurs, posługujemy się mikrokontrolerem STM32L4RGT6 

  • 4 lat(a) później...
(edytowany)

Jakby ktoś jeszcze szukał, podzielę się tym co znalazłem w necie:

Kod, który trzeba dodać do wspomnianego pliku STM32L476RGTX_FLASH.ld (przed ostatnim komentarzem):


.ram2 :
  {
    _sram2 = .;
    *(.ram2*)
    . = ALIGN(4);
    _eram2 = .;
  } >RAM2
  
  /* Remove information from the compiler libraries */

Potem zmienne, które mają być zapisywane do RAM2, należy deklarować w następujący sposób(Użycie volatile nie jest konieczne):

volatile uint32_t __attribute__((section(".ram2"))) zmienna;

Nie wiem o co kaman z tym wszystkim, ale działa. Wartości zmiennych nie są tracone po usypianiu mikrokontrolera.

edit: linijka 

PWR->CR3 |= PWR_CR3_RRS; 

chyba najlepiej gdy jest zaraz przed wywołaniem funkcji usypiania.

 

 

Edytowano przez konieczkson

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...