hal_uart.h 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. ////////////////////////////////////////////////////////////////////////////////
  2. /// @file hal_uart.h
  3. /// @author AE TEAM
  4. /// @brief THIS FILE CONTAINS ALL THE FUNCTIONS PROTOTYPES FOR THE UART
  5. /// FIRMWARE LIBRARY.
  6. ////////////////////////////////////////////////////////////////////////////////
  7. /// @attention
  8. ///
  9. /// THE EXISTING FIRMWARE IS ONLY FOR REFERENCE, WHICH IS DESIGNED TO PROVIDE
  10. /// CUSTOMERS WITH CODING INFORMATION ABOUT THEIR PRODUCTS SO THEY CAN SAVE
  11. /// TIME. THEREFORE, MINDMOTION SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT OR
  12. /// CONSEQUENTIAL DAMAGES ABOUT ANY CLAIMS ARISING OUT OF THE CONTENT OF SUCH
  13. /// HARDWARE AND/OR THE USE OF THE CODING INFORMATION CONTAINED HEREIN IN
  14. /// CONNECTION WITH PRODUCTS MADE BY CUSTOMERS.
  15. ///
  16. /// <H2><CENTER>&COPY; COPYRIGHT MINDMOTION </CENTER></H2>
  17. ////////////////////////////////////////////////////////////////////////////////
  18. // Define to prevent recursive inclusion
  19. #ifndef __HAL_UART_H
  20. #define __HAL_UART_H
  21. // Files includes
  22. #include "reg_uart.h"
  23. ////////////////////////////////////////////////////////////////////////////////
  24. /// @addtogroup MM32_Hardware_Abstract_Layer
  25. /// @{
  26. /////////////////////////////////////1///////////////////////////////////////////
  27. /// @defgroup UART_HAL
  28. /// @brief UART HAL modules
  29. /// @{
  30. ////////////////////////////////////////////////////////////////////////////////
  31. /// @defgroup UART_Exported_Types
  32. /// @{
  33. ///
  34. ////////////////////////////////////////////////////////////////////////////////
  35. /// @brief UART Word Length Enumerate definition
  36. /// @anchor UART_Word_Length
  37. ////////////////////////////////////////////////////////////////////////////////
  38. typedef enum {
  39. UART_WordLength_5b = 0U,
  40. UART_WordLength_6b = 1U << UART_CCR_CHAR_Pos,
  41. UART_WordLength_7b = 2U << UART_CCR_CHAR_Pos,
  42. UART_WordLength_8b = 3U << UART_CCR_CHAR_Pos
  43. } UART_WordLength_TypeDef;
  44. ////////////////////////////////////////////////////////////////////////////////
  45. /// @brief UART Stop Bits Enumerate definition
  46. /// @anchor UART_Stop_Bits
  47. ////////////////////////////////////////////////////////////////////////////////
  48. typedef enum {
  49. UART_StopBits_1 = 0U,
  50. UART_StopBits_2 = UART_CCR_SPB,
  51. UART_StopBits_0_5 = UART_CCR_SPB1,
  52. UART_StopBits_1_5 = UART_CCR_SPB1 | UART_CCR_SPB0,
  53. } UART_Stop_Bits_TypeDef;
  54. ////////////////////////////////////////////////////////////////////////////////
  55. /// @brief UART Parity Enumerate definition
  56. /// @anchor UART_Parity
  57. ////////////////////////////////////////////////////////////////////////////////
  58. typedef enum {
  59. UART_Parity_No = 0U,
  60. UART_Parity_Even = UART_CCR_PEN | UART_CCR_PSEL,
  61. UART_Parity_Odd = UART_CCR_PEN
  62. } UART_Parity_TypeDef;
  63. ////////////////////////////////////////////////////////////////////////////////
  64. /// @brief UART Hardware Flow Control Enumerate definition
  65. /// @anchor UART_Hardware_Flow_Control
  66. ////////////////////////////////////////////////////////////////////////////////
  67. typedef enum {
  68. UART_HWFlowControl_None = 0U,
  69. // UART_HWFlowControl_RTS = UART_GCR_AUTOFLOW,
  70. // UART_HWFlowControl_CTS = UART_GCR_AUTOFLOW,
  71. UART_HWFlowControl_RTS_CTS = UART_GCR_AUTOFLOW
  72. } UART_HW_FLOWCONTROL_TypeDef;
  73. typedef enum {
  74. UART_WakeUp_IdleLine = 0U, //
  75. UART_WakeUp_AddressMark = UART_CCR_WAKE
  76. } UART_WakeUp_TypeDef;
  77. typedef enum {
  78. UART_9bit_Polarity_Low = 0U, //
  79. UART_9bit_Polarity_High = UART_CCR_B8POL
  80. } UART_9bit_Polarity_TypeDef;
  81. ////////////////////////////////////////////////////////////////////////////////
  82. /// @brief UART Auto BaudRate definition
  83. ////////////////////////////////////////////////////////////////////////////////
  84. typedef enum {
  85. Data_F8 = 0,
  86. Data_FE,
  87. ABRMODE_FALLING_TO_RISINGEDGE1BIT,
  88. ABRMODE_FALLING_TO_RISINGEDGE2BIT,
  89. ABRMODE_FALLING_TO_RISINGEDGE4BIT,
  90. ABRMODE_FALLING_TO_RISINGEDGE8BIT,
  91. ABRMODE_FALLING_TO_FALLINGEDGE2BIT,
  92. ABRMODE_FALLING_TO_FALLINGEDGE4BIT,
  93. ABRMODE_FALLING_TO_FALLINGEDGE8BIT,
  94. ABRMODE_STARTBIT,
  95. ABRMODE_VALUE0X55,
  96. ABRMODE_VALUE0x7F,
  97. ABRMODE_VALUE0X80,
  98. ABRMODE_VALUE0XF7,
  99. ABRMODE_VALUE0XF8 = Data_F8,
  100. ABRMODE_VALUE0XFE = Data_FE,
  101. ABRMODE_VALUE0XFF,
  102. } UART_AutoBaud_TypeDef;
  103. ////////////////////////////////////////////////////////////////////////////////
  104. /// @brief UART Init Structure definition
  105. ////////////////////////////////////////////////////////////////////////////////
  106. typedef struct {
  107. union {
  108. u32 BaudRate; ///< This member configures the UART communication baud rate.
  109. u32 UART_BaudRate;
  110. };
  111. union {
  112. UART_WordLength_TypeDef WordLength; ///< Specifies the number of data bits transmitted or received in a frame.
  113. u16 UART_WordLength;
  114. };
  115. union {
  116. UART_Stop_Bits_TypeDef StopBits; ///< Specifies the number of stop bits transmitted.
  117. u16 UART_StopBits;
  118. };
  119. union {
  120. UART_Parity_TypeDef Parity; ///< Specifies the parity mode.
  121. u16 UART_Parity;
  122. };
  123. union {
  124. u16 Mode; ///< Specifies wether the Receive or Transmit mode is
  125. u16 UART_Mode;
  126. };
  127. union {
  128. UART_HW_FLOWCONTROL_TypeDef HWFlowControl; ///< Specifies wether the hardware flow control mode is enabled or disabled.
  129. u16 UART_HardwareFlowControl;
  130. };
  131. } UART_InitTypeDef;
  132. /// @}
  133. ////////////////////////////////////////////////////////////////////////////////
  134. /// @defgroup UART_Exported_Constants
  135. /// @{
  136. /// @}
  137. ////////////////////////////////////////////////////////////////////////////////
  138. /// @defgroup UART_Exported_Variables
  139. /// @{
  140. #ifdef _HAL_UART_C_
  141. #define GLOBAL
  142. #else
  143. #define GLOBAL extern
  144. #endif
  145. #undef GLOBAL
  146. /// @}
  147. ////////////////////////////////////////////////////////////////////////////////
  148. /// @defgroup UART_Exported_Functions
  149. /// @{
  150. void UART_DeInit(UART_TypeDef* uart);
  151. void UART_Init(UART_TypeDef* uart, UART_InitTypeDef* init_struct);
  152. void UART_StructInit(UART_InitTypeDef* init_struct);
  153. void UART_Cmd(UART_TypeDef* uart, FunctionalState state);
  154. void UART_ITConfig(UART_TypeDef* uart, u16 it, FunctionalState state);
  155. void UART_DMACmd(UART_TypeDef* uart, u16 dma_request, FunctionalState state);
  156. void UART_SendData(UART_TypeDef* uart, u16 Data);
  157. void UART_ClearITPendingBit(UART_TypeDef* uart, u16 it);
  158. u16 UART_ReceiveData(UART_TypeDef* uart);
  159. FlagStatus UART_GetFlagStatus(UART_TypeDef* uart, u16 flag);
  160. ITStatus UART_GetITStatus(UART_TypeDef* uart, u16 it);
  161. void UART_WakeUpConfig(UART_TypeDef* uart, UART_WakeUp_TypeDef mode);
  162. void UART_ReceiverWakeUpCmd(UART_TypeDef* uart, FunctionalState state);
  163. void UART_SetRXAddress(UART_TypeDef* uart, u8 address);
  164. void UART_SetRXMASK(UART_TypeDef* uart, u8 address);
  165. void UART_Enable9bit(UART_TypeDef* uart, FunctionalState state);
  166. void UART_Set9bitLevel(UART_TypeDef* uart, FunctionalState state);
  167. void UART_Set9bitPolarity(UART_TypeDef* uart, UART_9bit_Polarity_TypeDef polarity);
  168. void UART_Set9bitAutomaticToggle(UART_TypeDef* uart, FunctionalState state);
  169. void UART_HalfDuplexCmd(UART_TypeDef* uart, FunctionalState state);
  170. void UART_SetGuardTime(UART_TypeDef* uart, u8 guard_time);
  171. void UART_SmartCardCmd(UART_TypeDef* uart, FunctionalState state);
  172. void UART_SmartCardNACKCmd(UART_TypeDef* uart, FunctionalState state);
  173. void UART_SendBreak(UART_TypeDef* uart);
  174. void UART_AutoBaudRateCmd(UART_TypeDef* uart, FunctionalState state);
  175. void UART_AutoBaudRateSet(UART_TypeDef* uart, UART_AutoBaud_TypeDef value, FunctionalState state);
  176. /// @}
  177. /// @}
  178. /// @}
  179. ////////////////////////////////////////////////////////////////////////////////
  180. #endif // __HAL_UART_H
  181. ////////////////////////////////////////////////////////////////////////////////