Напишите структуру любого размера для прошивки STM32H7

Я пытаюсь написать структуру любого размера для прошивки STM32H7. Он записал только количество, кратное 4 байтам. Остальные байты (1, 2, 3) не были записаны. Я использую временную переменную для хранения оставшихся байтов. При отладке значение temp правильное, но оно не было сохранено во флэш-памяти. Любая рекомендация, как записать оставшиеся байты во флеш-память :)?

      void flashWriteN(uint32_t sectorAddr, uint32_t idx, volatile void *buf,
        uint32_t Nsize) {
    uint8_t* wrBuf = (uint8_t *)buf;
    uint32_t flashAddress = sectorAddr + idx;
    uint32_t temp = 0;
    uint8_t offset = Nsize%4;
    HAL_FLASH_Unlock();
    switch (offset) {
    case 1:
        temp = wrBuf[Nsize-1];
        break;
    case 2:
        temp = ((wrBuf[Nsize-2] << 8) + wrBuf[Nsize-1]);
        break;
    case 3:
        temp = ((wrBuf[Nsize-3] << 16) + (wrBuf[Nsize-2] << 8) + wrBuf[Nsize-1]);
        break;
    default:
        break;
    }
    for (uint32_t i = 0; i < Nsize / 4; i += 4) {
        HAL_FLASH_Program(FLASH_TYPEPROGRAM_FLASHWORD, flashAddress,
                (uint32_t) (&((uint32_t*) wrBuf)[i]));
        flashAddress += 4;
    }
    if (offset!=0) {
        HAL_FLASH_Program(FLASH_TYPEPROGRAM_FLASHWORD, flashAddress,
                        (uint32_t)&temp);
    }
    HAL_FLASH_Lock();
}

0 ответов

Другие вопросы по тегам