STM32F4在Flash上定义数组的问题

2019-07-20 17:47发布

想在FLASH上定义一段数组,查找资料后发现用const u32 Parameter_Array[]__attribute__((at(0X08040004)))={};可以实现,但是又发现问题,就是程序中可以读出这段地址的数组,没办法重新对这个地址进行数据写入,一旦执行就会黑屏,定义时const去掉,可以对地址读取,但是一开始0X08040004地址上的数据有没有村上,全是0XFF,有没有办法既能够预存,又能够在程序里对这段地址重新写入
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
liang83797638
1楼-- · 2019-07-20 23:02
补充一下 上面的黑屏不是马上黑屏,而是程序重启后才会黑屏
jermy_z
2楼-- · 2019-07-21 02:26
 精彩回答 2  元偷偷看……
liang83797638
3楼-- · 2019-07-21 07:54
jermy_z 发表于 2016-11-10 09:24
1、const就是只读,你还写,作死
2、自行学习 flash模拟eeprom吧

我看过哪个例程  也知道const 只读  但是不加const无法在FLASH固定地址预存数据啊,我现在有很多参数一开始就要随程序烧写就要带入的,所以只能在FLASH里预存,但是以后参数改了 还得重新写入,有没有什么好的办法  ,以前用MSP430的话 这个操作是可以的  不是导致程序奔溃
小陀螺爱炒蛋
4楼-- · 2019-07-21 09:28
 精彩回答 2  元偷偷看……
liang83797638
5楼-- · 2019-07-21 10:22
问题已解决,主要是没用设置程序段的地址,导致数组定义后,后面跟着程序信息,写入的时候把程序段信息也擦除了。解决办法就是在option/Target/IROM1规定程序段范围就行了
rewpron321
6楼-- · 2019-07-21 13:14
liang83797638 发表于 2016-11-10 13:01
问题已解决,主要是没用设置程序段的地址,导致数组定义后,后面跟着程序信息,写入的时候把程序段信息也擦 ...

你好 我是个新手 你能说说你具体是怎么设置的吗

一周热门 更多>