stm32f407系列dma能够进入中断,但是判断中断标志位却不成立。

2019-07-20 09:51发布

如题目所说,为什么进入中断,标志位却不成立啊,中断设置是这样的  NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn; 
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x00; 
 NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03;
 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
 NVIC_Init(&NVIC_InitStructure); 然后在中断函数里判断标志位是这样的。 if(DMA_GetITStatus(DMA2_Stream0, DMA_FLAG_TCIF0)==SET) 总之进不去if,为什么啊,新手一枚,调试好久了,求大神指点。 上面是定时器中断,下面才是dma中断,然后还是那个问题 void MYDMA_Interrupt(void)
{
 NVIC_InitTypeDef NVIC_InitStructure;
 
 DMA_ITConfig(DMA2_Stream0,DMA_IT_TC,ENABLE);//????DMA?????ê????????
 NVIC_InitStructure.NVIC_IRQChannel=DMA2_Stream0_IRQn ; //DMA2?????÷0????
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x01; //??????????1
 NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03; //×???????3
 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
 NVIC_Init(&NVIC_InitStructure);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
匿名消息
2019-07-20 22:19
回复【5楼】正点原子:
---------------------------------
我定时器中断和dma中断都设置了啊,然后定时器中断确实可以进去,那个标志位如果是定时器中断我觉得也正常,因为毕竟定时器中断设置是按您的例程写的,没什么问题。
但是我的问题主要是,dma中断是可以进去的(如果我没有设置dma中断的话,应该连void DMA2_Stream0_IRQHandler(void)这个函数都进不去吧),但是却可以进去,只是if(DMA_GetITStatus(DMA2_Stream0, DMA_FLAG_TCIF0)==SET)判断不通过,总之我打算设置的是传输完成后进中断,但是虽然可以进中断,在debug里面发现却并没有把数组里的所有数都都填满,然后就进中断了。

一周热门 更多>