新手求解,关于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];  
 
  }
}



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
正点原子
1楼-- · 2019-07-21 04:55
这里就是DMA中断服务函数,处理DMA接收完成的adc数据。
伊尹宝贝
2楼-- · 2019-07-21 05:52
 精彩回答 2  元偷偷看……
正点原子
3楼-- · 2019-07-21 10:53
回复【3楼】伊尹宝贝:
---------------------------------
这个我也不懂

一周热门 更多>