C - 在 MCU 上阅读 UART 软件 - 代码理解



下面是uart驱动程序头文件中的代码,用于在uart接口上执行非阻塞读取。

/**
 * Perform a single character read from the UART interface.
 * This is a blocking synchronous call.
 *
 * @brief UART character data read.
 * @param [in] uart UART index.
 * @param [out] data Data to read from UART.
 * @return ti_uart_status_t Returns UART specific return code.
 */
 ti_uart_status_t ti_uart_read(const ti_uart_t uart, uint8_t *data);

下面是使用上述函数从 uart 接口获取字符的示例代码。我试图理解它。

我认为ti_uart_read()从 uart 界面读取字符,因此为什么需要getcharacter()

另外,为什么需要将&c传递给函数?它的功能是什么?

非常感谢

int getcharacter(void) {
uint8_t c = 0;
int ret;
  ret = ti_uart_read(ti_UART_0, &c);
  if (ti_RC_OK == ret) {
    return ((int) c);
  }
  return -1;
}

函数 getcharacter 是 UART 函数ti_uart_read的包装器,用于处理操作的状态以及获取字节。 ti_uart_read提供两项数据:操作状态和读取的值。为了实现这一点,状态作为函数值返回,数据由指针设置。这样做的原因是,如果您正在检查函数的返回值,则可以实现更流畅、更惯用的程序逻辑。一些库函数将这一切合二为一; fgetc就是一个例子。 getcharacter的工作方式类似:在发生错误时,它会返回-1(您意想不到的数据)。

最新更新