DMA+USART接收数据,为什么只能接收到一次

2019-08-22 15:48发布

STM32F205 DMA+USART接收数据。按照网上的说法,总线空闲中断里已经关掉了DMA,而后设置传输次数重启,可是还是只能接收一次。之后DMA_GetCurrDataCounter(DMA1_Stream5)返回值一直都是初值。代码:
rx_len = USART2->SR;rx_len = USART2->DR;
USART_ClearITPendingBit(USART2, USART_IT_IDLE);
DMA_Cmd(DMA1_Stream5, DISABLE);
。。。。。。
。。。。。。
while(DMA1_Stream5->CR & (uint32_t)DMA_SxCR_EN);        //ÅD¶ÏS5CRμÄENλêÇ·ñÎa0
DMA_SetCurrDataCounter(DMA1_Stream5, UART_RX_LEN);
DMA_Cmd(DMA1_Stream5, ENABLE);


谁能帮忙看看是怎么回事????



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
Owen
1楼-- · 2019-08-23 17:20
JUSTNIUB 发表于 2017-4-7 16:13
恩,我也有考虑过,NDTR的值不太可能是0.
不过你提到的这两个中断我在F0系列上确实没有见到过,所以给出 ...

DMA_LISR 和 DMA_HISR是存中断标致的寄存器,不是中断标致,估计F0上也会有。
JUSTNIUB
2楼-- · 2019-08-23 20:15
 精彩回答 2  元偷偷看……
Owen
3楼-- · 2019-08-24 00:32
JUSTNIUB 发表于 2017-4-7 16:25
F0上的DMA中断只有error ,half-transfer和transfer-complete这三种,F0中断寄存器是ISR,所以还是有些不 ...

我发现F2系列的DMA和F4的一样,数据手册上面写的基本一样,而且F4的手册有中文的
JUSTNIUB
4楼-- · 2019-08-24 05:37
Owen 发表于 2017-4-7 16:51
我发现F2系列的DMA和F4的一样,数据手册上面写的基本一样,而且F4的手册有中文的

32系列应该都差不多吧

一周热门 更多>