More STM32F7xx code.

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@8136 35acf78f-673a-0410-8e92-d51de3d6d3f4
master
Giovanni Di Sirio 2015-08-01 16:49:11 +00:00
parent 3b265b37cd
commit 39d6be9e83
2 changed files with 449 additions and 51 deletions

View File

@ -312,6 +312,101 @@
#define STM32_TIMPRE_HCLK (1 << 24) /**< TIM clocks from HCLK. */
/** @} */
/**
* @name RCC_DCKCFGR2 register bits definitions
* @{
*/
#define STM32_USART1SEL_MASK (3 << 0) /**< USART1SEL mask. */
#define STM32_USART1SEL_PCLK2 (0 << 0) /**< USART1 source is PCLK2. */
#define STM32_USART1SEL_SYSCLK (1 << 0) /**< USART1 source is SYSCLK. */
#define STM32_USART1SEL_HSI (2 << 0) /**< USART1 source is HSI. */
#define STM32_USART1SEL_LSE (3 << 0) /**< USART1 source is LSE. */
#define STM32_USART2SEL_MASK (3 << 2) /**< USART2 mask. */
#define STM32_USART2SEL_PCLK1 (0 << 2) /**< USART2 source is PCLK1. */
#define STM32_USART2SEL_SYSCLK (1 << 2) /**< USART2 source is SYSCLK. */
#define STM32_USART2SEL_HSI (2 << 2) /**< USART2 source is HSI. */
#define STM32_USART2SEL_LSE (3 << 2) /**< USART2 source is LSE. */
#define STM32_USART3SEL_MASK (3 << 4) /**< USART3 mask. */
#define STM32_USART3SEL_PCLK1 (0 << 4) /**< USART3 source is PCLK1. */
#define STM32_USART3SEL_SYSCLK (1 << 4) /**< USART3 source is SYSCLK. */
#define STM32_USART3SEL_HSI (2 << 4) /**< USART3 source is HSI. */
#define STM32_USART3SEL_LSE (3 << 4) /**< USART3 source is LSE. */
#define STM32_UART4SEL_MASK (3 << 6) /**< UART4 mask. */
#define STM32_UART4SEL_PCLK1 (0 << 6) /**< UART4 source is PCLK1. */
#define STM32_UART4SEL_SYSCLK (1 << 6) /**< UART4 source is SYSCLK. */
#define STM32_UART4SEL_HSI (2 << 6) /**< UART4 source is HSI. */
#define STM32_UART4SEL_LSE (3 << 6) /**< UART4 source is LSE. */
#define STM32_UART5SEL_MASK (3 << 8) /**< UART5 mask. */
#define STM32_UART5SEL_PCLK1 (0 << 8) /**< UART5 source is PCLK1. */
#define STM32_UART5SEL_SYSCLK (1 << 8) /**< UART5 source is SYSCLK. */
#define STM32_UART5SEL_HSI (2 << 8) /**< UART5 source is HSI. */
#define STM32_UART5SEL_LSE (3 << 8) /**< UART5 source is LSE. */
#define STM32_USART6SEL_MASK (3 << 10) /**< USART6SEL mask. */
#define STM32_USART6SEL_PCLK2 (0 << 10) /**< USART6 source is PCLK2. */
#define STM32_USART6SEL_SYSCLK (1 << 10) /**< USART6 source is SYSCLK. */
#define STM32_USART6SEL_HSI (2 << 10) /**< USART6 source is HSI. */
#define STM32_USART6SEL_LSE (3 << 10) /**< USART6 source is LSE. */
#define STM32_UART7SEL_MASK (3 << 12) /**< UART7 mask. */
#define STM32_UART7SEL_PCLK1 (0 << 12) /**< UART7 source is PCLK1. */
#define STM32_UART7SEL_SYSCLK (1 << 12) /**< UART7 source is SYSCLK. */
#define STM32_UART7SEL_HSI (2 << 12) /**< UART7 source is HSI. */
#define STM32_UART7SEL_LSE (3 << 12) /**< UART7 source is LSE. */
#define STM32_UART8SEL_MASK (3 << 14) /**< UART8 mask. */
#define STM32_UART8SEL_PCLK1 (0 << 14) /**< UART8 source is PCLK1. */
#define STM32_UART8SEL_SYSCLK (1 << 14) /**< UART8 source is SYSCLK. */
#define STM32_UART8SEL_HSI (2 << 14) /**< UART8 source is HSI. */
#define STM32_UART8SEL_LSE (3 << 14) /**< UART8 source is LSE. */
#define STM32_I2C1SEL_MASK (3 << 16) /**< I2C1SEL mask. */
#define STM32_I2C1SEL_PCLK1 (0 << 16) /**< I2C1 source is PCLK1. */
#define STM32_I2C1SEL_SYSCLK (1 << 16) /**< I2C1 source is SYSCLK. */
#define STM32_I2C1SEL_HSI (2 << 16) /**< I2C1 source is HSI. */
#define STM32_I2C1SEL_LSE (3 << 16) /**< I2C1 source is LSE. */
#define STM32_I2C2SEL_MASK (3 << 18) /**< I2C2SEL mask. */
#define STM32_I2C2SEL_PCLK1 (0 << 18) /**< I2C2 source is PCLK1. */
#define STM32_I2C2SEL_SYSCLK (1 << 18) /**< I2C2 source is SYSCLK. */
#define STM32_I2C2SEL_HSI (2 << 18) /**< I2C2 source is HSI. */
#define STM32_I2C2SEL_LSE (3 << 18) /**< I2C2 source is LSE. */
#define STM32_I2C3SEL_MASK (3 << 20) /**< I2C3SEL mask. */
#define STM32_I2C3SEL_PCLK1 (0 << 20) /**< I2C3 source is PCLK1. */
#define STM32_I2C3SEL_SYSCLK (1 << 20) /**< I2C3 source is SYSCLK. */
#define STM32_I2C3SEL_HSI (2 << 20) /**< I2C3 source is HSI. */
#define STM32_I2C3SEL_LSE (3 << 20) /**< I2C3 source is LSE. */
#define STM32_I2C4SEL_MASK (3 << 22) /**< I2C4SEL mask. */
#define STM32_I2C4SEL_PCLK1 (0 << 22) /**< I2C4 source is PCLK1. */
#define STM32_I2C4SEL_SYSCLK (1 << 22) /**< I2C4 source is SYSCLK. */
#define STM32_I2C4SEL_HSI (2 << 22) /**< I2C4 source is HSI. */
#define STM32_I2C4SEL_LSE (3 << 22) /**< I2C4 source is LSE. */
#define STM32_LPTIM1SEL_MASK (3 << 24) /**< LPTIM1SEL mask. */
#define STM32_LPTIM1SEL_PCLK1 (0 << 24) /**< LPTIM1 source is PCLK1. */
#define STM32_LPTIM1SEL_LSI (1 << 24) /**< LPTIM1 source is SYSCLK. */
#define STM32_LPTIM1SEL_HSI (2 << 24) /**< LPTIM1 source is HSI. */
#define STM32_LPTIM1SEL_LSE (3 << 24) /**< LPTIM1 source is LSE. */
#define STM32_CECSEL_MASK (1 << 26) /**< CECSEL mask. */
#define STM32_CECSEL_LSE (0 << 26) /**< CEC source is LSE. */
#define STM32_CECSEL_HSIDIV488 (1 << 26) /**< CEC source is HSI/488. */
#define STM32_CK48MSEL_MASK (1 << 27) /**< CK48MSEL mask. */
#define STM32_CK48MSEL_PLL (0 << 27) /**< PLL48CLK source is PLL. */
#define STM32_CK48MSEL_PLLSAI (1 << 27) /**< PLL48CLK source is PLLSAI. */
#define STM32_SDMMCSEL_MASK (1 << 27) /**< SDMMCSEL mask. */
#define STM32_SDMMCSEL_PLL48CLK (0 << 27) /**< SDMMC source is PLL48CLK. */
#define STM32_SDMMCSEL_SYSCLK (1 << 27) /**< SDMMC source is SYSCLK. */
/** @} */
/**
* @name RCC_BDCR register bits definitions
* @{
@ -335,63 +430,63 @@
* @brief Disables the PWR/RCC initialization in the HAL.
*/
#if !defined(STM32_NO_INIT) || defined(__DOXYGEN__)
#define STM32_NO_INIT FALSE
#define STM32_NO_INIT FALSE
#endif
/**
* @brief Enables or disables the programmable voltage detector.
*/
#if !defined(STM32_PVD_ENABLE) || defined(__DOXYGEN__)
#define STM32_PVD_ENABLE FALSE
#define STM32_PVD_ENABLE FALSE
#endif
/**
* @brief Sets voltage level for programmable voltage detector.
*/
#if !defined(STM32_PLS) || defined(__DOXYGEN__)
#define STM32_PLS STM32_PLS_LEV0
#define STM32_PLS STM32_PLS_LEV0
#endif
/**
* @brief Enables the backup RAM regulator.
*/
#if !defined(STM32_BKPRAM_ENABLE) || defined(__DOXYGEN__)
#define STM32_BKPRAM_ENABLE FALSE
#define STM32_BKPRAM_ENABLE FALSE
#endif
/**
* @brief Enables or disables the HSI clock source.
*/
#if !defined(STM32_HSI_ENABLED) || defined(__DOXYGEN__)
#define STM32_HSI_ENABLED TRUE
#define STM32_HSI_ENABLED TRUE
#endif
/**
* @brief Enables or disables the LSI clock source.
*/
#if !defined(STM32_LSI_ENABLED) || defined(__DOXYGEN__)
#define STM32_LSI_ENABLED FALSE
#define STM32_LSI_ENABLED FALSE
#endif
/**
* @brief Enables or disables the HSE clock source.
*/
#if !defined(STM32_HSE_ENABLED) || defined(__DOXYGEN__)
#define STM32_HSE_ENABLED TRUE
#define STM32_HSE_ENABLED TRUE
#endif
/**
* @brief Enables or disables the LSE clock source.
*/
#if !defined(STM32_LSE_ENABLED) || defined(__DOXYGEN__)
#define STM32_LSE_ENABLED FALSE
#define STM32_LSE_ENABLED FALSE
#endif
/**
* @brief USB/SDIO clock setting.
*/
#if !defined(STM32_CLOCK48_REQUIRED) || defined(__DOXYGEN__)
#define STM32_CLOCK48_REQUIRED TRUE
#define STM32_CLOCK48_REQUIRED TRUE
#endif
/**
@ -402,7 +497,7 @@
* an external 8MHz HSE clock.
*/
#if !defined(STM32_SW) || defined(__DOXYGEN__)
#define STM32_SW STM32_SW_PLL
#define STM32_SW STM32_SW_PLL
#endif
/**
@ -413,7 +508,7 @@
* an external 8MHz HSE clock.
*/
#if !defined(STM32_PLLSRC) || defined(__DOXYGEN__)
#define STM32_PLLSRC STM32_PLLSRC_HSE
#define STM32_PLLSRC STM32_PLLSRC_HSE
#endif
/**
@ -423,7 +518,7 @@
* an external 8MHz HSE clock.
*/
#if !defined(STM32_PLLM_VALUE) || defined(__DOXYGEN__)
#define STM32_PLLM_VALUE 8
#define STM32_PLLM_VALUE 8
#endif
/**
@ -433,7 +528,7 @@
* an external 8MHz HSE clock.
*/
#if !defined(STM32_PLLN_VALUE) || defined(__DOXYGEN__)
#define STM32_PLLN_VALUE 336
#define STM32_PLLN_VALUE 336
#endif
/**
@ -443,7 +538,7 @@
* an external 8MHz HSE clock.
*/
#if !defined(STM32_PLLP_VALUE) || defined(__DOXYGEN__)
#define STM32_PLLP_VALUE 2
#define STM32_PLLP_VALUE 2
#endif
/**
@ -453,42 +548,42 @@
* an external 8MHz HSE clock.
*/
#if !defined(STM32_PLLQ_VALUE) || defined(__DOXYGEN__)
#define STM32_PLLQ_VALUE 7
#define STM32_PLLQ_VALUE 7
#endif
/**
* @brief AHB prescaler value.
*/
#if !defined(STM32_HPRE) || defined(__DOXYGEN__)
#define STM32_HPRE STM32_HPRE_DIV1
#define STM32_HPRE STM32_HPRE_DIV1
#endif
/**
* @brief APB1 prescaler value.
*/
#if !defined(STM32_PPRE1) || defined(__DOXYGEN__)
#define STM32_PPRE1 STM32_PPRE1_DIV4
#define STM32_PPRE1 STM32_PPRE1_DIV4
#endif
/**
* @brief APB2 prescaler value.
*/
#if !defined(STM32_PPRE2) || defined(__DOXYGEN__)
#define STM32_PPRE2 STM32_PPRE2_DIV2
#define STM32_PPRE2 STM32_PPRE2_DIV2
#endif
/**
* @brief RTC clock source.
*/
#if !defined(STM32_RTCSEL) || defined(__DOXYGEN__)
#define STM32_RTCSEL STM32_RTCSEL_LSE
#define STM32_RTCSEL STM32_RTCSEL_LSE
#endif
/**
* @brief RTC HSE prescaler value.
*/
#if !defined(STM32_RTCPRE_VALUE) || defined(__DOXYGEN__)
#define STM32_RTCPRE_VALUE 8
#define STM32_RTCPRE_VALUE 8
#endif
/**
@ -496,7 +591,7 @@
* @note The default value outputs HSI clock on MC01 pin.
*/
#if !defined(STM32_MCO1SEL) || defined(__DOXYGEN__)
#define STM32_MCO1SEL STM32_MCO1SEL_HSI
#define STM32_MCO1SEL STM32_MCO1SEL_HSI
#endif
/**
@ -504,7 +599,7 @@
* @note The default value outputs HSI clock on MC01 pin.
*/
#if !defined(STM32_MCO1PRE) || defined(__DOXYGEN__)
#define STM32_MCO1PRE STM32_MCO1PRE_DIV1
#define STM32_MCO1PRE STM32_MCO1PRE_DIV1
#endif
/**
@ -512,7 +607,7 @@
* @note The default value outputs SYSCLK / 5 on MC02 pin.
*/
#if !defined(STM32_MCO2SEL) || defined(__DOXYGEN__)
#define STM32_MCO2SEL STM32_MCO2SEL_SYSCLK
#define STM32_MCO2SEL STM32_MCO2SEL_SYSCLK
#endif
/**
@ -520,14 +615,14 @@
* @note The default value outputs SYSCLK / 5 on MC02 pin.
*/
#if !defined(STM32_MCO2PRE) || defined(__DOXYGEN__)
#define STM32_MCO2PRE STM32_MCO2PRE_DIV5
#define STM32_MCO2PRE STM32_MCO2PRE_DIV5
#endif
/**
* @brief I2S clock source.
*/
#if !defined(STM32_I2SSRC) || defined(__DOXYGEN__)
#define STM32_I2SSRC STM32_I2SSRC_CKIN
#define STM32_I2SSRC STM32_I2SSRC_CKIN
#endif
/**
@ -535,7 +630,7 @@
* @note The allowed values are 49..432.
*/
#if !defined(STM32_PLLI2SN_VALUE) || defined(__DOXYGEN__)
#define STM32_PLLI2SN_VALUE 192
#define STM32_PLLI2SN_VALUE 192
#endif
/**
@ -543,7 +638,7 @@
* @note The allowed values are 2, 4, 6 and 8.
*/
#if !defined(STM32_PLLI2SP_VALUE) || defined(__DOXYGEN__)
#define STM32_PLLI2SP_VALUE 4
#define STM32_PLLI2SP_VALUE 4
#endif
/**
@ -551,7 +646,7 @@
* @note The allowed values are 2..15.
*/
#if !defined(STM32_PLLI2SQ_VALUE) || defined(__DOXYGEN__)
#define STM32_PLLI2SQ_VALUE 5
#define STM32_PLLI2SQ_VALUE 5
#endif
/**
@ -559,7 +654,7 @@
* @note The allowed values are 2..7.
*/
#if !defined(STM32_PLLI2SR_VALUE) || defined(__DOXYGEN__)
#define STM32_PLLI2SR_VALUE 5
#define STM32_PLLI2SR_VALUE 5
#endif
/**
@ -567,7 +662,7 @@
* @note The allowed values are 49..432.
*/
#if !defined(STM32_PLLSAIN_VALUE) || defined(__DOXYGEN__)
#define STM32_PLLSAIN_VALUE 120
#define STM32_PLLSAIN_VALUE 120
#endif
/**
@ -575,7 +670,7 @@
* @note The allowed values are 2, 4, 6 and 8.
*/
#if !defined(STM32_PLLSAIP_VALUE) || defined(__DOXYGEN__)
#define STM32_PLLSAIP_VALUE 4
#define STM32_PLLSAIP_VALUE 4
#endif
/**
@ -583,7 +678,7 @@
* @note The allowed values are 2..15.
*/
#if !defined(STM32_PLLSAIQ_VALUE) || defined(__DOXYGEN__)
#define STM32_PLLSAIQ_VALUE 8
#define STM32_PLLSAIQ_VALUE 8
#endif
/**
@ -591,29 +686,125 @@
* @note The allowed values are 2..7.
*/
#if !defined(STM32_PLLSAIR_VALUE) || defined(__DOXYGEN__)
#define STM32_PLLSAIR_VALUE 4
#define STM32_PLLSAIR_VALUE 4
#endif
/**
* @brief PLLSAIDIVR value (LCD clock divider).
*/
#if !defined(STM32_PLLSAIDIVR) || defined(__DOXYGEN__)
#define STM32_PLLSAIDIVR STM32_PLLSAIDIVR_OFF
#define STM32_PLLSAIDIVR STM32_PLLSAIDIVR_OFF
#endif
/**
* @brief SAI1SEL value (SAI1 clock source).
*/
#if !defined(STM32_SAI1SEL) || defined(__DOXYGEN__)
#define STM32_SAI1SEL STM32_SAI1SEL_OFF
#define STM32_SAI1SEL STM32_SAI1SEL_OFF
#endif
/**
* @brief SAI2SEL value (SAI2 clock source).
*/
#if !defined(STM32_SAI2SEL) || defined(__DOXYGEN__)
#define STM32_SAI2SEL STM32_SAI2SEL_OFF
#define STM32_SAI2SEL STM32_SAI2SEL_OFF
#endif
/**
* @brief USART1 clock source.
*/
#if !defined(STM32_USART1SEL) || defined(__DOXYGEN__)
#define STM32_USART1SEL STM32_USART1SEL_PCLK2
/**
* @brief USART2 clock source.
*/
#if !defined(STM32_USART2SEL) || defined(__DOXYGEN__)
#define STM32_USART2SEL STM32_USART2SEL_PCLK1
/**
* @brief USART3 clock source.
*/
#if !defined(STM32_USART3SEL) || defined(__DOXYGEN__)
#define STM32_USART3SEL STM32_USART3SEL_PCLK1
/**
* @brief UART4 clock source.
*/
#if !defined(STM32_UART4SEL) || defined(__DOXYGEN__)
#define STM32_UART4SEL STM32_UART4SEL_PCLK1
/**
* @brief UART5 clock source.
*/
#if !defined(STM32_UART5SEL) || defined(__DOXYGEN__)
#define STM32_UART5SEL STM32_UART5SEL_PCLK1
/**
* @brief USART6 clock source.
*/
#if !defined(STM32_USART6SEL) || defined(__DOXYGEN__)
#define STM32_USART6SEL STM32_USART6SEL_PCLK2
/**
* @brief UART7 clock source.
*/
#if !defined(STM32_UART7SEL) || defined(__DOXYGEN__)
#define STM32_UART7SEL STM32_UART7SEL_PCLK1
/**
* @brief UART8 clock source.
*/
#if !defined(STM32_UART8SEL) || defined(__DOXYGEN__)
#define STM32_UART8SEL STM32_UART8SEL_PCLK1
/**
* @brief I2C1 clock source.
*/
#if !defined(STM32_I2C1SEL) || defined(__DOXYGEN__)
#define STM32_I2C1SEL STM32_I2C1SEL_PCLK1
/**
* @brief I2C2 clock source.
*/
#if !defined(STM32_I2C2SEL) || defined(__DOXYGEN__)
#define STM32_I2C2SEL STM32_I2C2SEL_PCLK1
/**
* @brief I2C3 clock source.
*/
#if !defined(STM32_I2C3SEL) || defined(__DOXYGEN__)
#define STM32_I2C3SEL STM32_I2C3SEL_PCLK1
/**
* @brief I2C4 clock source.
*/
#if !defined(STM32_I2C4SEL) || defined(__DOXYGEN__)
#define STM32_I2C4SEL STM32_I2C4SEL_PCLK1
/**
* @brief LPTIM1 clock source.
*/
#if !defined(STM32_LPTIM1SEL) || defined(__DOXYGEN__)
#define STM32_LPTIM1SEL STM32_LPTIM1SEL_PCLK1
/**
* @brief CEC clock source.
*/
#if !defined(STM32_CECSEL) || defined(__DOXYGEN__)
#define STM32_CECSEL STM32_CECSEL_LSE
/**
* @brief PLL48CLK clock source.
*/
#if !defined(STM32_CK48MSEL) || defined(__DOXYGEN__)
#define STM32_CK48MSEL STM32_CK48MSEL_PLL
/**
* @brief SDMMC clock source.
*/
#if !defined(STM32_SDMMCSEL) || defined(__DOXYGEN__)
#define STM32_SDMMCSEL STM32_SDMMCSEL_PLL48CLK
/** @} */
/*===========================================================================*/
@ -856,7 +1047,7 @@
/*
* PLL enable check.
*/
#if STM32_CLOCK48_REQUIRED || \
#if (STM32_CLOCK48_REQUIRED && (STM32_CK48MSEL == STM32_CK48MSEL_PLL)) || \
(STM32_SW == STM32_SW_PLL) || \
(STM32_MCO1SEL == STM32_MCO1SEL_PLL) || \
(STM32_MCO2SEL == STM32_MCO2SEL_PLL) || \
@ -1173,7 +1364,8 @@
/*
* PLLSAI enable check.
*/
#if (STM32_PLLSAIDIVR != STM32_PLLSAIDIVR_OFF) || \
#if (STM32_CLOCK48_REQUIRED && (STM32_CK48MSEL == STM32_CK48MSEL_PLLSAI)) | \
(STM32_PLLSAIDIVR != STM32_PLLSAIDIVR_OFF) || \
(STM32_SAI1SEL == STM32_SAI1SEL_SAIPLL) || \
(STM32_SAI2SEL == STM32_SAI2SEL_SAIPLL) || \
defined(__DOXYGEN__)
@ -1383,18 +1575,221 @@
#error "invalid STM32_RTCSEL value specified"
#endif
/**
* @brief USART1 frequency.
*/
#if (STM32_USART1SEL == STM32_USART1SEL_APB) || defined(__DOXYGEN)
#define STM32_USART1CLK STM32_PCLK2
#elif STM32_USART1SEL == STM32_USART1SEL_SYSCLK
#define STM32_USART1CLK STM32_SYSCLK
#elif STM32_USART1SEL == STM32_USART1SEL_HSI16
#define STM32_USART1CLK STM32_HSICLK
#elif STM32_USART1SEL == STM32_USART1SEL_LSE
#define STM32_USART1CLK STM32_LSECLK
#else
#error "invalid source selected for USART1 clock"
#endif
/**
* @brief USART2 frequency.
*/
#if (STM32_USART2SEL == STM32_USART2SEL_APB) || defined(__DOXYGEN)
#define STM32_USART2CLK STM32_PCLK1
#elif STM32_USART2SEL == STM32_USART2SEL_SYSCLK
#define STM32_USART2CLK STM32_SYSCLK
#elif STM32_USART2SEL == STM32_USART2SEL_HSI16
#define STM32_USART2CLK STM32_HSICLK
#elif STM32_USART2SEL == STM32_USART2SEL_LSE
#define STM32_USART2CLK STM32_LSECLK
#else
#error "invalid source selected for USART2 clock"
#endif
/**
* @brief USART3 frequency.
*/
#if (STM32_USART3SEL == STM32_USART3SEL_APB) || defined(__DOXYGEN)
#define STM32_USART3CLK STM32_PCLK1
#elif STM32_USART3SEL == STM32_USART3SEL_SYSCLK
#define STM32_USART3CLK STM32_SYSCLK
#elif STM32_USART3SEL == STM32_USART3SEL_HSI16
#define STM32_USART3CLK STM32_HSICLK
#elif STM32_USART3SEL == STM32_USART3SEL_LSE
#define STM32_USART3CLK STM32_LSECLK
#else
#error "invalid source selected for USART3 clock"
#endif
/**
* @brief UART4 frequency.
*/
#if (STM32_UART4SEL == STM32_UART4SEL_APB) || defined(__DOXYGEN)
#define STM32_UART4CLK STM32_PCLK1
#elif STM32_UART4SEL == STM32_UART4SEL_SYSCLK
#define STM32_UART4CLK STM32_SYSCLK
#elif STM32_UART4SEL == STM32_UART4SEL_HSI16
#define STM32_UART4CLK STM32_HSICLK
#elif STM32_UART4SEL == STM32_UART4SEL_LSE
#define STM32_UART4CLK STM32_LSECLK
#else
#error "invalid source selected for UART4 clock"
#endif
/**
* @brief UART5 frequency.
*/
#if (STM32_UART5SEL == STM32_UART5SEL_APB) || defined(__DOXYGEN)
#define STM32_UART5CLK STM32_PCLK1
#elif STM32_UART5SEL == STM32_UART5SEL_SYSCLK
#define STM32_UART5CLK STM32_SYSCLK
#elif STM32_UART5SEL == STM32_UART5SEL_HSI16
#define STM32_UART5CLK STM32_HSICLK
#elif STM32_UART5SEL == STM32_UART5SEL_LSE
#define STM32_UART5CLK STM32_LSECLK
#else
#error "invalid source selected for UART5 clock"
#endif
/**
* @brief USART6 frequency.
*/
#if (STM32_USART6SEL == STM32_USART6SEL_APB) || defined(__DOXYGEN)
#define STM32_USART6CLK STM32_PCLK2
#elif STM32_USART6SEL == STM32_USART6SEL_SYSCLK
#define STM32_USART6CLK STM32_SYSCLK
#elif STM32_USART6SEL == STM32_USART6SEL_HSI16
#define STM32_USART6CLK STM32_HSICLK
#elif STM32_USART6SEL == STM32_USART6SEL_LSE
#define STM32_USART6CLK STM32_LSECLK
#else
#error "invalid source selected for USART6 clock"
#endif
/**
* @brief UART7 frequency.
*/
#if (STM32_UART7SEL == STM32_UART7SEL_APB) || defined(__DOXYGEN)
#define STM32_UART7CLK STM32_PCLK1
#elif STM32_UART7SEL == STM32_UART7SEL_SYSCLK
#define STM32_UART7CLK STM32_SYSCLK
#elif STM32_UART7SEL == STM32_UART7SEL_HSI16
#define STM32_UART7CLK STM32_HSICLK
#elif STM32_UART7SEL == STM32_UART7SEL_LSE
#define STM32_UART7CLK STM32_LSECLK
#else
#error "invalid source selected for UART7 clock"
#endif
/**
* @brief UART8 frequency.
*/
#if (STM32_UART8SEL == STM32_UART8SEL_APB) || defined(__DOXYGEN)
#define STM32_UART8CLK STM32_PCLK1
#elif STM32_UART8SEL == STM32_UART8SEL_SYSCLK
#define STM32_UART8CLK STM32_SYSCLK
#elif STM32_UART8SEL == STM32_UART8SEL_HSI16
#define STM32_UART8CLK STM32_HSICLK
#elif STM32_UART8SEL == STM32_UART8SEL_LSE
#define STM32_UART8CLK STM32_LSECLK
#else
#error "invalid source selected for UART8 clock"
#endif
/**
* @brief I2C1 frequency.
*/
#if (STM32_I2C1SEL == STM32_I2C1SEL_APB) || defined(__DOXYGEN)
#define STM32_I2C1CLK STM32_PCLK1
#elif STM32_I2C1SEL == STM32_I2C1SEL_SYSCLK
#define STM32_I2C1CLK STM32_SYSCLK
#elif STM32_I2C1SEL == STM32_I2C1SEL_HSI16
#define STM32_I2C1CLK STM32_HSICLK
#else
#error "invalid source selected for I2C1 clock"
#endif
/**
* @brief I2C2 frequency.
*/
#if (STM32_I2C2SEL == STM32_I2C2SEL_APB) || defined(__DOXYGEN)
#define STM32_I2C2CLK STM32_PCLK1
#elif STM32_I2C2SEL == STM32_I2C2SEL_SYSCLK
#define STM32_I2C2CLK STM32_SYSCLK
#elif STM32_I2C2SEL == STM32_I2C2SEL_HSI16
#define STM32_I2C2CLK STM32_HSICLK
#else
#error "invalid source selected for I2C2 clock"
#endif
/**
* @brief I2C3 frequency.
*/
#if (STM32_I2C3SEL == STM32_I2C3SEL_APB) || defined(__DOXYGEN)
#define STM32_I2C3CLK STM32_PCLK1
#elif STM32_I2C3SEL == STM32_I2C3SEL_SYSCLK
#define STM32_I2C3CLK STM32_SYSCLK
#elif STM32_I2C3SEL == STM32_I2C3SEL_HSI16
#define STM32_I2C3CLK STM32_HSICLK
#else
#error "invalid source selected for I2C3 clock"
#endif
/**
* @brief I2C4 frequency.
*/
#if (STM32_I2C4SEL == STM32_I2C4SEL_APB) || defined(__DOXYGEN)
#define STM32_I2C4CLK STM32_PCLK1
#elif STM32_I2C4SEL == STM32_I2C4SEL_SYSCLK
#define STM32_I2C4CLK STM32_SYSCLK
#elif STM32_I2C4SEL == STM32_I2C4SEL_HSI16
#define STM32_I2C4CLK STM32_HSICLK
#else
#error "invalid source selected for I2C4 clock"
#endif
/**
* @brief LPTIM1 frequency.
*/
#if (STM32_LPTIM1SEL == STM32_LPTIM1SEL_APB) || defined(__DOXYGEN)
#define STM32_LPTIM1CLK STM32_PCLK1
#elif STM32_LPTIM1SEL == STM32_LPTIM1SEL_SYSCLK
#define STM32_LPTIM1CLK STM32_SYSCLK
#elif STM32_LPTIM1SEL == STM32_LPTIM1SEL_HSI
#define STM32_LPTIM1CLK STM32_HSICLK
#elif STM32_LPTIM1SEL == STM32_LPTIM1SEL_LSE
#define STM32_LPTIM1CLK STM32_LSECLK
#else
#error "invalid source selected for LPTIM1 clock"
#endif
/**
* @brief 48MHz frequency.
*/
#if STM32_CLOCK48_REQUIRED || defined(__DOXYGEN__)
#if (STM32_CK48MSEL == STM32_CK48MSEL_PLL) || defined(__DOXYGEN__)
#define STM32_PLL48CLK (STM32_PLLVCO / STM32_PLLQ_VALUE)
#elif STM32_CK48MSEL == STM32_CK48MSEL_PLLSAI
#define STM32_PLL48CLK (STM32_PLLVCO / STM32_PLLSAIQ_VALUE)
#else
#error "invalid source selected for PLL48CLK clock"
#endif
#else
#define STM32_PLL48CLK 0
#endif
/**
* @brief SDMMC frequency.
*/
#if (STM32_SDMMCSEL == STM32_SDMMCSEL_PLL48CLK) || defined(__DOXYGEN__)
#define STM32_SDMMCCLK STM32_PLL48CLK
#elif STM32_SDMMCSEL == STM32_SDMMCSEL_SYSCLK
#define STM32_SDMMCCLK STM32_SYSCLK
#else
#error "invalid source selected for SDMMC clock"
#endif
/**
* @brief Clock of timers connected to APB1
* (Timers 2, 3, 4, 5, 6, 7, 12, 13, 14).
*/
#if (STM32_PPRE1 == STM32_PPRE1_DIV1) || defined(__DOXYGEN__)
#define STM32_TIMCLK1 (STM32_PCLK1 * 1)
@ -1403,7 +1798,7 @@
#endif
/**
* @brief Clock of timers connected to APB2 (Timers 1, 8, 9, 10, 11).
* @brief Clock of timers connected to APB2.
*/
#if (STM32_PPRE2 == STM32_PPRE2_DIV1) || defined(__DOXYGEN__)
#define STM32_TIMCLK2 (STM32_PCLK2 * 1)
@ -1438,8 +1833,11 @@
#elif STM32_HCLK <= STM32_7WS_THRESHOLD
#define STM32_FLASHBITS 0x00000007
#else
#elif STM32_HCLK <= STM32_8WS_THRESHOLD
#define STM32_FLASHBITS 0x00000008
#else
#define STM32_FLASHBITS 0x00000009
#endif
/*===========================================================================*/

