UART使用实例

UART设备完整的使用示例如下所示,首先获取UART设备句柄,接着设置波特率、设备属性和传输模式,之后进行UART通信,最后销毁UART设备句柄。

  1. #include "hdf_log.h"
  2. #include "uart_if.h"
  3. void UartTestSample(void)
  4. {
  5. int32_t ret;
  6. uint32_t port;
  7. struct DevHandle *handle = NULL;
  8. uint8_t wbuff[5] = { 1, 2, 3, 4, 5 };
  9. uint8_t rbuff[5] = { 0 };
  10. struct UartAttribute attribute;
  11. attribute.dataBits = UART_ATTR_DATABIT_7; /* UART传输数据位宽,一次传输7个bit */
  12. attribute.parity = UART_ATTR_PARITY_NONE; /* UART传输数据无校检 */
  13. attribute.stopBits = UART_ATTR_STOPBIT_1; /* UART传输数据停止位为1位 */
  14. attribute.rts = UART_ATTR_RTS_DIS; /* UART禁用RTS */
  15. attribute.cts = UART_ATTR_CTS_DIS; /* UART禁用CTS */
  16. attribute.fifoRxEn = UART_ATTR_RX_FIFO_EN; /* UART使能RX FIFO */
  17. attribute.fifoTxEn = UART_ATTR_TX_FIFO_EN; /* UART使能TX FIFO */
  18. /* UART设备端口号,要填写实际平台上的端口号 */
  19. port = 1;
  20. /* 获取UART设备句柄 */
  21. handle = UartOpen(port);
  22. if (handle == NULL) {
  23. HDF_LOGE("UartOpen: failed!\n");
  24. return;
  25. }
  26. /* 设置UART波特率为9600 */
  27. ret = UartSetBaud(handle, 9600);
  28. if (ret != 0) {
  29. HDF_LOGE("UartSetBaud: failed, ret %d\n", ret);
  30. goto _ERR;
  31. }
  32. /* 设置UART设备属性 */
  33. ret = UartSetAttribute(handle, &attribute);
  34. if (ret != 0) {
  35. HDF_LOGE("UartSetAttribute: failed, ret %d\n", ret);
  36. goto _ERR;
  37. }
  38. /* 设置UART传输模式为非阻塞模式 */
  39. ret = UartSetTransMode(handle, UART_MODE_RD_NONBLOCK);
  40. if (ret != 0) {
  41. HDF_LOGE("UartSetTransMode: failed, ret %d\n", ret);
  42. goto _ERR;
  43. }
  44. /* 向UART设备写入5字节的数据 */
  45. ret = UartWrite(handle, wbuff, 5);
  46. if (ret != 0) {
  47. HDF_LOGE("UartWrite: failed, ret %d\n", ret);
  48. goto _ERR;
  49. }
  50. /* 从UART设备读取5字节的数据 */
  51. ret = UartRead(handle, rbuff, 5);
  52. if (ret < 0) {
  53. HDF_LOGE("UartRead: failed, ret %d\n", ret);
  54. goto _ERR;
  55. }
  56. _ERR:
  57. /* 销毁UART设备句柄 */
  58. UartClose(handle);
  59. }