diff options
author | patacongo <patacongo@7fd9a85b-ad96-42d3-883c-3090e2eb8679> | 2012-08-02 21:48:54 +0000 |
---|---|---|
committer | patacongo <patacongo@7fd9a85b-ad96-42d3-883c-3090e2eb8679> | 2012-08-02 21:48:54 +0000 |
commit | 44af31fc925d375add7afcde161fd7dd12dbb35b (patch) | |
tree | 43bcabdd8062bbd95eb746356950759d1a64c0b3 /nuttx/arch/arm/src/stm32/stm32_rcc.c | |
parent | a9ba8355fbf4dd4a16ae1786167b91e2abd3880c (diff) | |
download | px4-firmware-44af31fc925d375add7afcde161fd7dd12dbb35b.tar.gz px4-firmware-44af31fc925d375add7afcde161fd7dd12dbb35b.tar.bz2 px4-firmware-44af31fc925d375add7afcde161fd7dd12dbb35b.zip |
Add stm32_clockenable() to support recovery from deep sleep low-power usage modes
git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@5000 7fd9a85b-ad96-42d3-883c-3090e2eb8679
Diffstat (limited to 'nuttx/arch/arm/src/stm32/stm32_rcc.c')
-rw-r--r-- | nuttx/arch/arm/src/stm32/stm32_rcc.c | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/nuttx/arch/arm/src/stm32/stm32_rcc.c b/nuttx/arch/arm/src/stm32/stm32_rcc.c index 47a4b550f..49943baa3 100644 --- a/nuttx/arch/arm/src/stm32/stm32_rcc.c +++ b/nuttx/arch/arm/src/stm32/stm32_rcc.c @@ -90,6 +90,27 @@ * Public Functions ****************************************************************************/ +/************************************************************************************ + * Name: stm32_clockconfig + * + * Description: + * Called to establish the clock settings based on the values in board.h. This + * function (by default) will reset most everything, enable the PLL, and enable + * peripheral clocking for all periperipherals enabled in the NuttX configuration + * file. + * + * If CONFIG_ARCH_BOARD_STM32_CUSTOM_CLOCKCONFIG is defined, then clocking will + * be enabled by an externally provided, board-specific function called + * stm32_board_clockconfig(). + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ************************************************************************************/ + void stm32_clockconfig(void) { /* Make sure that we are starting in the reset state */ @@ -114,3 +135,49 @@ void stm32_clockconfig(void) rcc_enableperipherals(); } + +/************************************************************************************ + * Name: stm32_clockenable + * + * Description: + * Re-enable the clock and restore the clock settings based on settings in board.h. + * This function is only available to support low-power modes of operation: When + * re-awakening from deep-sleep modes, it is necessary to re-enable/re-start the + * PLL + * + * This functional performs a subset of the operations performed by + * stm32_clockconfig(): It does not reset any devices, and it does not reset the + * currenlty enabled peripheral clocks. + * + * If CONFIG_ARCH_BOARD_STM32_CUSTOM_CLOCKCONFIG is defined, then clocking will + * be enabled by an externally provided, board-specific function called + * stm32_board_clockconfig(). + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ************************************************************************************/ + +#ifdef CONFIG_PM +void stm32_clockenable(void); +{ +#if defined(CONFIG_ARCH_BOARD_STM32_CUSTOM_CLOCKCONFIG) + + /* Invoke Board Custom Clock Configuration */ + + stm32_board_clockconfig(); + +#else + + /* Invoke standard, fixed clock configuration based on definitions in board.h */ + + stm32_stdclockconfig(); + +#endif +} +#endif + + |