打印

STM8中的@far是什么意思呢?

[复制链接]
1930|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
haokeer|  楼主 | 2016-7-18 21:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
喵喵小星人| | 2016-7-19 19:46 | 只看该作者
在STM8中,指定地址的长度可以有3种方式,@tiny使用1个字节表示地址,只能寻址地址范围0x00~0xFF;@near使用2个字节表示地址,只能寻址地址范围0x0000~0xFFFF;@far使用3个字节表示地址,寻址地址范围0x000000~0xFFFFFF

使用特权

评论回复
板凳
maninman1981| | 2016-7-20 22:11 | 只看该作者
给你举几个例子吧
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中为其分配一个地址

使用特权

评论回复
地板
rmbass| | 2016-7-21 09:23 | 只看该作者
maninman1981 发表于 2016-7-20 22:11
给你举几个例子吧
unsigned char temp_A@0x00; //定义无符号变量temp_A,强制其地址为0x00
unsigned char t ...

@应该不是标准c的语句,这个@是如何定义的呢?

使用特权

评论回复
5
yysforever| | 2016-7-22 10:59 | 只看该作者
可以这样理解,@near可以访问两字节指针所能访问的数据的范围,@far是三指针的,而那个@tiny是一个字节的,和那个51的基本差不多,也就是那些idata,padat,xdata之类的

使用特权

评论回复
6
冰是睡着的冰| | 2016-7-22 21:49 | 只看该作者
yysforever 发表于 2016-7-22 10:59
可以这样理解,@near可以访问两字节指针所能访问的数据的范围,@far是三指针的,而那个@tiny是一个字节的, ...

懂了,原来这是STM8自定义的一个标志,对吧?

使用特权

评论回复
7
yesherecn| | 2016-7-23 11:53 | 只看该作者
冰是睡着的冰 发表于 2016-7-22 21:49
懂了,原来这是STM8自定义的一个标志,对吧?

不是STM8,是STVD编译器,在c的标准上面,每个厂家增加了自己的定义,所以就显得有点乱了

使用特权

评论回复
8
playergatsby| | 2016-7-23 22:49 | 只看该作者
STVD就是比较复杂,STM8推荐用IAR,语法基本和标准c是一样的

使用特权

评论回复
9
jouney316| | 2016-7-24 10:54 | 只看该作者
参见COSMIC安装目录下,CXSTM8_32K \ Docs \ Clanguage.pdf。这是COSMIC自定义的语法

使用特权

评论回复
10
Dennis-Zhou| | 2016-7-25 19:18 | 只看该作者
stm8 stvd下
near等于51的xdata
tiny等于51的idata
@就是相当于指针这个意思了。指向一个空间

使用特权

评论回复
11
l科科1987| | 2016-7-26 10:00 | 只看该作者
看看编译器的帮助手册,多看几遍就懂了。不过还是建议换IAR吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

183

帖子

0

粉丝