Added support for LSI prescaler.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@14298 27425a3e-05d8-49a3-a47f-9c15f0e5edd8
This commit is contained in:
parent
dba2dd7996
commit
70f300b396
|
@ -29,7 +29,16 @@
|
|||
/**
|
||||
* @brief LSI clock frequency.
|
||||
*/
|
||||
#define STM32_LSICLK 32000
|
||||
#define STM32_LSIRCCLK 32000
|
||||
|
||||
/**
|
||||
* @name RCC_CSR register bits definitions
|
||||
* @{
|
||||
*/
|
||||
#define STM32_LSIPRE_MASK (1 << 4) /**< LSIPRE field mask. */
|
||||
#define STM32_LSIPRE_NODIV (0 << 4) /**< LSI not divided. */
|
||||
#define STM32_LSIPRE_DIV128 (1 << 4) /**< LSI divided by 128 */
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Derived constants and error checks. */
|
||||
|
@ -40,11 +49,37 @@
|
|||
#error "STM32_RCC_HAS_LSI not defined in stm32_registry.h"
|
||||
#endif
|
||||
|
||||
#if !defined(STM32_RCC_HAS_LSI_PRESCALER)
|
||||
#error "STM32_RCC_HAS_LSI_PRESCALER not defined in stm32_registry.h"
|
||||
#endif
|
||||
|
||||
/* Checks on configurations.*/
|
||||
#if !defined(STM32_LSI_ENABLED)
|
||||
#error "STM32_LSI_ENABLED not defined in mcuconf.h"
|
||||
#endif
|
||||
|
||||
#if STM32_RCC_HAS_LSI_PRESCALER || defined(__DOXYGEN__)
|
||||
|
||||
#if !defined(STM32_LSIPRE)
|
||||
#error "STM32_LSIPRE not defined in mcuconf.h"
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief LSI frequency.
|
||||
*/
|
||||
#if (STM32_LSIPRE == STM32_LSIPRE_NODIV) || defined(__DOXYGEN__)
|
||||
#define STM32_LSICLK (STM32_LSIRCCLK)
|
||||
#elif STM32_LSIPRE == STM32_LSIPRE_DIV128
|
||||
#define STM32_LSICLK (STM32_LSIRCCLK / 128)
|
||||
#else
|
||||
#error "invalid STM32_LSIPRE value specified"
|
||||
#endif
|
||||
|
||||
#else /* !STM32_RCC_HAS_LSI_PRESCALER */
|
||||
#define STM32_LSIPRE 0
|
||||
#define STM32_LSICLK (STM32_LSIRCCLK)
|
||||
#endif /* !STM32_RCC_HAS_LSI_PRESCALER */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver exported variables. */
|
||||
/*===========================================================================*/
|
||||
|
@ -61,7 +96,7 @@ static inline void lsi_init(void) {
|
|||
|
||||
#if STM32_LSI_ENABLED
|
||||
/* LSI activation.*/
|
||||
RCC->CSR |= RCC_CSR_LSION;
|
||||
RCC->CSR |= STM32_LSIPRE | RCC_CSR_LSION;
|
||||
while ((RCC->CSR & RCC_CSR_LSIRDY) == 0) {
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -99,6 +99,7 @@
|
|||
#define STM32_RCC_HAS_HSI48 TRUE
|
||||
#define STM32_RCC_HAS_MSI FALSE
|
||||
#define STM32_RCC_HAS_LSI TRUE
|
||||
#define STM32_RCC_HAS_LSI_PRESCALER FALSE
|
||||
#define STM32_RCC_HAS_LSE TRUE
|
||||
#define STM32_RCC_HAS_HSE TRUE
|
||||
|
||||
|
|
|
@ -66,15 +66,6 @@
|
|||
#endif
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name Internal clock sources
|
||||
* @{
|
||||
*/
|
||||
#define STM32_HSI16CLK 16000000 /**< 16MHz internal clock. */
|
||||
#define STM32_HSI48CLK 48000000 /**< 48MHz internal clock. */
|
||||
#define STM32_LSICLK 32000 /**< Low speed internal clock. */
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name PWR_CR1 register bits definitions
|
||||
* @{
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
#define STM32_RCC_HAS_HSI48 TRUE
|
||||
#define STM32_RCC_HAS_MSI TRUE
|
||||
#define STM32_RCC_HAS_LSI TRUE
|
||||
#define STM32_RCC_HAS_LSI_PRESCALER FALSE
|
||||
#define STM32_RCC_HAS_LSE TRUE
|
||||
#define STM32_RCC_HAS_HSE TRUE
|
||||
|
||||
|
|
|
@ -69,15 +69,6 @@
|
|||
#endif
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name Internal clock sources
|
||||
* @{
|
||||
*/
|
||||
#define STM32_HSI16CLK 16000000 /**< 16MHz internal clock. */
|
||||
#define STM32_HSI48CLK 48000000 /**< 48MHz internal clock. */
|
||||
#define STM32_LSICLK 32000 /**< Low speed internal clock. */
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name PWR_CR1 register bits definitions
|
||||
* @{
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
/*#define STM32_RCC_HAS_HSI48 TRUE*/ /* See below, it changes.*/
|
||||
#define STM32_RCC_HAS_MSI TRUE
|
||||
#define STM32_RCC_HAS_LSI TRUE
|
||||
#define STM32_RCC_HAS_LSI_PRESCALER FALSE
|
||||
#define STM32_RCC_HAS_LSE TRUE
|
||||
#define STM32_RCC_HAS_HSE TRUE
|
||||
|
||||
|
|
Loading…
Reference in New Issue