modm API documentation
modm::platform::ClockControl Class Reference

Public Types

enum  Clock {
  Gpout0 = 0, Gpout1 = 1, Gpout2 = 2, Gpout3 = 3,
  Ref = 4, Sys = 5, Peri = 6, Usb = 7,
  Adc = 8, Rtc = 9
}
 
enum  ClockSrc {
  Adc, Gpin0, Gpin1, PllSys,
  PllUsb, Ref, Rosc, Rtc,
  Sys, Usb, Xosc
}
 
enum  Pll { Sys, Usb }
 

Static Public Member Functions

static void disableResus ()
 
static void enableExternalCrystal (uint32_t freq, uint16_t delay_multiplier=1)
 
template<Clock clk>
static void disableAux ()
 
template<Pll pll_name, uint32_t refdiv, uint32_t pll_mul, uint32_t post_div1, uint32_t post_div2>
static void initPll ()
 
template<Clock clk, ClockSrc src, uint32_t SrcFreq, uint32_t TargetFreq>
static void configureClock ()
 
template<uint32_t Core_Hz>
static void updateCoreFrequency ()
 

Static Public Attributes

static constexpr uint32_t BootFrequency = 125'000'000
 

Member Function Documentation

template<Clock clk, ClockSrc src, uint32_t SrcFreq, uint32_t TargetFreq>
static void modm::platform::ClockControl::configureClock ( )
inlinestatic

Valid connections are:

  • Clock::Gpout0 -> ClockSrc::PllSys
  • Clock::Gpout0 -> ClockSrc::Gpin0
  • Clock::Gpout0 -> ClockSrc::Gpin1
  • Clock::Gpout0 -> ClockSrc::PllUsb
  • Clock::Gpout0 -> ClockSrc::Rosc
  • Clock::Gpout0 -> ClockSrc::Xosc
  • Clock::Gpout0 -> ClockSrc::Sys
  • Clock::Gpout0 -> ClockSrc::Usb
  • Clock::Gpout0 -> ClockSrc::Adc
  • Clock::Gpout0 -> ClockSrc::Rtc
  • Clock::Gpout0 -> ClockSrc::Ref
  • Clock::Gpout1 -> ClockSrc::PllSys
  • Clock::Gpout1 -> ClockSrc::Gpin0
  • Clock::Gpout1 -> ClockSrc::Gpin1
  • Clock::Gpout1 -> ClockSrc::PllUsb
  • Clock::Gpout1 -> ClockSrc::Rosc
  • Clock::Gpout1 -> ClockSrc::Xosc
  • Clock::Gpout1 -> ClockSrc::Sys
  • Clock::Gpout1 -> ClockSrc::Usb
  • Clock::Gpout1 -> ClockSrc::Adc
  • Clock::Gpout1 -> ClockSrc::Rtc
  • Clock::Gpout1 -> ClockSrc::Ref
  • Clock::Gpout2 -> ClockSrc::PllSys
  • Clock::Gpout2 -> ClockSrc::Gpin0
  • Clock::Gpout2 -> ClockSrc::Gpin1
  • Clock::Gpout2 -> ClockSrc::PllUsb
  • Clock::Gpout2 -> ClockSrc::Rosc
  • Clock::Gpout2 -> ClockSrc::Xosc
  • Clock::Gpout2 -> ClockSrc::Sys
  • Clock::Gpout2 -> ClockSrc::Usb
  • Clock::Gpout2 -> ClockSrc::Adc
  • Clock::Gpout2 -> ClockSrc::Rtc
  • Clock::Gpout2 -> ClockSrc::Ref
  • Clock::Gpout3 -> ClockSrc::PllSys
  • Clock::Gpout3 -> ClockSrc::Gpin0
  • Clock::Gpout3 -> ClockSrc::Gpin1
  • Clock::Gpout3 -> ClockSrc::PllUsb
  • Clock::Gpout3 -> ClockSrc::Rosc
  • Clock::Gpout3 -> ClockSrc::Xosc
  • Clock::Gpout3 -> ClockSrc::Sys
  • Clock::Gpout3 -> ClockSrc::Usb
  • Clock::Gpout3 -> ClockSrc::Adc
  • Clock::Gpout3 -> ClockSrc::Rtc
  • Clock::Gpout3 -> ClockSrc::Ref
  • Clock::Ref -> ClockSrc::Rosc
  • Clock::Ref -> ClockSrc::Xosc
  • Clock::Ref -> ClockSrc::PllUsb
  • Clock::Ref -> ClockSrc::Gpin0
  • Clock::Ref -> ClockSrc::Gpin1
  • Clock::Sys -> ClockSrc::Ref
  • Clock::Sys -> ClockSrc::PllSys
  • Clock::Sys -> ClockSrc::PllUsb
  • Clock::Sys -> ClockSrc::Rosc
  • Clock::Sys -> ClockSrc::Xosc
  • Clock::Sys -> ClockSrc::Gpin0
  • Clock::Sys -> ClockSrc::Gpin1
  • Clock::Peri -> ClockSrc::Sys
  • Clock::Peri -> ClockSrc::PllSys
  • Clock::Peri -> ClockSrc::PllUsb
  • Clock::Peri -> ClockSrc::Rosc
  • Clock::Peri -> ClockSrc::Xosc
  • Clock::Peri -> ClockSrc::Gpin0
  • Clock::Peri -> ClockSrc::Gpin1
  • Clock::Usb -> ClockSrc::PllUsb
  • Clock::Usb -> ClockSrc::PllSys
  • Clock::Usb -> ClockSrc::Rosc
  • Clock::Usb -> ClockSrc::Xosc
  • Clock::Usb -> ClockSrc::Gpin0
  • Clock::Usb -> ClockSrc::Gpin1
  • Clock::Adc -> ClockSrc::PllUsb
  • Clock::Adc -> ClockSrc::PllSys
  • Clock::Adc -> ClockSrc::Rosc
  • Clock::Adc -> ClockSrc::Xosc
  • Clock::Adc -> ClockSrc::Gpin0
  • Clock::Adc -> ClockSrc::Gpin1
  • Clock::Rtc -> ClockSrc::PllUsb
  • Clock::Rtc -> ClockSrc::PllSys
  • Clock::Rtc -> ClockSrc::Rosc
  • Clock::Rtc -> ClockSrc::Xosc
  • Clock::Rtc -> ClockSrc::Gpin0
  • Clock::Rtc -> ClockSrc::Gpin1

The documentation for this class was generated from the following files: