stm32 - 在 STM32F7xx(24 个扇区)上使用 Flash 进行读写
问题描述
我有以下结构要写入内存:
#define FLASH_CONFIG_START_ADDR ((uint32_t) 0x080E0000)
#define FLASH_CONFIG_END_ADDR ((uint32_t) 0x080E0040)
union NVRAM {
Config_t config;
uint8_t data[512];
} DevNVRAM;
我已经使用此代码写入内存
uint32_t l_address = FLASH_CONFIG_START_ADDR;
uint8_t l_index = 0x00;
l_address = FLASH_CONFIG_START_ADDR;
HAL_FLASH_Unlock();
FLASH_Erase_Sector(FLASH_SECTOR_11, VOLTAGE_RANGE_1);
while (l_address < FLASH_CONFIG_END_ADDR)
if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_BYTE, l_address,
DevNVRAM.data[l_index]) == HAL_OK) {
l_index += 1;
l_address += 1;
}
HAL_FLASH_Lock();
然后我只是从同一个内存块中读取。
l_address = FLASH_CONFIG_START_ADDR;
l_index = 0x00;
while (l_address < FLASH_CONFIG_END_ADDR) {
DevNVRAM.data[l_index] = *(uint8_t*) l_address;
l_index += 1;
l_address += 1;
}
问题如下,我读完整个扇区后,数据变得不一样了,特别是用零填充。代码有什么问题?
解决方案
推荐阅读
- python - 无法导入名称,来自 python-telegram-bot 的错误
- javascript - 清除跨度中的消息
- c++ - 如何轻松思考二叉搜索树中的递归过程?
- c# - Xamarin sqLite.SQLiteException:使用两个数据库的约束
- html - 使用 Squarespace 获取背景图像以显示整页的问题
- java - Spring-MVC web.xml 文件不使用 ContextLoaderListener
- python - 导入模块会造成问题吗?
- c++ - 函数没有返回预期的输出
- ruby-on-rails - 如何将此 PostgreSQL 查询转换为 activerecord
- python - 程序未运行时也要继续倒计时