找回密码
 注册
关于网站域名变更的通知
查看: 329|回复: 3
打印 上一主题 下一主题

C语言如何把一个超大数组赋值后存放到FLASH中?

[复制链接]
  • TA的每日心情
    奋斗
    2022-1-21 15:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2022-7-28 11:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    我的FLASH空间比较大,有512K,RAM空间也比较大,接近200K,但是RAM由于还要做其他用途,所以现在需要把一个超大数组保存到FLASH中。( d5 z( p- K" ~- Y) p: }( x
    现在有一个超大数组:. D+ b9 x7 q2 C
    uint16_t   databuffer[240][320],
    $ ~9 [2 K2 A0 u( D/ w8 }
    * y; x5 O0 n% n. _这个数组有240x320=76800个元素,然后占用空间76800x16bit=153KB, 可谓是相当大了,我如何把这个大数组存放到FLASH中呢?
    1 b& D1 j- p& p! Q- x1 C& _/ z
    0 p/ _! M- M0 I7 |, Y- ^这么大的数组怎么给他赋初值?不可能用大括号的方式,databuffer[240][320]={0xFFFF, 0x32A3........},  7万多个数据,写到猴年马月也写不完啊。& k# ^; Z5 J* o- J
    & I) i# N/ P5 K# t' T: S
    如果我加关键字const uint16_t   databuffer[240][320] 的方式,可以让他保存在FLASH中,但是没法先赋初值,如果我用for循环赋值,倒是很快,可是就没法加const保存到FLASH中了。+ B- \, R) r# I% E, W
    1 e( D' S" r, }: _
    谁能解决这个矛盾?
    6 j7 F5 l9 k# I) ~% }$ }  {

    该用户从未签到

    2#
    发表于 2022-7-28 13:15 | 只看该作者
    编程时数组直接赋值放FLASH中。
  • TA的每日心情
    慵懒
    2022-1-21 15:20
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2022-7-28 13:22 | 只看该作者
    你的7万多个数据是有来源的吧?Excel?SQL?CSV?
    * S* k" G! Z5 R$ x# X利用这些来源生成一个
    4 d! K1 D' D) f9 R/ ]- Ruint16_t code databuffer[240][320] = {......};储存到DtatTable.h内就可以了
  • TA的每日心情
    开心
    2022-1-21 15:21
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
    发表于 2022-7-28 13:27 | 只看该作者
    能用for循环直接赋值,这个数据是固定的吗?或者是有规律的?不知道这是什么意思,没有用过LCD不知道' h- G( y9 [$ B, t" e+ `
    在FLASH开辟某个地址,比如0000H存放一个标志位
    1 J3 G. D/ b8 f5 j程序启动先读取这个标志位,如果没有标志,就用for循环写入FLASH,写完之后置位标志位并保存,这样,这你所谓的7万多个数据就保存在FLASH了
    " J+ Y$ A0 E  S9 C如果已经标志了,就不用写入了,跳过写入这一步& E+ g$ C1 y) N8 R9 T
    下一步就是读取FLASH中的数据,初始化LCD
    4 ?; v8 U- f5 l, s这样就达到了每次开机都能通过读取FLASH来完成初始化了
    % T# t8 l7 @/ _) U8 E不知道这行不行得通
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-24 04:30 , Processed in 0.109375 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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