5252 #define HSE_STARTUP_TIMEOUT (100U) /*!< Time out for HSE start up, in ms */
5353#endif /* HSE_STARTUP_TIMEOUT */
5454
55+ #if !defined (HSE_PLLM_VALUE )
56+ #define HSE_PLLM_VALUE (7U)
57+ #endif /* HSE_PLLM_VALUE */
58+
59+ #if !defined (HSE_PLLN_VALUE )
60+ #define HSE_PLLN_VALUE (319U)
61+ #endif /* HSE_PLLN_VALUE */
62+
63+ #if !defined (HSE_PLLP_VALUE )
64+ #define HSE_PLLP_VALUE (8U)
65+ #endif /* HSE_PLLP_VALUE */
66+
67+ #if !defined (HSE_PLLQ_VALUE )
68+ #define HSE_PLLQ_VALUE (7U)
69+ #endif /* HSE_PLLQ_VALUE */
70+
71+ #if !defined (HSE_AHBCLKDIV_VALUE )
72+ #define HSE_AHBCLKDIV_VALUE (1U)
73+ #endif /* HSE_AHBCLKDIV_VALUE */
74+
75+ #if !defined (HSE_APB1CLKDIV_VALUE )
76+ #if defined(USE_PLL )
77+ #define HSE_APB1CLKDIV_VALUE (2U) /* PCLK1 max freq is 30 MHz */
78+ #else
79+ #define HSE_APB1CLKDIV_VALUE (1U)
80+ #endif
81+ #endif /* HSE_APB1CLKDIV_VALUE */
82+
83+ #if !defined (HSE_APB2CLKDIV_VALUE )
84+ #define HSE_APB2CLKDIV_VALUE (1U) /* PCLK2 max freq is 60 MHz */
85+ #endif /* HSE_APB2CLKDIV_VALUE */
86+
5587/**
5688 * @brief Internal High Speed oscillator (HSI) value.
5789 * This value is used by the RCC HAL module to compute the system frequency
92124/* Tip: To avoid modifying this file each time you need to use different HSE,
93125 === you can define the HSE value in your toolchain compiler preprocessor. */
94126
127+ /* ########################### UART Configuration ######################### */
128+ /**
129+ * @brief UART initial baudrate
130+ */
131+ #if !defined(UART_INITBAUD )
132+ #if SS_VER == SS_VER_2_1
133+ #define UART_INITBAUD 230400
134+ #else
135+ #define UART_INITBAUD 38400
136+ #endif
137+ #endif
138+
95139/* ########################### System Configuration ######################### */
96140/**
97141 * @brief This is the HAL system configuration section
108152// #define STM32F215xx
109153#include "stm32f2xx.h"
110154
155+ /* ########################### Generated Values ######################### */
156+ #if defined(USE_INTERNAL_CLK )
157+ #define SYSCLK_FREQ (HSI_VALUE)
158+ #elif defined(USE_PLL )
159+ #define SYSCLK_FREQ (HSE_VALUE / HSE_PLLM_VALUE * HSE_PLLN_VALUE / HSE_PLLP_VALUE)
160+ #else
161+ #define SYSCLK_FREQ (HSE_VALUE)
162+ #endif
163+
164+ #define HCLK_FREQ (SYSCLK_FREQ / HSE_AHBCLKDIV_VALUE)
165+ #define PCLK1_FREQ (HCLK_FREQ / HSE_APB1CLKDIV_VALUE)
166+ #define PCLK2_FREQ (HCLK_FREQ / HSE_APB2CLKDIV_VALUE)
167+
168+ #if HSE_VALUE > 26000000U
169+ #error "Maximum allowed HSE_VALUE is 26MHz"
170+ #endif
171+ #if HCLK_FREQ > 120000000U
172+ #error "Maximum allowed HCLK_FREQ is 120MHz"
173+ #endif
174+ #if PCLK1_FREQ > 30000000U
175+ #error "Maximum allowed PCLK1_FREQ is 30MHz"
176+ #endif
177+ #if PCLK2_FREQ > 60000000U
178+ #error "Maximum allowed PCLK2_FREQ is 60MHz"
179+ #endif
180+
181+ #if HSE_PLLM_VALUE < 2U || HSE_PLLM_VALUE > 63U
182+ #error "HSE_PLLM_VALUE not supported"
183+ #endif
184+ #if HSE_PLLN_VALUE < 192U || HSE_PLLN_VALUE > 432U
185+ #error "HSE_PLLN_VALUE not supported"
186+ #endif
187+ #if HSE_PLLP_VALUE != 2U && HSE_PLLP_VALUE != 4U && HSE_PLLP_VALUE != 6U && HSE_PLLP_VALUE != 8U
188+ #error "HSE_PLLP_VALUE not supported"
189+ #endif
190+ #if HSE_PLLQ_VALUE < 2U || HSE_PLLQ_VALUE > 15U
191+ #error "HSE_PLLQ_VALUE not supported"
192+ #endif
193+
194+ #if HSE_AHBCLKDIV_VALUE == 1
195+ #define HSE_AHBCLKDIV_HVALUE RCC_CFGR_HPRE_DIV1
196+ #elif HSE_AHBCLKDIV_VALUE == 2
197+ #define HSE_AHBCLKDIV_HVALUE RCC_CFGR_HPRE_DIV2
198+ #elif HSE_AHBCLKDIV_VALUE == 4
199+ #define HSE_AHBCLKDIV_HVALUE RCC_CFGR_HPRE_DIV4
200+ #elif HSE_AHBCLKDIV_VALUE == 8
201+ #define HSE_AHBCLKDIV_HVALUE RCC_CFGR_HPRE_DIV8
202+ #elif HSE_AHBCLKDIV_VALUE == 16
203+ #define HSE_AHBCLKDIV_HVALUE RCC_CFGR_HPRE_DIV16
204+ #elif HSE_AHBCLKDIV_VALUE == 64
205+ #define HSE_AHBCLKDIV_HVALUE RCC_CFGR_HPRE_DIV64
206+ #elif HSE_AHBCLKDIV_VALUE == 128
207+ #define HSE_AHBCLKDIV_HVALUE RCC_CFGR_HPRE_DIV128
208+ #elif HSE_AHBCLKDIV_VALUE == 256
209+ #define HSE_AHBCLKDIV_HVALUE RCC_CFGR_HPRE_DIV256
210+ #elif HSE_AHBCLKDIV_VALUE == 512
211+ #define HSE_AHBCLKDIV_HVALUE RCC_CFGR_HPRE_DIV512
212+ #else
213+ #error "HSE_AHBCLKDIV_VALUE not supported"
214+ #endif
215+
216+ #if HSE_APB1CLKDIV_VALUE == 1
217+ #define HSE_APB1CLKDIV_HVALUE RCC_CFGR_PPRE1_DIV1
218+ #elif HSE_APB1CLKDIV_VALUE == 2
219+ #define HSE_APB1CLKDIV_HVALUE RCC_CFGR_PPRE1_DIV2
220+ #elif HSE_APB1CLKDIV_VALUE == 4
221+ #define HSE_APB1CLKDIV_HVALUE RCC_CFGR_PPRE1_DIV4
222+ #elif HSE_APB1CLKDIV_VALUE == 8
223+ #define HSE_APB1CLKDIV_HVALUE RCC_CFGR_PPRE1_DIV8
224+ #elif HSE_APB1CLKDIV_VALUE == 16
225+ #define HSE_APB1CLKDIV_HVALUE RCC_CFGR_PPRE1_DIV16
226+ #else
227+ #error "HSE_APB1CLKDIV_VALUE not supported"
228+ #endif
229+
230+ #if HSE_APB2CLKDIV_VALUE == 1
231+ #define HSE_APB2CLKDIV_HVALUE RCC_CFGR_PPRE2_DIV1
232+ #elif HSE_APB2CLKDIV_VALUE == 2
233+ #define HSE_APB2CLKDIV_HVALUE RCC_CFGR_PPRE2_DIV2
234+ #elif HSE_APB2CLKDIV_VALUE == 4
235+ #define HSE_APB2CLKDIV_HVALUE RCC_CFGR_PPRE2_DIV4
236+ #elif HSE_APB2CLKDIV_VALUE == 8
237+ #define HSE_APB2CLKDIV_HVALUE RCC_CFGR_PPRE2_DIV8
238+ #elif HSE_APB2CLKDIV_VALUE == 16
239+ #define HSE_APB2CLKDIV_HVALUE RCC_CFGR_PPRE2_DIV16
240+ #else
241+ #error "HSE_APB2CLKDIV_VALUE not supported"
242+ #endif
243+
244+ #if HCLK_FREQ <= 30000000U
245+ #define FLASH_LATENCY_HVALUE FLASH_ACR_LATENCY_0WS
246+ #elif HCLK_FREQ <= 60000000U
247+ #define FLASH_LATENCY_HVALUE FLASH_ACR_LATENCY_1WS
248+ #elif HCLK_FREQ <= 90000000U
249+ #define FLASH_LATENCY_HVALUE FLASH_ACR_LATENCY_2WS
250+ #elif HCLK_FREQ <= 120000000U
251+ #define FLASH_LATENCY_HVALUE FLASH_ACR_LATENCY_3WS
252+ #else
253+ #error "HCLK_FREQ not supported"
254+ #endif
255+
111256#endif
0 commit comments