你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
内部Flash写2个字节当标志位,用先擦除和解保护吗?
[复制链接]
tryfly
提问时间:2020-4-3 11:50 /
我的程序
void flash_burnflag(void)
{
uint16_t fromapp_flag = 0x0888;
uint32_t FROMAPP_ADDRESS = 0x8007FFE;
HAL_FLASH_Unlock();//解锁Flash
HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, FROMAPP_ADDRESS, fromapp_flag);
HAL_FLASH_Lock(); //锁住Flash
}
复制代码
1,上面的程序在一个全新工程,只放这个函数,成功,可以用st的下载程序读出指定内存位置为0x0888
2,但是放在我实际程序APP(实际环境是BOOT+APP)中,
实际程序APP里面有串口DMA接收中断,这个程序里除了
flash_burnflag
这个函数,没有flash相关操作了
,
函数
flash_burnflag不论在初始化位置还是串口接收中断里面执行,都不成功,为0000
请问这是为什么呢?
请问需要处理Write protection和erase吗?
赞
0
收藏
0
评论
5
分享
发布时间:2020-4-3 11:50
举报
请先
登录
后回复
5个回答
yklstudent
回答时间:2020-4-8 08:32:22
a0a.1 32b0c
高级会员了也有这个疑问?
赞
0
评论
回复
支持
反对
DavidTan
回答时间:2020-4-8 08:55:52
a0a.1 32b0c
每次写操作之前都要先擦除
赞
0
评论
回复
支持
反对
水晶之泪0517
回答时间:2020-4-8 09:21:57
a0a.1 32b0c
目标地址写之前可以读出来判断一下,如果是全FF就不用擦除,可以直接写
评分
参与人数
1
蝴蝶豆
+2
收起
理由
STMCU
+ 2
查看全部评分
赞
0
评论
回复
支持
反对
网络孤客
回答时间:2020-4-8 10:24:59
a0a.1 32b0c
擦除原理是所有位上置“1”,
写数据是把为“0”的位清0,不能把flash中为“0”的位值“1”
评分
参与人数
1
蝴蝶豆
+3
收起
理由
STMCU
+ 3
查看全部评分
赞
0
评论
回复
支持
反对
butterflyspring
回答时间:2020-4-10 17:12:00
a0a.1 32b0c
同意楼上大侠们的观点,补充一点,你的程序有"BOOT+APP",推测用了写保护。所以注意写保护不要覆盖到存贮地址。
评分
参与人数
1
蝴蝶豆
+1
收起
理由
STMCU
+ 1
查看全部评分
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
评分
查看全部评分
写数据是把为“0”的位清0,不能把flash中为“0”的位值“1”
评分
查看全部评分
评分
查看全部评分