你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
查看完整内容
举报
查看全部评分
斜阳__ 发表于 2019-2-20 18:57 这是flash特性,你需要的是eeprom
思行一 发表于 2019-2-20 20:26 可是我看到F746的FLASH就能实现只改变一个地址的值即例如使*0x0800 1000=0x11,而其他地址的值为默认值的 ...
STM32隐藏
5.18活动板子会不会是STM32L4呢
STM32 CUBE软件中找不到STM32L4系列单片机
Your UAT Feedback is needed within today.
应用
AAA
测试标签23
标签选择失败
tiwen
BBBB
因为有缓冲区的原因,缓冲区写flash一次写256bit,手册里说可以写少于32字节的数据,但是要在操作一下寄存器,让缓冲区里面剩余的字节由ARM自己填充,其实对于flash还是操作了256bit,而且写数据的地址要32字节对齐,还不如你自己写256bit,虽然只用了1个字节,芯片已经这样设计了,就按这样规则用就是了!!
评分
查看全部评分
评分
查看全部评分
可是我看F746的例程里面都有按照字节写入flash的啊,而H743的必须要256bit才能写入成功,如果我只写8bits或者16bits,比如我只想使地址0x0800 1000 =0x11,而0x0800 0009, 0x0800 1001的值是默认值;F746就有提供这样的功能,好像H743不行
可是我看到F746的FLASH就能实现只改变一个地址的值即例如使*0x0800 1000=0x11,而其他地址的值为默认值的啊
file:///C:/Users/Administrator/Desktop/1.jpg
这是我在手册中看到的,高亮部分让我疑惑,这是在说我是可以按照最低8bits来写,但是我必须要写满256bits才能写成功吗
对于H7系列的片内flash操作,对其写操作必须32bytes对齐,就像我选取的最佳答案描述那样的。
我在这里补充一下操作force-write的方式:
FLASH->CR &= ~FLASH_CR_FW;
HAL_FLASH_Program();
Flash->CR |= FLASH_CR_FW;
这样的话,假使你只想往一个地址写入一个字节也是可以做到的,但是剩下的31个字节单片机自动填满,之后的写操作就必须在上一次的地址上偏移256bits。
我也查了一下手册,h743片内flash确实能像你说的这样按字节编程,方法就是你帖子上说的。我之前用的外挂flash时按页编程。