stm32g4: Implement RCC
Co-authored-by: Sam Kirkham <sam.kirkham@codethink.co.uk>
This commit is contained in:
@@ -8,6 +8,8 @@
|
||||
* @version 1.0.0
|
||||
*
|
||||
* @author @htmlonly © @endhtmlonly 2020 Karl Palsson <karlp@tweak.net.au>
|
||||
* @author @htmlonly © @endhtmlonly 2020 Sam Kirkham <sam.kirkham@codethink.co.uk>
|
||||
* @author @htmlonly © @endhtmlonly 2020 Ben Brewer <ben.brewer@codethink.co.uk>
|
||||
*
|
||||
* LGPL License Terms @ref lgpl_license
|
||||
*/
|
||||
@@ -16,6 +18,8 @@
|
||||
* This file is part of the libopencm3 project.
|
||||
*
|
||||
* Copyright (C) 2020 Karl Palsson <karlp@tweak.net.au>
|
||||
* Copyright (C) 2020 Sam Kirkham <sam.kirkham@codethink.co.uk>
|
||||
* Copyright (C) 2020 Ben Brewer <ben.brewer@codethink.co.uk>
|
||||
*
|
||||
* This library is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
@@ -37,6 +41,8 @@
|
||||
#ifndef LIBOPENCM3_RCC_H
|
||||
#define LIBOPENCM3_RCC_H
|
||||
|
||||
#include <libopencm3/stm32/pwr.h>
|
||||
|
||||
/** @defgroup rcc_registers RCC Registers
|
||||
* @{
|
||||
*/
|
||||
@@ -47,24 +53,42 @@
|
||||
#define RCC_CIER MMIO32(RCC_BASE + 0x18)
|
||||
#define RCC_CIFR MMIO32(RCC_BASE + 0x1c)
|
||||
#define RCC_CICR MMIO32(RCC_BASE + 0x20)
|
||||
#define RCC_AHB1RSTR MMIO32(RCC_BASE + 0x28)
|
||||
#define RCC_AHB2RSTR MMIO32(RCC_BASE + 0x2c)
|
||||
#define RCC_AHB3RSTR MMIO32(RCC_BASE + 0x30)
|
||||
#define RCC_APB1RSTR1 MMIO32(RCC_BASE + 0x38)
|
||||
#define RCC_APB1RSTR2 MMIO32(RCC_BASE + 0x3c)
|
||||
#define RCC_APB2RSTR MMIO32(RCC_BASE + 0x40)
|
||||
#define RCC_AHB1ENR MMIO32(RCC_BASE + 0x48)
|
||||
#define RCC_AHB2ENR MMIO32(RCC_BASE + 0x4c)
|
||||
#define RCC_AHB3ENR MMIO32(RCC_BASE + 0x50)
|
||||
#define RCC_APB1ENR1 MMIO32(RCC_BASE + 0x58)
|
||||
#define RCC_APB1ENR2 MMIO32(RCC_BASE + 0x5c)
|
||||
#define RCC_APB2ENR MMIO32(RCC_BASE + 0x60)
|
||||
#define RCC_AHB1SMENR MMIO32(RCC_BASE + 0x68)
|
||||
#define RCC_AHB2SMENR MMIO32(RCC_BASE + 0x6c)
|
||||
#define RCC_AHB3SMENR MMIO32(RCC_BASE + 0x70)
|
||||
#define RCC_APB1SMENR1 MMIO32(RCC_BASE + 0x78)
|
||||
#define RCC_APB1SMENR2 MMIO32(RCC_BASE + 0x7c)
|
||||
#define RCC_APB2SMENR MMIO32(RCC_BASE + 0x80)
|
||||
#define RCC_AHB1RSTR_OFFSET 0x28
|
||||
#define RCC_AHB1RSTR MMIO32(RCC_BASE + RCC_AHB1RSTR_OFFSET)
|
||||
#define RCC_AHB2RSTR_OFFSET 0x2c
|
||||
#define RCC_AHB2RSTR MMIO32(RCC_BASE + RCC_AHB2RSTR_OFFSET)
|
||||
#define RCC_AHB3RSTR_OFFSET 0x30
|
||||
#define RCC_AHB3RSTR MMIO32(RCC_BASE + RCC_AHB3RSTR_OFFSET)
|
||||
#define RCC_APB1RSTR1_OFFSET 0x38
|
||||
#define RCC_APB1RSTR1 MMIO32(RCC_BASE + RCC_APB1RSTR1_OFFSET)
|
||||
#define RCC_APB1RSTR2_OFFSET 0x3c
|
||||
#define RCC_APB1RSTR2 MMIO32(RCC_BASE + RCC_APB1RSTR2_OFFSET)
|
||||
#define RCC_APB2RSTR_OFFSET 0x40
|
||||
#define RCC_APB2RSTR MMIO32(RCC_BASE + RCC_APB2RSTR_OFFSET)
|
||||
#define RCC_AHB1ENR_OFFSET 0x48
|
||||
#define RCC_AHB1ENR MMIO32(RCC_BASE + RCC_AHB1ENR_OFFSET)
|
||||
#define RCC_AHB2ENR_OFFSET 0x4c
|
||||
#define RCC_AHB2ENR MMIO32(RCC_BASE + RCC_AHB2ENR_OFFSET)
|
||||
#define RCC_AHB3ENR_OFFSET 0x50
|
||||
#define RCC_AHB3ENR MMIO32(RCC_BASE + RCC_AHB3ENR_OFFSET)
|
||||
#define RCC_APB1ENR1_OFFSET 0x58
|
||||
#define RCC_APB1ENR1 MMIO32(RCC_BASE + RCC_APB1ENR1_OFFSET)
|
||||
#define RCC_APB1ENR2_OFFSET 0x5c
|
||||
#define RCC_APB1ENR2 MMIO32(RCC_BASE + RCC_APB1ENR2_OFFSET)
|
||||
#define RCC_APB2ENR_OFFSET 0x60
|
||||
#define RCC_APB2ENR MMIO32(RCC_BASE + RCC_APB2ENR_OFFSET)
|
||||
#define RCC_AHB1SMENR_OFFSET 0x68
|
||||
#define RCC_AHB1SMENR MMIO32(RCC_BASE + RCC_AHB1SMENR_OFFSET)
|
||||
#define RCC_AHB2SMENR_OFFSET 0x6c
|
||||
#define RCC_AHB2SMENR MMIO32(RCC_BASE + RCC_AHB2SMENR_OFFSET)
|
||||
#define RCC_AHB3SMENR_OFFSET 0x70
|
||||
#define RCC_AHB3SMENR MMIO32(RCC_BASE + RCC_AHB3SMENR_OFFSET)
|
||||
#define RCC_APB1SMENR1_OFFSET 0x78
|
||||
#define RCC_APB1SMENR1 MMIO32(RCC_BASE + RCC_APB1SMENR1_OFFSET)
|
||||
#define RCC_APB1SMENR2_OFFSET 0x7c
|
||||
#define RCC_APB1SMENR2 MMIO32(RCC_BASE + RCC_APB1SMENR2_OFFSET)
|
||||
#define RCC_APB2SMENR_OFFSET 0x80
|
||||
#define RCC_APB2SMENR MMIO32(RCC_BASE + RCC_APB2SMENR_OFFSET)
|
||||
#define RCC_CCIPR MMIO32(RCC_BASE + 0x88)
|
||||
#define RCC_BDCR MMIO32(RCC_BASE + 0x90)
|
||||
#define RCC_CSR MMIO32(RCC_BASE + 0x94)
|
||||
@@ -91,7 +115,7 @@
|
||||
* @{
|
||||
*/
|
||||
#define RCC_ICSCR_HSITRIM_SHIFT 24
|
||||
#define RCC_ICSCR_HSITRIM_MASK 0x1f
|
||||
#define RCC_ICSCR_HSITRIM_MASK 0x7f
|
||||
#define RCC_ICSCR_HSICAL_SHIFT 16
|
||||
#define RCC_ICSCR_HSICAL_MASK 0xff
|
||||
/**@}*/
|
||||
@@ -173,9 +197,12 @@
|
||||
/** @defgroup rcc_pllcfgr_values RCC_PLLCFGR - PLL Configuration Register
|
||||
* @{
|
||||
*/
|
||||
#define RCC_CFGR_PLLPDIV_MASK 0x1f
|
||||
#define RCC_CFGR_PLLPDIV_SHIFT 27
|
||||
#define RCC_PLLCFGR_PLLPDIV_MASK 0x1f
|
||||
#define RCC_PLLCFGR_PLLPDIV_SHIFT 27
|
||||
|
||||
/** @defgroup rcc_pllcfgr_pllr RCC_PLLCFGR PLLR values
|
||||
* Set these bits correctly not to exceed 170 MHz on this domain.
|
||||
* @{*/
|
||||
#define RCC_PLLCFGR_PLLR_DIV2 0
|
||||
#define RCC_PLLCFGR_PLLR_DIV4 1
|
||||
#define RCC_PLLCFGR_PLLR_DIV6 2
|
||||
@@ -198,17 +225,17 @@
|
||||
#define RCC_PLLCFGR_PLLP BIT17
|
||||
#define RCC_PLLCFGR_PLLP_DIV7 0
|
||||
#define RCC_PLLCFGR_PLLP_DIV17 RCC_PLLCFGR_PLLP
|
||||
#define RCC_PLLPEN (1 << 16)
|
||||
#define RCC_PLLCFGR_PLLPEN (1 << 16)
|
||||
|
||||
/** @defgroup rcc_pllcfgr_plln RCC_PLLCFGR PLLN values
|
||||
* Allowed values 8 <= n <= 127, VCO output between 64 and 344 MHz
|
||||
* Allowed values 8 <= n <= 127, VCO output limits specified in datasheet
|
||||
* @{*/
|
||||
#define RCC_PLLCFGR_PLLN_SHIFT 8
|
||||
#define RCC_PLLCFGR_PLLN_MASK 0x7f
|
||||
/**@}*/
|
||||
|
||||
/** @defgroup rcc_pllcfgr_pllm RCC_PLLCFGR PLLM values
|
||||
* Allowed values 1 <= m <= 16, VCO input between 2.66 and 8 MHz
|
||||
* Allowed values 1 <= m <= 16, VCO input limits specified in datasheet
|
||||
* @{*/
|
||||
#define RCC_PLLCFGR_PLLM_SHIFT 0x4
|
||||
#define RCC_PLLCFGR_PLLM_MASK 0xf
|
||||
@@ -270,7 +297,7 @@
|
||||
#define RCC_AHB1RSTR_CRCRST (1 << 12)
|
||||
#define RCC_AHB1RSTR_FLASHRST (1 << 8)
|
||||
#define RCC_AHB1RSTR_FMACRST (1 << 4)
|
||||
#define RCC_AHB1RSTR_CORDIC2RST (1 << 3)
|
||||
#define RCC_AHB1RSTR_CORDICRST (1 << 3)
|
||||
#define RCC_AHB1RSTR_DMAMUX1RST (1 << 2)
|
||||
#define RCC_AHB1RSTR_DMA2RST (1 << 1)
|
||||
#define RCC_AHB1RSTR_DMA1RST (1 << 0)
|
||||
@@ -612,6 +639,8 @@
|
||||
/** defgroup rcc_ccipr2_values RCC_CCIPR2 - Peripherals independent clock config register 2
|
||||
* @{
|
||||
*/
|
||||
#define RCC_CCIPR2_SEL_MASK 0x3
|
||||
|
||||
#define RCC_CCIPR2_QSPI_SYS 0
|
||||
#define RCC_CCIPR2_QSPI_HSI16 1
|
||||
#define RCC_CCIPR2_QSPI_PLLQ 2
|
||||
@@ -683,6 +712,19 @@
|
||||
#define RCC_CRRCR_HSI48ON BIT0
|
||||
/**@}*/
|
||||
|
||||
/** Enumerations for core system/bus clocks for user/driver/system access to base bus clocks
|
||||
* not directly associated with a peripheral. */
|
||||
enum rcc_clock_source {
|
||||
RCC_CPUCLK,
|
||||
RCC_SYSCLK,
|
||||
RCC_PERCLK,
|
||||
RCC_SYSTICKCLK,
|
||||
RCC_HCLK3,
|
||||
RCC_AHBCLK, /* AHB1,2,4 all share base HCLK. */
|
||||
RCC_APB1CLK, /* Note: APB1 and PCLK1 in manual */
|
||||
RCC_APB2CLK, /* Note: APB2 and PCLK2 in manual */
|
||||
};
|
||||
|
||||
/* --- Variable definitions ------------------------------------------------ */
|
||||
|
||||
extern uint32_t rcc_ahb_frequency;
|
||||
@@ -691,242 +733,303 @@ extern uint32_t rcc_apb2_frequency;
|
||||
|
||||
/* --- Function prototypes ------------------------------------------------- */
|
||||
|
||||
enum rcc_osc {
|
||||
RCC_PLL, RCC_HSE, RCC_HSI16, RCC_LSE, RCC_LSI, RCC_HSI48
|
||||
enum rcc_clock_3v3 {
|
||||
RCC_CLOCK_3V3_24MHZ,
|
||||
RCC_CLOCK_3V3_48MHZ,
|
||||
RCC_CLOCK_3V3_96MHZ,
|
||||
RCC_CLOCK_3V3_170MHZ,
|
||||
RCC_CLOCK_3V3_END
|
||||
};
|
||||
|
||||
struct rcc_clock_scale {
|
||||
uint8_t pllm;
|
||||
uint16_t plln;
|
||||
uint8_t pllp;
|
||||
uint8_t pllq;
|
||||
uint8_t pllr;
|
||||
uint8_t pll_source;
|
||||
uint8_t hpre;
|
||||
uint8_t ppre1;
|
||||
uint8_t ppre2;
|
||||
enum pwr_vos_scale vos_scale;
|
||||
bool boost;
|
||||
uint32_t flash_config;
|
||||
uint8_t flash_waitstates;
|
||||
uint32_t ahb_frequency;
|
||||
uint32_t apb1_frequency;
|
||||
uint32_t apb2_frequency;
|
||||
};
|
||||
|
||||
extern const struct rcc_clock_scale rcc_hsi_configs[RCC_CLOCK_3V3_END];
|
||||
extern const struct rcc_clock_scale rcc_hse_8mhz_3v3[RCC_CLOCK_3V3_END];
|
||||
extern const struct rcc_clock_scale rcc_hse_12mhz_3v3[RCC_CLOCK_3V3_END];
|
||||
extern const struct rcc_clock_scale rcc_hse_16mhz_3v3[RCC_CLOCK_3V3_END];
|
||||
|
||||
enum rcc_osc {
|
||||
RCC_HSI48,
|
||||
RCC_PLL,
|
||||
RCC_HSE,
|
||||
RCC_HSI16,
|
||||
RCC_LSE,
|
||||
RCC_LSI
|
||||
};
|
||||
|
||||
#define _REG_BIT(base, bit) (((base) << 5) + (bit))
|
||||
|
||||
enum rcc_periph_clken {
|
||||
|
||||
/* AHB1 peripherals */
|
||||
RCC_CRC = _REG_BIT(0x48, 12),
|
||||
RCC_FLASH = _REG_BIT(0x48, 8),
|
||||
RCC_FMAC = _REG_BIT(0x48, 4),
|
||||
RCC_CORDIC = _REG_BIT(0x48, 3),
|
||||
RCC_DMAMUX1 = _REG_BIT(0x48, 2),
|
||||
RCC_DMA2 = _REG_BIT(0x48, 1),
|
||||
RCC_DMA1 = _REG_BIT(0x48, 0),
|
||||
RCC_CRC = _REG_BIT(RCC_AHB1ENR_OFFSET, 12),
|
||||
RCC_FLASH = _REG_BIT(RCC_AHB1ENR_OFFSET, 8),
|
||||
RCC_FMAC = _REG_BIT(RCC_AHB1ENR_OFFSET, 4),
|
||||
RCC_CORDIC = _REG_BIT(RCC_AHB1ENR_OFFSET, 3),
|
||||
RCC_DMAMUX1 = _REG_BIT(RCC_AHB1ENR_OFFSET, 2),
|
||||
RCC_DMA2 = _REG_BIT(RCC_AHB1ENR_OFFSET, 1),
|
||||
RCC_DMA1 = _REG_BIT(RCC_AHB1ENR_OFFSET, 0),
|
||||
|
||||
/* AHB2 peripherals */
|
||||
RCC_RNG = _REG_BIT(0x4c, 26),
|
||||
RCC_AES = _REG_BIT(0x4c, 24),
|
||||
RCC_DAC4 = _REG_BIT(0x4c, 19),
|
||||
RCC_DAC3 = _REG_BIT(0x4c, 18),
|
||||
RCC_DAC2 = _REG_BIT(0x4c, 17),
|
||||
RCC_DAC1 = _REG_BIT(0x4c, 16),
|
||||
RCC_ADC345 = _REG_BIT(0x4c, 14),
|
||||
RCC_ADC12 = _REG_BIT(0x4c, 13),
|
||||
RCC_ADC1 = _REG_BIT(0x4c, 13), /* Compatibility */
|
||||
RCC_GPIOG = _REG_BIT(0x4c, 6),
|
||||
RCC_GPIOF = _REG_BIT(0x4c, 5),
|
||||
RCC_GPIOE = _REG_BIT(0x4c, 4),
|
||||
RCC_GPIOD = _REG_BIT(0x4c, 3),
|
||||
RCC_GPIOC = _REG_BIT(0x4c, 2),
|
||||
RCC_GPIOB = _REG_BIT(0x4c, 1),
|
||||
RCC_GPIOA = _REG_BIT(0x4c, 0),
|
||||
RCC_RNG = _REG_BIT(RCC_AHB2ENR_OFFSET, 26),
|
||||
RCC_AES = _REG_BIT(RCC_AHB2ENR_OFFSET, 24),
|
||||
RCC_DAC4 = _REG_BIT(RCC_AHB2ENR_OFFSET, 19),
|
||||
RCC_DAC3 = _REG_BIT(RCC_AHB2ENR_OFFSET, 18),
|
||||
RCC_DAC2 = _REG_BIT(RCC_AHB2ENR_OFFSET, 17),
|
||||
RCC_DAC1 = _REG_BIT(RCC_AHB2ENR_OFFSET, 16),
|
||||
RCC_ADC345 = _REG_BIT(RCC_AHB2ENR_OFFSET, 14),
|
||||
RCC_ADC12 = _REG_BIT(RCC_AHB2ENR_OFFSET, 13),
|
||||
RCC_ADC1 = _REG_BIT(RCC_AHB2ENR_OFFSET, 13), /* Compatibility */
|
||||
RCC_GPIOG = _REG_BIT(RCC_AHB2ENR_OFFSET, 6),
|
||||
RCC_GPIOF = _REG_BIT(RCC_AHB2ENR_OFFSET, 5),
|
||||
RCC_GPIOE = _REG_BIT(RCC_AHB2ENR_OFFSET, 4),
|
||||
RCC_GPIOD = _REG_BIT(RCC_AHB2ENR_OFFSET, 3),
|
||||
RCC_GPIOC = _REG_BIT(RCC_AHB2ENR_OFFSET, 2),
|
||||
RCC_GPIOB = _REG_BIT(RCC_AHB2ENR_OFFSET, 1),
|
||||
RCC_GPIOA = _REG_BIT(RCC_AHB2ENR_OFFSET, 0),
|
||||
|
||||
/* AHB3 peripherals */
|
||||
RCC_QSPI = _REG_BIT(0x50, 8),
|
||||
RCC_FMC = _REG_BIT(0x50, 0),
|
||||
RCC_QSPI = _REG_BIT(RCC_AHB3ENR_OFFSET, 8),
|
||||
RCC_FMC = _REG_BIT(RCC_AHB3ENR_OFFSET, 0),
|
||||
|
||||
/* APB1 peripherals */
|
||||
RCC_LPTIM1 = _REG_BIT(0x58, 31),
|
||||
RCC_I2C3 = _REG_BIT(0x58, 30),
|
||||
RCC_PWR = _REG_BIT(0x58, 28),
|
||||
RCC_FDCAN = _REG_BIT(0x58, 25),
|
||||
RCC_USB = _REG_BIT(0x58, 23),
|
||||
RCC_I2C2 = _REG_BIT(0x58, 22),
|
||||
RCC_I2C1 = _REG_BIT(0x58, 21),
|
||||
RCC_UART5 = _REG_BIT(0x58, 20),
|
||||
RCC_UART4 = _REG_BIT(0x58, 19),
|
||||
RCC_USART3 = _REG_BIT(0x58, 18),
|
||||
RCC_USART2 = _REG_BIT(0x58, 17),
|
||||
RCC_SPI3 = _REG_BIT(0x58, 15),
|
||||
RCC_SPI2 = _REG_BIT(0x58, 14),
|
||||
RCC_WWDG = _REG_BIT(0x58, 11),
|
||||
RCC_RTCAPB = _REG_BIT(0x58, 10),
|
||||
RCC_CRS = _REG_BIT(0x58, 8),
|
||||
RCC_TIM7 = _REG_BIT(0x58, 5),
|
||||
RCC_TIM6 = _REG_BIT(0x58, 4),
|
||||
RCC_TIM5 = _REG_BIT(0x58, 3),
|
||||
RCC_TIM4 = _REG_BIT(0x58, 2),
|
||||
RCC_TIM3 = _REG_BIT(0x58, 1),
|
||||
RCC_TIM2 = _REG_BIT(0x58, 0),
|
||||
RCC_LPTIM1 = _REG_BIT(RCC_APB1ENR1_OFFSET, 31),
|
||||
RCC_I2C3 = _REG_BIT(RCC_APB1ENR1_OFFSET, 30),
|
||||
RCC_PWR = _REG_BIT(RCC_APB1ENR1_OFFSET, 28),
|
||||
RCC_FDCAN = _REG_BIT(RCC_APB1ENR1_OFFSET, 25),
|
||||
RCC_USB = _REG_BIT(RCC_APB1ENR1_OFFSET, 23),
|
||||
RCC_I2C2 = _REG_BIT(RCC_APB1ENR1_OFFSET, 22),
|
||||
RCC_I2C1 = _REG_BIT(RCC_APB1ENR1_OFFSET, 21),
|
||||
RCC_UART5 = _REG_BIT(RCC_APB1ENR1_OFFSET, 20),
|
||||
RCC_UART4 = _REG_BIT(RCC_APB1ENR1_OFFSET, 19),
|
||||
RCC_USART3 = _REG_BIT(RCC_APB1ENR1_OFFSET, 18),
|
||||
RCC_USART2 = _REG_BIT(RCC_APB1ENR1_OFFSET, 17),
|
||||
RCC_SPI3 = _REG_BIT(RCC_APB1ENR1_OFFSET, 15),
|
||||
RCC_SPI2 = _REG_BIT(RCC_APB1ENR1_OFFSET, 14),
|
||||
RCC_WWDG = _REG_BIT(RCC_APB1ENR1_OFFSET, 11),
|
||||
RCC_RTCAPB = _REG_BIT(RCC_APB1ENR1_OFFSET, 10),
|
||||
RCC_CRS = _REG_BIT(RCC_APB1ENR1_OFFSET, 8),
|
||||
RCC_TIM7 = _REG_BIT(RCC_APB1ENR1_OFFSET, 5),
|
||||
RCC_TIM6 = _REG_BIT(RCC_APB1ENR1_OFFSET, 4),
|
||||
RCC_TIM5 = _REG_BIT(RCC_APB1ENR1_OFFSET, 3),
|
||||
RCC_TIM4 = _REG_BIT(RCC_APB1ENR1_OFFSET, 2),
|
||||
RCC_TIM3 = _REG_BIT(RCC_APB1ENR1_OFFSET, 1),
|
||||
RCC_TIM2 = _REG_BIT(RCC_APB1ENR1_OFFSET, 0),
|
||||
/* apb1-2 */
|
||||
RCC_UCPD1 = _REG_BIT(0x5c, 8),
|
||||
RCC_I2C4 = _REG_BIT(0x5c, 1),
|
||||
RCC_LPUART1 = _REG_BIT(0x5c, 0),
|
||||
RCC_UCPD1 = _REG_BIT(RCC_APB1ENR2_OFFSET, 8),
|
||||
RCC_I2C4 = _REG_BIT(RCC_APB1ENR2_OFFSET, 1),
|
||||
RCC_LPUART1 = _REG_BIT(RCC_APB1ENR2_OFFSET, 0),
|
||||
|
||||
/* APB2 peripherals */
|
||||
RCC_HRTIM1 = _REG_BIT(0x60, 26),
|
||||
RCC_SAI1 = _REG_BIT(0x60, 21),
|
||||
RCC_TIM20 = _REG_BIT(0x60, 20),
|
||||
RCC_TIM17 = _REG_BIT(0x60, 18),
|
||||
RCC_TIM16 = _REG_BIT(0x60, 17),
|
||||
RCC_TIM15 = _REG_BIT(0x60, 16),
|
||||
RCC_SPI4 = _REG_BIT(0x60, 15),
|
||||
RCC_USART1 = _REG_BIT(0x60, 14),
|
||||
RCC_TIM8 = _REG_BIT(0x60, 13),
|
||||
RCC_SPI1 = _REG_BIT(0x60, 12),
|
||||
RCC_TIM1 = _REG_BIT(0x60, 11),
|
||||
RCC_SYSCFG = _REG_BIT(0x60, 0),
|
||||
RCC_HRTIM1 = _REG_BIT(RCC_APB2ENR_OFFSET, 26),
|
||||
RCC_SAI1 = _REG_BIT(RCC_APB2ENR_OFFSET, 21),
|
||||
RCC_TIM20 = _REG_BIT(RCC_APB2ENR_OFFSET, 20),
|
||||
RCC_TIM17 = _REG_BIT(RCC_APB2ENR_OFFSET, 18),
|
||||
RCC_TIM16 = _REG_BIT(RCC_APB2ENR_OFFSET, 17),
|
||||
RCC_TIM15 = _REG_BIT(RCC_APB2ENR_OFFSET, 16),
|
||||
RCC_SPI4 = _REG_BIT(RCC_APB2ENR_OFFSET, 15),
|
||||
RCC_USART1 = _REG_BIT(RCC_APB2ENR_OFFSET, 14),
|
||||
RCC_TIM8 = _REG_BIT(RCC_APB2ENR_OFFSET, 13),
|
||||
RCC_SPI1 = _REG_BIT(RCC_APB2ENR_OFFSET, 12),
|
||||
RCC_TIM1 = _REG_BIT(RCC_APB2ENR_OFFSET, 11),
|
||||
RCC_SYSCFG = _REG_BIT(RCC_APB2ENR_OFFSET, 0),
|
||||
|
||||
/* AHB1 peripherals in sleep mode */
|
||||
SCC_CRC = _REG_BIT(0x68, 12),
|
||||
SCC_SRAM1 = _REG_BIT(0x68, 9),
|
||||
SCC_FLASH = _REG_BIT(0x68, 8),
|
||||
SCC_FMAC = _REG_BIT(0x68, 4),
|
||||
SCC_CORDIC = _REG_BIT(0x68, 3),
|
||||
SCC_DMAMUX1 = _REG_BIT(0x68, 2),
|
||||
SCC_DMA2 = _REG_BIT(0x68, 1),
|
||||
SCC_DMA1 = _REG_BIT(0x68, 0),
|
||||
SCC_CRC = _REG_BIT(RCC_AHB1SMENR_OFFSET, 12),
|
||||
SCC_SRAM1 = _REG_BIT(RCC_AHB1SMENR_OFFSET, 9),
|
||||
SCC_FLASH = _REG_BIT(RCC_AHB1SMENR_OFFSET, 8),
|
||||
SCC_FMAC = _REG_BIT(RCC_AHB1SMENR_OFFSET, 4),
|
||||
SCC_CORDIC = _REG_BIT(RCC_AHB1SMENR_OFFSET, 3),
|
||||
SCC_DMAMUX1 = _REG_BIT(RCC_AHB1SMENR_OFFSET, 2),
|
||||
SCC_DMA2 = _REG_BIT(RCC_AHB1SMENR_OFFSET, 1),
|
||||
SCC_DMA1 = _REG_BIT(RCC_AHB1SMENR_OFFSET, 0),
|
||||
|
||||
/* AHB2 peripherals in sleep mode */
|
||||
SCC_RNG = _REG_BIT(0x6c, 26),
|
||||
SCC_AES = _REG_BIT(0x6c, 24),
|
||||
SCC_DAC4 = _REG_BIT(0x6c, 19),
|
||||
SCC_DAC3 = _REG_BIT(0x6c, 18),
|
||||
SCC_DAC2 = _REG_BIT(0x6c, 17),
|
||||
SCC_DAC1 = _REG_BIT(0x6c, 16),
|
||||
SCC_ADC345 = _REG_BIT(0x6c, 14),
|
||||
SCC_ADC12 = _REG_BIT(0x6c, 13),
|
||||
SCC_ADC1 = _REG_BIT(0x6c, 13), /* Compatibility */
|
||||
SCC_CCMSRAM = _REG_BIT(0x6c, 10),
|
||||
SCC_SRAM2 = _REG_BIT(0x6c, 9),
|
||||
SCC_GPIOG = _REG_BIT(0x6c, 6),
|
||||
SCC_GPIOF = _REG_BIT(0x6c, 5),
|
||||
SCC_GPIOE = _REG_BIT(0x6c, 4),
|
||||
SCC_GPIOD = _REG_BIT(0x6c, 3),
|
||||
SCC_GPIOC = _REG_BIT(0x6c, 2),
|
||||
SCC_GPIOB = _REG_BIT(0x6c, 1),
|
||||
SCC_GPIOA = _REG_BIT(0x6c, 0),
|
||||
SCC_RNG = _REG_BIT(RCC_AHB2SMENR_OFFSET, 26),
|
||||
SCC_AES = _REG_BIT(RCC_AHB2SMENR_OFFSET, 24),
|
||||
SCC_DAC4 = _REG_BIT(RCC_AHB2SMENR_OFFSET, 19),
|
||||
SCC_DAC3 = _REG_BIT(RCC_AHB2SMENR_OFFSET, 18),
|
||||
SCC_DAC2 = _REG_BIT(RCC_AHB2SMENR_OFFSET, 17),
|
||||
SCC_DAC1 = _REG_BIT(RCC_AHB2SMENR_OFFSET, 16),
|
||||
SCC_ADC345 = _REG_BIT(RCC_AHB2SMENR_OFFSET, 14),
|
||||
SCC_ADC12 = _REG_BIT(RCC_AHB2SMENR_OFFSET, 13),
|
||||
SCC_ADC1 = _REG_BIT(RCC_AHB2SMENR_OFFSET, 13), /* Compatibility */
|
||||
SCC_CCMSRAM = _REG_BIT(RCC_AHB2SMENR_OFFSET, 10),
|
||||
SCC_SRAM2 = _REG_BIT(RCC_AHB2SMENR_OFFSET, 9),
|
||||
SCC_GPIOG = _REG_BIT(RCC_AHB2SMENR_OFFSET, 6),
|
||||
SCC_GPIOF = _REG_BIT(RCC_AHB2SMENR_OFFSET, 5),
|
||||
SCC_GPIOE = _REG_BIT(RCC_AHB2SMENR_OFFSET, 4),
|
||||
SCC_GPIOD = _REG_BIT(RCC_AHB2SMENR_OFFSET, 3),
|
||||
SCC_GPIOC = _REG_BIT(RCC_AHB2SMENR_OFFSET, 2),
|
||||
SCC_GPIOB = _REG_BIT(RCC_AHB2SMENR_OFFSET, 1),
|
||||
SCC_GPIOA = _REG_BIT(RCC_AHB2SMENR_OFFSET, 0),
|
||||
|
||||
/* AHB3 peripherals in sleep mode */
|
||||
SCC_QSPI = _REG_BIT(0x70, 8),
|
||||
SCC_FMC = _REG_BIT(0x70, 0),
|
||||
SCC_QSPI = _REG_BIT(RCC_AHB3SMENR_OFFSET, 8),
|
||||
SCC_FMC = _REG_BIT(RCC_AHB3SMENR_OFFSET, 0),
|
||||
|
||||
/* APB1 peripherals in sleep mode */
|
||||
SCC_LPTIM1 = _REG_BIT(0x58, 31),
|
||||
SCC_I2C3 = _REG_BIT(0x58, 30),
|
||||
SCC_PWR = _REG_BIT(0x58, 28),
|
||||
SCC_FDCAN = _REG_BIT(0x58, 25),
|
||||
SCC_USB = _REG_BIT(0x58, 23),
|
||||
SCC_I2C2 = _REG_BIT(0x58, 22),
|
||||
SCC_I2C1 = _REG_BIT(0x58, 21),
|
||||
SCC_UART5 = _REG_BIT(0x58, 20),
|
||||
SCC_UART4 = _REG_BIT(0x58, 19),
|
||||
SCC_USART3 = _REG_BIT(0x58, 18),
|
||||
SCC_USART2 = _REG_BIT(0x58, 17),
|
||||
SCC_SPI3 = _REG_BIT(0x58, 15),
|
||||
SCC_SPI2 = _REG_BIT(0x58, 14),
|
||||
SCC_WWDG = _REG_BIT(0x58, 11),
|
||||
SCC_RTCAPB = _REG_BIT(0x58, 10),
|
||||
SCC_CRS = _REG_BIT(0x58, 8),
|
||||
SCC_TIM7 = _REG_BIT(0x58, 5),
|
||||
SCC_TIM6 = _REG_BIT(0x58, 4),
|
||||
SCC_TIM5 = _REG_BIT(0x58, 3),
|
||||
SCC_TIM4 = _REG_BIT(0x58, 2),
|
||||
SCC_TIM3 = _REG_BIT(0x58, 1),
|
||||
SCC_TIM2 = _REG_BIT(0x58, 0),
|
||||
SCC_LPTIM1 = _REG_BIT(RCC_APB1SMENR1_OFFSET, 31),
|
||||
SCC_I2C3 = _REG_BIT(RCC_APB1SMENR1_OFFSET, 30),
|
||||
SCC_PWR = _REG_BIT(RCC_APB1SMENR1_OFFSET, 28),
|
||||
SCC_FDCAN = _REG_BIT(RCC_APB1SMENR1_OFFSET, 25),
|
||||
SCC_USB = _REG_BIT(RCC_APB1SMENR1_OFFSET, 23),
|
||||
SCC_I2C2 = _REG_BIT(RCC_APB1SMENR1_OFFSET, 22),
|
||||
SCC_I2C1 = _REG_BIT(RCC_APB1SMENR1_OFFSET, 21),
|
||||
SCC_UART5 = _REG_BIT(RCC_APB1SMENR1_OFFSET, 20),
|
||||
SCC_UART4 = _REG_BIT(RCC_APB1SMENR1_OFFSET, 19),
|
||||
SCC_USART3 = _REG_BIT(RCC_APB1SMENR1_OFFSET, 18),
|
||||
SCC_USART2 = _REG_BIT(RCC_APB1SMENR1_OFFSET, 17),
|
||||
SCC_SPI3 = _REG_BIT(RCC_APB1SMENR1_OFFSET, 15),
|
||||
SCC_SPI2 = _REG_BIT(RCC_APB1SMENR1_OFFSET, 14),
|
||||
SCC_WWDG = _REG_BIT(RCC_APB1SMENR1_OFFSET, 11),
|
||||
SCC_RTCAPB = _REG_BIT(RCC_APB1SMENR1_OFFSET, 10),
|
||||
SCC_CRS = _REG_BIT(RCC_APB1SMENR1_OFFSET, 8),
|
||||
SCC_TIM7 = _REG_BIT(RCC_APB1SMENR1_OFFSET, 5),
|
||||
SCC_TIM6 = _REG_BIT(RCC_APB1SMENR1_OFFSET, 4),
|
||||
SCC_TIM5 = _REG_BIT(RCC_APB1SMENR1_OFFSET, 3),
|
||||
SCC_TIM4 = _REG_BIT(RCC_APB1SMENR1_OFFSET, 2),
|
||||
SCC_TIM3 = _REG_BIT(RCC_APB1SMENR1_OFFSET, 1),
|
||||
SCC_TIM2 = _REG_BIT(RCC_APB1SMENR1_OFFSET, 0),
|
||||
/* apb1-2 */
|
||||
SCC_UCPD1 = _REG_BIT(0x5c, 8),
|
||||
SCC_I2C4 = _REG_BIT(0x5c, 1),
|
||||
SCC_LPUART1 = _REG_BIT(0x5c, 0),
|
||||
SCC_UCPD1 = _REG_BIT(RCC_APB1SMENR2_OFFSET, 8),
|
||||
SCC_I2C4 = _REG_BIT(RCC_APB1SMENR2_OFFSET, 1),
|
||||
SCC_LPUART1 = _REG_BIT(RCC_APB1SMENR2_OFFSET, 0),
|
||||
|
||||
/* APB2 peripherals in sleep mode */
|
||||
SCC_HRTIM1 = _REG_BIT(0x60, 26),
|
||||
SCC_SAI1 = _REG_BIT(0x60, 21),
|
||||
SCC_TIM20 = _REG_BIT(0x60, 20),
|
||||
SCC_TIM17 = _REG_BIT(0x60, 18),
|
||||
SCC_TIM16 = _REG_BIT(0x60, 17),
|
||||
SCC_TIM15 = _REG_BIT(0x60, 16),
|
||||
SCC_SPI4 = _REG_BIT(0x60, 15),
|
||||
SCC_USART1 = _REG_BIT(0x60, 14),
|
||||
SCC_TIM8 = _REG_BIT(0x60, 13),
|
||||
SCC_SPI1 = _REG_BIT(0x60, 12),
|
||||
SCC_TIM1 = _REG_BIT(0x60, 11),
|
||||
SCC_SYSCFG = _REG_BIT(0x60, 0),
|
||||
SCC_HRTIM1 = _REG_BIT(RCC_APB2SMENR_OFFSET, 26),
|
||||
SCC_SAI1 = _REG_BIT(RCC_APB2SMENR_OFFSET, 21),
|
||||
SCC_TIM20 = _REG_BIT(RCC_APB2SMENR_OFFSET, 20),
|
||||
SCC_TIM17 = _REG_BIT(RCC_APB2SMENR_OFFSET, 18),
|
||||
SCC_TIM16 = _REG_BIT(RCC_APB2SMENR_OFFSET, 17),
|
||||
SCC_TIM15 = _REG_BIT(RCC_APB2SMENR_OFFSET, 16),
|
||||
SCC_SPI4 = _REG_BIT(RCC_APB2SMENR_OFFSET, 15),
|
||||
SCC_USART1 = _REG_BIT(RCC_APB2SMENR_OFFSET, 14),
|
||||
SCC_TIM8 = _REG_BIT(RCC_APB2SMENR_OFFSET, 13),
|
||||
SCC_SPI1 = _REG_BIT(RCC_APB2SMENR_OFFSET, 12),
|
||||
SCC_TIM1 = _REG_BIT(RCC_APB2SMENR_OFFSET, 11),
|
||||
SCC_SYSCFG = _REG_BIT(RCC_APB2SMENR_OFFSET, 0),
|
||||
};
|
||||
|
||||
enum rcc_periph_rst {
|
||||
/* AHB1 peripherals */
|
||||
RST_CRC = _REG_BIT(0x28, 12),
|
||||
RST_FLASH = _REG_BIT(0x28, 8),
|
||||
RST_FMAC = _REG_BIT(0x28, 4),
|
||||
RST_CORDIC = _REG_BIT(0x28, 3),
|
||||
RST_DMAMUX1 = _REG_BIT(0x28, 2),
|
||||
RST_DMA2 = _REG_BIT(0x28, 1),
|
||||
RST_DMA1 = _REG_BIT(0x28, 0),
|
||||
RST_CRC = _REG_BIT(RCC_AHB1RSTR_OFFSET, 12),
|
||||
RST_FLASH = _REG_BIT(RCC_AHB1RSTR_OFFSET, 8),
|
||||
RST_FMAC = _REG_BIT(RCC_AHB1RSTR_OFFSET, 4),
|
||||
RST_CORDIC = _REG_BIT(RCC_AHB1RSTR_OFFSET, 3),
|
||||
RST_DMAMUX1 = _REG_BIT(RCC_AHB1RSTR_OFFSET, 2),
|
||||
RST_DMA2 = _REG_BIT(RCC_AHB1RSTR_OFFSET, 1),
|
||||
RST_DMA1 = _REG_BIT(RCC_AHB1RSTR_OFFSET, 0),
|
||||
|
||||
/* AHB2 peripherals */
|
||||
RST_RNG = _REG_BIT(0x2c, 26),
|
||||
RST_AES = _REG_BIT(0x2c, 24),
|
||||
RST_DAC4 = _REG_BIT(0x2c, 19),
|
||||
RST_DAC3 = _REG_BIT(0x2c, 18),
|
||||
RST_DAC2 = _REG_BIT(0x2c, 17),
|
||||
RST_DAC1 = _REG_BIT(0x2c, 16),
|
||||
RST_ADC345 = _REG_BIT(0x2c, 14),
|
||||
RST_ADC12 = _REG_BIT(0x2c, 13),
|
||||
RST_ADC1 = _REG_BIT(0x2c, 13), /* Compatibility */
|
||||
RST_GPIOG = _REG_BIT(0x2c, 6),
|
||||
RST_GPIOF = _REG_BIT(0x2c, 5),
|
||||
RST_GPIOE = _REG_BIT(0x2c, 4),
|
||||
RST_GPIOD = _REG_BIT(0x2c, 3),
|
||||
RST_GPIOC = _REG_BIT(0x2c, 2),
|
||||
RST_GPIOB = _REG_BIT(0x2c, 1),
|
||||
RST_GPIOA = _REG_BIT(0x2c, 0),
|
||||
RST_RNG = _REG_BIT(RCC_AHB2RSTR_OFFSET, 26),
|
||||
RST_AES = _REG_BIT(RCC_AHB2RSTR_OFFSET, 24),
|
||||
RST_DAC4 = _REG_BIT(RCC_AHB2RSTR_OFFSET, 19),
|
||||
RST_DAC3 = _REG_BIT(RCC_AHB2RSTR_OFFSET, 18),
|
||||
RST_DAC2 = _REG_BIT(RCC_AHB2RSTR_OFFSET, 17),
|
||||
RST_DAC1 = _REG_BIT(RCC_AHB2RSTR_OFFSET, 16),
|
||||
RST_ADC345 = _REG_BIT(RCC_AHB2RSTR_OFFSET, 14),
|
||||
RST_ADC12 = _REG_BIT(RCC_AHB2RSTR_OFFSET, 13),
|
||||
RST_ADC1 = _REG_BIT(RCC_AHB2RSTR_OFFSET, 13), /* Compatibility */
|
||||
RST_GPIOG = _REG_BIT(RCC_AHB2RSTR_OFFSET, 6),
|
||||
RST_GPIOF = _REG_BIT(RCC_AHB2RSTR_OFFSET, 5),
|
||||
RST_GPIOE = _REG_BIT(RCC_AHB2RSTR_OFFSET, 4),
|
||||
RST_GPIOD = _REG_BIT(RCC_AHB2RSTR_OFFSET, 3),
|
||||
RST_GPIOC = _REG_BIT(RCC_AHB2RSTR_OFFSET, 2),
|
||||
RST_GPIOB = _REG_BIT(RCC_AHB2RSTR_OFFSET, 1),
|
||||
RST_GPIOA = _REG_BIT(RCC_AHB2RSTR_OFFSET, 0),
|
||||
|
||||
/* AHB3 peripherals */
|
||||
RST_QSPI = _REG_BIT(0x30, 8),
|
||||
RST_FMC = _REG_BIT(0x30, 0),
|
||||
RST_QSPI = _REG_BIT(RCC_AHB3RSTR_OFFSET, 8),
|
||||
RST_FMC = _REG_BIT(RCC_AHB3RSTR_OFFSET, 0),
|
||||
|
||||
/* APB1 peripherals */
|
||||
RST_LPTIM1 = _REG_BIT(0x38, 31),
|
||||
RST_I2C3 = _REG_BIT(0x38, 30),
|
||||
RST_PWR = _REG_BIT(0x38, 28),
|
||||
RST_FDCAN = _REG_BIT(0x38, 25),
|
||||
RST_USB = _REG_BIT(0x38, 23),
|
||||
RST_I2C2 = _REG_BIT(0x38, 22),
|
||||
RST_I2C1 = _REG_BIT(0x38, 21),
|
||||
RST_UART5 = _REG_BIT(0x38, 20),
|
||||
RST_UART4 = _REG_BIT(0x38, 19),
|
||||
RST_USART3 = _REG_BIT(0x38, 18),
|
||||
RST_USART2 = _REG_BIT(0x38, 17),
|
||||
RST_SPI3 = _REG_BIT(0x38, 15),
|
||||
RST_SPI2 = _REG_BIT(0x38, 14),
|
||||
RST_CRS = _REG_BIT(0x38, 8),
|
||||
RST_TIM7 = _REG_BIT(0x38, 5),
|
||||
RST_TIM6 = _REG_BIT(0x38, 4),
|
||||
RST_TIM5 = _REG_BIT(0x38, 3),
|
||||
RST_TIM4 = _REG_BIT(0x38, 2),
|
||||
RST_TIM3 = _REG_BIT(0x38, 1),
|
||||
RST_TIM2 = _REG_BIT(0x38, 0),
|
||||
RST_LPTIM1 = _REG_BIT(RCC_APB1RSTR1_OFFSET, 31),
|
||||
RST_I2C3 = _REG_BIT(RCC_APB1RSTR1_OFFSET, 30),
|
||||
RST_PWR = _REG_BIT(RCC_APB1RSTR1_OFFSET, 28),
|
||||
RST_FDCAN = _REG_BIT(RCC_APB1RSTR1_OFFSET, 25),
|
||||
RST_USB = _REG_BIT(RCC_APB1RSTR1_OFFSET, 23),
|
||||
RST_I2C2 = _REG_BIT(RCC_APB1RSTR1_OFFSET, 22),
|
||||
RST_I2C1 = _REG_BIT(RCC_APB1RSTR1_OFFSET, 21),
|
||||
RST_UART5 = _REG_BIT(RCC_APB1RSTR1_OFFSET, 20),
|
||||
RST_UART4 = _REG_BIT(RCC_APB1RSTR1_OFFSET, 19),
|
||||
RST_USART3 = _REG_BIT(RCC_APB1RSTR1_OFFSET, 18),
|
||||
RST_USART2 = _REG_BIT(RCC_APB1RSTR1_OFFSET, 17),
|
||||
RST_SPI3 = _REG_BIT(RCC_APB1RSTR1_OFFSET, 15),
|
||||
RST_SPI2 = _REG_BIT(RCC_APB1RSTR1_OFFSET, 14),
|
||||
RST_CRS = _REG_BIT(RCC_APB1RSTR1_OFFSET, 8),
|
||||
RST_TIM7 = _REG_BIT(RCC_APB1RSTR1_OFFSET, 5),
|
||||
RST_TIM6 = _REG_BIT(RCC_APB1RSTR1_OFFSET, 4),
|
||||
RST_TIM5 = _REG_BIT(RCC_APB1RSTR1_OFFSET, 3),
|
||||
RST_TIM4 = _REG_BIT(RCC_APB1RSTR1_OFFSET, 2),
|
||||
RST_TIM3 = _REG_BIT(RCC_APB1RSTR1_OFFSET, 1),
|
||||
RST_TIM2 = _REG_BIT(RCC_APB1RSTR1_OFFSET, 0),
|
||||
/* apb1-2 */
|
||||
RST_UCPD1 = _REG_BIT(0x3c, 8),
|
||||
RST_I2C4 = _REG_BIT(0x3c, 1),
|
||||
RST_LPUART1 = _REG_BIT(0x3c, 0),
|
||||
RST_UCPD1 = _REG_BIT(RCC_APB1RSTR2_OFFSET, 8),
|
||||
RST_I2C4 = _REG_BIT(RCC_APB1RSTR2_OFFSET, 1),
|
||||
RST_LPUART1 = _REG_BIT(RCC_APB1RSTR2_OFFSET, 0),
|
||||
|
||||
/* APB2 peripherals */
|
||||
RST_HRTIM1 = _REG_BIT(0x40, 26),
|
||||
RST_SAI1 = _REG_BIT(0x40, 21),
|
||||
RST_TIM20 = _REG_BIT(0x40, 20),
|
||||
RST_TIM17 = _REG_BIT(0x40, 18),
|
||||
RST_TIM16 = _REG_BIT(0x40, 17),
|
||||
RST_TIM15 = _REG_BIT(0x40, 16),
|
||||
RST_SPI4 = _REG_BIT(0x40, 15),
|
||||
RST_USART1 = _REG_BIT(0x40, 14),
|
||||
RST_TIM8 = _REG_BIT(0x40, 13),
|
||||
RST_SPI1 = _REG_BIT(0x40, 12),
|
||||
RST_TIM1 = _REG_BIT(0x40, 11),
|
||||
RST_SYSCFG = _REG_BIT(0x40, 0),
|
||||
RST_HRTIM1 = _REG_BIT(RCC_APB2RSTR_OFFSET, 26),
|
||||
RST_SAI1 = _REG_BIT(RCC_APB2RSTR_OFFSET, 21),
|
||||
RST_TIM20 = _REG_BIT(RCC_APB2RSTR_OFFSET, 20),
|
||||
RST_TIM17 = _REG_BIT(RCC_APB2RSTR_OFFSET, 18),
|
||||
RST_TIM16 = _REG_BIT(RCC_APB2RSTR_OFFSET, 17),
|
||||
RST_TIM15 = _REG_BIT(RCC_APB2RSTR_OFFSET, 16),
|
||||
RST_SPI4 = _REG_BIT(RCC_APB2RSTR_OFFSET, 15),
|
||||
RST_USART1 = _REG_BIT(RCC_APB2RSTR_OFFSET, 14),
|
||||
RST_TIM8 = _REG_BIT(RCC_APB2RSTR_OFFSET, 13),
|
||||
RST_SPI1 = _REG_BIT(RCC_APB2RSTR_OFFSET, 12),
|
||||
RST_TIM1 = _REG_BIT(RCC_APB2RSTR_OFFSET, 11),
|
||||
RST_SYSCFG = _REG_BIT(RCC_APB2RSTR_OFFSET, 0),
|
||||
|
||||
};
|
||||
|
||||
#undef _REG_BIT
|
||||
|
||||
#include <libopencm3/stm32/common/rcc_common_all.h>
|
||||
|
||||
BEGIN_DECLS
|
||||
|
||||
void rcc_osc_ready_int_clear(enum rcc_osc osc);
|
||||
void rcc_osc_ready_int_enable(enum rcc_osc osc);
|
||||
void rcc_osc_ready_int_disable(enum rcc_osc osc);
|
||||
int rcc_osc_ready_int_flag(enum rcc_osc osc);
|
||||
void rcc_css_int_clear(void);
|
||||
int rcc_css_int_flag(void);
|
||||
void rcc_wait_for_sysclk_status(enum rcc_osc osc);
|
||||
void rcc_osc_on(enum rcc_osc osc);
|
||||
void rcc_osc_off(enum rcc_osc osc);
|
||||
void rcc_css_enable(void);
|
||||
void rcc_css_disable(void);
|
||||
void rcc_set_sysclk_source(uint32_t clk);
|
||||
void rcc_set_pll_source(uint32_t pllsrc);
|
||||
void rcc_set_ppre2(uint32_t ppre2);
|
||||
void rcc_set_ppre1(uint32_t ppre1);
|
||||
void rcc_set_hpre(uint32_t hpre);
|
||||
void rcc_set_main_pll(uint32_t pllsrc, uint32_t pllm, uint32_t plln,
|
||||
uint32_t pllp, uint32_t pllq, uint32_t pllr);
|
||||
uint32_t rcc_system_clock_source(void);
|
||||
void rcc_clock_setup_pll(const struct rcc_clock_scale *clock);
|
||||
void __attribute__((deprecated("Use rcc_clock_setup_pll as direct replacement"))) rcc_clock_setup_hse_3v3(const struct rcc_clock_scale *clock);
|
||||
void rcc_set_clock48_source(uint32_t clksel);
|
||||
|
||||
END_DECLS
|
||||
|
||||
|
||||
Reference in New Issue
Block a user