方案STM32烧写失败:在08000000H处内容不匹配(Flash=FFH,所需=00H)的解决方案

问题:

用stlink烧录程序的时候,出现如图所示问题。

STlink烧录时报错

过程:

在出现这个问题后,我也参考了网上的各种贴
1.复位电路问题,测了半天排除
2.取消校验,这个就纯属掩耳盗铃了,排除

3.单片机型号选错,排除。
4.类型选择全擦,这个不太懂原理,大家可以试试,我的不行,排除

5.还有各种奇奇怪怪的办法,我就不列出来了,大家可以试试。

分析:

这个错误的信息大概可以理解为,在0x08010000地址上读取到flash存储为FF,但实际上应该写入03H,即校验时读取到数据与实际写入的不符。说明程序并没有烧进去,奇了怪了,我之前都可以。我找来了上一个版本程序烧录,没问题,可以烧进去。那问题就很明显了,flash可能超了。

可以看到,我的flash需求约为79k,即flsh=Code+RO+RW。而我用的单片机为stm32f103c8t6,flash仅仅为64k,已经远远超出了。

**

解决:

**
①第一想法肯定是更换单片机了,跟换同系列单片机,cBT6有128k就可解决。但在我查阅资料后发现,c8t6与cbt6为同一圆晶上制造的,c8t6其实是有128k的,但是经过我百般折腾后发现,还是不行,怎么都用不到后面的64k,估计有写保护或者后64k本身就有问题才封装成c8t6的,希望以后有大佬可以出个教程。
②折腾半天后,我又找到了一条新路子,编译器优化,我之前开的是Level0,基本没优化,之后我更改为level1,79k瞬间降到了60k左右,有不有,当时高兴坏了,问题解决,程序下进去了。但是高兴太早,我程序的部分功能不好使了,这,优化有风险啊。

③不好用的模块估计就是时序问题了,这一个个排除也太麻烦了,搜了半天,又找到一个方法,可以部分优化,什么意思呐,就是刚才的设置是全部文件优化,但是我们也可以选择部分文件优化,即容易出问题的模块就别优化了,自己比较自信的文件优化。在文件旁边右键魔术棒就可以进入该文件优化,如下图。至此问题就解决了,我主要是DS1302出问题,将它的优化等级设置为原来的level0,其他文件编译为level1.
④最最最后再说一句话,如果让我再选一次,我会直接换芯片,毫不犹豫。


物联沃分享整理
物联沃-IOTWORD物联网 » 方案STM32烧写失败:在08000000H处内容不匹配(Flash=FFH,所需=00H)的解决方案

发表评论