| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1653 人关注过本帖
标题:一个错误,架构是keil里面的C语言
只看楼主 加入收藏
chenchen224
Rank: 4
等 级:业余侠客
威 望:1
帖 子:61
专家分:237
注 册:2016-8-11
结帖率:100%
收藏
已结贴  问题点数:18 回复次数:5 
一个错误,架构是keil里面的C语言
这个是错误的原因:..\src\lcd.c(64): error:  #29: expected an expression
                 ..\src\lcd.c:       LCDSADDR2 =         vLCDSADDR2;

我的宏定义是这样的:
////////////////LCDSADDR2                  
#define ADDREND ((unsigned long)FRAMBUFFER + [HIGH]*[WIDTH]*2)
#define LCDBASEL (((ADDREND >> 1) & 0x1fffff) << 0 )
#define vLCDSADDR2 (LCDBASEL)

在程序中是这样的定义的:
    ////LCDADDR1 帧缓冲器地址设置
    LCDSADDR1 =     vLCDSADDR1;
        LCDSADDR2 =     vLCDSADDR2;    显示这句有错误
    LCDSADDR3 =     vLCDSADDR3;

就是不知道为什么会报错误,希望知道的给个解释呗!!
搜索更多相关主题的帖子: expression expected C语言 缓冲器 
2016-09-12 11:24
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:12 
[HIGH]*[WIDTH]*2
这是什么语法?
2016-09-12 11:39
chenchen224
Rank: 4
等 级:业余侠客
威 望:1
帖 子:61
专家分:237
注 册:2016-8-11
收藏
得分:0 
地址偏移,在前面定义了一个二维数组,FRAMBUFFER[HIGH][WIDTH],所以这是地址偏移到最后一位。

我想做的,只是静静的把C学好,从此代码是爱人......
2016-09-12 13:09
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
那应该是这样吧
((unsigned long)FRAMBUFFER + HIGH*WIDTH*2)
2016-09-12 13:34
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:6 
LCDSADDR2 =     vLCDSADDR2  =(LCDBASEL)=((((ADDREND >> 1) & 0x1fffff) << 0 ))
=((((((unsigned long)FRAMBUFFER + [HIGH]*[WIDTH]*2) >> 1) & 0x1fffff) << 0 ))
因为这是宏定义,你也没有给出完整的宏定义,所能做的只能展开给你看。哪里不对你只能自己仔细找看看
2016-09-12 13:53
chenchen224
Rank: 4
等 级:业余侠客
威 望:1
帖 子:61
专家分:237
注 册:2016-8-11
收藏
得分:0 
回复 4楼 grmmylbs
你的是对的,谢谢啊!

我想做的,只是静静的把C学好,从此代码是爱人......
2016-09-12 16:45
快速回复:一个错误,架构是keil里面的C语言
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036135 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved