OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8225|回复: 2

@far 与@near 问题

[复制链接]

3

主题

8

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2013-8-5
在线时间
0 小时
发表于 2014-3-12 15:55:58 | 显示全部楼层 |阅读模式

问题 :
       @far 与@near 指明到底是远指针还是近指针,那什么时候用那个比较好呢?最好针对STM8,8位的单片机讲讲。

参考:来自 微雪电子网 http://www.waveshare.net/article/STM8-3-1-10.htm     

如何分配变量到指定的地址

举例:
unsigned char temp_A@0x00; //定义无符号变量temp_A,强制其地址为0x00
unsigned char temp_B@0x100; //定义无符号变量temp_B,强制其地址为0x100
@tiny unsigned char temp_C; //定义无符号变量temp_C,由编译器自动在地址小于0x100的RAM中为其分配一个地址
@near unsigned char temp_D; //定义无符号变量temp_D,由编译器自动在地址大于0xFF的RAM中为其分配一个地址
另外也可以采用伪指令"pragma"将函数或者变量定义到指定的section中,例如:
#pragma section [name] // 将下面定义的未初始化变量定义到.name section中
Unsigned char data1;
Unsigned int data2;
……(任何需要定义在.name section中的变量)
……
#pragma section [] // 返回到正常的section.
注意:pragma伪指令可以用来定位函数,初始化变量或者未初始化变量。这三者用不同的括号区分。
(name):代码
[name] :未初始化变量
{name}:初始化变量



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
286
金钱
286
注册时间
2014-1-12
在线时间
58 小时
发表于 2014-7-13 22:40:13 | 显示全部楼层
可以这样理解,@near可以访问两字节指针所能访问的数据的范围,@far是三指针的,而那个@tiny是一个字节的,和那个51的基本差不多,也就是那些idata,padat,xdata之类的,@tiny速度最快(位寻址的那个范围段在这个范围内,具体多少忘记了),@near速度慢一点,@far速度最慢...!编程时对变量分配到制定的地方,可以提高效率。除了指定变量,也能指定代码或···!
回复 支持 1 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-3-12 23:16:51 | 显示全部楼层
帮顶
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 18:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表