stm32f10x_usart.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. /******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
  2. * File Name : stm32f10x_usart.h
  3. * Author : MCD Application Team
  4. * Version : V2.0.3
  5. * Date : 09/22/2008
  6. * Description : This file contains all the functions prototypes for the
  7. * USART firmware library.
  8. ********************************************************************************
  9. * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  10. * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
  11. * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
  12. * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
  13. * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
  14. * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  15. *******************************************************************************/
  16. /* Define to prevent recursive inclusion -------------------------------------*/
  17. #ifndef __STM32F10x_USART_H
  18. #define __STM32F10x_USART_H
  19. /* Includes ------------------------------------------------------------------*/
  20. #include "stm32f10x_map.h"
  21. /* Exported types ------------------------------------------------------------*/
  22. /* USART Init Structure definition */
  23. typedef struct
  24. {
  25. u32 USART_BaudRate;
  26. u16 USART_WordLength;
  27. u16 USART_StopBits;
  28. u16 USART_Parity;
  29. u16 USART_Mode;
  30. u16 USART_HardwareFlowControl;
  31. } USART_InitTypeDef;
  32. /* USART Clock Init Structure definition */
  33. typedef struct
  34. {
  35. u16 USART_Clock;
  36. u16 USART_CPOL;
  37. u16 USART_CPHA;
  38. u16 USART_LastBit;
  39. } USART_ClockInitTypeDef;
  40. /* Exported constants --------------------------------------------------------*/
  41. #define IS_USART_ALL_PERIPH(PERIPH) (((*(u32*)&(PERIPH)) == USART1_BASE) || \
  42. ((*(u32*)&(PERIPH)) == USART2_BASE) || \
  43. ((*(u32*)&(PERIPH)) == USART3_BASE) || \
  44. ((*(u32*)&(PERIPH)) == UART4_BASE) || \
  45. ((*(u32*)&(PERIPH)) == UART5_BASE))
  46. #define IS_USART_123_PERIPH(PERIPH) (((*(u32*)&(PERIPH)) == USART1_BASE) || \
  47. ((*(u32*)&(PERIPH)) == USART2_BASE) || \
  48. ((*(u32*)&(PERIPH)) == USART3_BASE))
  49. #define IS_USART_1234_PERIPH(PERIPH) (((*(u32*)&(PERIPH)) == USART1_BASE) || \
  50. ((*(u32*)&(PERIPH)) == USART2_BASE) || \
  51. ((*(u32*)&(PERIPH)) == USART3_BASE) || \
  52. ((*(u32*)&(PERIPH)) == UART4_BASE))
  53. /* USART Word Length ---------------------------------------------------------*/
  54. #define USART_WordLength_8b ((u16)0x0000)
  55. #define USART_WordLength_9b ((u16)0x1000)
  56. #define IS_USART_WORD_LENGTH(LENGTH) (((LENGTH) == USART_WordLength_8b) || \
  57. ((LENGTH) == USART_WordLength_9b))
  58. /* USART Stop Bits -----------------------------------------------------------*/
  59. #define USART_StopBits_1 ((u16)0x0000)
  60. #define USART_StopBits_0_5 ((u16)0x1000)
  61. #define USART_StopBits_2 ((u16)0x2000)
  62. #define USART_StopBits_1_5 ((u16)0x3000)
  63. #define IS_USART_STOPBITS(STOPBITS) (((STOPBITS) == USART_StopBits_1) || \
  64. ((STOPBITS) == USART_StopBits_0_5) || \
  65. ((STOPBITS) == USART_StopBits_2) || \
  66. ((STOPBITS) == USART_StopBits_1_5))
  67. /* USART Parity --------------------------------------------------------------*/
  68. #define USART_Parity_No ((u16)0x0000)
  69. #define USART_Parity_Even ((u16)0x0400)
  70. #define USART_Parity_Odd ((u16)0x0600)
  71. #define IS_USART_PARITY(PARITY) (((PARITY) == USART_Parity_No) || \
  72. ((PARITY) == USART_Parity_Even) || \
  73. ((PARITY) == USART_Parity_Odd))
  74. /* USART Mode ----------------------------------------------------------------*/
  75. #define USART_Mode_Rx ((u16)0x0004)
  76. #define USART_Mode_Tx ((u16)0x0008)
  77. #define IS_USART_MODE(MODE) ((((MODE) & (u16)0xFFF3) == 0x00) && ((MODE) != (u16)0x00))
  78. /* USART Hardware Flow Control -----------------------------------------------*/
  79. #define USART_HardwareFlowControl_None ((u16)0x0000)
  80. #define USART_HardwareFlowControl_RTS ((u16)0x0100)
  81. #define USART_HardwareFlowControl_CTS ((u16)0x0200)
  82. #define USART_HardwareFlowControl_RTS_CTS ((u16)0x0300)
  83. #define IS_USART_HARDWARE_FLOW_CONTROL(CONTROL)\
  84. (((CONTROL) == USART_HardwareFlowControl_None) || \
  85. ((CONTROL) == USART_HardwareFlowControl_RTS) || \
  86. ((CONTROL) == USART_HardwareFlowControl_CTS) || \
  87. ((CONTROL) == USART_HardwareFlowControl_RTS_CTS))
  88. #define IS_USART_PERIPH_HFC(PERIPH, HFC) ((((*(u32*)&(PERIPH)) != UART4_BASE) && \
  89. ((*(u32*)&(PERIPH)) != UART5_BASE)) \
  90. || ((HFC) == USART_HardwareFlowControl_None))
  91. /* USART Clock ---------------------------------------------------------------*/
  92. #define USART_Clock_Disable ((u16)0x0000)
  93. #define USART_Clock_Enable ((u16)0x0800)
  94. #define IS_USART_CLOCK(CLOCK) (((CLOCK) == USART_Clock_Disable) || \
  95. ((CLOCK) == USART_Clock_Enable))
  96. /* USART Clock Polarity ------------------------------------------------------*/
  97. #define USART_CPOL_Low ((u16)0x0000)
  98. #define USART_CPOL_High ((u16)0x0400)
  99. #define IS_USART_CPOL(CPOL) (((CPOL) == USART_CPOL_Low) || ((CPOL) == USART_CPOL_High))
  100. /* USART Clock Phase ---------------------------------------------------------*/
  101. #define USART_CPHA_1Edge ((u16)0x0000)
  102. #define USART_CPHA_2Edge ((u16)0x0200)
  103. #define IS_USART_CPHA(CPHA) (((CPHA) == USART_CPHA_1Edge) || ((CPHA) == USART_CPHA_2Edge))
  104. /* USART Last Bit ------------------------------------------------------------*/
  105. #define USART_LastBit_Disable ((u16)0x0000)
  106. #define USART_LastBit_Enable ((u16)0x0100)
  107. #define IS_USART_LASTBIT(LASTBIT) (((LASTBIT) == USART_LastBit_Disable) || \
  108. ((LASTBIT) == USART_LastBit_Enable))
  109. /* USART Interrupt definition ------------------------------------------------*/
  110. #define USART_IT_PE ((u16)0x0028)
  111. #define USART_IT_TXE ((u16)0x0727)
  112. #define USART_IT_TC ((u16)0x0626)
  113. #define USART_IT_RXNE ((u16)0x0525)
  114. #define USART_IT_IDLE ((u16)0x0424)
  115. #define USART_IT_LBD ((u16)0x0846)
  116. #define USART_IT_CTS ((u16)0x096A)
  117. #define USART_IT_ERR ((u16)0x0060)
  118. #define USART_IT_ORE ((u16)0x0360)
  119. #define USART_IT_NE ((u16)0x0260)
  120. #define USART_IT_FE ((u16)0x0160)
  121. #define IS_USART_CONFIG_IT(IT) (((IT) == USART_IT_PE) || ((IT) == USART_IT_TXE) || \
  122. ((IT) == USART_IT_TC) || ((IT) == USART_IT_RXNE) || \
  123. ((IT) == USART_IT_IDLE) || ((IT) == USART_IT_LBD) || \
  124. ((IT) == USART_IT_CTS) || ((IT) == USART_IT_ERR))
  125. #define IS_USART_GET_IT(IT) (((IT) == USART_IT_PE) || ((IT) == USART_IT_TXE) || \
  126. ((IT) == USART_IT_TC) || ((IT) == USART_IT_RXNE) || \
  127. ((IT) == USART_IT_IDLE) || ((IT) == USART_IT_LBD) || \
  128. ((IT) == USART_IT_CTS) || ((IT) == USART_IT_ORE) || \
  129. ((IT) == USART_IT_NE) || ((IT) == USART_IT_FE))
  130. #define IS_USART_CLEAR_IT(IT) (((IT) == USART_IT_TC) || ((IT) == USART_IT_RXNE) || \
  131. ((IT) == USART_IT_LBD) || ((IT) == USART_IT_CTS))
  132. #define IS_USART_PERIPH_IT(PERIPH, USART_IT) ((((*(u32*)&(PERIPH)) != UART4_BASE) && \
  133. ((*(u32*)&(PERIPH)) != UART5_BASE)) \
  134. || ((USART_IT) != USART_IT_CTS))
  135. /* USART DMA Requests --------------------------------------------------------*/
  136. #define USART_DMAReq_Tx ((u16)0x0080)
  137. #define USART_DMAReq_Rx ((u16)0x0040)
  138. #define IS_USART_DMAREQ(DMAREQ) ((((DMAREQ) & (u16)0xFF3F) == 0x00) && ((DMAREQ) != (u16)0x00))
  139. /* USART WakeUp methods ------------------------------------------------------*/
  140. #define USART_WakeUp_IdleLine ((u16)0x0000)
  141. #define USART_WakeUp_AddressMark ((u16)0x0800)
  142. #define IS_USART_WAKEUP(WAKEUP) (((WAKEUP) == USART_WakeUp_IdleLine) || \
  143. ((WAKEUP) == USART_WakeUp_AddressMark))
  144. /* USART LIN Break Detection Length ------------------------------------------*/
  145. #define USART_LINBreakDetectLength_10b ((u16)0x0000)
  146. #define USART_LINBreakDetectLength_11b ((u16)0x0020)
  147. #define IS_USART_LIN_BREAK_DETECT_LENGTH(LENGTH) \
  148. (((LENGTH) == USART_LINBreakDetectLength_10b) || \
  149. ((LENGTH) == USART_LINBreakDetectLength_11b))
  150. /* USART IrDA Low Power ------------------------------------------------------*/
  151. #define USART_IrDAMode_LowPower ((u16)0x0004)
  152. #define USART_IrDAMode_Normal ((u16)0x0000)
  153. #define IS_USART_IRDA_MODE(MODE) (((MODE) == USART_IrDAMode_LowPower) || \
  154. ((MODE) == USART_IrDAMode_Normal))
  155. /* USART Flags ---------------------------------------------------------------*/
  156. #define USART_FLAG_CTS ((u16)0x0200)
  157. #define USART_FLAG_LBD ((u16)0x0100)
  158. #define USART_FLAG_TXE ((u16)0x0080)
  159. #define USART_FLAG_TC ((u16)0x0040)
  160. #define USART_FLAG_RXNE ((u16)0x0020)
  161. #define USART_FLAG_IDLE ((u16)0x0010)
  162. #define USART_FLAG_ORE ((u16)0x0008)
  163. #define USART_FLAG_NE ((u16)0x0004)
  164. #define USART_FLAG_FE ((u16)0x0002)
  165. #define USART_FLAG_PE ((u16)0x0001)
  166. #define IS_USART_FLAG(FLAG) (((FLAG) == USART_FLAG_PE) || ((FLAG) == USART_FLAG_TXE) || \
  167. ((FLAG) == USART_FLAG_TC) || ((FLAG) == USART_FLAG_RXNE) || \
  168. ((FLAG) == USART_FLAG_IDLE) || ((FLAG) == USART_FLAG_LBD) || \
  169. ((FLAG) == USART_FLAG_CTS) || ((FLAG) == USART_FLAG_ORE) || \
  170. ((FLAG) == USART_FLAG_NE) || ((FLAG) == USART_FLAG_FE))
  171. #define IS_USART_CLEAR_FLAG(FLAG) ((((FLAG) & (u16)0xFC9F) == 0x00) && ((FLAG) != (u16)0x00))
  172. #define IS_USART_PERIPH_FLAG(PERIPH, USART_FLAG) ((((*(u32*)&(PERIPH)) != UART4_BASE) &&\
  173. ((*(u32*)&(PERIPH)) != UART5_BASE)) \
  174. || ((USART_FLAG) != USART_FLAG_CTS))
  175. #define IS_USART_BAUDRATE(BAUDRATE) (((BAUDRATE) > 0) && ((BAUDRATE) < 0x0044AA21))
  176. #define IS_USART_ADDRESS(ADDRESS) ((ADDRESS) <= 0xF)
  177. #define IS_USART_DATA(DATA) ((DATA) <= 0x1FF)
  178. /* Exported macro ------------------------------------------------------------*/
  179. /* Exported functions ------------------------------------------------------- */
  180. void USART_DeInit(USART_TypeDef* USARTx);
  181. void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);
  182. void USART_StructInit(USART_InitTypeDef* USART_InitStruct);
  183. void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* USART_ClockInitStruct);
  184. void USART_ClockStructInit(USART_ClockInitTypeDef* USART_ClockInitStruct);
  185. void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState);
  186. void USART_ITConfig(USART_TypeDef* USARTx, u16 USART_IT, FunctionalState NewState);
  187. void USART_DMACmd(USART_TypeDef* USARTx, u16 USART_DMAReq, FunctionalState NewState);
  188. void USART_SetAddress(USART_TypeDef* USARTx, u8 USART_Address);
  189. void USART_WakeUpConfig(USART_TypeDef* USARTx, u16 USART_WakeUp);
  190. void USART_ReceiverWakeUpCmd(USART_TypeDef* USARTx, FunctionalState NewState);
  191. void USART_LINBreakDetectLengthConfig(USART_TypeDef* USARTx, u16 USART_LINBreakDetectLength);
  192. void USART_LINCmd(USART_TypeDef* USARTx, FunctionalState NewState);
  193. void USART_SendData(USART_TypeDef* USARTx, u16 Data);
  194. u16 USART_ReceiveData(USART_TypeDef* USARTx);
  195. void USART_SendBreak(USART_TypeDef* USARTx);
  196. void USART_SetGuardTime(USART_TypeDef* USARTx, u8 USART_GuardTime);
  197. void USART_SetPrescaler(USART_TypeDef* USARTx, u8 USART_Prescaler);
  198. void USART_SmartCardCmd(USART_TypeDef* USARTx, FunctionalState NewState);
  199. void USART_SmartCardNACKCmd(USART_TypeDef* USARTx, FunctionalState NewState);
  200. void USART_HalfDuplexCmd(USART_TypeDef* USARTx, FunctionalState NewState);
  201. void USART_IrDAConfig(USART_TypeDef* USARTx, u16 USART_IrDAMode);
  202. void USART_IrDACmd(USART_TypeDef* USARTx, FunctionalState NewState);
  203. FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, u16 USART_FLAG);
  204. void USART_ClearFlag(USART_TypeDef* USARTx, u16 USART_FLAG);
  205. ITStatus USART_GetITStatus(USART_TypeDef* USARTx, u16 USART_IT);
  206. void USART_ClearITPendingBit(USART_TypeDef* USARTx, u16 USART_IT);
  207. #endif /* __STM32F10x_USART_H */
  208. /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/