新手求解,关于STM32F4通过AD进行数据采集的一段代码解释,谢谢

2019-07-21 03:34发布

大家好,我是个新手,老师给了一个关于STM32F4通过AD进行数据采集的程序,AD是16位,6路数据采集器,其中有一段代码是这样的,应该是6路分别采集的信号,但是 我这里不太理解,哪位高手帮忙解释下呗,谢谢(*^__^*) 

int16_t adcBuf[ADC_BUF_SIZE*8*2]; /* ADC_BUF_SIZE = 512*8*2 */
int16_t pingAdcBuf[ADC_BUF_SIZE],pongAdcBuf[ADC_BUF_SIZE];

。。。。。。。
。。。。。。。

void DMA2_Stream1_IRQHandler(void)
{      
  uint16_t i;

if(SET == DMA_GetITStatus(DMA_STREAM, DMA_IT_HTIF1)){
    DMA_ClearITPendingBit(DMA_STREAM, DMA_IT_HTIF1);                          
    /* user code is HERE */    
    pingAdcBuf[1] = adcBuf[1*8 + 0];    /* CH1 */
 
    pingAdcBuf[2] = adcBuf[2*8 + 1];    /* CH2 */
    pingAdcBuf[3] = adcBuf[3*8 + 2];    /* CH3 */
    pingAdcBuf[4] = adcBuf[4*8 + 3];    /* CH4 */
    pingAdcBuf[5] = adcBuf[5*8 + 4];    /* CH5 */
    pingAdcBuf[6] = adcBuf[6*8 + 5];    /* CH6 */

  }else if(SET == DMA_GetITStatus(DMA_STREAM, DMA_IT_TCIF1)){
    DMA_ClearITPendingBit(DMA_STREAM, DMA_IT_TCIF1);    
  
 
/* user code is HERE */ 
    for(i=0;i<ADC_BUF_SIZE;i++) pongAdcBuf = adcBuf[ADC_BUF_SIZE*8 + i*8 + 0];
    for(i=0;i<ADC_BUF_SIZE;i++) pongAdcBuf = adcBuf[ADC_BUF_SIZE*8 + i*8 + 1];
    for(i=0;i<ADC_BUF_SIZE;i++) pongAdcBuf = adcBuf[ADC_BUF_SIZE*8 + i*8 + 2];
    for(i=0;i<ADC_BUF_SIZE;i++) pongAdcBuf = adcBuf[ADC_BUF_SIZE*8 + i*8 + 3];
    for(i=0;i<ADC_BUF_SIZE;i++) pongAdcBuf = adcBuf[ADC_BUF_SIZE*8 + i*8 + 4];
    for(i=0;i<ADC_BUF_SIZE;i++) pongAdcBuf = adcBuf[ADC_BUF_SIZE*8 + i*8 + 5];  
 
  }
}



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。