TI中文支持网
TI专业的中文技术问题搜集分享网站

RM44L520: ADC中调用while(adcIsConversionComplete(adcREG1,1)==0);后不再向下执行

Part Number:RM44L520Other Parts Discussed in Thread:HALCOGEN

参照example_adcDisplay.c实例

调用adcStartConversion(adcREG1,adcGROUP1);之后可以正常进行ADC转换,

调用while(adcIsConversionComplete(adcREG1,1)==0);之后,程序跳不出来,我工程的其他代码不能正常运行,

调用adcGetData(adcREG1, adcGROUP1,&adc_data[0]);之后也可以正常获得ID和Value,并且可以正常打印在串口上,

但是由于while(adcIsConversionComplete(adcREG1,1)==0);导致我的其他代码不行执行,请问这种情况如何解决?

在我的工程里面,我调用了两次adcgetdata这一些列函数,在第一处的时候会卡住不向下继续执行,无法打印出2处的内容,之后将1处的代码强制break跳出,就能继续执行到2,但是到2之后程序又卡住了,此时1处的打印也有很多问题,id和value值都发生了变化,请问这种情况如何进行解决?

Gary Lu:

1.检查一下ADC配置和中断

2.看看是否是死循环

3. 调试一下:在循环内部打印调试语句,查看一下是否执行到这里,再检查一下相关的寄存器

while(adcIsConversionComplete(adcREG1, 1) == 0)
{
// 添加调试语句
printf("Waiting for ADC conversion to complete...\n");
}// 如果程序执行到这里,表示转换已经完成,可以继续向下执行

,

?? ?:

1、ADC配置上应该是没有问题,但中断不知有没有涉及到

2、应该是没有死循环,我的程序的打印信息是在调用ADC转换的相关函数之后进行打印的,如果有死循环,应该是不会打印我的信息

3、加上了调试语句,能打印出调试语句,但程序还是没有继续执行,串口也停止了继续打印

,

?? ?:

应该是找到问题了,ADC转换后的储存出现了问题,本来是十个通道转换,但只定义了7元素的数组,将数组变成10之后就能执行了

,

?? ?:

请问为什么增加了ADC的读取通道的数量,读上来的ADC转换值就发生了混乱,读值不正确并且错位,请问这种情况如何进行解决?或是如何进行halcogen设置?

,

Gary Lu:

?? ? 说:本来是十个通道转换,但只定义了7元素的数组

这就是数组越界了

,

Gary Lu:

您好,新的问题烦请重新起帖,方便别的客户阅读,感谢理解,谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » RM44L520: ADC中调用while(adcIsConversionComplete(adcREG1,1)==0);后不再向下执行
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1