Size: a a a

2021 March 16

LZ

Leonid Zaliubovskii in Embedded Group
Evgen
вы правы
идет выравнивание по 4 байта так?
не совсем, но и это
источник

LZ

Leonid Zaliubovskii in Embedded Group
вот статья. Почитай
источник

E

Evgen in Embedded Group
Leonid Zaliubovskii
не совсем, но и это
читаю
последний раз когда писал структуры в память ровнял по 2 байта и писал через юинт16
там голова не болела
источник

AK

Andrew K in Embedded Group
 FlashWriteParams(0x8003C00, Setting, sizeof(SettingStruct));  // вызов

// SettingStruct *tParams обязательно выравнивать к слову
void FlashWriteParams(uint32_t Address, uint8_t *tParams, uint32_t tCnt)
{
uint32_t i;    

 FLASH_Unlock();
 FlashErase(Address);  
 
 for(i = 0; i < tCnt; i = i + 2)
 {
  FLASH_Write(Address, (uint8_t*)tParams);  
  tParams = tParams + 2;
 }
}
источник

AK

Andrew K in Embedded Group
примерно так
источник

E

Evgen in Embedded Group
Andrew K
 FlashWriteParams(0x8003C00, Setting, sizeof(SettingStruct));  // вызов

// SettingStruct *tParams обязательно выравнивать к слову
void FlashWriteParams(uint32_t Address, uint8_t *tParams, uint32_t tCnt)
{
uint32_t i;    

 FLASH_Unlock();
 FlashErase(Address);  
 
 for(i = 0; i < tCnt; i = i + 2)
 {
  FLASH_Write(Address, (uint8_t*)tParams);  
  tParams = tParams + 2;
 }
}
от начального адреса смещения быть не должно?
источник

AK

Andrew K in Embedded Group
адрес куда пишем я ж не знаю
источник

E

Evgen in Embedded Group
Andrew K
адрес куда пишем я ж не знаю
я имею ввиду в самом цикле, где запись
адрес инкримент
источник

AK

Andrew K in Embedded Group
ну это очень примерно, нужно продумать чтобы правильно записалась структура возможен ее размер будет нечетным, нужно и размер структуры выровнять к полуслову
источник

AK

Andrew K in Embedded Group
упаковывать структуру не нужно в F0 лучше этого не делать
источник

LZ

Leonid Zaliubovskii in Embedded Group
источник

E

Evgen in Embedded Group
Leonid Zaliubovskii
вот статья. Почитай
читаю
про прагма пак вспомнилось сразу, чтоб порядок оставался верным, помню использовал было важно
источник

LZ

Leonid Zaliubovskii in Embedded Group
можно вот так сделать. И забить на выравнивание
источник

LZ

Leonid Zaliubovskii in Embedded Group
будет автомтаом учитываться. Работаешь с полем Settings
источник

LZ

Leonid Zaliubovskii in Embedded Group
сохраняешь в флеш/восстанавливаешь из флеша через массив Arr
источник

E

Evgen in Embedded Group
Leonid Zaliubovskii
сохраняешь в флеш/восстанавливаешь из флеша через массив Arr
хмм какой интересный трюк
читаю статью дальше
источник

LZ

Leonid Zaliubovskii in Embedded Group
misstypo
#define SETTINGS_SIZE       ((uint16_t ) sizeof(Setting_type) / 2U)
источник

AK

Andrew K in Embedded Group
проще приведение типов сделать
источник

E

Evgen in Embedded Group
Leonid Zaliubovskii
misstypo
#define SETTINGS_SIZE       ((uint16_t ) sizeof(Setting_type) / 2U)
а разве я не могу исхитриться и чар последним поставить или он в любом случае допишет 3 байта мусора?
источник

LZ

Leonid Zaliubovskii in Embedded Group
Evgen
а разве я не могу исхитриться и чар последним поставить или он в любом случае допишет 3 байта мусора?
можешь, если это тебе не сломает ничего
источник