下面是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
(您意想不到的数据)。