modm API documentation
|
#include <modm/platform/clock/rcc.hpp>
Classes | |
struct | PllFactors |
Public Types | |
enum | PllSource : uint32_t { PllSource::Hsi = RCC_PLLCFGR_PLLSRC_HSI, InternalClock = Hsi, PllSource::Hse = RCC_PLLCFGR_PLLSRC_HSE, ExternalClock = Hse, ExternalCrystal = Hse } |
enum | SystemClockSource : uint32_t { Hsi = RCC_CFGR_SW_HSI, Hse = RCC_CFGR_SW_HSE, InternalClock = Hsi, ExternalClock = Hse, ExternalCrystal = Hse, Pll = RCC_CFGR_SW_PLL } |
enum | RealTimeClockSource : uint32_t { Lsi = RCC_BDCR_RTCSEL_1, Lse = RCC_BDCR_RTCSEL_0, Hse = RCC_BDCR_RTCSEL_0 | RCC_BDCR_RTCSEL_1, ExternalClock = Hse, ExternalCrystal = Hse, LowSpeedInternalClock = Lsi, LowSpeedExternalClock = Lse, LowSpeedExternalCrystal = Lse } |
enum | WatchdogClockSource : uint32_t { LowSpeedInternalClock = 0 } |
enum | AhbPrescaler : uint32_t { Div1 = RCC_CFGR_HPRE_DIV1, Div2 = RCC_CFGR_HPRE_DIV2, Div4 = RCC_CFGR_HPRE_DIV4, Div8 = RCC_CFGR_HPRE_DIV8, Div16 = RCC_CFGR_HPRE_DIV16, Div64 = RCC_CFGR_HPRE_DIV64, Div128 = RCC_CFGR_HPRE_DIV128, Div256 = RCC_CFGR_HPRE_DIV256, Div512 = RCC_CFGR_HPRE_DIV512 } |
enum | ApbPrescaler : uint32_t { Div1 = RCC_CFGR_PPRE_DIV1, Div2 = RCC_CFGR_PPRE_DIV2, Div4 = RCC_CFGR_PPRE_DIV4, Div8 = RCC_CFGR_PPRE_DIV8, Div16 = RCC_CFGR_PPRE_DIV16 } |
enum | ClockOutputSource : uint32_t { Disable = 0b0000, SystemClock = (0b0001 << RCC_CFGR_MCOSEL_Pos), InternalClock = (0b0011 << RCC_CFGR_MCOSEL_Pos), ExternalClock = (0b0100 << RCC_CFGR_MCOSEL_Pos), ExternalCrystal = ExternalClock, Pll = (0b0101 << RCC_CFGR_MCOSEL_Pos), LowSpeedInternalClock = (0b0110 << RCC_CFGR_MCOSEL_Pos), LowSpeedExternalClock = (0b0111 << RCC_CFGR_MCOSEL_Pos) } |
enum | ClockOutputPrescaler : uint32_t { Div1 = 0, Div2 = (1 << RCC_CFGR_MCOPRE_Pos), Div4 = (2 << RCC_CFGR_MCOPRE_Pos), Div8 = (3 << RCC_CFGR_MCOPRE_Pos), Div16 = (4 << RCC_CFGR_MCOPRE_Pos), Div32 = (5 << RCC_CFGR_MCOPRE_Pos), Div64 = (6 << RCC_CFGR_MCOPRE_Pos), Div128 = (7 << RCC_CFGR_MCOPRE_Pos) } |
Static Public Member Functions | |
static bool | enableInternalClock (uint32_t waitCycles=2048) |
static bool | enableExternalClock (uint32_t waitCycles=2048) |
static bool | enableExternalCrystal (uint32_t waitCycles=2048) |
static bool | enableLowSpeedInternalClock (uint32_t waitCycles=2048) |
static bool | enableLowSpeedExternalClock (uint32_t waitCycles=2048) |
static bool | enableLowSpeedExternalCrystal (uint32_t waitCycles=2048) |
static bool | enablePll (PllSource source, const PllFactors &pllFactors, uint32_t waitCycles=2048) |
static bool | disablePll (uint32_t waitCycles=2048) |
static bool | enableSystemClock (SystemClockSource src, uint32_t waitCycles=2048) |
static bool | enableRealTimeClock (RealTimeClockSource src) |
static bool | enableWatchdogClock (WatchdogClockSource) |
static bool | enableClockOutput (ClockOutputSource src, ClockOutputPrescaler div=ClockOutputPrescaler::Div1) |
static bool | setAhbPrescaler (AhbPrescaler prescaler) |
static bool | setApbPrescaler (ApbPrescaler prescaler) |
template<uint32_t Core_Hz, uint16_t Core_mV = 3300> | |
static uint32_t | setFlashLatency () |
template<uint32_t Core_Hz> | |
static void | updateCoreFrequency () |
template<class... Signals> | |
static void | connect () |
template<Peripheral peripheral> | |
static void | enable () |
template<Peripheral peripheral> | |
static bool | isEnabled () |
template<Peripheral peripheral> | |
static void | disable () |
Static Public Attributes | |
static constexpr uint32_t | LsiFrequency = 32'000 |
static constexpr uint32_t | HsiFrequency = 16'000'000 |
static constexpr uint32_t | BootFrequency = 16'000'000 |
Reset and Clock Control for STM32 devices.
This class abstracts access to clock settings on the STM32. You need to use this class to enable internal and external clock sources & outputs, set PLL parameters and AHB & APB prescalers. Don't forget to set the flash latencies.
|
strong |
|
static |
Disable PLL.
waitCycles | Number of cycles to wait for the pll to stabilise. Default: 2048. |
|
static |
Enable PLL.
source | Source select for PLL. If you are using HSE you must enable it first (see enableHse()). |
factors | Struct with all pll factors. |
waitCycles | Number of cycles to wait for the pll to stabilise. Default: 2048. |
|
static |
Set flash latency for CPU frequency and voltage. Does nothing if CPU frequency is too high for the available voltage.
<=CPU_Frequency | flash latency has been set correctly. |
>CPU_Frequency | requested frequency too high for voltage. |