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