本帖最后由 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; } |
你的首地址有点问题啊?一页是2K,你可以看到首地址末尾是000或者800,0x0801FF00似乎不是一个合规的首地址吧?要不你试试0x0801F000看看?然后 addr = addr & 0xFFFFFF00;也要相应地修改一下。
评分
查看全部评分
你好!我的MCU是STM32L151C8t6,这芯片的Flash是256一页的,当然我也去试过地址是0x0800F000去擦除,一样是失败。
FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_SIZERR | FLASH_FLAG_OPTVERR | FLASH_FLAG_OPTVERRUSR);
评分
查看全部评分