初级会员

- 积分
- 58
- 金钱
- 58
- 注册时间
- 2019-12-9
- 在线时间
- 20 小时
|
1金钱
对256K stm32的flash自己写个循环对连续的扇区进行擦除,擦除到第32个扇区之后,后面的扇区无论调用多少次函数都无法擦除,,但是用原子哥的先读后擦能够擦掉。
u8 MFlash_EraseSectors(void)
{
u8 secpos;
u8 i;
volatile FLASH_Status FLASHStatus = FLASH_COMPLETE;
secpos=96;
FLASH_Unlock(); //解锁
for(i=0;(i<secpos)&&(FLASHStatus == FLASH_COMPLETE);i++)
{
FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);
FLASHStatus=FLASH_ErasePage(i*STM_SECTOR_SIZE+STM32_FLASH_O_BASE);//擦除这个扇区
}
FLASH_Lock();//上锁
return 1;
}
|
|