久芯网

H743显示波形,dma只能传输一位数据!!!!

avatar 702U7 提问时间: 2023-08-12 16:29:32 / 未解决

请问大家,我是做一个波形显示,H7的板子,在正点的GRAPH那个例程中加入adc和dma以后,当用1个ADC多通道的时候调用函数HAL_ADC_Start_DMA(),最后一个参数只能是1,也就是只传输一个数据,能正常显示波形,程序运行正常,但是我是6个通道,需要传输6个数据,不管是2 3 4 5 6,只要不是1,屏幕emwin界面就会卡住;同样当使用ADC双重模式的时候,调用函数HAL_ADCEx_MultiModeStart_DMA()打开adc和dma,也是如上的问题,只能传输1个,其它就会卡死在屏幕 请求大家帮忙指点一下!

十分感谢!!!

4个回答
  • avatar STMCU-管管
    回答时间: 2023-08-12 16:53:20

    是不是你没清除中断标志,一直在调用中断。

  • avatar 702U7
    回答时间: 2023-08-12 17:15:40
    STMCU-管管 发表于 2022-1-5 16:28
    是不是你没清除中断标志,一直在调用中断。

    void DMA1_Stream0_IRQHandler(void) { static int count=0; if( __HAL_DMA_GET_FLAG(&DMA1_Stream0_Handler,DMA_FLAG_TCIF0_4)!=RESET) { SCB_InvalidateDCache(); if((oscilldev.buffer!=NULL)&&(oscilldev.adflag==0)) //buffer为空,并且允许进行AD采集 { Acceleration_Buf[1] = ADC_DMA_Buf[0]; Acceleration_Buf[0] = ADC_DMA_Buf[0] >> 16; Acceleration[0] = (float)Acceleration_Buf[0] * 3300 / 65536; oscilldev.buffer[count]=(int)Acceleration[0]; count++; if(count>oscilldev.dataxsize)//一次数据采集完成 { count=0; oscilldev.adflag=1;//标记AD采集完成 } } __HAL_DMA_CLEAR_FLAG(&DMA1_Stream0_Handler,DMA_FLAG_TCIF0_4); } } 清除了

  • avatar 702U7
    回答时间: 2023-08-12 17:33:47

    111111111111111111111

  • avatar 702U7
    回答时间: 2023-08-12 18:04:55

    11111111

会员中心 微信客服
客服
回到顶部