你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Flash的擦除问题

[复制链接]
manhuami2007 提问时间:2017-4-18 14:36 /
阅读主题, 点击返回1楼
1 收藏 1 评论16 发布时间:2017-4-18 14:36
16个回答
tovax 回答时间:2018-7-12 13:44:42
请问“清除标志位”指的是什么标志位?
dataozi 回答时间:2018-7-12 14:00:23
先解锁 有个自己写的函数 你可以参考一下
void Writeflash(u32 addr,u16 data)
{
        volatile FLASH_Status FLASHStatus = FLASH_COMPLETE;

        FLASH_Unlock();
        FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);
  FLASHStatus = FLASH_ErasePage(addr);

        if(FLASHStatus == FLASH_COMPLETE)
        {
                FLASH_ProgramHalfWord(addr,data);
        }
        FLASH_Lock();
}

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

tovax 回答时间:2018-7-12 14:16:34
七夜-2003106 发表于 2017-8-24 15:27
你说的清除标志位,是什么意思?擦除之前,不就是FLASH_Unlock();一句就行了么? ...

找到答案了:
/* Clear All pending flags */
FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | LASH_FLAG_WRPRTERR);

请参考这篇帖子:
http://blog.csdn.net/robinson_911/article/details/16118967

我遇到这种异常情况是因为在上电后,在擦除之前进行了写入操作,我以为只要全是0xFF就不用擦除了,结果来看好像不是这样。两种方法,要么写入之前一定进行擦除,要么按上边那样清除标志位。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3 结帖奖励

查看全部评分

tovax 回答时间:2018-7-12 14:18:42
dataozi 发表于 2018-7-12 14:00
先解锁 有个自己写的函数 你可以参考一下
void Writeflash(u32 addr,u16 data)
{

十分感谢你的回复,按你的方法测试了,完全没问题,再次感谢!
dataozi 回答时间:2018-7-12 15:07:22
tovax 发表于 2018-7-12 14:18
十分感谢你的回复,按你的方法测试了,完全没问题,再次感谢!

别客气 别客气 帮到你 就行
mochen32 回答时间:2018-7-12 17:56:28
是不是擦除部分有代码,导致程序运行失败

评分

参与人数 1蝴蝶豆 +1 收起 理由
zero99 + 1

查看全部评分

zhao.zhao 回答时间:2018-7-15 13:24:30
我一般用HAL库,先找个官方的例程看看,然后复制,粘贴,把核心的代码复制过来,再根据自己的需要小改一下,问题就解决了。效率很高的。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

12

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版