STM MATLAB Simulator
Loading...
Searching...
No Matches
stm32f4xx.h
Go to the documentation of this file.
1
37#ifndef __STM32F4xx_H
38#define __STM32F4xx_H
39
40#ifdef __cplusplus
41 extern "C" {
42#endif /* __cplusplus */
43
51#if !defined (STM32F4)
52#define STM32F4
53#endif /* STM32F4 */
54
55/* Uncomment the line below according to the target STM32 device used in your
56 application
57 */
58#if !defined (STM32F405xx) && !defined (STM32F415xx) && !defined (STM32F407xx) && !defined (STM32F417xx) && \
59 !defined (STM32F427xx) && !defined (STM32F437xx) && !defined (STM32F429xx) && !defined (STM32F439xx) && \
60 !defined (STM32F401xC) && !defined (STM32F401xE) && !defined (STM32F410Tx) && !defined (STM32F410Cx) && \
61 !defined (STM32F410Rx) && !defined (STM32F411xE) && !defined (STM32F446xx) && !defined (STM32F469xx) && \
62 !defined (STM32F479xx) && !defined (STM32F412Cx) && !defined (STM32F412Rx) && !defined (STM32F412Vx) && \
63 !defined (STM32F412Zx) && !defined (STM32F413xx) && !defined (STM32F423xx)
64 /* #define STM32F405xx */
65 /* #define STM32F415xx */
66 /* #define STM32F407xx */
67 /* #define STM32F417xx */
68 /* #define STM32F427xx */
69 /* #define STM32F437xx */
70 /* #define STM32F429xx */
72 /* #define STM32F439xx */
74 /* #define STM32F401xC */
75 /* #define STM32F401xE */
76 /* #define STM32F410Tx */
77 /* #define STM32F410Cx */
78 /* #define STM32F410Rx */
79 /* #define STM32F411xE */
80 /* #define STM32F446xx */
82 /* #define STM32F469xx */
84 /* #define STM32F479xx */
86 /* #define STM32F412Cx */
87 /* #define STM32F412Zx */
88 /* #define STM32F412Vx */
89 /* #define STM32F412Rx */
90 /* #define STM32F413xx */
92 /* #define STM32F423xx */
93#endif
94
95/* Tip: To avoid modifying this file each time you need to switch between these
96 devices, you can define the device in your toolchain compiler preprocessor.
97 */
98#if !defined (USE_HAL_DRIVER)
104 /*#define USE_HAL_DRIVER */
105#endif /* USE_HAL_DRIVER */
106
110#define __STM32F4xx_CMSIS_VERSION_MAIN (0x02U)
111#define __STM32F4xx_CMSIS_VERSION_SUB1 (0x06U)
112#define __STM32F4xx_CMSIS_VERSION_SUB2 (0x08U)
113#define __STM32F4xx_CMSIS_VERSION_RC (0x00U)
114#define __STM32F4xx_CMSIS_VERSION ((__STM32F4xx_CMSIS_VERSION_MAIN << 24)\
115 |(__STM32F4xx_CMSIS_VERSION_SUB1 << 16)\
116 |(__STM32F4xx_CMSIS_VERSION_SUB2 << 8 )\
117 |(__STM32F4xx_CMSIS_VERSION_RC))
118
127#if defined(STM32F405xx)
128 #include "stm32f405xx_matlab.h"
129#elif defined(STM32F415xx)
130 #include "stm32f415xx_matlab.h"
131#elif defined(STM32F407xx)
132 #include "stm32f407xx_matlab.h"
133#elif defined(STM32F417xx)
134 #include "stm32f417xx_matlab.h"
135#elif defined(STM32F427xx)
136 #include "stm32f427xx_matlab.h"
137#elif defined(STM32F437xx)
138 #include "stm32f437xx_matlab.h"
139#elif defined(STM32F429xx)
140 #include "stm32f429xx_matlab.h"
141#elif defined(STM32F439xx)
142 #include "stm32f439xx_matlab.h"
143#elif defined(STM32F401xC)
144 #include "stm32f401xc_matlab.h"
145#elif defined(STM32F401xE)
146 #include "stm32f401xe_matlab.h"
147#elif defined(STM32F410Tx)
148 #include "stm32f410tx_matlab.h"
149#elif defined(STM32F410Cx)
150 #include "stm32f410cx_matlab.h"
151#elif defined(STM32F410Rx)
152 #include "stm32f410rx_matlab.h"
153#elif defined(STM32F411xE)
154 #include "stm32f411xe_matlab.h"
155#elif defined(STM32F446xx)
156 #include "stm32f446xx_matlab.h"
157#elif defined(STM32F469xx)
158 #include "stm32f469xx_matlab.h"
159#elif defined(STM32F479xx)
160 #include "stm32f479xx_matlab.h"
161#elif defined(STM32F412Cx)
162 #include "stm32f412cx_matlab.h"
163#elif defined(STM32F412Zx)
164 #include "stm32f412zx_matlab.h"
165#elif defined(STM32F412Rx)
166 #include "stm32f412rx_matlab.h"
167#elif defined(STM32F412Vx)
168 #include "stm32f412vx_matlab.h"
169#elif defined(STM32F413xx)
170 #include "stm32f413xx_matlab.h"
171#elif defined(STM32F423xx)
172 #include "stm32f423xx_matlab.h"
173#else
174 #error "Please select first the target STM32F4xx device used in your application (in stm32f4xx_matlab.h file)"
175#endif
176
184typedef enum
185{
186 RESET = 0U,
187 SET = !RESET
189
190typedef enum
191{
192 DISABLE = 0U,
193 ENABLE = !DISABLE
195#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))
196
197typedef enum
198{
200 ERROR = !SUCCESS
202
211#define SET_BIT(REG, BIT) ((REG) |= (BIT))
212
213#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT))
214
215#define READ_BIT(REG, BIT) ((REG) & (BIT))
216
217#define CLEAR_REG(REG) ((REG) = (0x0))
218
219#define WRITE_REG(REG, VAL) ((REG) = (VAL))
220
221#define READ_REG(REG) ((REG))
222
223#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))
224
225#define POSITION_VAL(VAL) (__CLZ(__RBIT(VAL)))
226
227/* Use of CMSIS compiler intrinsics for register exclusive access */
228/* Atomic 32-bit register access macro to set one or several bits */
229#define ATOMIC_SET_BIT(REG, BIT) \
230 do { \
231 uint32_t val; \
232 do { \
233 val = __LDREXW((__IO uint32_t *)&(REG)) | (BIT); \
234 } while ((__STREXW(val,(__IO uint32_t *)&(REG))) != 0U); \
235 } while(0)
236
237/* Atomic 32-bit register access macro to clear one or several bits */
238#define ATOMIC_CLEAR_BIT(REG, BIT) \
239 do { \
240 uint32_t val; \
241 do { \
242 val = __LDREXW((__IO uint32_t *)&(REG)) & ~(BIT); \
243 } while ((__STREXW(val,(__IO uint32_t *)&(REG))) != 0U); \
244 } while(0)
245
246/* Atomic 32-bit register access macro to clear and set one or several bits */
247#define ATOMIC_MODIFY_REG(REG, CLEARMSK, SETMASK) \
248 do { \
249 uint32_t val; \
250 do { \
251 val = (__LDREXW((__IO uint32_t *)&(REG)) & ~(CLEARMSK)) | (SETMASK); \
252 } while ((__STREXW(val,(__IO uint32_t *)&(REG))) != 0U); \
253 } while(0)
254
255/* Atomic 16-bit register access macro to set one or several bits */
256#define ATOMIC_SETH_BIT(REG, BIT) \
257 do { \
258 uint16_t val; \
259 do { \
260 val = __LDREXH((__IO uint16_t *)&(REG)) | (BIT); \
261 } while ((__STREXH(val,(__IO uint16_t *)&(REG))) != 0U); \
262 } while(0)
263
264/* Atomic 16-bit register access macro to clear one or several bits */
265#define ATOMIC_CLEARH_BIT(REG, BIT) \
266 do { \
267 uint16_t val; \
268 do { \
269 val = __LDREXH((__IO uint16_t *)&(REG)) & ~(BIT); \
270 } while ((__STREXH(val,(__IO uint16_t *)&(REG))) != 0U); \
271 } while(0)
272
273/* Atomic 16-bit register access macro to clear and set one or several bits */
274#define ATOMIC_MODIFYH_REG(REG, CLEARMSK, SETMASK) \
275 do { \
276 uint16_t val; \
277 do { \
278 val = (__LDREXH((__IO uint16_t *)&(REG)) & ~(CLEARMSK)) | (SETMASK); \
279 } while ((__STREXH(val,(__IO uint16_t *)&(REG))) != 0U); \
280 } while(0)
281
286#if defined (USE_HAL_DRIVER)
287 #include "stm32f4xx_hal.h"
288#endif /* USE_HAL_DRIVER */
289
290#ifdef __cplusplus
291}
292#endif /* __cplusplus */
293
294#endif /* __STM32F4xx_H */
enum FlagStatus ITStatus
ErrorStatus
Definition stm32f4xx.h:198
FlagStatus
Definition stm32f4xx.h:185
FunctionalState
Definition stm32f4xx.h:191
@ ERROR
Definition stm32f4xx.h:200
@ SUCCESS
Definition stm32f4xx.h:199
@ RESET
Definition stm32f4xx.h:186
@ SET
Definition stm32f4xx.h:187
@ ENABLE
Definition stm32f4xx.h:193
@ DISABLE
Definition stm32f4xx.h:192