#include "stdio.h"
#include "stdarg.h"
#define DEBUG 1
#if DEBUG
#define D_LOG(fmt,args...) \
do\
{\
LOG("file:%s line:%d function:%s time:%s %s ",__FILE__,__LINE__,__FUNCTION__,__DATE__,__TIME__);\
LOG(fmt,##args);\
}while(0)
#else
#define D_LOG(fmt,args...) //没使用打印直接 DEBUG=0 即可
#endif
#define tx_buf_len 256
uint8_t txbuf[tx_buf_len];
void LOG(const char *__format,...)
{
va_list ap;
va_start(ap,__format);
memset(txbuf,0x0,tx_buf_len);
vsnprintf((char*)txbuf,tx_buf_len,(const char*)__format,ap);
va_end(ap);
int len = strlen((const char*)txbuf);
HAL_UART_Transmit(&huart1, (uint8_t*)&txbuf, len, 0xFFFF);
}
void StartDefaultTask(void const * argument)
{
/* USER CODE BEGIN StartDefaultTask */
/* Infinite loop */
for(;;)
{
D_LOG("hello\r\n");
osDelay(1);
}
/* USER CODE END StartDefaultTask */
}
这样的封装写法,好处有几个,一是很方便查找什么硬件错误, 二是方便控制开关打印信息,三是这是用户自定义的打印函数,默认勾选Use MicroLIB