打印

关于Flash写操作的问题

[复制链接]
2783|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
最近用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;加入程序后,就会出现写错误如下图
而我将FlashAddress-=4;去掉后就可以写入成功。如图 ,请问各位这个是什么原因?实在是想不通·····
沙发
香水城| | 2011-8-12 17:04 | 只看该作者
循环次数不大,只有8次,你可以自己推算一下每次调用FLASH_ProgramWord()或FLASH_ProgramHalfWord()都使用了什么样的参数;不出5分钟就可以找出问题所在。

使用特权

评论回复
板凳
ringsearch|  楼主 | 2011-8-12 17:16 | 只看该作者
知道了,FlashAddress-=4,之后就回到了刚才刚写过的地方,而又没有先进行擦出操作,导致重复写错误。谢了,呵呵。

使用特权

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

本版积分规则

0

主题

36

帖子

1

粉丝