在我宣布字符串(上)在闪光ṛ

7

7rots51

Guest
您好

我该如何申报
, 在与我的AVR微flsh内存中的字符串或数组常量(在)R编译器?我如何可以使用字符串或数组的程序?

看来唯一途径与闪存存储的字符串是pgmspace.h LIB,是否正确?

关心

 
使用这样的:

__flash无符号字符SMS_PDU_START [] =“在 CMGS =”;

这是非常重要的检查闪存“地方根据项目的总初始化”/选项/ iccavr /代码。

请注意
, 该字符串将被复制到内存在运行时被使用,但只在当前字符串的所有字符串
, 而不是由默认的选项...

因此
, 这可以节省大量的RAM。

最好的问候

 
这是否意味着只有指向字符串将被分配和字符串的内容将由预装堆程序执行时所达到的地步接连邻近字符串将做呢?

 
这就是本手册说
, 这

默认数据指针
所有的内存模式都有一个默认的数据指针,可以在表中看出
第14页。
在实践中,默认的数据指针将有一个隐含的属性,
这取决于您选择的内存模型。所有的C对象定义
没有明确的属性可以指向一个默认的指针。
字符串文字的默认数据指针必须能够指向不能
获得源代码中的明确属性。既然是字符串
常量,这将是不切实际的
, 把它们置于只读存储器(闪存
内存),但没有默认指针可以指向闪存。因此
, 字符串
没有放置在默认情况下闪光。
所有的内存模式使用默认的数据指针是一个数据挂钩
内存空间。这意味着它是在编译时已知的
如何被访问的内存,从而节省代码大小。
AVR的IAR的C /欧共体 编译器通常从闪存复制到字符串
数据存储在main()被调用,或者让你在外部的他们
光盘(如果有的话)。其他字符串可以放在闪存中明确,
像这样的例子:
__flash字符str1 [] ==“我的字符串”;
这就需要特殊访问程序的使用
, 使用闪光灯
指针,而不是通常的一般C库调用。见章
AVR的具体库例程。
-------------------------------------------------- ------
广场聚集在Flash内存初始化

使用此选项放置在快闪记忆体总初始化。这些
初始化或者以其他方式放置在外部const段或
在初始化的数据段
, 如果编译器选项,辎也
指定。
例如:
无效富()

字符缓冲带[4] ==('1','D'类,'克','吨');
...

换句话说:一个聚集初始化数组或结构是
常量数据复制到堆栈在运行时动态在此,
每次都输入一个函数。
对安置在闪存数据的缺点是
, 它需要更多的时间
将它复制,好处是
, 它的交锋中占据的数据存储器
空间。

 

Welcome to EDABoard.com

Sponsor

Back
Top