[STM32F0] STM32F030F4P6运行程序中擦除flash出错

[复制链接]
2463|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 | 显示全部楼层
需要解除寄存器保护吗
wanduzi 发表于 2017-12-20 20:08 | 显示全部楼层
看看你单片机HEX烧录位置在哪儿,或者直接在程序里开辟这么一块空间。
wanduzi 发表于 2017-12-20 20:09 | 显示全部楼层
好像用const 静态变量可以定义一段这个空间,用取地址命令找到位置,操作。
mmuuss586 发表于 2017-12-20 20:42 | 显示全部楼层
030FLASH地址不一样的
 楼主| sdggg 发表于 2017-12-21 12:01 | 显示全部楼层
问题解决了,硬件错误是看门狗复位时间过短,周期是10ms,flash擦除时间十几ms,所以出错,把看门狗时间改长就可以了
 楼主| sdggg 发表于 2017-12-21 12:03 | 显示全部楼层
wanduzi 发表于 2017-12-20 20:09
好像用const 静态变量可以定义一段这个空间,用取地址命令找到位置,操作。 ...

const定义的变量都是放在flash的,直接修改会报错的,要解锁flash并擦除才能修改的
 楼主| sdggg 发表于 2017-12-21 12:09 | 显示全部楼层
现在新的问题是最小擦除大小问题,我自己买的同型号单片机最小擦除空间是512字节,而公司打样的是1k,比如擦除地址填0x8003C00,我自己的单片机只把3c00到3dff之间的擦除,公司的单片机把3c00到3fff的擦除,这就奇怪了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

155

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部