[STM32] 一位数组个数有限制吗?

[复制链接]
2075|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 | 显示全部楼层
按需求定义大小吧
ningling_21 发表于 2019-7-13 08:44 | 显示全部楼层
芯片的RAM足够大吗
mcu5i51 发表于 2019-7-13 09:12 | 显示全部楼层
够用就行
梦幻泡影 发表于 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也是没问题的
tianxj01 发表于 2019-7-13 15:38 | 显示全部楼层
理论上没有限制,可实际上,我们选择的单片机,RAM体量有限,你必须根据实际情况,合理安排数组尺寸,以免内存超标。
Prry 发表于 2019-7-14 10:35 | 显示全部楼层
全局区or栈区分配?
雪山飞狐D 发表于 2019-7-14 12:26 | 显示全部楼层
    有函数栈限制啊
xcvista 发表于 2019-7-14 21:01 | 显示全部楼层
数组元素个数上限取决于数组元素的储存大小和对应储存位置的可用连续内存容量。
whtwhtw 发表于 2019-7-15 09:56 | 显示全部楼层
只要ram够,随便定义
coody 发表于 2019-7-15 10:10 | 显示全部楼层
1、器件或设备要有那么大的内存。
2、编译器要支持。
shipeng1989 发表于 2019-7-15 14:02 | 显示全部楼层
如果是临时变量数组,必须考虑堆栈空间是否充足的问题,否则会出现意想不到的问题让你无从查起,编译器也会很配合的帮忙掩饰没有任何报错或警告。我就遇到过临时变量数值超出堆栈空间的窘境,导致芯片进入Hard_Fault异常中断排查了很久才找到原因。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

264

主题

556

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部