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.

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

Part Number: RM44L520
Other 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值都发生了变化,请问这种情况如何进行解决?

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

    2.看看是否是死循环

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

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    while(adcIsConversionComplete(adcREG1, 1) == 0)
    {
    //
    printf("Waiting for ADC conversion to complete...\n");
    }
    //
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

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

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

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

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

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

    这就是数组越界了

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