学前班
最后登录1970-1-1
在线时间 小时
注册时间2019-3-24
|
本帖最后由 鬼魅无痕 于 2019-3-24 20:14 编辑
各位前辈,我在编写串口空闲中断加DMA接收数据时,在串口空闲中断里必须加 DMA_ClearITPendingBit(DMA2_Stream2, DMA_IT_TCIF2); // Clear Transfer Complete flag
语句才能正常接收。我查看了网上的程序,发现均不需要这句。我想知道是否是我的配置出错,还是本来就必须这句?谢谢各位前辈。
以下为中断函数:
void MyUSARTx_IRHandler(void){
uint8_t ucTemp;
if(USART_GetITStatus(MyUSARTx,USART_IT_IDLE)!= RESET){
DMA_Cmd(MyUSARTx_DMA_STREAM,DISABLE);
flag = 1;
ucTemp = USART1->SR;
ucTemp = USART1->DR;
DMA_ClearITPendingBit(DMA2_Stream2, DMA_IT_TCIF2); // Clear Transfer Complete flag
ucTemp = 200 - DMA_GetCurrDataCounter(MyUSARTx_DMA_STREAM);
ReceiveBuff[ucTemp] = 0;
DMA_SetCurrDataCounter(MyUSARTx_DMA_STREAM, 200);
DMA_Cmd(MyUSARTx_DMA_STREAM,ENABLE);
}
}
|
|