Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

STM32 HAL_FLASH_Program nie zapisuje słowa po słowie

aspdev 30 Sty 2018 09:31 363 3
  • #1 30 Sty 2018 09:31
    aspdev
    Poziom 3  

    Witam serdecznie

    Poniższa funkcja ma zapisywać dwie dane, jedna po drugiej, pod wskazane adresy. Niestety po wykonaniu programu w pamięci zapisuje się tylko var1.i (Temperature). Program zachowuje się tak, jakby drugi raz funkcja HAL_FLASH_Program nie była wywoływana. Nie mam pojęcia dlaczego? Czy istnieją tutaj jakieś ograniczenia wywoływania funkcji programującej jedna po drugiej? Z góry dziękuję jako początkujący.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 3
  • Pomocny post
    #2 30 Sty 2018 09:45
    BlueDraco
    Specjalista - Mikrokontrolery

    Nic nie wiemy o typie mikrokontrolera. Poszczególne serie STM32 mają różne możliwości programowania (16/32/64 bity). Nie pokazałeś deklaracji zmiennych, a od tego wiele zależy. Podejrzewam problem ze zmienną Address.

    0
  • Pomocny post
    #3 30 Sty 2018 10:13
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Nie ma możliwości zapisywania poszczególnych BAJTÓW (w uproszczeniu), a wygląda że to próbujesz zrobić. Funkcje zapisują zwykle 2 bajty na raz, adres zapisu powinien być więc parzysty, a Ty powiększasz zmienną Address tylko o 1 między wywołaniami.

    0
  • #4 30 Sty 2018 10:29
    aspdev
    Poziom 3  

    Kwestia się wyjaśniła. Rzeczywiście problem był ze zmienną Address. Jest typu int, a nie typu wskażnikowego jak zmienna mem. Zatem inkrementacja nie skutkowała przesunięciem o 4 bajty. Kod poprawiłem na poniższy i wszystko działa jak należy.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0