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