ERRO[e89]:too much object code produced[more than 0x800 byte] for this pack-age 我用的是EW430,147的片子.
谢谢 TIANLE1010的热心回答.
RAM我用的现在最多只有2-3十个.我把程序切换到汇编级调试,看程序是从0X8000开始到0X87CC的.退出调试状态,在程序中加任何一条指令就会出现上面的错误提示.程序量才2K不到.是不是什么地方设置错了?
调试时,注意在选项里看选择的是不是147的片子
把C程序帖上来,看看*.asm俺看不懂~~
IAR配置中的型号有没有设置正确,用SIMULATOR试一下
程序全部贴出来很占地方,只把我的初始化程序弄出来
//初始化程序*************************************
#include<msp430x14x.h>
void init_colck(void);
void init_ports(void);
void init_timera(void);
void init_mcu(void)
{
init_colck();
init_ports();
init_timera();
}
//初始化时钟
void init_colck(void)
{
unsigned int i; //设MCLK=LFXT1=ACLK=4M
_BIC_SR(OSCOFF);
_BIS_SR(SCG0); //关闭DCO发生器
_BIS_SR(SCG1); //关闭SMCLK(子系统时钟)
BCSCTL1 |=XTS;
do
{
IFG1 &=~OFIFG; //清除振荡器失效标志
for (i=0;i<0xff;i++);
}
while((IFG1&OFIFG)!=0);
BCSCTL2 |=SELM1+SELM0+DIVS0+DIVS1;
}
//初始化端口
void init_ports(void)
{
P1SEL=0X00; //端口初始化
P1DIR=0X0f; //端口方向控制
P2SEL=0X00; //功能选择寄存器
P2DIR=0X00;
// P2OUT=0X00;
P3SEL=0x00;
P3DIR=0XFF;
P3OUT=0X00;
P4SEL=0X00;
P4DIR=0X3F;
P5SEL=0X00;
P5DIR=0XFF;
P5OUT=0X00;
P6SEL=0X01;
P6DIR=0X3E;
P6OUT=0X00;
}
//初始化定时器A,开定时中断。1MS中断一次。
void init_timera(void)
{
TACTL|=TASSEL0+TACLR; //时钟源为ACLK,清计数器TAR
CCTL0=CCIE;
CCR0=4000;
TACTL|=MC0;
}
在P2OUT的地方把那条指令加上就会有上面的错误出现.如果加在其他C文件也一样.
IAR配置中的的型号我是在PROJECT/OPTIONS/C-SPY/SET UP/CHIP description中设定的不知对不对,为msp430F147.ddf文件
如果我的IAR配置型号错了的话,那程序的起始地址也不会为0X8000的啊!
现在把project/options/icc430/code generation/optimization中的选项改为speed high
(默认为speed medium)就不会出现上面说的错误了, 最优化选项里这些是什么意思啊,不知大虾可否给解释,解释
有在xlink/include中的XCLl file name 选择msp430F147C.xcl(选择方法与DDF的选择相同),需要两个配置文件都符合。注:汇编选择msp430F147A.xcl,C语言就选择msp430F147C.xcl。祝好运,呵呵
谢谢
两个我都设了,COMPILE能通过但LINK时就过不了。如果在C文件里任减一条指令LINK又会通过。程序又会正常的运行起来