[研电赛技术支持]

GD32VF103VBT6内部Flash擦除后为什么数据为0x00000000

[复制链接]
988|4
手机看帖
扫描二维码
随时随地手机跟帖
liushufa1991|  楼主 | 2020-9-21 17:37 | 显示全部楼层 |阅读模式
GD32VF103VBT6内部Flash擦除后的数据为0X00000000,不应该为0xFFFFFFFF吗?为0x00000000后往Flash中写数据就会失败的原因?有大神能帮忙解释下吗?

使用特权

评论回复
liangshuang95| | 2020-9-21 17:52 | 显示全部楼层
flash配置和操作检查下

使用特权

评论回复
liushufa1991|  楼主 | 2020-9-21 19:52 | 显示全部楼层
liangshuang95 发表于 2020-9-21 17:52
flash配置和操作检查下

       uint8_t i;

        /* unlock the flash program/erase controller */
        fmc_unlock();
        while(fmc_flag_get(FMC_FLAG_BUSY));

        /* clear all pending flags */
        fmc_flag_clear(FMC_FLAG_END);
        fmc_flag_clear(FMC_FLAG_WPERR);
        fmc_flag_clear(FMC_FLAG_PGERR);


        for(i = 0; i < page_num && (FMC_READY == fmc_state); i++){
                fmc_state = fmc_page_erase(FMC_WRITE_START_ADDR + (FMC_PAGE_SIZE * i));

                fmc_flag_clear(FMC_FLAG_END);
                fmc_flag_clear(FMC_FLAG_WPERR);
                fmc_flag_clear(FMC_FLAG_PGERR);
        }
       
        while(fmc_flag_get(FMC_FLAG_BUSY));
        USART_Printf(USART0,"%x\r\n",REG16(FMC_WRITE_START_ADDR));
        fmc_halfword_program(FMC_WRITE_START_ADDR, 0xEEEE);

        while(fmc_flag_get(FMC_FLAG_BUSY));
        fmc_lock();
        USART_Printf(USART0,"%x\r\n",REG16(FMC_WRITE_START_ADDR));

使用特权

评论回复
liushufa1991|  楼主 | 2020-9-24 11:37 | 显示全部楼层
已解决,谢谢

使用特权

评论回复
您好!请问你的flash能读写成功吗?

使用特权

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

本版积分规则

2

主题

6

帖子

0

粉丝