查看: 2770|回复: 1

[其他] link error如何解决

[复制链接]

该用户从未签到

2

主题

6

帖子

0

新手上路

Rank: 1

积分
13
最后登录
1970-1-1
发表于 2012-12-9 20:19:08 | 显示全部楼层 |阅读模式
 
想用一个double timer 进行计时,但是我把这句   ******** timer1= vTmpPIT2*0.65535+vTmpPIT*0.00001;********放进去编译是通过的,连接板子点击dubug按钮时候会提示link error,把上面这句注释掉运行是没有问题的.
怀疑是不是定义有问题,或者头文件里面还要包含什么文件?请大家指点
程序如下
#include
#include
#include  /* common defines and macros */
#include  /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
 
 #define PITTIME 60
unsigned int vTmpPIT=0,vTmpPIT2=0; 
unsigned int flag=0; 
double timer1=0;
 
 
void pllclk(void)//24MHz,外部时钟为 16MHz 

CLKSEL=0X00; 
PLLCTL=0xe1; 
SYNR=2;//PLLCLK=2*OSCCLK*(SYNR +1)/(REFDV +1) 
REFDV=1; 
PLLCTL=0X60; 
asm NOP; 
asm NOP; 
asm NOP; 
while((CRGFLG&0X08)==0);//时钟校正同步 
CLKSEL=0X80; 

 
 //输入捕捉通道ECT0初始化
void ECT0_INIT()  
{
  TSCR1=0X80;      //开启总定时器中断
  TSCR2=0X00;      //关闭溢出中断且64分频
  TIOS_IOS0=0;     //定通道0为输入捕捉,1为输出比较IOC0
  TCTL4=0X01;      //上升沿捕捉  0x02为下降沿捕捉
  TIE_C0I=1;       //通道0中断使能
  TFLG1_C0F=1;     //标志位清零
 
}  
 
//ECT0中断程序
#pragma CODE_SEG __NEAR_SEG NON_BANKED  //分配内存空间
void interrupt 8 timer_onput()          //输入捕捉通道0的中断向量为8

  flag++;          //中断次数标志位
  if(flag == 1)
  {
    TFLG1_C0F=1;     //标志位清零
    //TIE_C0I=0;     // 禁止通道0中断使能,使中断只响应一次
    asm sei;         //关总中断
    PTM_PTM0=~PTM_PTM0;
    PITCFLMT_PITE=1; //开启PIT模块
    PITINTE_PINTE0=1;    
    asm cli;         //开总中断
  } else
   {
   ******** timer1= vTmpPIT2*0.65535+vTmpPIT*0.00001;********
    TFLG1_C0F=1;     //标志位清零
    //TIE_C0I=0;     // 禁止通道0中断使能,使中断只响应一次
    asm sei;         //关总中断
    PTM_PTM0=~PTM_PTM0;
    
    PITCFLMT_PITE=0; //关闭PIT模块
    PITINTE_PINTE0=1;    
    asm cli;         //开总中断
   } 
  
}
 
//IO口初始化,B口为输出 
void initIOBoutput(void)

DDRM=0XFF; 
PTM=0XFF; 

 
 
void initPIT(void)//定时中断初始化函数 50MS定时中断设置 

PITCFLMT_PITE=0;//定时中断通道0关 
PITCE_PCE0=1;//定时器通道 0使能 
//PITMTLD0=40-1;//8位定时器初值设定。40*60=2400分频,在 24MHzBusClock下,为 0.01MHz。定时长度即 100us=0.1ms
PITMTLD0=4-1;//8位定时器初值设定。4*60=240分频,在 24MHzBusClock下,为 0.1MHz。定时长度即 10us=0.01ms  
PITLD0=PITTIME-1;//16位定时器初值设定。PITTIME*0.01MS 
PITINTE_PINTE0=1;//定时器中断通道 0中断使能 
//PITCFLMT_PITE=1;//定时器通道0使能 

 
 
void main(void) 
{
 
ECT0_INIT(); 
pllclk(); 
initIOBoutput(); 
initPIT(); 
PTM=0B11111110;
EnableInterrupts; 
for(;;){}/*wait forever*/ 
/*please make sure thatyou neverleave this function */ 

 
 
#pragma CODE_SEG __NEAR_SEG NON_BANKED 
void interrupt 66 PIT0(void) 

vTmpPIT++; 
 
if(vTmpPIT==65535)
  { 
  vTmpPIT2++;
  } 
PITTF_PTF0=1;//清中断标志位 

 
我知道答案 目前已有0人回答
回复

使用道具 举报

该用户从未签到

11

主题

288

帖子

0

版主

Rank: 7Rank: 7Rank: 7

积分
610
最后登录
1970-1-1
发表于 2012-12-10 14:20:53 | 显示全部楼层

RE:link error如何解决

double类型,建立工程的时候,是否支持呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-20 15:43 , Processed in 0.084573 second(s), 22 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表