This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430F5529单片机编译程出现错误怎么解决

Other Parts Discussed in Thread: MSP430F5529

错误如下:

unresolved symbol ADC12CTL0, first referenced in ./main.obj

#10010 errors encountered during linking; "222.out" not built

<a href="processors.wiki.ti.com/.../10234"> unresolved symbols remain

gmake: *** [all] Error 2

gmake[1]: *** [222.out] Error 1

Description Resource Path Location Type
unresolved symbol ADC12CTL1, first referenced in ./main.obj 222    C/C++ Problem

unresolved symbol ADC12MEM0, first referenced in ./main.obj

  • #include <msp430f5529.h>
    #define BIT(x)        (1 << (x))
    #define CS 2//片选信号
    #define SID 3//串行数据输入
    #define CLK 4//串行时钟
    #define PSB 3//串行选择位
    #define PORT P1OUT
    #define DDR  P1DIR
    char LCD_table[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};//0123456789
    int result;
    void ADC_init()
    {
        P6SEL|=0x01;
        ADC12CTL0=ADC12SHT02+ADC12REFON+ADC12ON;
        ADC12CTL1=ADC12SHP;
        ADC12CTL0|=ADC12ENC;
    }
    void delay_1ms()
    {
        int i;
        for(i=1140;i>0;i--);
    }
    void delay_nms(int n)
    {
        int i;
        for(i=0;i<n;i++)
            delay_1ms();
    }
    void lcd_init()
    {
        DDR|=BIT(CS)+BIT(SID)+BIT(CLK)+BIT(PSB);
        P2OUT&=~BIT(3);
        delay_nms(600);
        Send(0,0x30);  /*功能设置:一次送8位数据,基本指令集*/
        delay_nms(10);
        Send(0,0x02);  /*DDRAM地址归位*/
        delay_nms(5);
        Send(0,0x0c);  /*显示设定:开显示,不显示光标,不做当前显示位反白闪动*/
        delay_nms(5);
        Send(0,0x01);  /*清屏,将DDRAM的位址计数器调整为“00H”*/
        delay_nms(500);
        Send(0,0x06);  /*功能设置,点设定:显示字符/光标从左到右移位,DDRAM地址加1*/
        delay_nms(10);
    }
    void Send(char type,char transdata)//0-写控制命令,1-写数据
    {
        char firstbyte = 0xf8;
        char temp;
        char i,j = 3;
        if(type)
            firstbyte |= 0x02;
        PORT |= BIT(CS);
        PORT &= ~BIT(CLK);
        while(j > 0)
        {
            if(j == 3)
                temp = firstbyte;
            else if(j == 2)
                temp = transdata&0xf0;
            else
                temp = (transdata << 4) & 0xf0;
            for(i = 8;i > 0;i--)
                {
                    if(temp & 0x80)
                        PORT |= BIT(SID);
                    else
                        PORT &= ~BIT(SID);
                        PORT |= BIT(CLK);
                        temp <<= 1;
                        PORT &= ~BIT(CLK);
                }
                //三个字节之间一定要有足够的延时,否则易出现时序问题
            if(j == 3)
                delay_nms(1);
            else
                delay_nms(1);
            j--;
        }
           PORT &= ~BIT(SID);
           PORT &= ~BIT(CS);
    }

    void lcd_pos(char x,char y)//定位
    {
        char pos;
        switch(x)
        {
            case 1:pos=0x80;break;
            case 2:pos=0x90;break;
            case 3:pos=0x88;break;
            case 4:pos=0x98;break;
            default:pos=0x80;
        }
        pos+=y;
        Send(0,pos);
    }
    void Disp_HZ(const char * pt,char num)//显示汉字
    {
        char i;
        for(i = 0;i < (num*2);i++)
            Send(1,*(pt++));
    }

    void Disp_SZ(char shuzi)//显示一个数字
    {
        Send(1,LCD_table[shuzi]);
    }
    void main(void)
    {
     WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
     int r1,r2,r3;
     lcd_init();
     ADC_init();
     lcd_pos(1,0);
     Disp_HZ("峰峰值",5);
     lcd_pos(2,6);
      Disp_HZ("V",1);
     while(1)
     {
         ADC12CTL0|=ADC12SC;
         __bis_SR_register(LPM0_bits + GIE);
         r1=result%10;
         r2=(result/10)%10;
         r3=result/100;
         lcd_pos(2,0);
         Disp_SZ(r3);
         lcd_pos(2,2);
         Disp_SZ(r2);
         lcd_pos(2,4);
         Disp_SZ(r1);
     }
    }
    #pragma vector=ADC12_VECTOR
    __interrupt void ADC12ISR(void)
    {
       //int result;
       result=ADC12MEM0;
    }
    源程序
  • 这是一个比较常见的错误提示。

    编译器没有找到寄存器的定义。

    可能的原因:

    1、工程配置有问题, 编译器找不到相应的文件

    2、寄存器拼写有问题。不同系列的msp430寄存器名称有一些差异,其他msp430型号的工程换成另一个型号有时也会出现这个问题。

  • 也有可能有些文件没有被加入到工程中,也会出现这种问题

  • 建议您使用CCS7新建工程,然后把code添加复制到新的工程里面。如果报错建议参考附件中code。