|
昨天找了一天USART DMA printf发送函数,结果实际都不能正常运行,希望硬汉指点指点,多谢!
找到的代码如下:
结构体定义:
- typedef struct
- {
- uint16_t RX_Size; //receive length
- uint8_t RX_pData[RX_LEN]; //DMA receive buffer
- uint8_t TX_pData[RX_LEN]; //DMA translate buffer
- }USART_RECEIVETYPE
复制代码- USART_RECEIVETYPE UsartType
复制代码 函数如下:
- void Usart2DmaPrintf(const char *format,...)
- {
- uint16_t len;
- while((USART2->SR&0X40)==0);
- va_list args;
- va_start(args,format);
- len = vsnprintf((char *)UsartType.TX_pData,sizeof(UsartType.TX_pData)+1,(char*)format,args);
- va_end(args);
- HAL_UART_Transmit_DMA(&huart2, UsartType.TX_pData, len);
- }
复制代码 能发送数据,但发送不完整,丢数据。求助,谢谢!
|
|