如题目所说,为什么进入中断,标志位却不成立啊,中断设置是这样的
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);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
我定时器中断和dma中断都设置了啊,然后定时器中断确实可以进去,那个标志位如果是定时器中断我觉得也正常,因为毕竟定时器中断设置是按您的例程写的,没什么问题。
但是我的问题主要是,dma中断是可以进去的(如果我没有设置dma中断的话,应该连void DMA2_Stream0_IRQHandler(void)这个函数都进不去吧),但是却可以进去,只是if(DMA_GetITStatus(DMA2_Stream0, DMA_FLAG_TCIF0)==SET)判断不通过,总之我打算设置的是传输完成后进中断,但是虽然可以进中断,在debug里面发现却并没有把数组里的所有数都都填满,然后就进中断了。
一周热门 更多>