[avr-gcc] znow te wskazniki (wrr)

Witam, juz mnie szewska pasja dopadla :)

struktura z danymi o pierwszym wolnym adresie we flashu (at45db011) struct Flash_Addr{ u16 Page_Addr; u16 Byte_Addr; };

prototyp: void FlashMem_write_block (void *Buff, Address_t *Addr, size_t n);

funkcje ma zapisywac dowolna dana od bajtu do struktury. np.

struct Store{ u16 Store_Data; u16 Store_Time; u32 Store_Param; };

wywolanie: FlashMem_write_block (&Store, &Flash_Addr, sizeof(Store));

no i przy kompilacji wywala: warning: passing arg 1 of `FlashMem_read_block' discards qualifiers from pointer target type warning: passing arg 2 of `FlashMem_read_block' discards qualifiers from pointer target type

nadmienie tylko ze w funkcji sa modyfikowane zmienne Store oraz Flash_Addr. Krew mnie zalewa :(

Reply to
Pawel Kurzawa
Loading thread data ...

void FlashMem_write_block (volatile void *Buff, volatile Address_t *Addr, size_t n); to wiem ze pomoze, ale czy to jest prawidlowe wyjscie?

Reply to
Pawel Kurzawa

Zdefiniowales typ strukturalny, a nie zdefiniowales zmiennej !

Teraz albo: a) zmieniasz na struct { u16 Page_Addr; u16 Byte_Addr; } Flash_Addr;

[nie bardzo polecam - zazwyczaj typ strukturalny sie przydaje]

b) zmieniasz na struct Flash_Addr { u16 Page_Addr; u16 Byte_Addr; } Flash_Buf;

- definiujesz typ "flash_addr" i zmienna "Flash_buf"

c) dodajesz

Flash_Addr Flash_Buf;

Czyli definiujemy zmienna typu Flash_addr - a wiec strukture.

Bo mniej wiecej napisales cos typu FlashMem_write_block (& float, & int , sizeof(float));

Przyznasz chyba ze dwa pierwsze argumenty sa glupota :-)

J.

Reply to
J.F.

w sumie chcialem to za bardzo uproscic zeby bylo czytelne i wyszla bzdura. bo wyglada to tak:

typedef struct { u16 Page_Addr; u16 Byte_Addr; }Address_t;

Address_t Flash_Addr;

prototyp: void FlashMem_write_block (void *Buff, Address_t *Addr, size_t n);

FlashMem_write_block (&Store, &Flash_Addr, sizeof(Store));

Reply to
Pawel Kurzawa

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.