diff --git a/cpu/stm32/kconfigs/Kconfig.clk b/cpu/stm32/kconfigs/Kconfig.clk index bf5cbb9f3e..f30d26338d 100644 --- a/cpu/stm32/kconfigs/Kconfig.clk +++ b/cpu/stm32/kconfigs/Kconfig.clk @@ -5,6 +5,11 @@ # directory for more details. # +config CLOCK_HAS_NO_MCO_PRE + bool + help + Indicates that the CPU has no MCO prescaler + menu "STM32 clock configuration" depends on !CPU_FAM_F2 && !CPU_FAM_F4 && !CPU_FAM_F7 @@ -368,4 +373,86 @@ config CLOCK_APB2_DIV default 8 if CLOCK_APB2_DIV_8 default 16 if CLOCK_APB2_DIV_16 +if CPU_FAM_F0 || CPU_FAM_F1 || CPU_FAM_F3 || CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 || CPU_FAM_L4 || CPU_FAM_WB +config CLOCK_ENABLE_MCO + bool "Enable MCU Clock Output (MCO) on PA8" + +choice +bool "MCO source" +depends on CLOCK_ENABLE_MCO +default CLOCK_MCO_USE_PLLCLK + +config CLOCK_MCO_USE_PLLCLK + bool "Use PLLCLK as MCO source" + +config CLOCK_MCO_USE_HSE + bool "Use HSE as MCO source" + +config CLOCK_MCO_USE_HSI + bool "Use HSI as MCO source" + +config CLOCK_MCO_USE_LSE + bool "Use LSE as MCO source" + depends on CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 || CPU_FAM_L4 || CPU_FAM_WB + +config CLOCK_MCO_USE_LSI + bool "Use LSI as MCO source" + depends on CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 || CPU_FAM_L4 || CPU_FAM_WB + +config CLOCK_MCO_USE_MSI + bool "Use MSI as MCO source" + depends on CPU_FAM_L0 || CPU_FAM_L1 || CPU_FAM_L4 || CPU_FAM_WB + +config CLOCK_MCO_USE_SYSCLK + bool "Use SYSCLK as MCO source" + +endchoice + +choice +bool "MCO prescaler" +depends on !CLOCK_HAS_NO_MCO_PRE && CLOCK_ENABLE_MCO +default CLOCK_MCO_PRE_1 + +config CLOCK_MCO_PRE_1 + bool "Divide MCO by 1" + +config CLOCK_MCO_PRE_2 + bool "Divide MCO by 2" + +config CLOCK_MCO_PRE_4 + bool "Divide MCO by 4" + +config CLOCK_MCO_PRE_8 + bool "Divide MCO by 8" + +config CLOCK_MCO_PRE_16 + bool "Divide MCO by 16" + +config CLOCK_MCO_PRE_32 + bool "Divide MCO by 32" + depends on !CPU_FAM_G4 && !CPU_FAM_L0 && !CPU_FAM_L1 && !CPU_FAM_L4 && !CPU_FAM_WB + +config CLOCK_MCO_PRE_64 + bool "Divide MCO by 64" + depends on !CPU_FAM_G4 && !CPU_FAM_L0 && !CPU_FAM_L1 && !CPU_FAM_L4 && !CPU_FAM_WB + +config CLOCK_MCO_PRE_128 + bool "Divide MCO by 128" + depends on !CPU_FAM_G4 && !CPU_FAM_L0 && !CPU_FAM_L1 && !CPU_FAM_L4 && !CPU_FAM_WB + +endchoice + +config CLOCK_MCO_PRE + int + default 2 if CLOCK_MCO_PRE_2 + default 4 if CLOCK_MCO_PRE_4 + default 8 if CLOCK_MCO_PRE_8 + default 16 if CLOCK_MCO_PRE_16 + default 32 if CLOCK_MCO_PRE_32 + default 64 if CLOCK_MCO_PRE_64 + default 128 if CLOCK_MCO_PRE_128 + default 1 + +endif # CPU_FAM_F0 || CPU_FAM_F1 || CPU_FAM_F3 || CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 || CPU_FAM_L4 || CPU_FAM_WB + endmenu diff --git a/cpu/stm32/kconfigs/f0/Kconfig.lines b/cpu/stm32/kconfigs/f0/Kconfig.lines index e5c49e4152..ea0c5682f0 100644 --- a/cpu/stm32/kconfigs/f0/Kconfig.lines +++ b/cpu/stm32/kconfigs/f0/Kconfig.lines @@ -17,6 +17,7 @@ config CPU_LINE_STM32F030X6 config CPU_LINE_STM32F030X8 bool select CPU_FAM_F0 + select CLOCK_HAS_NO_MCO_PRE config CPU_LINE_STM32F030XC bool @@ -41,10 +42,12 @@ config CPU_LINE_STM32F048XX config CPU_LINE_STM32F051X8 bool select CPU_FAM_F0 + select CLOCK_HAS_NO_MCO_PRE config CPU_LINE_STM32F058XX bool select CPU_FAM_F0 + select CLOCK_HAS_NO_MCO_PRE config CPU_LINE_STM32F070X6 bool diff --git a/cpu/stm32/kconfigs/f1/Kconfig b/cpu/stm32/kconfigs/f1/Kconfig index 3cd94fefc2..dbd41b2bf0 100644 --- a/cpu/stm32/kconfigs/f1/Kconfig +++ b/cpu/stm32/kconfigs/f1/Kconfig @@ -15,6 +15,7 @@ config CPU_FAM_F1 select HAS_PERIPH_FLASHPAGE_RAW select HAS_PERIPH_WDT select HAS_BOOTLOADER_STM32 + select CLOCK_HAS_NO_MCO_PRE config CPU_FAM default "f1" if CPU_FAM_F1 diff --git a/cpu/stm32/kconfigs/f3/Kconfig.lines b/cpu/stm32/kconfigs/f3/Kconfig.lines index 32681ab63e..8a07aaf22f 100644 --- a/cpu/stm32/kconfigs/f3/Kconfig.lines +++ b/cpu/stm32/kconfigs/f3/Kconfig.lines @@ -21,6 +21,7 @@ config CPU_LINE_STM32F302X8 config CPU_LINE_STM32F302XC bool select CPU_FAM_F3 + select CLOCK_HAS_NO_MCO_PRE config CPU_LINE_STM32F302XE bool @@ -34,6 +35,7 @@ config CPU_LINE_STM32F303XC bool select CPU_FAM_F3 select HAS_CORTEXM_MPU + select CLOCK_HAS_NO_MCO_PRE config CPU_LINE_STM32F303XE bool @@ -55,14 +57,17 @@ config CPU_LINE_STM32F334X8 config CPU_LINE_STM32F358XX bool select CPU_FAM_F3 + select CLOCK_HAS_NO_MCO_PRE config CPU_LINE_STM32F373XC bool select CPU_FAM_F3 + select CLOCK_HAS_NO_MCO_PRE config CPU_LINE_STM32F378XX bool select CPU_FAM_F3 + select CLOCK_HAS_NO_MCO_PRE config CPU_LINE_STM32F398XX bool