标题:
关于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