mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-09-13 06:31:57 +00:00
The patch adds a driver for STM32F10x series RCC (Reset and Clock Control) subsystem. The module is primarily responsible for setting up of MCU's clock tree. In particular the driver sets up SYSCLK, PLL (with source configuration), AHB prescaler, and APB1/APB2 prescalers. As part of this functionality, the subsystem can enable/disable clock signal for particular peripherals, thus reducing the power consumption of the MCU. The driver implements clock control driver API. However, subsystem IDs being HW specific are exposed in driver public header that must be included by callers. The driver registers a single device using a common name STM32_CLOCK_CONTROL_NAME. The device is initialized at the PRIMARY level with priority 1. This allows the initialization to take place right after SoC initialization routine. The driver depends on selection of SOC_STM32F1X config option and is MCU specific. Change-Id: I8bea5db20726a24bce7b7ffe0b95de543240429a Origin: Original Signed-off-by: Maciej Borzecki <maciek.borzecki@gmail.com>
113 lines
2.6 KiB
Plaintext
113 lines
2.6 KiB
Plaintext
# Kconfig - STM32F1 MCU clock control driver config
|
|
#
|
|
# Copyright (c) 2016 Open-RnD Sp. z o.o.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
|
|
if SOC_STM32F1X
|
|
|
|
config CLOCK_CONTROL_STM32F10X
|
|
bool
|
|
prompt "STM32F10x Reset & Clock Control"
|
|
depends on CLOCK_CONTROL && SOC_STM32F1X
|
|
default y if SOC_STM32F1X
|
|
help
|
|
Enable driver for Reset & Clock Control subsystem found
|
|
in STM32F1 family of MCUs
|
|
|
|
config CLOCK_CONTROL_STM32F10X_DEVICE_PRIORITY
|
|
int "Clock Control Device Priority"
|
|
default 1
|
|
depends on CLOCK_CONTROL_STM32F10X
|
|
help
|
|
This option controls the priority of clock control
|
|
device initialization. Higher priority ensures that the device
|
|
is initialized earlier in the startup cycle. If unsure, leave
|
|
at default value 1
|
|
|
|
choice
|
|
prompt "STM32F10x System Clock Source"
|
|
depends on CLOCK_CONTROL_STM32F10X
|
|
|
|
config CLOCK_STM32F10X_SYSCLK_SRC_HSI
|
|
bool "HSI"
|
|
help
|
|
Use HSI as source of SYSCLK
|
|
|
|
config CLOCK_STM32F10X_SYSCLK_SRC_HSE
|
|
bool "HSE"
|
|
help
|
|
Use HSE as source of SYSCLK
|
|
|
|
config CLOCK_STM32F10X_SYSCLK_SRC_PLL
|
|
bool "PLL"
|
|
help
|
|
Use PLL as source of SYSCLK
|
|
|
|
endchoice
|
|
|
|
choice
|
|
prompt "STM32F10x PLL Clock Source"
|
|
depends on CLOCK_CONTROL_STM32F10X
|
|
|
|
config CLOCK_STM32F10X_PLL_SRC_HSI
|
|
bool "HSI"
|
|
help
|
|
Use HSI as source of PLL
|
|
|
|
config CLOCK_STM32F10X_PLL_SRC_PREDIV1
|
|
bool "PREDIV1"
|
|
help
|
|
Use PREDIV1 as source of PLL
|
|
|
|
endchoice
|
|
|
|
config CLOCK_STM32F10X_PLL_MULTIPLIER
|
|
int "PLL multiplier"
|
|
depends on CLOCK_CONTROL_STM32F10X
|
|
default 9
|
|
range 2 16
|
|
help
|
|
PLL multiplier, allowed values: 2-16
|
|
|
|
config CLOCK_STM32F10X_AHB_PRESCALER
|
|
int "AHB prescaler"
|
|
depends on CLOCK_CONTROL_STM32F10X
|
|
default 0
|
|
range 0 512
|
|
help
|
|
AHB prescaler, allowed values: 0, 2, 4, 8, 16, 64, 128,
|
|
256, 512.
|
|
|
|
config CLOCK_STM32F10X_APB1_PRESCALER
|
|
int "APB1 prescaler"
|
|
depends on CLOCK_CONTROL_STM32F10X
|
|
default 0
|
|
range 0 16
|
|
help
|
|
APB1 Low speed clock (PCLK1) prescaler, allowed values:
|
|
0, 2, 4, 8, 16
|
|
|
|
config CLOCK_STM32F10X_APB2_PRESCALER
|
|
int "APB2 prescaler"
|
|
depends on CLOCK_CONTROL_STM32F10X
|
|
default 0
|
|
range 0 16
|
|
help
|
|
APB2 High speed clock (PCLK2) prescaler, allowed values:
|
|
0, 2, 4, 8, 16
|
|
|
|
endif
|
|
|