【问题标题】:How Can I write UART function without vsnprintf如何在没有 vsnprintf 的情况下编写 UART 函数
【发布时间】:2020-07-24 13:16:28
【问题描述】:

如何在没有 vsnprintf 或 args 的情况下使用 Serialdebug 函数。我只想使用

  HAL_UART_Transmit function to print my string.

代替这个函数:

void Serialdebug(const char *serial_data, ...)
{
  char uartbuffer[1024]="";
  va_list arg;
  va_start(arg, serial_data);
  uint16_t len = vsnprintf(uartbuffer, 1024, serial_data, arg);
  va_end(arg);
  HAL_UART_Transmit(&huart2, (uint8_t *)uartbuffer, len, 100);

}

我该怎么做?

【问题讨论】:

  • 编写自己的prinf函数。

标签: stm32 uart


【解决方案1】:

您基本上可以将函数简化为对HAL_UART_Transmit的调用:

void Serialdebug(const char *str)
{
    HAL_UART_Transmit(&huart2, (uint8_t *)str, strlen(str), 100);
}

【讨论】:

  • 当我这样使用时,我无法打印我的参数,例如:Serialdebug("my param %d",myparam) return to me "my param %d"
  • 恐怕我不明白你的问题。听起来好像您不想输出字符串并且不提供任何参数。 vsnprintf 是负责用%d 和类似选项格式化字符串的核心函数。因此,如果您想要字符串格式,几乎没有任何方法。您能否更好地描述您真正想要实现的目标或您遇到的问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-11
  • 2021-05-21
  • 1970-01-01
  • 1970-01-01
  • 2018-01-01
  • 2019-11-01
相关资源
最近更新 更多