找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 648|回复: 3
打印 上一主题 下一主题
收起左侧

关于C语言结构体转换为数组

[复制链接]
跳转到指定楼层
楼主
ID:584195 发表于 2022-1-1 20:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用于STM32F103C8TC 存储数据
结构体
mokedata[20]
mokedata【20】长度为960
void write_smok_to_flash( void )
{
    uint16_t shuju[960];
    rt_memset(shuju, 0, 960 );
    rt_memcpy(shuju, &mokedata,960);
    FLASH_WriteData(mode_address,mokedata, 960);      /* 写入 */
}

原来用库函数写入FLASH报错,后面修改
Stack_Size      EQU     0x00000200 为
Stack_Size      EQU     0x00000800 不报错了
现在用RT-THread 写入时不知道修改哪里,有哪位大神知道吗?

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:883242 发表于 2022-1-1 22:20 | 只看该作者
你没学过数据结构,不知道局部变量是在堆栈上临时生成的,退出函数以后自动失效?
uint16_t shuju[960];
这句话一下子就消耗了0x780 bytes stack
Stack_size equ 0x200 大丈夫?
回复

使用道具 举报

板凳
ID:584195 发表于 2022-1-1 22:50 | 只看该作者
Hephaestus 发表于 2022-1-1 22:20
你没学过数据结构,不知道局部变量是在堆栈上临时生成的,退出函数以后自动失效?
uint16_t shuju[960];
...

大神,救救我!
回复

使用道具 举报

地板
ID:908826 发表于 2022-1-2 08:20 | 只看该作者
局部变量太多,该次函数调用的时候,局部变量进栈,900+个局部变量一下就把栈空间用完了,你可以把局部数组下标的个数减小,或者调整一下栈区的大小。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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