// 定义指示灯寄存器地址和寄存器类型
// 子程序接口
//void Delay(unsigned int nDelay); // 延时子程序
//#include \"Delay.c\"
//#include \"DPPL_init.c\"
//#include \"sdram_init.c\"
#define LBDS (*((unsigned int *)0x400001))
main()
{
unsigned int uLED[4]={1,2,4,8}; // 控制字,逐位置1: 0001B 0010B 0100B 1000B
int i;
PLL_Init(80); // 初始化DSP运行时钟
SDRAM_init(); // 初始化EMIF接口
while ( 1 )
{
for ( i=0;i<4;i++ )
{
LBDS=uLED; // 正向顺序送控制字
Delay(256); // 延时
}
for ( i=3;i>=0;i-- )
{
LBDS=uLED; // 反向顺序送控制字
Delay(256); // 延时
}
}
}
------------------------------ led.pjt - Debug ------------------------------
[Delay.c] \"c:\\ti\\c5500\\cgtools\\bin\\cl55\" -g -q -fr\"C:/ICETEK/VC5509AS61/C/led/Debug\" -@\"../C/led/Debug.lkf\" \"Delay.c\"
[DPPL_init.c] \"c:\\ti\\c5500\\cgtools\\bin\\cl55\" -g -q -fr\"C:/ICETEK/VC5509AS61/C/led/Debug\" -@\"../C/led/Debug.lkf\" \"DPPL_init.c\"
[LED.c] \"c:\\ti\\c5500\\cgtools\\bin\\cl55\" -g -q -fr\"C:/ICETEK/VC5509AS61/C/led/Debug\" -@\"../C/led/Debug.lkf\" \"LED.c\"
\"LED.c\", line 25: warning: conversion from integer to smaller pointer
\"LED.c\", line 30: warning: conversion from integer to smaller pointer
\"LED.c\", line 35: warning: last line of file ends without a newline
[sdram_init.c] \"c:\\ti\\c5500\\cgtools\\bin\\cl55\" -g -q -fr\"C:/ICETEK/VC5509AS61/C/led/Debug\" -@\"../C/led/Debug.lkf\" \"sdram_init.c\"
[Linking...] \"c:\\ti\\c5500\\cgtools\\bin\\cl55\" -@\"Debug.lkf\"
Build Complete,
0 Errors, 3 Warnings, 0 Remarks.
是什么错误,怎么解决阿?谢谢!!
没有错阿,这个是原程序拷下来的阿,开始在一个.c下运行就可以
后来把子程序分开,就出现这种错误。
我昏死阿,刚装了ccs3.1,编译以后还是出现警告,不知道是什么问题!
还有就是编译有错误;
源程序
unsigned int *LBDS;
LBDS=(unsigned int*)0x400001;
000113 ec31be400001 AMAR *(#400001h),XAR3
000119 eb0cb5 MOV XAR3,dbl(*SP(#06h))
而我自己编的
unsigned int *LBDS;
LBDS=(unsigned int*)0x400001;
只出现
000287 e60a01 MOV #1,@#05h
这个明显是错的嘛。
你定义LED地址的时候错了,还是按源程序那样定义吧。如:
unsigned int * LED0 = (unsigned int *) 0x400001;
这个我也试了
unsigned int * LBDS = (unsigned int *) 0x400001;
出现
warning: conversion from integer to smaller pointer
很不理解阿,是不是指针堆栈要什么定义?
我知道是什么原因了!unsigned int 是两个字节空间,而你的地址是0x400001,这个地址占3个字节空间。所以你应该用unsigned long,这个是4个字节
main()
{
int i;
unsigned int uLED[4]={1,2,4,8};
unsigned int*LBDS;
LBDS=(unsigned int*)0x400001;
while (1)
{
for(i=0;i<4;i++)
{
*LBDS=uLED;
}
for(i=3;i>=0;i--)
{
*LBDS=uLED;
}
}
}
我单单编译这个程序也出现警告
int 改成 long 也不行;但是在tc是编又没有问题!
编译完后,分给LBDS的地址上的数值还不能改。
LBDS=(unsigned long*)0x400001;
这行还是出现warning: conversion from integer to smaller pointer的提示
问题解决了,是设置问题,在project-->build options-->advanced-->memory model-->large!以前是small!
谢谢各位的帮助,这是个不错的论坛!!
我也是这个问题
我的程序是这样的
#define LBDS (*((unsigned int *)0x400001))
unsigned int uLED[4]={1,2,4,8};
LBDS=uLED[0]; 就在这行有警告
这是两个警告
\"xunlian.c\", line 45: warning: conversion from integer to smaller pointer
>> warning: \'.sysmem\' section not found -- ignoring \'-heap <size>\' option.
按照楼上的把这个改了project-->build options-->advanced-->memory model-->large!以前是small!
改完之后有错误:
>> error: linking files for incompatible targets (file
\'C:\\\\CCStudio_v3.3\\\\MyProjects\\\\xunlian1\\\\Debug\\\\xunlian.obj\')
>> C:\\\\CCStudio_v3.3\\\\MyProjects\\\\xunlian1\\\\Debug\\\\xunlian.obj: error:
C:\\\\CCStudio_v3.3\\\\MyProjects\\\\xunlian1\\\\Debug\\\\xunlian.obj is
large model, but boot.obj
(C:/CCStudio_v3.3/C5500/cgtools/lib/rts55.lib) is small model
哪位给我指点一下我用的是5510的软仿,库是rts55.lib,ccs3.3的编译环境