超高效率dma 串口调试程序,DMA构造PRINTF函数
首先,感谢群里面管理员 担/xin 的分享
以下复制于QQ群信息
DMA发送为循坏模式
发送完成中断为
头文件包含
这几个复制上去就能用
定义的变量也贴出来
复制上去就可以用了,很爽,今天搞了一下午,话说工作效率有点低
完整的工程文件可以到论坛网盘下载:
名称:UART高效不定长DMA接收DMA发送.zip
以下复制于QQ群信息
void Debug_Printf(const char *format, ...)
{
uint32_t length;
va_list args;
if(firstflag==0)
{
va_start(args, format);
length = vsnprintf((char[i])print_buffer, sizeof(print_buffer), (char[/i])format, args);
va_end(args);
HAL_UART_Transmit_DMA(&huart1,print_buffer,length);
firstflag=1;
}
else
{
while(!okflag);
va_start(args, format);
length = vsnprintf((char[i])print_buffer, sizeof(print_buffer), (char[/i])format, args);
va_end(args);
__HAL_DMA_SET_COUNTER(&hdma_usart1_tx,length);
__HAL_DMA_ENABLE(&hdma_usart1_tx);
}
okflag=0;
}
DMA发送为循坏模式
发送完成中断为
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) //·¢ËÍÍê³É
{
__HAL_DMA_DISABLE(&hdma_usart1_tx);
okflag++;firstflag=1;
}
头文件包含
#include <stdarg.h>
这几个复制上去就能用
定义的变量也贴出来
uint8_t firstflag=0;
volatile uint8_t okflag=0;
uint32_t Tim_num=0;
#define RX_BUF_SIZE 0x100
#define PRINTF_BUF_SIZE 0x200
static uint8_t print_buffer;
复制上去就可以用了,很爽,今天搞了一下午,话说工作效率有点低
完整的工程文件可以到论坛网盘下载:
名称:UART高效不定长DMA接收DMA发送.zip
6 个回复
admin
赞同来自: 【福清】Paderboy
【福清】Paderboy
赞同来自:
yanandren
赞同来自: gfdscoolboy
yhkingboy
赞同来自:
Waiman /sun
赞同来自: abswzp
wangjun110 - 一句话介绍
赞同来自: