打印
[ZLG-ARM]

带指针的外部函数调用有问题,帮我诊断下(附简化程序)

[复制链接]
1026|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
isbit|  楼主 | 2007-3-13 14:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
带指针的外部函数调用有问题,帮我诊断下(附简化程序) 
带指针的外部函数调用有问题,帮我诊断下(附简化程序) 

文件1.c 
extern uint8  **;
extern uint8  Symbol;

extern void  WriteScreen(uint8 *DisplayData);  这个函数


    /*
    **********************************************************
    * 名称:TaskDISPLAYLCD()
    * 功能:测试flash的读 2007-3-10
    * 入口参数:pdata     任务初始化参数
    * 出口参数:无
    **********************************************************
    */
        void    TaskDISPLAY(void *pdata)
        {
            pdata  = pdata;
                        
       initLCDM();
    while(1)
    {
    IO0CLR = BEEP;
    OSTimeDly(OS_TICKS_PER_SEC / 5);
    IO0SET = BEEP;
    
    OSTimeDly(OS_TICKS_PER_SEC / 5);
    WriteScreen( **);              delayms(500);  这个函数出错
    
     }
}

文件2.c
void  WriteScreen(uint8 *DisplayData);


//-----------------------------------
// dispaly data (128x64)
//-----------------------------------
uint8  **[]={
0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,。。。。}


//-----------------------------------
// Write a Screen
//-----------------------------------
void WriteScreen(uint8 *DisplayData)    // DisplayData should be 164x64/8 = 1312byte
{
    uint8 TempData;
    uint8 i, j;
    for(i=0;i<8;i++)
        {
        SdCmd(0xb0 | i);    // select page 0~7
        SdCmd(0x10);        // start form column 4
        SdCmd(0x04);        // (2byte command)
         for(j=0;j<128;j++)
             {
             TempData=(*(DisplayData+(i*128)+j));
             SdData(TempData);
             }
        }
}

在文件1.c中把
extern void  WriteScreen(uint8 *DisplayData);  屏蔽后没错,但有警告
不明白为什么声明外部函数会出错?
请高手指点迷津谢谢!    




 
 

文件1.c 
extern uint8  **;
extern uint8  Symbol;

extern void  WriteScreen(uint8 *DisplayData);  这个函数


    /*
    **********************************************************
    * 名称:TaskDISPLAYLCD()
    * 功能:测试flash的读 2007-3-10
    * 入口参数:pdata     任务初始化参数
    * 出口参数:无
    **********************************************************
    */
        void    TaskDISPLAY(void *pdata)
        {
            pdata  = pdata;
                        
       initLCDM();
    while(1)
    {
    IO0CLR = BEEP;
    OSTimeDly(OS_TICKS_PER_SEC / 5);
    IO0SET = BEEP;
    
    OSTimeDly(OS_TICKS_PER_SEC / 5);
    WriteScreen( **);              delayms(500);  这个函数出错
    
     }
}

文件2.c
void  WriteScreen(uint8 *DisplayData);


//-----------------------------------
// dispaly data (128x64)
//-----------------------------------
uint8  **[]={
0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,。。。。}


//-----------------------------------
// Write a Screen
//-----------------------------------
void WriteScreen(uint8 *DisplayData)    // DisplayData should be 164x64/8 = 1312byte
{
    uint8 TempData;
    uint8 i, j;
    for(i=0;i<8;i++)
        {
        SdCmd(0xb0 | i);    // select page 0~7
        SdCmd(0x10);        // start form column 4
        SdCmd(0x04);        // (2byte command)
         for(j=0;j<128;j++)
             {
             TempData=(*(DisplayData+(i*128)+j));
             SdData(TempData);
             }
        }
}

在文件1.c中把
extern void  WriteScreen(uint8 *DisplayData);  屏蔽后没错,但有警告
不明白为什么声明外部函数会出错?
请高手指点迷津谢谢!    




 
 

相关帖子

沙发
有意思| | 2007-3-13 14:56 | 只看该作者

指针

WriteScreen( **);
改为:
WriteScreen((uin8 *)**);
WriteScreen的入口参数是一个指针类型的,而你传入的是一个常量,**是该数组的首地址,extern后用WriteScreen( (uint8 *)**);
和我先前犯的错一摸一样,呵呵                                     

使用特权

评论回复
板凳
zlgARM| | 2007-3-13 15:18 | 只看该作者

re

**是指针常量而不是uint8的变量。
LZ对**的声明有冲突。


**本身已经是指向uint8类型变量的指针,直接赋给uint8*的指针变量是没问题的。

使用特权

评论回复
地板
isbit|  楼主 | 2007-3-13 16:19 | 只看该作者

我用其他编译器试试。。。

使用特权

评论回复
5
isbit|  楼主 | 2007-3-13 16:27 | 只看该作者

问题已经解决了,谢谢各位。

extern uint8  **;
extern uint8  Symbol;
是数组

使用特权

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

本版积分规则

193

主题

956

帖子

1

粉丝