[STM32F0] STM32F030C8 Flash存储

[复制链接]
2201|5
 楼主| joyme 发表于 2017-5-16 13:01 | 显示全部楼层 |阅读模式
@@香水城
这个写Flash,只有擦除后第一次可以写(就是能把初始值成功写入),后面在程序里调用就失败,帮忙看看怎么解决?谢谢


u8bit write_para_to_flash(u16bit wVal, u8bit bType)
{
  FLASH_Status temp_stat;
  u32bit temp_addr = BASE_ADD;
  FLASH_Unlock();                                          // Flash½âËø£¬ÔÊÐí²Ù×÷Ïà¹ØµÄ¼Ä´æÆ÷
  temp_addr = temp_addr + (bType << 4);
  temp_stat = FLASH_ProgramHalfWord(temp_addr,wVal);
  FLASH_Lock();
  if(temp_stat != FLASH_COMPLETE)
    return FALSE;
  else
  {
    wParaArray[bType] = wVal;
    return TRUE;
  }
}
void mem_init(void)
{
  u8bit  bIndex;
  for(bIndex = 0; bIndex < MAX_PARA_NUM; bIndex++)
  {
    wParaArray[bIndex] = get_para_from_flash(bIndex);
  }
  if(wParaArray[MEM_WRITTEN] != WRITE_VAL)
  {
    wParaArray[BaudOffset] = DEFAULT_BAUD;
    wParaArray[NEG_Offset] = DEFAULT_NEG_VAL;
    wParaArray[POS_Offset] = DEFAULT_POS_VAL;
    wParaArray[MEM_WRITTEN] = WRITE_VAL;
    for(bIndex = 0; bIndex < MAX_PARA_NUM; bIndex++)
    {
      write_para_to_flash(wParaArray[bIndex], bIndex);
    }
  }
}

mmuuss586 发表于 2017-5-16 20:43 | 显示全部楼层
写入数据都不删除;
好好看看官方的程序
yklstudent 发表于 2017-5-16 21:46 | 显示全部楼层
写数据前,数据必须为0xFF,否则写入会失败?
xixi2017 发表于 2017-5-16 22:04 | 显示全部楼层
如果在有内容的地方写,那么写之前必须清除内容,也就是把存储空间清除后变成0xff才能再写。。
xixi2017 发表于 2017-5-16 22:44 | 显示全部楼层
另外这个Flash是芯片内的还是外置的。
 楼主| joyme 发表于 2017-5-23 09:07 | 显示全部楼层
嗯,后来自己也发现了,要先擦除
您需要登录后才可以回帖 登录 | 注册

本版积分规则

51

主题

1289

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部