阅读单片机上的uart软件——代码理解
reading uart software on mcu - code understanding
下面是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
提供两项数据:操作状态和读取的值。实现状态被return编辑为函数值,数据由指针设置。这样做的原因是,如果您正在检查函数的 return 值,则可以实现更流畅和更惯用的程序逻辑。一些库函数将这一切合而为一; fgetc
就是一个例子。 getcharacter
以类似的方式工作:它 returns -1
(你没想到的数据)在错误的情况下。
下面是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
提供两项数据:操作状态和读取的值。实现状态被return编辑为函数值,数据由指针设置。这样做的原因是,如果您正在检查函数的 return 值,则可以实现更流畅和更惯用的程序逻辑。一些库函数将这一切合而为一; fgetc
就是一个例子。 getcharacter
以类似的方式工作:它 returns -1
(你没想到的数据)在错误的情况下。