打印
[STM32]

一位数组个数有限制吗?

[复制链接]
1636|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
c555|  楼主 | 2019-7-12 15:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
定义了一个一维数组,里面的数组个数是怎么限制的呢?下面这两个语句应该都可以吧?
uint8_t    a[1000];
uint8_t    a[200];

使用特权

评论回复

相关帖子

沙发
叶春勇| | 2019-7-12 16:31 | 只看该作者
现在8bit单片机还需要限制,64bit单片机,就没有这个限制,随便写。

使用特权

评论回复
板凳
c555|  楼主 | 2019-7-13 08:01 | 只看该作者
单片机用的是stm32f0   32位F0核

使用特权

评论回复
地板
mailshichao| | 2019-7-13 08:25 | 只看该作者
按需求定义大小吧

使用特权

评论回复
5
ningling_21| | 2019-7-13 08:44 | 只看该作者
芯片的RAM足够大吗

使用特权

评论回复
6
mcu5i51| | 2019-7-13 09:12 | 只看该作者
够用就行

使用特权

评论回复
7
梦幻泡影| | 2019-7-13 10:18 | 只看该作者
根据具体类型才能确定它的最大元素个数,比如说这样定义:uint8_t Array[x] = {0}; 那么,x的值取决于你单片机RAM的大小,但是由于系统运行需要消耗掉部分RAM资源,因此,假如你的RAM有16K,那x的值搞到15k左右是比较保险的,这只是例子,具体情况还要具体分析。另外就是这样定义:const uint8_t Array[x] = {0};此时x的值就取决于ROM的大小了,假如MCU的ROM有128K,那x即使搞到120K也是没问题的

使用特权

评论回复
8
tianxj01| | 2019-7-13 15:38 | 只看该作者
理论上没有限制,可实际上,我们选择的单片机,RAM体量有限,你必须根据实际情况,合理安排数组尺寸,以免内存超标。

使用特权

评论回复
9
Prry| | 2019-7-14 10:35 | 只看该作者
全局区or栈区分配?

使用特权

评论回复
10
雪山飞狐D| | 2019-7-14 12:26 | 只看该作者
    有函数栈限制啊

使用特权

评论回复
11
xcvista| | 2019-7-14 21:01 | 只看该作者
数组元素个数上限取决于数组元素的储存大小和对应储存位置的可用连续内存容量。

使用特权

评论回复
12
whtwhtw| | 2019-7-15 09:56 | 只看该作者
只要ram够,随便定义

使用特权

评论回复
13
coody| | 2019-7-15 10:10 | 只看该作者
1、器件或设备要有那么大的内存。
2、编译器要支持。

使用特权

评论回复
14
shipeng1989| | 2019-7-15 14:02 | 只看该作者
如果是临时变量数组,必须考虑堆栈空间是否充足的问题,否则会出现意想不到的问题让你无从查起,编译器也会很配合的帮忙掩饰没有任何报错或警告。我就遇到过临时变量数值超出堆栈空间的窘境,导致芯片进入Hard_Fault异常中断排查了很久才找到原因。

使用特权

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

本版积分规则

263

主题

555

帖子

3

粉丝