本帖最后由 123782568 于 2017-6-5 17:17 编辑
我不要定时向flash里保存一组16字节的数据。但是我看了下stm32的操作flash。每次写flash好像都需要先擦除,而且需按页擦或块擦。要是这样的话,我每次保存这16字节的数据该如何操作呢。望高手指教!
//FLASH写入数据测试
void writeFlashTest(void)
{
//1、解锁FLASH
HAL_FLASH_Unlock();
//2、擦除FLASH
//初始化FLASH_EraseInitTypeDef
FLASH_EraseInitTypeDef f;
f.TypeErase = FLASH_TYPEERASE_PAGES;
f.PageAddress = addr;
f.NbPages = 1;
//设置PageError
uint32_t PageError = 0;
//调用擦除函数
HAL_FLASHEx_Erase(&f, &PageError);
//3、对FLASH烧写
HAL_FLASH_Program(TYPEPROGRAM_WORD, addr, writeFlashData);
//4、锁住FLASH
HAL_FLASH_Lock();
}
这个是从网上找到的例子,不知该如何该。我不可能每次存一组16字节的数据,就要把一页数据擦掉吧?
|