标题: 关于C语言结构体转换为数组 [打印本页]

作者: zyluglugl    时间: 2022-1-1 20:34
标题: 关于C语言结构体转换为数组
用于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 写入时不知道修改哪里,有哪位大神知道吗?


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

大神,救救我!
作者: 13205495918    时间: 2022-1-2 08:20
局部变量太多,该次函数调用的时候,局部变量进栈,900+个局部变量一下就把栈空间用完了,你可以把局部数组下标的个数减小,或者调整一下栈区的大小。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1