STM32L476写FLASH必须是64位(8字节)写,也就是double WORD,而且要先把要写的字节部分擦除掉。 问题来了,先把整片用仿真器擦除掉,程序中先定义一个64位的静态变量常数0xFFFFFFFFFFFFFFFF,保证在FLASH中的位置是8字节对齐的位置,下载程序,然后在这个位置FLASH_TYPEPROGRAM_DOUBLEWORD,结果报编程错误,然后是字节对齐错误,编程步骤顺序错误。 芯片最后几K的空间用来做参数存储的,是完全能正常读写的,先擦除,再写入完全没问题。现在也做一个测试,先用仿真器把整片擦除,然后将写参数部分的擦除代码屏蔽,编译,下载进去,直接写参数,也报编程错误,然后是字节对齐错误,编程步骤顺序错误。 L476用库函数擦除后是0xFF,用仿真器擦除后也是0xFF,没区别啊,难道芯片内部能检测写之前有无擦除动作?仔细检查了的,写之前各种错误标志也清空了的。 有什么窍门或没注意到的地方? 可能有的网友没看明白我要做什么,简言之就是程序代码区域有一片连续的8字节,共64比特,全是0xFF的区域进行修改,存储想要的数据。 |
STM32L431进入STOP1模式后ADC产生多余功耗
DMA发送函数只能被调用一次
求教,STM32 LCD驱动段码屏,SEG1-SEG8,可以不连续配置吗?
STM32L431在去掉注释memcpy后会不断重启
STM32L431在STOP2模式下能否将串口的RX配置成EXTI唤醒呢?为什么我的唤醒不了呢?并且空闲中断也不能用
怎么将HAL库转为LL库。
STM32L4R9OSPI接口测试
ST25R3916有快速读取吗?
VDD下电后使用VBAT引脚供电时LSE停振?
STM32L4出现Warning:L6989W怎么解决
写了个BOOT LOADER,通过BOOT LOADER把APP写入,上电运行,也不行。
用仿真器将 BOOT 和 APP都写入,上电,可以得到想要的效果,然后通过BOOT更新APP后,也得不到想要的结果。
没有加密,现在只是对ID运算后写入FLASH,现在说的加密是说对ID运算后写入空白地方(连续64比特,要写的位置是0xFFFFFFFFFFFFFFFF也算是擦除后的状态)。将两种不同下载方式下载进去的软硬件,运行后,读出,比较,ST LINK UTILITY下载的,要写的地方达到了要的效果。
已经解决,IAP的时候,擦除,烧写用记程序时,发现有连续的FF,比如这里8个字节的FF,就跳过不写。后续在程序中改写就没问题。可能L4的FLASH有点不同。