OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5545|回复: 9

STM32F4在Flash上定义数组的问题

[复制链接]

4

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2016-9-22
在线时间
32 小时
发表于 2016-11-10 09:18:28 | 显示全部楼层 |阅读模式
想在FLASH上定义一段数组,查找资料后发现用const u32 Parameter_Array[]__attribute__((at(0X08040004)))={};可以实现,但是又发现问题,就是程序中可以读出这段地址的数组,没办法重新对这个地址进行数据写入,一旦执行就会黑屏,定义时const去掉,可以对地址读取,但是一开始0X08040004地址上的数据有没有村上,全是0XFF,有没有办法既能够预存,又能够在程序里对这段地址重新写入
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2016-9-22
在线时间
32 小时
 楼主| 发表于 2016-11-10 09:19:48 | 显示全部楼层
补充一下 上面的黑屏不是马上黑屏,而是程序重启后才会黑屏
回复 支持 反对

使用道具 举报

70

主题

6768

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13151
金钱
13151
注册时间
2012-11-26
在线时间
3816 小时
发表于 2016-11-10 09:24:16 | 显示全部楼层
1、const就是只读,你还写,作死
2、自行学习 flash模拟eeprom吧
学无止境
回复 支持 反对

使用道具 举报

4

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2016-9-22
在线时间
32 小时
 楼主| 发表于 2016-11-10 09:31:09 | 显示全部楼层
jermy_z 发表于 2016-11-10 09:24
1、const就是只读,你还写,作死
2、自行学习 flash模拟eeprom吧

我看过哪个例程  也知道const 只读  但是不加const无法在FLASH固定地址预存数据啊,我现在有很多参数一开始就要随程序烧写就要带入的,所以只能在FLASH里预存,但是以后参数改了 还得重新写入,有没有什么好的办法  ,以前用MSP430的话 这个操作是可以的  不是导致程序奔溃
回复 支持 反对

使用道具 举报

1

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1183
金钱
1183
注册时间
2015-5-28
在线时间
149 小时
发表于 2016-11-10 10:48:42 | 显示全部楼层
本帖最后由 小陀螺爱炒蛋 于 2016-11-10 10:50 编辑

stm32的内部flash是可以独立编程的~可以去学习下,但是这样你要考虑一个风险,那就是,如果你的代码编译完成后比较大越界了怎么办?这样会冲掉你另一个bank内的数据~所以编程的时候要做边界检查是必不可少的~
回复 支持 反对

使用道具 举报

4

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2016-9-22
在线时间
32 小时
 楼主| 发表于 2016-11-10 13:01:38 | 显示全部楼层
问题已解决,主要是没用设置程序段的地址,导致数组定义后,后面跟着程序信息,写入的时候把程序段信息也擦除了。解决办法就是在option/Target/IROM1规定程序段范围就行了
回复 支持 反对

使用道具 举报

2

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2016-10-12
在线时间
14 小时
发表于 2016-12-14 10:42:07 | 显示全部楼层
liang83797638 发表于 2016-11-10 13:01
问题已解决,主要是没用设置程序段的地址,导致数组定义后,后面跟着程序信息,写入的时候把程序段信息也擦 ...

你好 我是个新手 你能说说你具体是怎么设置的吗
回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2016-12-14
在线时间
14 小时
发表于 2016-12-14 11:03:25 | 显示全部楼层
我也出现这样的  我用那方法也会报错误
回复 支持 反对

使用道具 举报

8

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2012-12-22
在线时间
66 小时
发表于 2016-12-17 15:00:14 | 显示全部楼层
有办法,我最近也在弄这个问题。现在完美解决·前提是要占用一个扇叶的FLASH。
回复 支持 反对

使用道具 举报

4

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2016-9-22
在线时间
32 小时
 楼主| 发表于 2016-12-26 10:57:12 | 显示全部楼层
rewpron321 发表于 2016-12-14 10:42
你好 我是个新手 你能说说你具体是怎么设置的吗

操作办法就在六楼,你看下你程序总大小  然后规定程序段的范围  然后用一个FLASH扇区来进行存储就行了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-12 07:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表