打印
[STM32F0]

STM32F030F4P6运行程序中擦除flash出错

[复制链接]
2156|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sdggg|  楼主 | 2017-12-20 10:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 sdggg 于 2017-12-20 10:59 编辑

我想在该单片机的flash最后的0x400一页保存一些数据,擦除时出现硬件错误中断,第一次直接烧写不擦除不会错误,烧第二次时由于没有擦除也会烧写不成功导致错误;现在问题是不能擦除,一擦除就硬件错误中断,页大小是0x400,文档上是可以按页擦除的,单我按两页0x800擦除也不行;这个擦除程序在stm32f303cb和stm32f302cb都没有问题,正常擦除和烧录数据,换到这个单片机就不行了,stm32f303cb的页大小是0x800,也是按页擦除,都没有问题,怎么这个单片机就不行?
沙发
yklstudent| | 2017-12-20 14:59 | 只看该作者
你检查下是否擦除错FLASH地址了

使用特权

评论回复
板凳
598330983| | 2017-12-20 16:59 | 只看该作者
指针越界了?

使用特权

评论回复
地板
mintspring| | 2017-12-20 17:29 | 只看该作者
需要解除寄存器保护吗

使用特权

评论回复
5
wanduzi| | 2017-12-20 20:08 | 只看该作者
看看你单片机HEX烧录位置在哪儿,或者直接在程序里开辟这么一块空间。

使用特权

评论回复
6
wanduzi| | 2017-12-20 20:09 | 只看该作者
好像用const 静态变量可以定义一段这个空间,用取地址命令找到位置,操作。

使用特权

评论回复
7
mmuuss586| | 2017-12-20 20:42 | 只看该作者
030FLASH地址不一样的

使用特权

评论回复
8
sdggg|  楼主 | 2017-12-21 12:01 | 只看该作者
问题解决了,硬件错误是看门狗复位时间过短,周期是10ms,flash擦除时间十几ms,所以出错,把看门狗时间改长就可以了

使用特权

评论回复
9
sdggg|  楼主 | 2017-12-21 12:03 | 只看该作者
wanduzi 发表于 2017-12-20 20:09
好像用const 静态变量可以定义一段这个空间,用取地址命令找到位置,操作。 ...

const定义的变量都是放在flash的,直接修改会报错的,要解锁flash并擦除才能修改的

使用特权

评论回复
10
sdggg|  楼主 | 2017-12-21 12:09 | 只看该作者
现在新的问题是最小擦除大小问题,我自己买的同型号单片机最小擦除空间是512字节,而公司打样的是1k,比如擦除地址填0x8003C00,我自己的单片机只把3c00到3dff之间的擦除,公司的单片机把3c00到3fff的擦除,这就奇怪了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

155

帖子

1

粉丝