打印

求知道的大大,看看这段keil给出的警告什么原因?

[复制链接]
1202|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hceng|  楼主 | 2013-12-1 14:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hceng 于 2013-12-1 17:18 编辑

这是Keil给出的警告
Build target 'Target 1'
assembling STARTUP.A51...
compiling Key.c...
compiling PDIUSBD12.c...
compiling UART.c...
compiling System.c...
compiling UsbCorde.c...
linking...
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?_PRINTLONGINT?UART
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?_PRINTHEX?UART
Program Size: data=60.0 xdata=0 code=2445
creating hex file from "UsbMouse"...
"UsbMouse" - 0 Error(s), 2 Warning(s).
UART.h文件
#ifndef __UART_H__
#define __UART_H__
#include "MyType.h"

void InitUART(void);
void UartPutChar(uchar8);
void Prints(uchar8 *pd);
void PrintLongInt(uint32);
void PrintShortIntHex(uint16 x);
//void PrintLongIntHex(uint32);
void Printc(uchar8);
void PrintHex(uchar8 x);

#endif

UART.c文件

#include <AT89x52.H>
#include "UART.h"
#include "MyType.h"
#include "config.h"
……………………
中间部分省略
……………………
/********************************************************************
函数功能:将整数转按十进制字符串发送。
入口参数:x:待显示的整数。
返    回:无。
备    注:无。
********************************************************************/
void PrintLongInt(uint32 x)
{
uchar8 i;
uchar8 display_buffer[10];

for(i=9;i>=0;i--)
  {
   display_buffer
='0'+x%10;//取x的个位赋值在display_buffer[9]
   x/=10;
  }
for(i=0;i<9;i++)//从x的高位检测非0位开始显示
  {
   if(display_buffer
!='0')break;//检测到非0位跳出循环
  }
for(;i<10;i++)UartPutChar(display_buffer
);
}
////////////////////////End of function//////////////////////////////

/********************************************************************
函数功能:以HEX格式发送一个byte的数据。
入口参数:待发送的数据
返    回:无。
备    注:无。
********************************************************************/
void PrintHex(uchar8 x)
{
Printc('0');
Printc('x');
Printc(HexTable[x>>4]);//16进制先显示高4位
Printc(HexTable[x&0xf]);//显示低4位高4位清0
Printc(' ');
}
////////////////////////End of function//////////////////////////////



PDIUSBD12.c文件具体调用的地方
#include <AT89x52.H>
#include "MyType.h"
#include "PDIUSBD12.H"
#include "UART.h"
……………………
中间部分省略
……………………
/********************************************************************
函数功能:读取端点缓冲区数据长度
入口参数:Endp 端点号0-2 Len 想要读取数据长度 *Buf 具体的数据
返    回:
备    注:
********************************************************************/
uchar8 D12ReadEndpointBuffer(uchar8 Endp,uchar8 Len,uchar8 *Buf)
{
uchar8 i,j;
D12SelectEndpoint(Endp);//选择端点号
D12WriteCommand(D12_READ_BUFFER_COMMAND);//发送读缓冲区命令0xf0
D12ReadByte();//第一字节丢弃无用
j=D12ReadByte();//第2字节实际的缓冲区数据长度
if(j>Len){j=Len;}//如果实际输入的数据比想要读取的数据长那么取想要读取的数据长度
#ifdef DEBUG0
Prints("读端点号");                         //端点号。由于D12特殊的端点组织形式,
PrintLongInt(Endp/2);        //这里的0和1分别表示端点0的输出和输入;
Prints("缓冲区");                 //而2、3分别表示端点1的输出和输入;
PrintLongInt(j);                      //4、5分别表示端点2的输出和输入。
Prints("字节。\r\n");        //因此要除以2才显示对应的端点。
#endif
for(i=0;i<j;i++)
        {
        D12ClrRd();
        *(Buf+i)=D12GetData();
        D12SetRd();
        #ifdef DEBUG0
        PrintHex(*(Buf+i));
        if((i+1)%16==0){Prints("\r\n");}//每16字节换一行
        #endif
        }
return j;
}
////////////////////////End of function//////////////////////////////

相关帖子

沙发
黄小俊| | 2013-12-1 16:44 | 只看该作者
有未被调用的函数。

使用特权

评论回复
板凳
hceng|  楼主 | 2013-12-1 17:11 | 只看该作者
黄小俊 发表于 2013-12-1 16:44
有未被调用的函数。

刚刚那个问题解决了,有变成这样了

使用特权

评论回复
地板
hceng|  楼主 | 2013-12-1 17:35 | 只看该作者
问题解决了,谢谢各位了

使用特权

评论回复
5
黄小俊| | 2013-12-1 19:26 | 只看该作者

使用特权

评论回复
6
没有名字的我| | 2013-12-1 20:24 | 只看该作者
不懂。。。。

使用特权

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

本版积分规则

17

主题

48

帖子

0

粉丝