SWM320_uart.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #ifndef __SWM320_UART_H__
  2. #define __SWM320_UART_H__
  3. typedef struct
  4. {
  5. uint32_t Baudrate;
  6. uint8_t DataBits; //数据位位数,可取值UART_DATA_8BIT、UART_DATA_9BIT
  7. uint8_t Parity; //奇偶校验位,可取值UART_PARITY_NONE、UART_PARITY_ODD、UART_PARITY_EVEN、UART_PARITY_ONE、UART_PARITY_ZERO
  8. uint8_t StopBits; //停止位位数,可取值UART_STOP_1BIT、UART_STOP_2BIT
  9. uint8_t RXThreshold; //取值0--7
  10. uint8_t RXThresholdIEn; //当RX FIFO中数据个数 > RXThreshold时触发中断
  11. uint8_t TXThreshold; //取值0--7
  12. uint8_t TXThresholdIEn; //当TX FIFO中数据个数 <= TXThreshold时触发中断
  13. uint8_t TimeoutTime; //超时时长 = TimeoutTime/(Baudrate/10) 秒
  14. uint8_t TimeoutIEn; //超时中断,RX FIFO非空,且超过 TimeoutTime/(Baudrate/10) 秒没有在RX线上接收到数据时触发中断
  15. } UART_InitStructure;
  16. #define UART_DATA_8BIT 0
  17. #define UART_DATA_9BIT 1
  18. #define UART_PARITY_NONE 0
  19. #define UART_PARITY_ODD 1
  20. #define UART_PARITY_EVEN 3
  21. #define UART_PARITY_ONE 5
  22. #define UART_PARITY_ZERO 7
  23. #define UART_STOP_1BIT 0
  24. #define UART_STOP_2BIT 1
  25. #define UART_RTS_1BYTE 0
  26. #define UART_RTS_2BYTE 1
  27. #define UART_RTS_4BYTE 2
  28. #define UART_RTS_6BYTE 3
  29. #define UART_ABR_RES_OK 1
  30. #define UART_ABR_RES_ERR 2
  31. #define UART_ERR_FRAME 1
  32. #define UART_ERR_PARITY 2
  33. #define UART_ERR_NOISE 3
  34. void UART_Init(UART_TypeDef *UARTx, UART_InitStructure *initStruct); //UART串口初始化
  35. void UART_Open(UART_TypeDef *UARTx);
  36. void UART_Close(UART_TypeDef *UARTx);
  37. void UART_WriteByte(UART_TypeDef *UARTx, uint32_t data); //发送一个字节数据
  38. uint32_t UART_ReadByte(UART_TypeDef *UARTx, uint32_t *data); //读取一个字节数据,并指出数据是否Valid
  39. uint32_t UART_IsTXBusy(UART_TypeDef *UARTx);
  40. uint32_t UART_IsRXFIFOEmpty(UART_TypeDef *UARTx); //接收FIFO是否空,如果不空则可以继续UART_ReadByte()
  41. uint32_t UART_IsTXFIFOFull(UART_TypeDef *UARTx); //发送FIFO是否满,如果不满则可以继续UART_WriteByte()
  42. void UART_SetBaudrate(UART_TypeDef *UARTx, uint32_t baudrate); //设置波特率
  43. uint32_t UART_GetBaudrate(UART_TypeDef *UARTx); //获取当前使用的波特率
  44. void UART_CTSConfig(UART_TypeDef *UARTx, uint32_t enable, uint32_t polarity);
  45. uint32_t UART_CTSLineState(UART_TypeDef *UARTx);
  46. void UART_RTSConfig(UART_TypeDef *UARTx, uint32_t enable, uint32_t polarity, uint32_t threshold);
  47. uint32_t UART_RTSLineState(UART_TypeDef *UARTx);
  48. void UART_LINConfig(UART_TypeDef *UARTx, uint32_t detectedIEn, uint32_t generatedIEn);
  49. void UART_LINGenerate(UART_TypeDef *UARTx);
  50. uint32_t UART_LINIsDetected(UART_TypeDef *UARTx);
  51. uint32_t UART_LINIsGenerated(UART_TypeDef *UARTx);
  52. void UART_ABRStart(UART_TypeDef *UARTx, uint32_t detectChar);
  53. uint32_t UART_ABRIsDone(UART_TypeDef *UARTx);
  54. void UART_INTRXThresholdEn(UART_TypeDef *UARTx);
  55. void UART_INTRXThresholdDis(UART_TypeDef *UARTx);
  56. uint32_t UART_INTRXThresholdStat(UART_TypeDef *UARTx);
  57. void UART_INTTXThresholdEn(UART_TypeDef *UARTx);
  58. void UART_INTTXThresholdDis(UART_TypeDef *UARTx);
  59. uint32_t UART_INTTXThresholdStat(UART_TypeDef *UARTx);
  60. void UART_INTTimeoutEn(UART_TypeDef *UARTx);
  61. void UART_INTTimeoutDis(UART_TypeDef *UARTx);
  62. uint32_t UART_INTTimeoutStat(UART_TypeDef *UARTx);
  63. void UART_INTTXDoneEn(UART_TypeDef *UARTx);
  64. void UART_INTTXDoneDis(UART_TypeDef *UARTx);
  65. uint32_t UART_INTTXDoneStat(UART_TypeDef *UARTx);
  66. #endif //__SWM320_UART_H__