View File

@ -990,7 +990,7 @@
/**
* @brief USART1 frequency.
*/
#if STM32_USART1SEL == STM32_USART1SEL_APB
#if (STM32_USART1SEL == STM32_USART1SEL_APB) || defined(__DOXYGEN)
#define STM32_USART1CLK STM32_PCLK2
#elif STM32_USART1SEL == STM32_USART1SEL_SYSCLK
#define STM32_USART1CLK STM32_SYSCLK
@ -1005,8 +1005,8 @@
/**
* @brief USART2 frequency.
*/
#if STM32_USART2SEL == STM32_USART2SEL_APB
#define STM32_USART2CLK STM32_PCLK2
#if (STM32_USART2SEL == STM32_USART2SEL_APB) || defined(__DOXYGEN)
#define STM32_USART2CLK STM32_PCLK1
#elif STM32_USART2SEL == STM32_USART2SEL_SYSCLK
#define STM32_USART2CLK STM32_SYSCLK
#elif STM32_USART2SEL == STM32_USART2SEL_HSI16
@ -1014,14 +1014,14 @@
#elif STM32_USART2SEL == STM32_USART2SEL_LSE
#define STM32_USART2CLK STM32_LSECLK
#else
#error "invalid source selected for USART1 clock"
#error "invalid source selected for USART2 clock"
#endif
/**
* @brief LPUART1 frequency.
*/
#if STM32_LPUART1SEL == STM32_LPUART1SEL_APB
#define STM32_LPUART1CLK STM32_PCLK2
#if (STM32_LPUART1SEL == STM32_LPUART1SEL_APB) || defined(__DOXYGEN)
#define STM32_LPUART1CLK STM32_PCLK1
#elif STM32_LPUART1SEL == STM32_LPUART1SEL_SYSCLK
#define STM32_LPUART1CLK STM32_SYSCLK
#elif STM32_LPUART1SEL == STM32_LPUART1SEL_HSI16
@ -1035,8 +1035,8 @@
/**
* @brief I2C1 frequency.
*/
#if STM32_I2C1SEL == STM32_I2C1SEL_APB
#define STM32_I2C1CLK STM32_PCLK2
#if (STM32_I2C1SEL == STM32_I2C1SEL_APB) || defined(__DOXYGEN)
#define STM32_I2C1CLK STM32_PCLK1
#elif STM32_I2C1SEL == STM32_I2C1SEL_SYSCLK
#define STM32_I2C1CLK STM32_SYSCLK
#elif STM32_I2C1SEL == STM32_I2C1SEL_HSI16
@ -1048,8 +1048,8 @@
/**
* @brief LPTIM1 frequency.
*/
#if STM32_LPTIM1SEL == STM32_LPTIM1SEL_APB
#define STM32_LPTIM1CLK STM32_PCLK2
#if (STM32_LPTIM1SEL == STM32_LPTIM1SEL_APB) || defined(__DOXYGEN)
#define STM32_LPTIM1CLK STM32_PCLK1
#elif STM32_LPTIM1SEL == STM32_LPTIM1SEL_SYSCLK
#define STM32_LPTIM1CLK STM32_SYSCLK
#elif STM32_LPTIM1SEL == STM32_LPTIM1SEL_HSI16