大家好,我是个新手,老师给了一个关于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];
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>