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:
您好,新的问题烦请重新起帖,方便别的客户阅读,感谢理解,谢谢!