最终,我们可以将程序扩展为如下形式:void USART_printf(USART_TypeDef *USARTx, const char *format, ...){ va_list args; va_start(args, format); while (*format != '\0') // 遍历格式字符串,直到遇到结束符 { if (*format == '\\') // 处理转义字符 { switch (*(+...
但请注意,这个函数并不支持像printf那样传递多个参数。为了进一步改进,我们可以将其扩展为支持更多功能,最终得到如下程序:void USART_printf(USART_TypeDef *USARTx, const char *format, ...){ va_list args; va_start(args, format); while (*format != '\0') { if (*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); } /* USER CODE END PRIVATE_FUNCTIONS_IMPLEMENTATION */ 【6】在main.c文件中,添...
{ uint8_t txBuffer[100]; uint32_t n; va_list args; va_start(args, format); n = vsnprintf((char *)txBuffer, 100, format, args); //...在此替换你的串口发送函数... HAL_UART_Transmit_DMA(&huart1, (uint8_t *)txBuffer, n); //... va_end(args); } // 输入个数和数组地...
9 va_list args; 10 11 va_start(args, format); 12 len = vsnprintf((char *)usbtemp, sizeof(usbtemp)+1, (char *)format, args); 13 va_end(args); 14 15 CDC_Transmit_HS(usbtemp, len); 16 } 17 18 /* USER CODE END PRIVATE_FUNCTIONS_IMPLEMENTATION */ ...
/* prints formatted string to console over UART */ void printmsg(char *format,...) { #ifdef BL_DEBUG_MSG_EN char str[80]; /*Extract the the argument list using VA apis */ va_list args; va_start(args, format); vsprintf(str, format,args); HAL_UART_Transmit(D_UART,(uint8...
va_list args; va_start(args, fmt); int length = vsnprintf(Uart_buf, sizeof(Uart_buf) - 1, fmt, args); va_end(args); HAL_Delay(1); USBD_CDC_SetTxBuffer(&hUsbDeviceFS, (uint8_t *)Uart_buf, length); USBD_CDC_TransmitPacket(&hUsbDeviceFS); ...
va_list args; uint8_t temp=0; va_start(args, format); length = vsnprintf((char*)_dbg_Buff, sizeof(_dbg_Buff)+1, (char*)format, args); va_end(args); HAL_UART_Transmit_DMA(&huart1,_dbg_Buff,length); //等待串口发送完成,注意是串口发送完成,不是DMA传输完成 ...
va_end(args); } /** * This function is print routine info. * * @param format output format * @param ... args */ void sfud_log_info(const char *format, ...) { va_list args; /* args point to the first variable parameter */ ...
#include <stdio.h> // 假设UART_SendByte是自定义的UART发送函数 int fputc(int ch, FILE *f) { UART_SendByte((uint8_t)ch); while (!UART_IsTxEmpty()); // 等待发送完成 return ch; } void debug_log(const char *format, ...) { va_list args; va_start(args, format); vprintf...