UART使用实例

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

  1. #include"hdf_log.h"
  2. #include"uart_if.h"
  3. voidUartTestSample(void)
  4. {
  5. int32_t ret;
  6. uint32_t port;
  7. structDevHandle*handle = NULL;
  8. uint8_t wbuff[5]={1,2,3,4,5};
  9. uint8_t rbuff[5]={0};
  10. structUartAttribute 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. }