[应用相关] STM32L476先用仿真器擦除FLASH后在程序中写不成功

[复制链接]
 楼主| cr315 发表于 2022-3-8 09:00 | 显示全部楼层 |阅读模式
STM32L476写FLASH必须是64位(8字节)写,也就是double WORD,而且要先把要写的字节部分擦除掉。

问题来了,先把整片用仿真器擦除掉,程序中先定义一个64位的静态变量常数0xFFFFFFFFFFFFFFFF,保证在FLASH中的位置是8字节对齐的位置,下载程序,然后在这个位置FLASH_TYPEPROGRAM_DOUBLEWORD,结果报编程错误,然后是字节对齐错误,编程步骤顺序错误。

芯片最后几K的空间用来做参数存储的,是完全能正常读写的,先擦除,再写入完全没问题。现在也做一个测试,先用仿真器把整片擦除,然后将写参数部分的擦除代码屏蔽,编译,下载进去,直接写参数,也报编程错误,然后是字节对齐错误,编程步骤顺序错误。

L476用库函数擦除后是0xFF,用仿真器擦除后也是0xFF,没区别啊,难道芯片内部能检测写之前有无擦除动作?仔细检查了的,写之前各种错误标志也清空了的。

有什么窍门或没注意到的地方?

可能有的网友没看明白我要做什么,简言之就是程序代码区域有一片连续的8字节,共64比特,全是0xFF的区域进行修改,存储想要的数据。
liu96jp 发表于 2022-4-13 12:08 | 显示全部楼层
就是你想用单片机的多余的flash当存储是么?
p0gon9y 发表于 2022-4-13 12:24 | 显示全部楼层
你看看数据手册吧,看看咋操作比较好,感觉按要求来就行了,你这写了这么多,我懵了
cen9ce 发表于 2022-4-13 12:36 | 显示全部楼层
我记得MCU的FLASH是不是一页一页的写啊?
呐咯密密 发表于 2022-4-13 12:56 | 显示全部楼层
FLASH必须是整页写,楼主这种在代码区写是不被允许的,在代码区写会将代码存放区的整页数据更改,导致程序奔溃。必须在代码区以外的空闲页写数据。
q1d0mnx 发表于 2022-4-13 12:58 | 显示全部楼层
这个写flash比较费劲,我一般都不用MCU的,都是外置一个flash芯片
lamanius 发表于 2022-4-13 13:23 | 显示全部楼层
你可以这样,计算代码编程出来的有多大,然后推算出后面有多少的存储给你用,你直接一页一页的擦除呗
SantaBunny 发表于 2023-3-3 13:39 | 显示全部楼层
先不加密,对比一下仿真器烧录和BOOT 烧录后是否所有的区域都一样,看看有没有发现
帛灿灿 发表于 2024-4-5 08:11 | 显示全部楼层

MinUnit 是一个 用 C 语言编写的极其简单的单元测试框架
Bblythe 发表于 2024-4-5 09:14 | 显示全部楼层

功率开关和整流器的交流电流环路包含非常高的PWM开关电源典型的梯形电流波形
周半梅 发表于 2024-4-5 11:10 | 显示全部楼层

电源电压处于1.6V到5.5V之间
Pulitzer 发表于 2024-4-5 12:13 | 显示全部楼层

无法提供开关电源所需的脉冲电流
Wordsworth 发表于 2024-4-5 15:12 | 显示全部楼层

电源内部都有四个电流环路
Uriah 发表于 2024-4-5 16:15 | 显示全部楼层

作为电路的共同电位参考点
公羊子丹 发表于 2024-4-5 17:08 | 显示全部楼层

主时钟振荡器主要用作CPU的工作时钟
万图 发表于 2024-4-5 18:11 | 显示全部楼层

传送直流信号的引线
Uriah 发表于 2024-4-5 19:14 | 显示全部楼层

Buck(或降压)变换器功率部分布局
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1448

主题

4810

帖子

0

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

1448

主题

4810

帖子

0

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