Цитата(KostyanPro @ Jul 12 2007, 15:33)

Имеем структуру вида:
Код
struct buf
{
{
uint8_t a;
uint8_t b;
uint16_t c[16];
uint16_t d[16];
uint16_t e[16];
uint16_t f[16];
};
};
и ее обьявление :
Код
struct buf my_buf[16];
Вопрос: как грамотно это дело в виде массива my_buf[] положить в Dataflash и потом считать ??
Самый простой выход мне видется в использовании указателя на эту структуру, но не понятно тогда как определить sizeof и как передавать разные размеры переменных -- uint8_t и uint16_t.
з.ы компилятор carm
Допустим, есть функции чтения и записи в DataFlash
void DataFlashWr(uWORD Addr, uBYTE Buf, WORD Len);
void DataFlashRd(uWORD Addr, uBYTE Buf, WORD Len);
Записываем весь массив структур my_buf[]:
DataFlashWr(Addr, (BYTE*)my_buf, sizeof(my_buf));
Записываем один из элементов структуры my_buf[]:
DataFlashWr(Addr, (BYTE*)&my_buf[5], sizeof(my_buf[5]));
Читаем аналогично