|
| enum | PllSource : uint32_t { HsiDiv2 = 0,
HsePrediv = 1
} |
| |
| enum | AhbPrescaler : uint8_t {
Div1 = 0b0000,
Div2 = 0b1000,
Div4 = 0b1001,
Div8 = 0b1010,
Div16 = 0b1011,
Div64 = 0b1100,
Div128 = 0b1101,
Div256 = 0b1110,
Div512 = 0b1111
} |
| |
| enum | ApbPrescaler : uint8_t {
Div1 = 0b000,
Div2 = 0b100,
Div4 = 0b101,
Div8 = 0b110,
Div16 = 0b111
} |
| |
| enum | SystemClockSource : uint8_t { Hsi = 0b00,
Hse = 0b01,
Pll = 0b10
} |
| |
| enum | RealTimeClockSource : uint8_t { Disabled = 0,
Lse = 0b01,
Lsi = 0b10,
HseDiv32 = 0b11
} |
| |
| enum | UsbPrescaler { Div1_5,
Div1
} |
| |
| enum | I2sClockSource { System,
External
} |
| |
| enum | Adc12Prescaler : uint32_t {
Disabled = RCC_CFGR2_ADCPRE12_NO,
Div1 = RCC_CFGR2_ADCPRE12_DIV1,
Div2 = RCC_CFGR2_ADCPRE12_DIV2,
Div4 = RCC_CFGR2_ADCPRE12_DIV4,
Div6 = RCC_CFGR2_ADCPRE12_DIV6,
Div8 = RCC_CFGR2_ADCPRE12_DIV8,
Div10 = RCC_CFGR2_ADCPRE12_DIV10,
Div12 = RCC_CFGR2_ADCPRE12_DIV12,
Div16 = RCC_CFGR2_ADCPRE12_DIV16,
Div32 = RCC_CFGR2_ADCPRE12_DIV32,
Div64 = RCC_CFGR2_ADCPRE12_DIV64,
Div128 = RCC_CFGR2_ADCPRE12_DIV128,
Div256 = RCC_CFGR2_ADCPRE12_DIV256
} |
| |
| enum | Adc34Prescaler : uint32_t {
Disabled = RCC_CFGR2_ADCPRE34_NO,
Div1 = RCC_CFGR2_ADCPRE34_DIV1,
Div2 = RCC_CFGR2_ADCPRE34_DIV2,
Div4 = RCC_CFGR2_ADCPRE34_DIV4,
Div6 = RCC_CFGR2_ADCPRE34_DIV6,
Div8 = RCC_CFGR2_ADCPRE34_DIV8,
Div10 = RCC_CFGR2_ADCPRE34_DIV10,
Div12 = RCC_CFGR2_ADCPRE34_DIV12,
Div16 = RCC_CFGR2_ADCPRE34_DIV16,
Div32 = RCC_CFGR2_ADCPRE34_DIV32,
Div64 = RCC_CFGR2_ADCPRE34_DIV64,
Div128 = RCC_CFGR2_ADCPRE34_DIV128,
Div256 = RCC_CFGR2_ADCPRE34_DIV256
} |
| |
| enum | UartClockSource : uint32_t { Bus = 0b00,
System = 0b01,
Lse = 0b10,
Hsi = 0b11
} |
| |
| enum | I2cClockSource { Hsi,
System
} |
| |
| enum | TimClockSource { Bus,
Pll
} |
| |
| enum | McoClockSource : uint32_t {
Disabled = RCC_CFGR_MCO_NOCLOCK,
Lsi = RCC_CFGR_MCO_LSI,
Lse = RCC_CFGR_MCO_LSE,
SysClk = RCC_CFGR_MCO_SYSCLK,
Hsi = RCC_CFGR_MCO_HSI,
Hse = RCC_CFGR_MCO_HSE,
PllDiv2 = RCC_CFGR_MCO_PLL,
Pll = RCC_CFGR_MCO_PLL | RCC_CFGR_PLLNODIV
} |
| |
| enum | McoPrescaler : uint32_t {
Div1 = RCC_CFGR_MCOPRE_DIV1,
Div2 = RCC_CFGR_MCOPRE_DIV2,
Div4 = RCC_CFGR_MCOPRE_DIV4,
Div8 = RCC_CFGR_MCOPRE_DIV8,
Div16 = RCC_CFGR_MCOPRE_DIV16,
Div32 = RCC_CFGR_MCOPRE_DIV32,
Div64 = RCC_CFGR_MCOPRE_DIV64,
Div128 = RCC_CFGR_MCOPRE_DIV128
} |
| |
|
|
template<class... Signals> |
| static void | connect () |
| | Connect GPIO signals like MCO to the clock tree.
|
| |
|
template<Peripheral peripheral> |
| static void | enable () |
| | Enable the clock for a peripheral.
|
| |
|
template<Peripheral peripheral> |
| static bool | isEnabled () |
| | Check if a peripheral clock is enabled.
|
| |
|
template<Peripheral peripheral> |
| static void | disable () |
| | Disable the clock for a peripheral.
|
| |
| template<uint32_t Core_Hz, uint16_t Core_mV = 3300> |
| static uint32_t | setFlashLatency () |
| |
|
template<uint32_t Core_Hz> |
| static void | updateCoreFrequency () |
| | Update the SystemCoreClock and delay variables.
|
| |
|
static bool | enableHsiClock (uint32_t waitLoops=0x10000) |
| |
|
static bool | enableHseClock (uint32_t waitLoops=0x10000) |
| |
|
static bool | enableHseCrystal (uint32_t waitLoops=0x10000) |
| |
|
static bool | enableLsiClock (uint32_t waitLoops=0x10000) |
| |
|
static bool | enableLseClock (uint32_t waitLoops=0x10000) |
| |
|
static bool | enableLseCrystal (uint32_t waitLoops=0x10000) |
| |
|
static bool | enablePll (PllSource src, const PllConfig &cfg, uint32_t waitLoops=0x10000) |
| |
|
static bool | disablePll (uint32_t waitLoops=0x10000) |
| |
|
static void | setAhbPrescaler (AhbPrescaler prescaler) |
| |
|
static void | setApb1Prescaler (ApbPrescaler prescaler) |
| |
|
static void | setApb2Prescaler (ApbPrescaler prescaler) |
| |
|
static bool | enableSystemClock (SystemClockSource src, uint32_t waitLoops=0x10000) |
| |
|
static void | setRealTimeClockSource (RealTimeClockSource src) |
| |
|
static void | setUsbClockPrescaler (UsbPrescaler prescaler) |
| |
|
static void | setI2sClockSource (I2sClockSource src) |
| |
|
static void | setAdc12Prescaler (Adc12Prescaler prescaler) |
| |
|
static void | setAdc34Prescaler (Adc34Prescaler prescaler) |
| |
|
static void | setUsart1ClockSource (UartClockSource src) |
| |
|
static void | setUsart2ClockSource (UartClockSource src) |
| |
|
static void | setUsart3ClockSource (UartClockSource src) |
| |
|
static void | setUart4ClockSource (UartClockSource src) |
| |
|
static void | setUart5ClockSource (UartClockSource src) |
| |
|
static void | setI2c1ClockSource (I2cClockSource src) |
| |
|
static void | setI2c2ClockSource (I2cClockSource src) |
| |
|
static void | setI2c3ClockSource (I2cClockSource src) |
| |
|
static void | setTim1ClockSource (TimClockSource src) |
| |
|
static void | setTim8ClockSource (TimClockSource src) |
| |
|
static void | setTim20ClockSource (TimClockSource src) |
| |
|
static void | setMcoClockSource (McoClockSource src, McoPrescaler prescaler=McoPrescaler::Div1) |
| |
Reset and Clock Control for STM32F3 devices.
This class abstracts access to clock settings on the STM32F3 family. 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.
- Author
- Niklas Hauser