STM32F207擦除片内FLASH的问题
由于项目需求,需要擦除片内指定空间,然后从SPI_FLASH中加载程序运行问题如下:: 在DEBUG模式下,执行擦除程序后,则退出DEBUG,无法执行下一步程序
擦除代码如下:
1、FLASH_Unlock();
2、FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);
3、FLASH_EraseSector(FLASH_Sector_4, VoltageRange_3); //出错在这步
4、FLASH_ProgramByte() ;//写入代码省略
5、FLASH_Lock();
求教各位大侠,谢谢,急。
虽然在第三步执行擦除时,跳出DEBUG,但是下次在进DEBUG,查看FLASH空间,确实已擦除,全为0xFF
应该是擦除了代码段了。 wenyangzeng 发表于 2019-3-25 11:56
应该是擦除了代码段了。
说的有道理
请楼主把.map文件打开对照一下,看看擦除的是否为代码段。 我程序最大空间已经限定范围了 ,,0x08000000 - 0x0801 0000
我删除的是后面的空间,,不至于会擦除到代码段
擦除的扇区是FLASH_Sector_4 ,0x0801 0000-- 0x0801FFFF
就算我擦除别的扇区比如FLASH_Sector_5 也是类似问题 会不会是擦除时间太长 导致某些复位? 比如看门狗, 我工程里没有对看门狗进行操作,会默认打开吗? 进一步测试发现,擦除16k FLASH时正常,擦除128k FLASH 扇区时出现异常 刚才是就想是不是硬件问题,看到16K正常,128K异常,FLASH的大小是否和程序匹配
页:
[1]