3路ADC通道采集电压,并由DMA传输至内存,在DMA中断服务函数里设置了一个标志位,但是连续调试的时候没有变化,请问这是问什么?
DMA中断服务函数:
void DMA2_Stream0_IRQHandler(void) //DMA2_Stream0中断服务函数
{
int i,j;
if(DMA_GetITStatus(DMA2_Stream0, DMA_IT_TCIF0)) //DMA2_Stream0传输完成标志
{
for(i=0;i<2000;i++)
{
for(j=0;j<3;j++)
{
ADC_Con[j] = (float)ADC_Raw[j]*(3.3/4096);
}
}
flag_dma = 1;
DMA_ClearITPendingBit(DMA2_Stream0, DMA_IT_TCIF0); //清除传输完成中断标志
}
}
main函数:
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //设置系统中断优先级分组1
delay_init(168); //延时初始化
uart_init(115200); //初始化串口波特率为115200
KEY_Init(); //初始化按键
ADC_Config(); //初始化ADC
DMA_Config(); //初始化DMA
Timer_Init(); //TIM2配置
printf(&quot;======测试======
&quot;);
while(1)
{
if(flag_dma == 1)
{
printf(&quot;%u
&quot;,flag_dma);
flag_dma = 0;
printf(&quot;%u
&quot;,flag_dma);
}
}
} |