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