中级会员
 
- 积分
- 450
- 金钱
- 450
- 注册时间
- 2017-3-31
- 在线时间
- 118 小时
|
1金钱
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);
谁能帮忙看看是怎么回事????
|
最佳答案
查看完整内容[请看2#楼]
STM32F2手册上写,将EN 位置“1”以启动新传输(即调用DMA_Cmd(DMAy_Streamx, ENABLE)函数使能数据流)之前,DMA_LISR 或DMA_HISR 寄存器中与数据流相对应的事件标志(DMA_FLAG_TCIFx)必须清零。重新使能DMA之前清除DMA中断的标志位,问题就解决了
|