Zgadzam się z wszelkimi uwagami, nie ma tutaj wątpliwości ale to był tylko przykład a samo int8_t wynikało z sprawdzenia czy typ zmiennej ma tutaj znaczenie. Ale do sedna. Popełniłem błąd pisząc, że zmienna przyjmuje zawsze wartość 0. Wrzuciłem dane do Excela i sprawa wygląda trochę inaczej ale opisze to na przykładzie kodu:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Program działa następujaco: Systick inkrementuje co jakis czas zmienną status, z kolej ta gdy osiągnie wartośc 10 - inkrementujemy wartość całki (chodzi tylko o przykład, nie o sam sens operacji). Do pinu PC13 mam podłączony przycisk i w momencie kiedy go naciskam, pętla główna zatrzymuje się na while(...); i w efekcie zadziała nam watchdog - czyli po prostu wymuszam reset procka. I teraz po resecie wartość RTC->BKP0R faktycznie jest przypisywana do "sprawdz_reset", ale za chwile jest kasowana po ustawieniach watchdoga. Jeśli teraz dodam sobie w programie jakąś flagę ("flaga_reset") i jeśli w momencie wystąpienia resetu przypisze watorść RTC->BKP0R do "sprawdz_reset", przypisze inną wartość do "flaga_reset" niż zero (zakomentowany //if(flaga_reset==0) czyli pominę ustawienia watchdoga to zmienna "sprawdz_reset" ładnie przechowuje wartość RTC->BKP0R ale jednocześnie watchdog wtedy przestaje działać, bo pominąłem jego ustawienia (inicjalizacje?).
Czy to możliwe, że ustawienie watchdoga powoduje wyzerowanie wartości zmiennych? Jak to obejsc?
Edit:
Procesor to STM32F411RE i w RM nie znalazłem żadnych informacji o "backup SRAM", chyba że nie umiem szukac.