微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 关于led程序的问题,求助

关于led程序的问题,求助

时间:10-02 整理:3721RD 点击:
// 定义指示灯寄存器地址和寄存器类型

// 子程序接口
//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.

是什么错误,怎么解决阿?谢谢!

不是错误,是那个警告,但是LED就不能亮了

没有错阿,这个是原程序拷下来的阿,开始在一个.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的编译环境

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top