打印
[C语言]

求助一个关于单片机堆栈的问题

[复制链接]
746|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
圣骑士by|  楼主 | 2023-3-7 08:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近调stm32的程序,经常需要在函数里面定义很大的数组用来存临时数据。
最开始是用栈来存储,把stack设置到10k。
后来感觉不妥,又改用动态内存的方式,用freertos里面的heap4.c。(不用freertos)。

最近突然有点迷惑了,栈设置的特别大,会不会有什么缺点?

都是使用片内sram的情况下,函数里面临时大数组用栈好还是用动态内存好?

请大佬解惑
谢谢!


使用特权

评论回复

相关帖子

沙发
ayb_ice| | 2023-3-7 09:36 | 只看该作者
你这算什么大,我堆栈都64K,堆栈肯定优于动态内存分配,当然这里说的是针对你这情况

使用特权

评论回复
板凳
圣骑士by|  楼主 | 2023-3-7 12:51 | 只看该作者
ayb_ice 发表于 2023-3-7 09:36
你这算什么大,我堆栈都64K,堆栈肯定优于动态内存分配,当然这里说的是针对你这情况 ...

内存一共64k。。。。

使用特权

评论回复
地板
ayb_ice| | 2023-3-7 13:02 | 只看该作者
圣骑士by 发表于 2023-3-7 12:51
内存一共64k。。。。

可以搞 一半做堆栈

使用特权

评论回复
5
xch| | 2023-3-7 19:29 | 只看该作者
内存还需要回收?
我都是用全局联合变量,静态分配了。

使用特权

评论回复
6
圣骑士by|  楼主 | 2023-3-8 08:43 | 只看该作者
xch 发表于 2023-3-7 19:29
内存还需要回收?
我都是用全局联合变量,静态分配了。

全局联合变量 是定义一个union 把大变量都放里面吗?
没看懂。麻烦多说点呗

使用特权

评论回复
7
ayb_ice| | 2023-3-8 09:15 | 只看该作者
圣骑士by 发表于 2023-3-8 08:43
全局联合变量 是定义一个union 把大变量都放里面吗?
没看懂。麻烦多说点呗 ...

互斥的多任务可以共享全局内存

使用特权

评论回复
8
kissdb| | 2023-3-8 09:26 | 只看该作者
全局变量的好处:速度快,编译的时候就可以明确内存占用量,不用考虑溢出,
而且一般单片机都是单线程吧,不会出现数据被同时修改的情况,

使用特权

评论回复
9
xch| | 2023-3-8 11:32 | 只看该作者
圣骑士by 发表于 2023-3-8 08:43
全局联合变量 是定义一个union 把大变量都放里面吗?
没看懂。麻烦多说点呗 ...

一般是先定义几个由临时变量组成的结构体。要求不同结构体中的变量不会同时使用即可。

然后,把上述几个结构体放入一个联合体。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

469

帖子

6

粉丝