HAL_uart.h 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. /**
  2. ******************************************************************************
  3. * @file HAL_uart.h
  4. * @author AE Team
  5. * @version V1.1.0
  6. * @date 28/08/2019
  7. * @brief This file contains all the functions prototypes for the UART
  8. * firmware library.
  9. ******************************************************************************
  10. * @copy
  11. *
  12. * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  13. * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  14. * TIME. AS A RESULT, MindMotion SHALL NOT BE HELD LIABLE FOR ANY
  15. * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  16. * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  17. * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  18. *
  19. * <h2><center>&copy; COPYRIGHT 2019 MindMotion</center></h2>
  20. */
  21. /* Define to prevent recursive inclusion -------------------------------------*/
  22. #ifndef __HAL_UART_H
  23. #define __HAL_UART_H
  24. /* Includes ------------------------------------------------------------------*/
  25. #include "HAL_device.h"
  26. /** @addtogroup StdPeriph_Driver
  27. * @{
  28. */
  29. /** @addtogroup UART
  30. * @{
  31. */
  32. /** @defgroup UART_Exported_Types
  33. * @{
  34. */
  35. /**
  36. * @brief UART Init Structure definition
  37. */
  38. typedef struct
  39. {
  40. uint32_t UART_BaudRate;
  41. uint16_t UART_WordLength;
  42. uint16_t UART_StopBits;
  43. uint16_t UART_Parity;
  44. uint16_t UART_Mode;
  45. uint16_t UART_HardwareFlowControl;
  46. } UART_InitTypeDef;
  47. /**
  48. * @}
  49. */
  50. /** @defgroup UART_Exported_Constants
  51. * @{
  52. */
  53. #define IS_UART_ALL_PERIPH(PERIPH) (((*(uint32_t*)&(PERIPH)) == UART1_BASE) || \
  54. ((*(uint32_t*)&(PERIPH)) == UART2_BASE) || \
  55. ((*(uint32_t*)&(PERIPH)) == UART3_BASE))
  56. #define IS_UART_123_PERIPH(PERIPH) (((*(uint32_t*)&(PERIPH)) == UART1_BASE) || \
  57. ((*(uint32_t*)&(PERIPH)) == UART2_BASE) || \
  58. ((*(uint32_t*)&(PERIPH)) == UART3_BASE))
  59. /** @defgroup UART_Word_Length
  60. * @{
  61. */
  62. #define UART_WordLength_5b ((uint16_t)0x0000)
  63. #define UART_WordLength_6b ((uint16_t)0x0010)
  64. #define UART_WordLength_7b ((uint16_t)0x0020)
  65. #define UART_WordLength_8b ((uint16_t)0x0030)
  66. #define IS_UART_WORD_LENGTH(LENGTH) (((LENGTH) == UART_WordLength_5b) || \
  67. ((LENGTH) == UART_WordLength_6b) || \
  68. ((LENGTH) == UART_WordLength_7b) || \
  69. ((LENGTH) == UART_WordLength_8b))
  70. /**
  71. * @}
  72. */
  73. /** @defgroup UART_Stop_Bits
  74. * @{
  75. */
  76. #define UART_StopBits_1 ((uint16_t)0x0000)
  77. #define UART_StopBits_2 ((uint16_t)0x0004)
  78. #define IS_UART_STOPBITS(STOPBITS) (((STOPBITS) == UART_StopBits_1) || \
  79. ((STOPBITS) == UART_StopBits_2))
  80. /**
  81. * @}
  82. */
  83. /** @defgroup UART_Parity
  84. * @{
  85. */
  86. #define UART_Parity_No ((uint16_t)0x0000)
  87. #define UART_Parity_Even ((uint16_t)0x0003)
  88. #define UART_Parity_Odd ((uint16_t)0x0001)
  89. #define IS_UART_PARITY(PARITY) (((PARITY) == UART_Parity_No) || \
  90. ((PARITY) == UART_Parity_Even) || \
  91. ((PARITY) == UART_Parity_Odd))
  92. /**
  93. * @}
  94. */
  95. /** @defgroup UART_Mode
  96. * @{
  97. */
  98. #define UART_Mode_Rx ((uint16_t)0x0008)
  99. #define UART_Mode_Tx ((uint16_t)0x0010)
  100. #define IS_UART_MODE(MODE) ((((MODE) & (uint16_t)0xFFE7) == 0x00) && ((MODE) != (uint16_t)0x00))
  101. #define UART_EN ((uint16_t)0x0001)
  102. /**
  103. * @}
  104. */
  105. /** @defgroup UART_Hardware_Flow_Control
  106. * @{
  107. */
  108. #define UART_HardwareFlowControl_None ((uint16_t)0x0000)
  109. #define IS_UART_HARDWARE_FLOW_CONTROL(CONTROL)\
  110. (((CONTROL) == UART_HardwareFlowControl_None) || \
  111. ((CONTROL) == UART_HardwareFlowControl_RTS) || \
  112. ((CONTROL) == UART_HardwareFlowControl_CTS) || \
  113. ((CONTROL) == UART_HardwareFlowControl_RTS_CTS))
  114. /** @defgroup UART_Interrupt_definition
  115. * @{
  116. */
  117. #define UART_IT_ERR ((uint16_t)0x0020)
  118. #define UART_IT_PE ((uint16_t)0x0010)
  119. #define UART_OVER_ERR ((uint16_t)0x0008)
  120. #define UART_TIMEOUT_ERR ((uint16_t)0x0004)
  121. #define UART_IT_RXIEN ((uint16_t)0x0002)
  122. #define UART_IT_TXIEN ((uint16_t)0x0001)
  123. #define IS_UART_CONFIG_IT(IT) (((IT) == UART_IT_PE) || ((IT) == UART_IT_TXIEN) || \
  124. ((IT) == UART_IT_RXIEN) || ((IT) == UART_IT_ERR))
  125. #define IS_UART_GET_IT(IT) (((IT) == UART_IT_PE) || ((IT) == UART_IT_TXIEN) || \
  126. ((IT) == UART_IT_ERR) || ((IT) == UART_IT_RXIEN) || \
  127. ((IT) == UART_OVER_ERR) || ((IT) == UART_TIMEOUT_ERR))
  128. #define IS_UART_CLEAR_IT(IT) ((IT) == UART_IT_RXIEN)
  129. /**
  130. * @}
  131. */
  132. /** @defgroup UART_DMA_Requests
  133. * @{
  134. */
  135. #define UART_DMAReq_EN ((uint16_t)0x0002)
  136. #define IS_UART_DMAREQ(DMAREQ) ((((DMAREQ) & (uint16_t)0xFFFD) == 0x00) && ((DMAREQ) != (uint16_t)0x00))
  137. /**
  138. * @}
  139. */
  140. /** @defgroup UART_Flags
  141. * @{
  142. */
  143. #define UART_FLAG_TXEMPTY ((uint16_t)0x0008)
  144. #define UART_FLAG_TXFULL ((uint16_t)0x0004)
  145. #define UART_FLAG_RXAVL ((uint16_t)0x0002)
  146. #define UART_FLAG_TXEPT ((uint16_t)0x0001)
  147. #define IS_UART_FLAG(FLAG) (((FLAG) == UART_FLAG_TXEMPTY) || ((FLAG) == UART_FLAG_TXFULL) || \
  148. ((FLAG) == UART_FLAG_RXAVL) || ((FLAG) == UART_FLAG_TXEPT))
  149. #define IS_UART_CLEAR_FLAG(FLAG) ((((FLAG) & (uint16_t)0x00FF) == 0x00) && ((FLAG) != (uint16_t)0x00))
  150. #define IS_UART_BAUDRATE(BAUDRATE) (((BAUDRATE) > 0) && ((BAUDRATE) < 0x0044AA21))
  151. #define IS_UART_ADDRESS(ADDRESS) ((ADDRESS) <= 0xF)
  152. #define IS_UART_DATA(DATA) ((DATA) <= 0x1FF)
  153. /**
  154. * @}
  155. */
  156. /**
  157. * @}
  158. */
  159. /** @defgroup UART_Exported_Macros
  160. * @{
  161. */
  162. /**
  163. * @}
  164. */
  165. /** @defgroup UART_Exported_Functions
  166. * @{
  167. */
  168. void UART_DeInit(UART_TypeDef* UARTx);
  169. void UART_Init(UART_TypeDef* UARTx, UART_InitTypeDef* UART_InitStruct);
  170. void UART_StructInit(UART_InitTypeDef* UART_InitStruct);
  171. void UART_Cmd(UART_TypeDef* UARTx, FunctionalState NewState);
  172. void UART_ITConfig(UART_TypeDef* UARTx, uint16_t UART_IT, FunctionalState NewState);
  173. void UART_DMACmd(UART_TypeDef* UARTx, uint16_t UART_DMAReq, FunctionalState NewState);
  174. void UART_SendData(UART_TypeDef* UARTx, uint16_t Data);
  175. uint16_t UART_ReceiveData(UART_TypeDef* UARTx);
  176. FlagStatus UART_GetFlagStatus(UART_TypeDef* UARTx, uint16_t UART_FLAG);
  177. void UART_ClearFlag(UART_TypeDef* UARTx, uint16_t UART_FLAG);
  178. ITStatus UART_GetITStatus(UART_TypeDef* UARTx, uint16_t UART_IT);
  179. void UART_ClearITPendingBit(UART_TypeDef* UARTx, uint16_t UART_IT);
  180. #endif /* __HAL_UART_H */
  181. /**
  182. * @}
  183. */
  184. /**
  185. * @}
  186. */
  187. /**
  188. * @}
  189. */
  190. /*-------------------------(C) COPYRIGHT 2019 MindMotion ----------------------*/