打印
[STM32F0]

STM32F030C8 Flash存储

[复制链接]
2057|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才能再写。。

使用特权

评论回复
5
xixi2017| | 2017-5-16 22:44 | 只看该作者
另外这个Flash是芯片内的还是外置的。

使用特权

评论回复
6
joyme|  楼主 | 2017-5-23 09:07 | 只看该作者
嗯,后来自己也发现了,要先擦除

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

51

主题

1289

帖子

0

粉丝