阅读ucu软件对mcu - 代码的理解

时间:2016-02-08 16:19:01

标签: c function pointers 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;
}

1 个答案:

答案 0 :(得分:1)

函数throws Exception是UART函数getcharacter的包装器,它处理操作的状态以及获取字节。 ti_uart_read提供两项数据:操作的状态和读取的值。为了实现状态作为函数值返回,并且数据由指针设置。这样做的原因是,如果要检查函数的返回值,可以实现更平滑,更惯用的程序逻辑。一些图书馆功能管理这一切为一体; ti_uart_read就是一个例子。 fgetc以类似的方式工作:如果出现错误,它会返回getcharacter(您没有预料到的数据)。