一位数组个数有限制吗?
定义了一个一维数组,里面的数组个数是怎么限制的呢?下面这两个语句应该都可以吧?uint8_t a;
uint8_t a;
现在8bit单片机还需要限制,64bit单片机,就没有这个限制,随便写。 单片机用的是stm32f0 32位F0核 按需求定义大小吧 芯片的RAM足够大吗 够用就行 根据具体类型才能确定它的最大元素个数,比如说这样定义:uint8_t Array = {0}; 那么,x的值取决于你单片机RAM的大小,但是由于系统运行需要消耗掉部分RAM资源,因此,假如你的RAM有16K,那x的值搞到15k左右是比较保险的,这只是例子,具体情况还要具体分析。另外就是这样定义:const uint8_t Array = {0};此时x的值就取决于ROM的大小了,假如MCU的ROM有128K,那x即使搞到120K也是没问题的 理论上没有限制,可实际上,我们选择的单片机,RAM体量有限,你必须根据实际情况,合理安排数组尺寸,以免内存超标。 全局区or栈区分配? 有函数栈限制啊 数组元素个数上限取决于数组元素的储存大小和对应储存位置的可用连续内存容量。 只要ram够,随便定义 1、器件或设备要有那么大的内存。
2、编译器要支持。 如果是临时变量数组,必须考虑堆栈空间是否充足的问题,否则会出现意想不到的问题让你无从查起,编译器也会很配合的帮忙掩饰没有任何报错或警告。我就遇到过临时变量数值超出堆栈空间的窘境,导致芯片进入Hard_Fault异常中断排查了很久才找到原因。
页:
[1]