Freddie Chopin napisał: Jeśli te funkcje zwracają status, to proponuję sprawdzać jaki dokładnie - DATA_EEPROM_Unlock(), DATA_EEPROM_Lock(), a zapewne też przez FLASH_ClearFlag().
nic nie zwracaja, usatwiaja tylko rejestry
Zaloguj się, aby zobaczyć kod
Ale zauwazylem coś innego, funkcja do zapisu jest na poczatku programu po ustawieniach zegarów portów itp., jak ta funkcję umiescilem po funkcjach (ale przed startem schedulera) tworzacych zadania w systemie freertos to juz się nie wiesza. Pomyslalem więc ze moze zaraz po starcie napiecie jest za niskie/niestabilne dla eepromu, ale jak robie reset proca przyciskiem to efekt jest ten sam czyli proc wisi. Zrobilem jeszce specjalne opoznienie programowe ale proc takze wisi, ok jest wtedy jak umieszcze zapis eepromu po funkcji tworzacej zadanie.
Problem rozwiazany polowiecznie bo co prawda proc sie nie wiesza ale co takiego sie dzieje po utworzeniu zadania ze pozniej jest ok to nie wiem.
Dodano po 25 [minuty]: Zapomnialem napisac o jeden ważnej rzeczy, wszystkie opisane problemy wystepują gdy program głowny jest wykonywany z pod adresu 0x8003000, na pierwszych 0x3000 jest bootloader.
Jak uruchomie program bez bootloadera z bazowego adresu 0x8000000, to zapis eeproma działa prawidłowo i to na samym poczatku programu.
Jak przestawie w linkierze adres na 0x08003000 i przesune wektor przerwan o te 0x3000, to cały program z przerwaniami działa opróczt tego zapisu do eeproma na poczatku programu.
Jeszce jedna ciekawostka, mam dwie takie same płytki, te same procesory, program usationy na adres 0x08003000, załadowany normalnie przez openocd, bootloader nie wgrany wiec pierwsze 0x3000 pamieci to same zera.
1.Odpalam program przez debuger i obydwa działają prawidłowo. Po odłaczeniu zasilania jedna płytka nie rusza wogóle, druga startuje ale z problemem zapisu do eeproma.
2. Wgrywam bootloader a pozniej bootloaderem docelowy program, obydwa procki startuja ale występuje problem z zapisem eepromu (jak funkcja zapisu jest po funkcjach tworzacych zadania to jest ok).