你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32L151C8t6 Flash擦除错误

[复制链接]
lixinle072 提问时间:2018-6-19 11:39 /
本帖最后由 lixinle072 于 2018-6-19 11:41 编辑

以下是我的擦除用的函数,用的库是STM32_USB-FS-Device_Lib_V4.0.0,擦除地址0x0801FF00;
返回的错误代码是FLASH_ERROR_PROGRAM



uint8_t flashErasePage(uint32_t addr) {
    uint8_t status = 1;

    if (addr < FLASH_BASE || (addr >= (FLASH_BASE + 1024 * FLASH_SIZE))) return 1;  //非法地址

    //确保是页地址
    addr = addr & 0xFFFFFF00;

    FLASH_Unlock();

    status = FLASH_ErasePage(addr);
    if (status == FLASH_COMPLETE) {
        status = 0;
    }

    FLASH_Lock();

    return status;
}


收藏 1 评论4 发布时间:2018-6-19 11:39

举报

4个回答
stm1024 回答时间:2018-6-19 12:10:32
本帖最后由 stm1024 于 2018-6-19 12:13 编辑

2018-06-19_120907.jpg
你的首地址有点问题啊?一页是2K,你可以看到首地址末尾是000或者800,0x0801FF00似乎不是一个合规的首地址吧?要不你试试0x0801F000看看?然后 addr = addr & 0xFFFFFF00;也要相应地修改一下。

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

lixinle072 回答时间:2018-6-19 15:24:02
本帖最后由 lixinle072 于 2018-6-19 15:29 编辑

你好!我的MCU是STM32L151C8t6,这芯片的Flash是256一页的,当然我也去试过地址是0x0800F000去擦除,一样是失败。

lixinle072 回答时间:2018-6-19 21:01:37
还有人可以帮帮看看吗?
lixinle072 回答时间:2018-6-20 21:25:08
问题解决了,查到出错时FLASH->SR寄存器OPTVERR位被置1了,也不知道是什么原因置1的。擦除前清除一下标志位就可以成功擦除以及读写数据了。
FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_SIZERR | FLASH_FLAG_OPTVERR | FLASH_FLAG_OPTVERRUSR);

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3 结帖奖励

查看全部评分

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版