关于Flash写操作的问题

[复制链接]
3392|2
 楼主| ringsearch 发表于 2011-8-12 16:58 | 显示全部楼层 |阅读模式
最近用STM32片上的Flash存东西,但是发现一个问题,程序如下:
        FLASH_Status status = FLASH_COMPLETE;
    FlashAddress=WRITE_START_ADDR;
    FLASH_Unlock();
    FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR);
    status=FLASH_ErasePage(FlashAddress);
        for(i=0;i<8;i++)
            {
                FlashBuffer_union.datafloat=ADC_Offset;
            status=FLASH_ProgramWord(FlashAddress,FlashBuffer_union.datalongint);
            FlashAddress+=4;
            }
    FlashAddress-=4;
    for(i=0;i<8;i++)
        {
            FlashBuffer_int=(uint16_t)(ChannelStatus);
            status=FLASH_ProgramHalfWord(FlashAddress,FlashBuffer_int);
            FlashAddress+=2;
        }
    FLASH_Lock();
当我将FlashAddress-=4;加入程序后,就会出现写错误如下图 s1.jpg
而我将FlashAddress-=4;去掉后就可以写入成功。如图 s2.jpg ,请问各位这个是什么原因?实在是想不通·····
香水城 发表于 2011-8-12 17:04 | 显示全部楼层
循环次数不大,只有8次,你可以自己推算一下每次调用FLASH_ProgramWord()或FLASH_ProgramHalfWord()都使用了什么样的参数;不出5分钟就可以找出问题所在。
 楼主| ringsearch 发表于 2011-8-12 17:16 | 显示全部楼层
知道了,FlashAddress-=4,之后就回到了刚才刚写过的地方,而又没有先进行擦出操作,导致重复写错误。谢了,呵呵。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

36

帖子

1

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