为STM32工程配置调试打印功能
一、配置调试用的打印串口
#include <stdio.h>
#pragma import(__use_no_semihosting)
struct __FILE
{int a;
};FILE __stdin, __stdout;void _sys_exit(int x)
{}
int fputc(int ch, FILE *f)
{HAL_UART_Transmit(&husart?, (uint8_t *)&ch, 1, 10);return ch;
}
int fgetc(FILE *f)
{uint8_t ch = 0;HAL_UART_Receive(&husart?, (uint8_t *)&ch, 1, 10);return (int)ch;
}
二、配置USB作为虚拟打印端口
#include <stdarg.h>
void usb_printf(const char *format, ...)
{va_list args;uint32_t length;va_start(args, format);length = vsnprintf((char *)UserTxBufferFS, APP_TX_DATA_SIZE, (char *)format, args);va_end(args);CDC_Transmit_FS(UserTxBufferFS, length);
}