F1和F4的DMA发送

2019-07-21 00:37发布

对比了原子哥蓝牙模块的DMA发送程序,发现在F1的板子上使用了DMA功能
[mw_shl_code=c,true]void u2_printf(char* fmt,...) { va_list ap; va_start(ap,fmt); vsprintf((char*)USART2_TX_BUF,fmt,ap); va_end(ap); while(DMA_GetCurrDataCounter(DMA1_Channel7)!=0); UART_DMA_Enable(DMA1_Channel7,strlen((const char*)USART2_TX_BUF)); }[/mw_shl_code] 在F4的板子上
[mw_shl_code=c,true]void u3_printf(char* fmt,...) { u16 i,j; va_list ap; va_start(ap,fmt); vsprintf((char*)USART3_TX_BUF,fmt,ap); va_end(ap); i=strlen((const char*)USART3_TX_BUF); for(j=0;j<i;j++) { while((USART3->SR&0X40)==0); USART3->DR=USART3_TX_BUF[j]; } }[/mw_shl_code] 原子哥在F4上没有用DMA功能,今天我用串口1的DMA功能,如果像在F1板子上那样
while(DMA2_Stream7->NDTR!=0); 
  MYDMA_Enable(DMA2_Stream7,10);
发现这样DMA并不能传输,不知道为啥,原子哥能解释一下吗??
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。