Przedstawiłeś zbyt mało kodu, więc mogę się tylko domyślać, jakiego typu są elementy struktury (a raczej tablicy struktur)
dir_id. Domyślam się więc, że
dir_id[i].dir_id to wskaźnik na ciąg znaków w pamięci FLASH, tak samo jak
_last_dir (cytuję:
"chcę ustawić wskaznik _last_dir na adres w pamięci FLASH tożsamy z tym parametrem"). W takim przypadku wystarczy przypisać wartość
dir_id[i].dir_id do zmiennej
_last_dir:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
ponieważ to co zrobiłeś:
BarGai napisał(a):
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
to odczyt z pamięci FLASH dwóch pierwszych znaków ciągu, na który wskazuje
dir_id[i].dir_id i utworzenie z nich (błędnego) wskaźnika.
Druga sprawa - nie mam GB, więc nie czytałem i nie znam kodu "biblioteki" od UART, ale jeśli
_last_dir jest wskaźnikiem na ciąg znaków we FLASH, najprawdopodobniej ta linia kodu nie zadziała:
BarGai napisał(a):
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Do wysyłania przez UART ciągu znaków zapisanego w pamięci FLASH powinna być dostępna inna funkcja (zwykle z przyrostkiem "_P", czyli np.
uart_puts_P() ), która odpowiednio interpretuje przekazywany do niej wskaźnik.
Na razie tyle zauważyłem (co jest związane z przedstawionym przez Ciebie problemem), ale nie wykluczone, że masz tam jeszcze inne błędy. Trudno to wywnioskować na podstawie tak skromnych fragmentów kodu. Przydałyby się jeszcze przynajmniej deklaracje i definicje zmiennych, którymi operujesz.