找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1495|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

關(guān)于C語言結(jié)構(gòu)體轉(zhuǎn)換為數(shù)組

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:584195 發(fā)表于 2022-1-1 20:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
用于STM32F103C8TC 存儲數(shù)據(jù)
結(jié)構(gòu)體
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);      /* 寫入 */
}

原來用庫函數(shù)寫入FLASH報錯,后面修改
Stack_Size      EQU     0x00000200 為
Stack_Size      EQU     0x00000800 不報錯了
現(xiàn)在用RT-THread 寫入時不知道修改哪里,有哪位大神知道嗎?

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:883242 發(fā)表于 2022-1-1 22:20 | 只看該作者
你沒學(xué)過數(shù)據(jù)結(jié)構(gòu),不知道局部變量是在堆棧上臨時生成的,退出函數(shù)以后自動失效?
uint16_t shuju[960];
這句話一下子就消耗了0x780 bytes stack
Stack_size equ 0x200 大丈夫?
回復(fù)

使用道具 舉報

板凳
ID:584195 發(fā)表于 2022-1-1 22:50 | 只看該作者
Hephaestus 發(fā)表于 2022-1-1 22:20
你沒學(xué)過數(shù)據(jù)結(jié)構(gòu),不知道局部變量是在堆棧上臨時生成的,退出函數(shù)以后自動失效?
uint16_t shuju[960];
...

大神,救救我!
回復(fù)

使用道具 舉報

地板
ID:908826 發(fā)表于 2022-1-2 08:20 | 只看該作者
局部變量太多,該次函數(shù)調(diào)用的時候,局部變量進棧,900+個局部變量一下就把棧空間用完了,你可以把局部數(shù)組下標(biāo)的個數(shù)減小,或者調(diào)整一下棧區(qū)的大小。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表