关于msp430的AD多通道转换问题

这是我的程序,用2个通道去进行求和,求平均数。但是程序可以进中断,也可以进main,但就是不能正常的求出平均数,有大神可以看见问题吗?voidInit_ADC(){P6S... 这是我的程序,用2个通道去进行求和,求平均数。但是程序可以进中断,也可以进main,但就是不能正常的求出平均数,有大神可以看见问题吗?

void Init_ADC()
{ P6SEL=0x2f; //设置p6.0-p6.3为模拟输入通道
ADC12CTL0 = ~ENC;//ADC12CTL0,ADC12CTL1,ADC12MCTLn的控制位需要在ENC=0的情况下才能编程修改
//寄存器设置
ADC12CTL0=ADC12ON+REFON+REF2_5V+MSC+SHT0_8; //内核开启,启动内部基准电压, 选择2.5V基准, 多次采样开启

ADC12CTL1 = ADC12SSEL_0 + SHP + CONSEQ_3 + CSTARTADD_0; //采样脉冲有采用定时器产生 转换模式选择---采用多通道多次转换模式 ,设置转换起始地址

//通道选择
ADC12MCTL0=SREF_1+INCH_0; //选择A0模拟通道输入
ADC12MCTL1=SREF_1+INCH_1+EOS; //选择A1模拟通道输入

ADC12IE=0x000; //中断溢出控制位
ADC12CTL0 |= ENC + ADC12SC; //转换允许位,打开转换

_EINT(); //全局中断使能

}
//ADC模块中断
#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR(void)
{ _NOP(); // 处理
ADC12CTL0&=~ENC;
static uchar index = 0;
result0[index] = ADC12MEM0;// Move results
result1[index] = ADC12MEM1;// Move results
index++;
if(index==i)
{
for( i=0;i<32;i++)
{
sum0+=result0[i];
sum1+=result1[i];
}
sum0>>=5;
sum1>>=5;
ADC12CTL0 |= ENC + ADC12SC;
}
}
展开
 我来答
liangsai
2013-07-10 · TA获得超过835个赞
知道小有建树答主
回答量:1508
采纳率:0%
帮助的人:663万
展开全部
每次都要开ADC12CTL0 |= ENC + ADC12SC; SHT0_8; 改为SHT0_12;移位求平均不精确,你可以用double型去/32 或者先*100再>>=5
意法半导体(中国)投资有限公司
2023-06-12 广告
STM32是ARM Cortex内核单片机和微处理器市场和技术方面的佼佼者,目前提供16大产品线 (F0, G0, F1, F2, F3, G4, F4, F7, H7, MP1, L0, L1, L4, L4+,L5, WB),超过100... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式