|
1 /** |
|
2 ****************************************************************************** |
|
3 * @file stm32f3xx.h |
|
4 * @author MCD Application Team |
|
5 * @brief CMSIS STM32F3xx Device Peripheral Access Layer Header File. |
|
6 * |
|
7 * The file is the unique include file that the application programmer |
|
8 * is using in the C source code, usually in main.c. This file contains: |
|
9 * - Configuration section that allows to select: |
|
10 * - The STM32F3xx device used in the target application |
|
11 * - To use or not the peripheral’s drivers in application code(i.e. |
|
12 * code will be based on direct access to peripheral’s registers |
|
13 * rather than drivers API), this option is controlled by |
|
14 * "#define USE_HAL_DRIVER" |
|
15 * |
|
16 ****************************************************************************** |
|
17 * @attention |
|
18 * |
|
19 * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2> |
|
20 * |
|
21 * Redistribution and use in source and binary forms, with or without modification, |
|
22 * are permitted provided that the following conditions are met: |
|
23 * 1. Redistributions of source code must retain the above copyright notice, |
|
24 * this list of conditions and the following disclaimer. |
|
25 * 2. Redistributions in binary form must reproduce the above copyright notice, |
|
26 * this list of conditions and the following disclaimer in the documentation |
|
27 * and/or other materials provided with the distribution. |
|
28 * 3. Neither the name of STMicroelectronics nor the names of its contributors |
|
29 * may be used to endorse or promote products derived from this software |
|
30 * without specific prior written permission. |
|
31 * |
|
32 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
|
33 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
34 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
|
35 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE |
|
36 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
|
37 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
|
38 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
|
39 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
|
40 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
|
41 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
42 * |
|
43 ****************************************************************************** |
|
44 */ |
|
45 |
|
46 /** @addtogroup CMSIS |
|
47 * @{ |
|
48 */ |
|
49 |
|
50 /** @addtogroup stm32f3xx |
|
51 * @{ |
|
52 */ |
|
53 |
|
54 #ifndef __STM32F3xx_H |
|
55 #define __STM32F3xx_H |
|
56 |
|
57 #ifdef __cplusplus |
|
58 extern "C" { |
|
59 #endif /* __cplusplus */ |
|
60 |
|
61 /** @addtogroup Library_configuration_section |
|
62 * @{ |
|
63 */ |
|
64 |
|
65 /** |
|
66 * @brief STM32 Family |
|
67 */ |
|
68 #if !defined (STM32F3) |
|
69 #define STM32F3 |
|
70 #endif /* STM32F3 */ |
|
71 |
|
72 /* Uncomment the line below according to the target STM32 device used in your |
|
73 application |
|
74 */ |
|
75 |
|
76 #if !defined (STM32F301x8) && !defined (STM32F302x8) && !defined (STM32F318xx) && \ |
|
77 !defined (STM32F302xC) && !defined (STM32F303xC) && !defined (STM32F358xx) && \ |
|
78 !defined (STM32F303x8) && !defined (STM32F334x8) && !defined (STM32F328xx) && \ |
|
79 !defined (STM32F302xE) && !defined (STM32F303xE) && !defined (STM32F398xx) && \ |
|
80 !defined (STM32F373xC) && !defined (STM32F378xx) |
|
81 |
|
82 /* #define STM32F301x8 */ /*!< STM32F301K6, STM32F301K8, STM32F301C6, STM32F301C8, |
|
83 STM32F301R6 and STM32F301R8 Devices */ |
|
84 /* #define STM32F302x8 */ /*!< STM32F302K6, STM32F302K8, STM32F302C6, STM32F302C8, |
|
85 STM32F302R6 and STM32F302R8 Devices */ |
|
86 /* #define STM32F302xC */ /*!< STM32F302CB, STM32F302CC, STM32F302RB, STM32F302RC, |
|
87 STM32F302VB and STM32F302VC Devices */ |
|
88 /* #define STM32F302xE */ /*!< STM32F302RE, STM32F302VE, STM32F302ZE, STM32F302RD, |
|
89 STM32F302VD and STM32F302ZD Devices */ |
|
90 /* #define STM32F303x8 */ /*!< STM32F303K6, STM32F303K8, STM32F303C6, STM32F303C8, |
|
91 STM32F303R6 and STM32F303R8 Devices */ |
|
92 /* #define STM32F303xC */ /*!< STM32F303CB, STM32F303CC, STM32F303RB, STM32F303RC, |
|
93 STM32F303VB and STM32F303VC Devices */ |
|
94 #define STM32F303xE /*!< STM32F303RE, STM32F303VE, STM32F303ZE, STM32F303RD, |
|
95 STM32F303VD and STM32F303ZD Devices */ |
|
96 /* #define STM32F373xC */ /*!< STM32F373C8, STM32F373CB, STM32F373CC, |
|
97 STM32F373R8, STM32F373RB, STM32F373RC, |
|
98 STM32F373V8, STM32F373VB and STM32F373VC Devices */ |
|
99 /* #define STM32F334x8 */ /*!< STM32F334K4, STM32F334K6, STM32F334K8, |
|
100 STM32F334C4, STM32F334C6, STM32F334C8, |
|
101 STM32F334R4, STM32F334R6 and STM32F334R8 Devices */ |
|
102 /* #define STM32F318xx */ /*!< STM32F318K8, STM32F318C8: STM32F301x8 with regulator off: STM32F318xx Devices */ |
|
103 /* #define STM32F328xx */ /*!< STM32F328C8, STM32F328R8: STM32F334x8 with regulator off: STM32F328xx Devices */ |
|
104 /* #define STM32F358xx */ /*!< STM32F358CC, STM32F358RC, STM32F358VC: STM32F303xC with regulator off: STM32F358xx Devices */ |
|
105 /* #define STM32F378xx */ /*!< STM32F378CC, STM32F378RC, STM32F378VC: STM32F373xC with regulator off: STM32F378xx Devices */ |
|
106 /* #define STM32F398xx */ /*!< STM32F398VE: STM32F303xE with regulator off: STM32F398xx Devices */ |
|
107 #endif |
|
108 |
|
109 /* Tip: To avoid modifying this file each time you need to switch between these |
|
110 devices, you can define the device in your toolchain compiler preprocessor. |
|
111 */ |
|
112 #if !defined (USE_HAL_DRIVER) |
|
113 /** |
|
114 * @brief Comment the line below if you will not use the peripherals drivers. |
|
115 In this case, these drivers will not be included and the application code will |
|
116 be based on direct access to peripherals registers |
|
117 */ |
|
118 #define USE_HAL_DRIVER |
|
119 #endif /* USE_HAL_DRIVER */ |
|
120 |
|
121 /** |
|
122 * @brief CMSIS Device version number V2.3.2 |
|
123 */ |
|
124 #define __STM32F3_CMSIS_VERSION_MAIN (0x02) /*!< [31:24] main version */ |
|
125 #define __STM32F3_CMSIS_VERSION_SUB1 (0x03) /*!< [23:16] sub1 version */ |
|
126 #define __STM32F3_CMSIS_VERSION_SUB2 (0x02) /*!< [15:8] sub2 version */ |
|
127 #define __STM32F3_CMSIS_VERSION_RC (0x00) /*!< [7:0] release candidate */ |
|
128 #define __STM32F3_CMSIS_VERSION ((__STM32F3_CMSIS_VERSION_MAIN << 24)\ |
|
129 |(__STM32F3_CMSIS_VERSION_SUB1 << 16)\ |
|
130 |(__STM32F3_CMSIS_VERSION_SUB2 << 8 )\ |
|
131 |(__STM32F3_CMSIS_VERSION_RC)) |
|
132 |
|
133 /** |
|
134 * @} |
|
135 */ |
|
136 |
|
137 /** @addtogroup Device_Included |
|
138 * @{ |
|
139 */ |
|
140 |
|
141 #if defined(STM32F301x8) |
|
142 #include "stm32f301x8.h" |
|
143 #elif defined(STM32F302x8) |
|
144 #include "stm32f302x8.h" |
|
145 #elif defined(STM32F302xC) |
|
146 #include "stm32f302xc.h" |
|
147 #elif defined(STM32F302xE) |
|
148 #include "stm32f302xe.h" |
|
149 #elif defined(STM32F303x8) |
|
150 #include "stm32f303x8.h" |
|
151 #elif defined(STM32F303xC) |
|
152 #include "stm32f303xc.h" |
|
153 #elif defined(STM32F303xE) |
|
154 #include "stm32f303xe.h" |
|
155 #elif defined(STM32F373xC) |
|
156 #include "stm32f373xc.h" |
|
157 #elif defined(STM32F334x8) |
|
158 #include "stm32f334x8.h" |
|
159 #elif defined(STM32F318xx) |
|
160 #include "stm32f318xx.h" |
|
161 #elif defined(STM32F328xx) |
|
162 #include "stm32f328xx.h" |
|
163 #elif defined(STM32F358xx) |
|
164 #include "stm32f358xx.h" |
|
165 #elif defined(STM32F378xx) |
|
166 #include "stm32f378xx.h" |
|
167 #elif defined(STM32F398xx) |
|
168 #include "stm32f398xx.h" |
|
169 #else |
|
170 #error "Please select first the target STM32F3xx device used in your application (in stm32f3xx.h file)" |
|
171 #endif |
|
172 |
|
173 /** |
|
174 * @} |
|
175 */ |
|
176 |
|
177 /** @addtogroup Exported_types |
|
178 * @{ |
|
179 */ |
|
180 typedef enum |
|
181 { |
|
182 RESET = 0, |
|
183 SET = !RESET |
|
184 } FlagStatus, ITStatus; |
|
185 |
|
186 typedef enum |
|
187 { |
|
188 DISABLE = 0, |
|
189 ENABLE = !DISABLE |
|
190 } FunctionalState; |
|
191 #define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE)) |
|
192 |
|
193 typedef enum |
|
194 { |
|
195 ERROR = 0, |
|
196 SUCCESS = !ERROR |
|
197 } ErrorStatus; |
|
198 |
|
199 /** |
|
200 * @} |
|
201 */ |
|
202 |
|
203 |
|
204 /** @addtogroup Exported_macros |
|
205 * @{ |
|
206 */ |
|
207 #define SET_BIT(REG, BIT) ((REG) |= (BIT)) |
|
208 |
|
209 #define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT)) |
|
210 |
|
211 #define READ_BIT(REG, BIT) ((REG) & (BIT)) |
|
212 |
|
213 #define CLEAR_REG(REG) ((REG) = (0x0)) |
|
214 |
|
215 #define WRITE_REG(REG, VAL) ((REG) = (VAL)) |
|
216 |
|
217 #define READ_REG(REG) ((REG)) |
|
218 |
|
219 #define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK))) |
|
220 |
|
221 #define POSITION_VAL(VAL) (__CLZ(__RBIT(VAL))) |
|
222 |
|
223 |
|
224 #if defined (USE_HAL_DRIVER) |
|
225 #include "stm32f3xx_hal.h" |
|
226 #endif /* USE_HAL_DRIVER */ |
|
227 |
|
228 |
|
229 /** |
|
230 * @} |
|
231 */ |
|
232 |
|
233 |
|
234 #ifdef __cplusplus |
|
235 } |
|
236 #endif /* __cplusplus */ |
|
237 |
|
238 #endif /* __STM32F3xx_H */ |
|
239 /** |
|
240 * @} |
|
241 */ |
|
242 |
|
243 /** |
|
244 * @} |
|
245 */ |
|
246 |
|
247 |
|
248 |
|
249 |
|
250 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |