微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 为什么单片机定义的数组是存放在数据存储器中

为什么单片机定义的数组是存放在数据存储器中

时间:10-02 整理:3721RD 点击:
为什么单片机定义的数组是存放在数据存储器中,而不是存放在程序存储器中,这样断电,那数组里面的数据不就丢失了吗,实在不解,请大神指教。

你可以放在FLASH里面,加CODE关键字不就行了

uchar code table[]={};

就储存的内容来讲,数组可以分为两种:一种是内容在程序运行中会改变的,还有一种内容在程序运行中不会改变的。所以第一种数组符合RAM的特性,就放在RAM中,第二种数组符合ROM的特性,就放在ROM中。
举个例子:
定义一个缓冲区:BYTE Buffer[];那么在程序中就会大量使用Buffer[n] = Variable或Variable = Buffer[n]这样的代码,也就是会对Buffer这个数组进行读写操作,所以放在RAM中。
定义一个字符串:CHAR String[] = "HelloWorld"; 这种方法在串口程序中比较常见,一般只有在UartPrintString(String)的时候才会用到,并没有出现元素的写操作,所以放在ROM中。
在来说一下这样做的原因:RAM既可读,又可写,而ROM只可读,不可写,所以RAM适合存放变量,ROM适合存放常量。
说白了,数组的存放位置主要依据数组的功能,并不是放在ROM中就一定好。

就和电脑的RAM和ROM是一个道理,自己想想把

定义数组时加上code就是定义到code区了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top