lib_u32k.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. /**
  2. ******************************************************************************
  3. * @file lib_u32k.h
  4. * @author Application Team
  5. * @version V4.5.0
  6. * @date 2019-05-14
  7. * @brief UART 32K library.
  8. ******************************************************************************
  9. * @attention
  10. *
  11. ******************************************************************************
  12. */
  13. #ifndef __LIB_U32K_H
  14. #define __LIB_U32K_H
  15. #ifdef __cplusplus
  16. extern "C" {
  17. #endif
  18. #include "target.h"
  19. typedef struct
  20. {
  21. uint32_t Debsel;
  22. uint32_t Parity;
  23. uint32_t WordLen;
  24. uint32_t FirstBit;
  25. uint32_t AutoCal;
  26. uint32_t Baudrate;
  27. uint32_t LineSel;
  28. } U32K_InitType;
  29. //Debsel
  30. #define U32K_DEBSEL_0 U32K_CTRL0_DEBSEL_0
  31. #define U32K_DEBSEL_1 U32K_CTRL0_DEBSEL_1
  32. #define U32K_DEBSEL_2 U32K_CTRL0_DEBSEL_2
  33. #define U32K_DEBSEL_3 U32K_CTRL0_DEBSEL_3
  34. //Parity
  35. #define U32K_PARITY_EVEN U32K_CTRL0_PMODE_EVEN
  36. #define U32K_PARITY_ODD U32K_CTRL0_PMODE_ODD
  37. #define U32K_PARITY_0 U32K_CTRL0_PMODE_0
  38. #define U32K_PARITY_1 U32K_CTRL0_PMODE_1
  39. #define U32K_PARITY_NONE 0
  40. //WordLen
  41. #define U32K_WORDLEN_8B 0
  42. #define U32K_WORDLEN_9B U32K_CTRL0_MODE
  43. //FirstBit
  44. #define U32K_FIRSTBIT_LSB 0
  45. #define U32K_FIRSTBIT_MSB U32K_CTRL0_MSB
  46. //AutoCal
  47. #define U32K_AUTOCAL_ON 0
  48. #define U32K_AUTOCAL_OFF U32K_CTRL0_ACOFF
  49. //Line
  50. #define U32K_LINE_RX0 U32K_CTRL1_RXSEL_RX0
  51. #define U32K_LINE_RX1 U32K_CTRL1_RXSEL_RX1
  52. #define U32K_LINE_RX2 U32K_CTRL1_RXSEL_RX2
  53. #define U32K_LINE_RX3 U32K_CTRL1_RXSEL_RX3
  54. //INT
  55. #define U32K_INT_RXOV U32K_CTRL1_RXOVIE
  56. #define U32K_INT_RXPE U32K_CTRL1_RXPEIE
  57. #define U32K_INT_RX U32K_CTRL1_RXIE
  58. #define U32K_INT_Msk (U32K_INT_RXOV \
  59. |U32K_INT_RXPE \
  60. |U32K_INT_RX)
  61. //INT Status
  62. #define U32K_INTSTS_RXOV U32K_STS_RXOV
  63. #define U32K_INTSTS_RXPE U32K_STS_RXPE
  64. #define U32K_INTSTS_RX U32K_STS_RXIF
  65. #define U32K_INTSTS_Msk (U32K_INTSTS_RXOV \
  66. |U32K_INTSTS_RXPE \
  67. |U32K_INTSTS_RX)
  68. //WKUMode
  69. #define U32K_WKUMOD_RX 0 // Wake-up when receive data
  70. #define U32K_WKUMOD_PC U32K_CTRL0_WKUMODE // Wake-up when receive data and parity/stop bit correct
  71. /* Private macros ------------------------------------------------------------*/
  72. #define IS_U32K_DEBSEL(__DEBSEL__) (((__DEBSEL__) == U32K_DEBSEL_0) ||\
  73. ((__DEBSEL__) == U32K_DEBSEL_1) ||\
  74. ((__DEBSEL__) == U32K_DEBSEL_2) ||\
  75. ((__DEBSEL__) == U32K_DEBSEL_3))
  76. #define IS_U32K_PARITY(__PARITY__) (((__PARITY__) == U32K_PARITY_EVEN) ||\
  77. ((__PARITY__) == U32K_PARITY_ODD) ||\
  78. ((__PARITY__) == U32K_PARITY_0) ||\
  79. ((__PARITY__) == U32K_PARITY_1) ||\
  80. ((__PARITY__) == U32K_PARITY_NONE))
  81. #define IS_U32K_WORDLEN(__WORDLEN__) (((__WORDLEN__) == U32K_WORDLEN_8B) || ((__WORDLEN__) == U32K_WORDLEN_9B))
  82. #define IS_U32K_FIRSTBIT(__FIRSTBIT__) (((__FIRSTBIT__) == U32K_FIRSTBIT_LSB) || ((__FIRSTBIT__) == U32K_FIRSTBIT_MSB))
  83. #define IS_U32K_AUTOCAL(__AUTOCAL__) (((__AUTOCAL__) == U32K_AUTOCAL_ON) || ((__AUTOCAL__) == U32K_AUTOCAL_OFF))
  84. #define IS_U32K_LINE(__LINE__) (((__LINE__) == U32K_LINE_RX0) ||\
  85. ((__LINE__) == U32K_LINE_RX1) ||\
  86. ((__LINE__) == U32K_LINE_RX2) ||\
  87. ((__LINE__) == U32K_LINE_RX3))
  88. #define IS_U32K_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) < 9601UL)
  89. #define IS_U32K_INT(__INT__) ((((__INT__) & U32K_INT_Msk) != 0U) &&\
  90. (((__INT__) & ~U32K_INT_Msk) == 0U))
  91. #define IS_U32K_INTFLAGR(__INTFLAGR__) (((__INTFLAGR__) == U32K_INTSTS_RXOV) ||\
  92. ((__INTFLAGR__) == U32K_INTSTS_RXPE) ||\
  93. ((__INTFLAGR__) == U32K_INTSTS_RX))
  94. #define IS_U32K_INTFLAGC(__INTFLAGC__) ((((__INTFLAGC__) & U32K_INTSTS_Msk) != 0U) &&\
  95. (((__INTFLAGC__) & ~U32K_INTSTS_Msk) == 0U))
  96. #define IS_U32K_WKUMODE(__WKUMODE__) (((__WKUMODE__) == U32K_WKUMOD_RX) || ((__WKUMODE__) == U32K_WKUMOD_PC))
  97. /* Exported Functions ------------------------------------------------------- */
  98. /* U32K Exported Functions Group1:
  99. (De)Initialization -----------------------*/
  100. void U32K_DeInit(U32K_TypeDef *U32Kx);
  101. void U32K_Init(U32K_TypeDef *U32Kx, U32K_InitType *InitStruct);
  102. void U32K_StructInit(U32K_InitType *InitStruct);
  103. /* U32K Exported Functions Group2:
  104. Interrupt (flag) configure ---------------*/
  105. void U32K_INTConfig(U32K_TypeDef *U32Kx, uint32_t INTMask, uint8_t NewState);
  106. uint8_t U32K_GetINTStatus(U32K_TypeDef *U32Kx, uint32_t INTMask);
  107. void U32K_ClearINTStatus(U32K_TypeDef *U32Kx, uint32_t INTMask);
  108. /* U32K Exported Functions Group3:
  109. Receive datas -----------------------------*/
  110. uint8_t U32K_ReceiveData(U32K_TypeDef *U32Kx);
  111. /* U32K Exported Functions Group4:
  112. MISC Configuration -------- ---------------*/
  113. void U32K_BaudrateConfig(U32K_TypeDef *U32Kx, uint32_t BaudRate);
  114. void U32K_Cmd(U32K_TypeDef *U32Kx, uint32_t NewState);
  115. void U32K_LineConfig(U32K_TypeDef *U32Kx, uint32_t Line);
  116. void U32K_WKUModeConfig(U32K_TypeDef *U32Kx, uint32_t WKUMode);
  117. #ifdef __cplusplus
  118. }
  119. #endif
  120. #endif /* __LIB_U32K_H */
  121. /*********************************** END OF FILE ******************************/