首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想了解使用pic24编辑的语法

我想了解使用pic24编辑的语法
EN

Stack Overflow用户
提问于 2014-10-27 17:39:18
回答 3查看 748关注 0票数 1
代码语言:javascript
复制
__eds__ WORD __ramspace[0x100] __attribute__((eds,address(0x8000ul),noload)); 

我想了解上面的语法(程序是针对pic24和C语言的),特别是__ramspace[0x100]。有人能帮我吗?

EN

回答 3

Stack Overflow用户

发布于 2015-01-01 19:58:02

现在有点晚了,但也许这能帮到别人:

__eds__意味着您希望在扩展的数据空间中放置任何后续内容。当您想要使用某个地址以外的数据空间时,您可以这样做。您可以在数据表中找到您的MCU从哪个地址开始扩展空间。

WORD意味着您将保留整个单词(而不是字节)。对于一个pic24,这意味着16位块。

__ramspace0x100是一个大小为256个的一维数组。当您查看前面所写的内容时,可以看到您正在声明一个名为__ramspace的数组,在extended (eds)中,它的大小为256个字(所以256x16位值)。

现在您必须声明偏移量,例如数组的开始地址( __ramspace的物理地址--第一个数组元素)。这就是0x8000所做的。

最后,如果应该在启动时初始化数组(例如,填充了零),则指示编译器。在您的示例中,有一个noload,这意味着在启动时,数组中将有随机数据,直到您在其中写入自己的值为止。

希望这能有所帮助。

票数 4
EN

Stack Overflow用户

发布于 2014-10-28 13:15:33

__ramspace[0x100]是该行中唯一的一部分,它只是纯C :),它声明了0x100 (以十进制计算)类型的WORD元素的数组。数组的名称是__ramspace

  • 有关@Brian Cain的详细信息,请参阅eds回答
  • address(0x8000ul)__attribute__()的参数可能会使链接器在location 0x8000上对变量提出疑问。
票数 0
EN

Stack Overflow用户

发布于 2014-10-28 13:18:24

__eds__限定符在"用于PIC24 MCU和dsPIC DSC用户指南的MPLAB C编译器“中描述为:

在属性上下文中,eds,对于扩展的数据空间,属性向com- piler表示,变量可以分配到数据内存中的任何位置。带有此属性的变量可能还需要eds类型限定符(参见第6章)。(“额外的C指针类型”),以便编译器正确地生成正确的访问序列。请注意, eds 限定符与eds属性密切相关,但不完全相同。在某些设备上,当将变量分配到某些存储器空间(如空间(Ymemory)或空间(Dma))时,可能需要指定ed,因为该存储器可能只存在于扩展的数据空间中。

__ramspace不是一个特殊的标识符,它只是被选择的标识符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26593471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档