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 ADC12 编译不过!求解释!!!

Other Parts Discussed in Thread: MSP430F5529

/*
 * AD_main.c
 *
 *  Created on: 2013-8-4
 *      Author: Administrator
 */

#include<msp430f5529.h>
#include"HAL_Board.h"

#define num_results 512
int results[num_results] = {0};
void ADC_Init(void);


void main(void)
{
 WDTCTL=WDTPW+WDTHOLD;//关闭看门狗
 Board_init();            //初始化GPIO
 ADC_Init();//ADC初始化
 ADC12CTL0 |=ADC12ENC;//AD转换允许
 LPM0;//进入低功耗模式0
}

void ADC_Init(void)
{
 P8DIR |=BIT1;//P8.1为输出,即led2
 P8OUT &=~BIT1;//led2灭
    P6SEL |=BIT0;//打开AD模拟端口A0
//配置ADC12
    ADC12CTL0 = ADC12ON+ADC12SHT02+ADC12REF2_5V+ADC12REFON ;
    //打开ADC12内核,采样保持时间系数2,选择内部参考电压2.5v,打开内部参考电压发生器
    ADC12CTL1 = ADC12SHP+ADC12CONSEQ_2+ADC12SHS_1;
    //采样定时器作为采样触发信号源SAMPCON,由采样输入信号ADC12CLK的上升沿触发采样定时器
    //单通道多次采样,采样触发源为TIMERA的输出单元out1输出的信号(由CCR1定时产生)
    ADC12MCTL0 =ADC12INCH_0+ADC12SREF_1;
    //选择0通道,参考电压源为:v+=Vref+,v-=Avss
    ADC12IE |=BIT0;//开中断允许ADC12IFG.0

//配置定时器
    TA0CCR0 =1500;//延时
    TA0CCTL0 |=CCIE;//开定时器中断允许,定时器为比较模式
    TA0CTL = TASSEL_1 | MC_1;//TACLK=ACLK,增计数模式
    LPM3;
    TA0CCTL0 &=~CCIE;//关闭定时器捕获比较中断

    P1SEL |=BIT2;//开TA0.1作为TIMERA_out1的输出功能
    P1DIR |=BIT2;//输出

    TA0CCR0 = 7;//初始化TA0CCL0,采样时钟周期=CCR0+1

    TA0CCR1 = 4;
    //初始化TA0CCL1,用于产生一个TIMERA_out1信号给ADC12做采样触发信号源

    TA0CCTL1 =OUTMOD_3;
    //CCR1捕获比较寄存器的out1输出单元为置位/复位模式

    TA0CTL =TACLR | MC_1 |TASSEL_1;
    //清除TA,增计数模式,定时器时钟为ACLK
}

#pragma vector=ADC12_VECTOR
__interrupt void ADC12ISR(void)
{
    static unsigned int index =0; //静态变量

    switch(__even_in_range(ADC12IV,34))
    {
    case  0: break;                           // Vector  0:  No interrupt
    case  2: break;                           // Vector  2:  ADC overflow
    case  4: break;                           // Vector  4:  ADC timing overflow
    case  6:                           // Vector  6:  ADC12IFG0
     results[index++]=ADC12MEM0;//移动ADC结果到数组,此时ADC12IFG.0自动复位

         if(index==512)
           {
          ADC12CTL0 &=~ADC12ENC;// 停止转换
          index=0;
          P8OUT |=BIT1;
          LPM3;
           }
    case  8: break;                           // Vector  8:  ADC12IFG1
    case 10: break;                           // Vector 10:  ADC12IFG2
    case 12: break;                           // Vector 12:  ADC12IFG3
    case 14: break;                           // Vector 14:  ADC12IFG4
    case 16: break;                           // Vector 16:  ADC12IFG5
    case 18: break;                           // Vector 18:  ADC12IFG6
    case 20: break;                           // Vector 20:  ADC12IFG7
    case 22: break;                           // Vector 22:  ADC12IFG8
    case 24: break;                           // Vector 24:  ADC12IFG9
    case 26: break;                           // Vector 26:  ADC12IFG10
    case 28: break;                           // Vector 28:  ADC12IFG11
    case 30: break;                           // Vector 30:  ADC12IFG12
    case 32: break;                           // Vector 32:  ADC12IFG13
    case 34: break;                           // Vector 34:  ADC12IFG14
    default: break;
    }
}

这是参考教程的例子写的,哪里出错?求大神指导!!!

  • li ma1,

    看样子是实际程序和memory map .cmd不符,请问你更改过.cmd文件吗?还是用的是默认的.cmd。

    另外,请把你选中标蓝的那个error信息完整的显示出来?让我们可以看到详细的信息提示。

    还有如果有杀毒软件和防火墙的话,试着关了,再试试。

    希望对你有帮助!O(∩_∩)O~

  • 你好,把杀毒软件和防火墙关了,还是报同样的错。。。

  • li ma1,

    你自己新建一个工程吧,我用你的代码新建工程  build了,完全没有任何错误。估计是你的工程用的是旧的,那里设置有问题。

  • 这些警告不影响功能的,你要是嫌不好看可以再properties里面build下linker里advance option下diagnostic下《id》下添加10374即可在编译就没了