12 #ifndef SOURCE_CHIP_STM32_STM32F4_INCLUDE_DISTORTOS_CHIP_CLOCKS_HPP_ 13 #define SOURCE_CHIP_STM32_STM32F4_INCLUDE_DISTORTOS_CHIP_CLOCKS_HPP_ 39 #if defined(DISTORTOS_CHIP_STM32F401) 41 #else // !defined(DISTORTOS_CHIP_STM32F401) 43 #endif // !defined(DISTORTOS_CHIP_STM32F401) 54 #if defined(DISTORTOS_CHIP_STM32F401) 61 #elif defined(DISTORTOS_CHIP_STM32F405) || defined(DISTORTOS_CHIP_STM32F407) || defined(DISTORTOS_CHIP_STM32F415) || \ 62 defined(DISTORTOS_CHIP_STM32F417) 65 {168000000, 168000000},
66 {144000000, 144000000},
67 {144000000, 144000000},
69 #elif defined(DISTORTOS_CHIP_STM32F410) || defined(DISTORTOS_CHIP_STM32F411) || defined(DISTORTOS_CHIP_STM32F412) || \ 70 defined(DISTORTOS_CHIP_STM32F413) || defined(DISTORTOS_CHIP_STM32F423) 73 {100000000, 100000000},
77 #else // !defined(DISTORTOS_CHIP_STM32F401) && !defined(DISTORTOS_CHIP_STM32F405) && 84 {168000000, 180000000},
85 {144000000, 144000000},
86 {120000000, 120000000},
88 #endif // !defined(DISTORTOS_CHIP_STM32F401) && !defined(DISTORTOS_CHIP_STM32F405) && 100 #if defined(DISTORTOS_CHIP_STM32F401) || defined(DISTORTOS_CHIP_STM32F405) || defined(DISTORTOS_CHIP_STM32F407) || \ 101 defined(DISTORTOS_CHIP_STM32F415) || defined(DISTORTOS_CHIP_STM32F417) 103 #elif defined(DISTORTOS_CHIP_STM32F410) || defined(DISTORTOS_CHIP_STM32F411) || defined(DISTORTOS_CHIP_STM32F412) || \ 104 defined(DISTORTOS_CHIP_STM32F413) || defined(DISTORTOS_CHIP_STM32F423) 106 #else // !defined(DISTORTOS_CHIP_STM32F401) && !defined(DISTORTOS_CHIP_STM32F405) && 112 #endif // !defined(DISTORTOS_CHIP_STM32F401) && !defined(DISTORTOS_CHIP_STM32F405) && 121 #if defined(DISTORTOS_CHIP_STM32F401) || defined(DISTORTOS_CHIP_STM32F405) || defined(DISTORTOS_CHIP_STM32F407) || \ 122 defined(DISTORTOS_CHIP_STM32F415) || defined(DISTORTOS_CHIP_STM32F417) 124 #elif defined(DISTORTOS_CHIP_STM32F410) || defined(DISTORTOS_CHIP_STM32F411) || defined(DISTORTOS_CHIP_STM32F412) || \ 125 defined(DISTORTOS_CHIP_STM32F413) || defined(DISTORTOS_CHIP_STM32F423) 127 #else // !defined(DISTORTOS_CHIP_STM32F401) && !defined(DISTORTOS_CHIP_STM32F405) && 133 #endif // !defined(DISTORTOS_CHIP_STM32F401) && !defined(DISTORTOS_CHIP_STM32F405) && 139 #ifdef DISTORTOS_CHIP_STANDARD_CLOCK_CONFIGURATION_ENABLE 141 #if (defined(DISTORTOS_CHIP_STM32F427) || defined(DISTORTOS_CHIP_STM32F429) || defined(DISTORTOS_CHIP_STM32F43) || \ 142 defined(DISTORTOS_CHIP_STM32F446) || defined(DISTORTOS_CHIP_STM32F469) || \ 143 defined(DISTORTOS_CHIP_STM32F479)) && defined(DISTORTOS_CHIP_PWR_OVER_DRIVE_ENABLE) 145 static_assert(DISTORTOS_CHIP_PWR_VOLTAGE_SCALE_MODE == 1,
"Over-drive mode requires voltage scale 1 mode!");
146 static_assert(DISTORTOS_CHIP_VDD_MV >= 2100,
"Over-drive mode must not be enabled when supply voltage is below 2.1 V!");
151 #else // !(defined(DISTORTOS_CHIP_STM32F427) || defined(DISTORTOS_CHIP_STM32F429) || 158 #endif // !(defined(DISTORTOS_CHIP_STM32F427) || defined(DISTORTOS_CHIP_STM32F429) || 174 #ifdef DISTORTOS_CHIP_RCC_PLL_ENABLE 177 #if defined(DISTORTOS_CHIP_RCC_PLLSRC_HSI) 179 #elif defined(DISTORTOS_CHIP_RCC_PLLSRC_HSE) 187 "Invalid VCO input frequency!");
193 "Invalid VCO output frequency!");
205 #if defined(DISTORTOS_CHIP_STM32F412) || defined(DISTORTOS_CHIP_STM32F413) || defined(DISTORTOS_CHIP_STM32F423) || \ 206 defined(DISTORTOS_CHIP_STM32F446) || defined(DISTORTOS_CHIP_STM32F469) || defined(DISTORTOS_CHIP_STM32F479) 209 constexpr uint32_t pllrOutFrequency {
vcoOutFrequency / DISTORTOS_CHIP_RCC_PLLR};
211 #endif // defined(DISTORTOS_CHIP_STM32F412) || defined(DISTORTOS_CHIP_STM32F413) || 215 #endif // def DISTORTOS_CHIP_RCC_PLL_ENABLE 218 #if defined(DISTORTOS_CHIP_RCC_SYSCLK_HSI) 220 #elif defined(DISTORTOS_CHIP_RCC_SYSCLK_HSE) 222 #elif defined(DISTORTOS_CHIP_RCC_SYSCLK_PLL) 224 #elif defined(DISTORTOS_CHIP_RCC_SYSCLK_PLLR) 226 #endif // defined(DISTORTOS_CHIP_RCC_SYSCLK_PLLR) 228 #else // !def DISTORTOS_CHIP_STANDARD_CLOCK_CONFIGURATION_ENABLE 231 constexpr uint32_t
sysclkFrequency {DISTORTOS_CHIP_RCC_SYSCLK_FREQUENCY};
239 #endif // !def DISTORTOS_CHIP_STANDARD_CLOCK_CONFIGURATION_ENABLE 258 #endif // SOURCE_CHIP_STM32_STM32F4_INCLUDE_DISTORTOS_CHIP_CLOCKS_HPP_ constexpr uint32_t minVcoInFrequency
minimum allowed value for VCO input frequency, Hz
Definition: clocks.hpp:33
constexpr uint32_t pllOutFrequency
PLL output frequency, Hz.
Definition: clocks.hpp:196
constexpr uint32_t maxApb1Frequency
maximum allowed APB1 (low speed) frequency, Hz
Definition: clocks.hpp:169
constexpr uint32_t pllqOutFrequency
PLL "Q" output frequency, Hz.
Definition: clocks.hpp:201
constexpr uint32_t maxPllqOutFrequency
maximum allowed value for PLL "Q" output frequency, Hz
Definition: clocks.hpp:95
constexpr uint32_t maxPllOutFrequencies[3][2]
Definition: clocks.hpp:64
constexpr uint32_t vcoOutFrequency
VCO output frequency, Hz.
Definition: clocks.hpp:190
constexpr uint32_t maxPllOutFrequency
maximum allowed value for PLL output frequency, Hz
Definition: clocks.hpp:166
constexpr uint32_t apb1Frequency
APB1 frequency, Hz.
Definition: clocks.hpp:245
constexpr uint32_t apb2Frequency
APB2 frequency, Hz.
Definition: clocks.hpp:250
constexpr uint32_t vcoInFrequency
VCO input frequency, Hz.
Definition: clocks.hpp:184
constexpr uint32_t maxApb2Frequencies[2]
Definition: clocks.hpp:123
Top-level namespace of distortos project.
Definition: buttons.hpp:33
constexpr uint32_t minVcoOutFrequency
minimum allowed value for VCO output frequency, Hz
Definition: clocks.hpp:42
constexpr uint32_t ahbFrequency
AHB frequency, Hz.
Definition: clocks.hpp:242
constexpr uint32_t hsiFrequency
HSI clock frequency, Hz.
Definition: clocks.hpp:30
constexpr uint32_t maxVcoInFrequency
maximum allowed value for VCO input frequency, Hz
Definition: clocks.hpp:36
constexpr uint32_t maxApb1Frequencies[2]
Definition: clocks.hpp:102
constexpr uint32_t maxVcoOutFrequency
maximum allowed value for VCO output frequency, Hz
Definition: clocks.hpp:46
constexpr uint8_t voltageScaleIndex
voltage scale index for maxPllOutFrequencies array (maxPllOutFrequencies[voltageScaleIndex][overDrive...
Definition: clocks.hpp:163
constexpr uint32_t sysclkFrequency
SYSCLK frequency, Hz.
Definition: clocks.hpp:223
constexpr uint8_t overDriveIndex
over-drive index for maxPllOutFrequencies array (maxPllOutFrequencies[voltageScaleIndex][overDriveInd...
Definition: clocks.hpp:156
constexpr uint32_t maxApb2Frequency
maximum allowed APB2 (high speed) frequency, Hz
Definition: clocks.hpp:172
constexpr uint32_t pllInFrequency
PLL input frequency, Hz.
Definition: clocks.hpp:180