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.

CC2530 的ADC 中断

Other Parts Discussed in Thread: CC2530

大家好~~我想用一下CC2530的AD采样转换,对单通道的重复转换,然后希望转换结束就产生中断(单次结束),这个怎么对寄存器配置呢~~我看了下手册没有ADC的中断使能啊~~谢谢大家啦~~

  • 贴一下我的代码吧~~

    有大神相告不?

    void SensorADCInit( void )

    {

    P0SEL |= 0x01;

    P0DIR &= 0xFE;

    APCFG |= 0x01;//通道0模拟输入

    ADCIF = 0;   //清楚中断标志,得试试是否是硬件清楚(好像是)

    //ADCCON1 = 0x03 | HAL_ADC_RAND_STOP | HAL_ADC_STSEL_ST;//选择的是ST=1时开始ADC

    //ADCCON2  控制多位AD采集

    }

    void SensorADCBegin(void)

    {

    ADCCON3 = HAL_ADC_CHN_AIN0 | HAL_ADC_DEC_512 |HAL_ADC_REF_125V;//通道0,采样率512,

    }

    #pragma vector = ADC_VECTOR

    __interrupt void P0_ISR(void)

    {

    SensorAD[i++] = ADCL;

    SensorAD[i++] = ADCH;    //低位在前

    SensorValue |= ADCL;

    SensorValue |= ADCH<<8;

    SensorValue >>= 4;

    fSensorValue =(float)(SensorValue/(float)2048)*3.3;//有疑问,还没有测试,按理应该是4096

    if(i<80)

           {

     //ADCCON1 |= HAL_ADC_START;//继续

    }

    else

           {

             i = 0;

           }

           ADCIF = 0;

    }

    void main(void)

    {

    //char i;

           //char TempValue[10];

    //InitUART0();                                    //初始化串口

    //initTempSensor();                               //初始化ADC

    SensorADCInit();

    SensorADCBegin();

           while(1);

    }

  • 哎~~没有高手来回答啊~~看来是不屑啊~~新手刚刚试了好久~~总算是出来了~~

    在中断的初始化中再加两句,开AD的中断使能ADCIE=1,和所有中断使能EA=1

  • 搞了半天总算出来了~~真的~~这个CC2530的ADC在网上就找不到中断的例程~~