summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2014-10-06 21:20:12 +0100
committerDamien George <damien.p.george@gmail.com>2014-10-09 19:02:47 +0100
commit9b6617ea8b2324993e709058dd1a74433a9001a6 (patch)
tree46cb893f56419db351eaef0f696ecd95b66f51ca
parentcc5b4a26534646d2d33edf9d19b331303967806a (diff)
downloadmicropython-9b6617ea8b2324993e709058dd1a74433a9001a6.tar.gz
micropython-9b6617ea8b2324993e709058dd1a74433a9001a6.zip
stmhal: Add pyb.stop() and pyb.standby() functions.
-rw-r--r--stmhal/Makefile1
-rw-r--r--stmhal/modpyb.c54
2 files changed, 17 insertions, 38 deletions
diff --git a/stmhal/Makefile b/stmhal/Makefile
index 158c9629cf..90eaa3be89 100644
--- a/stmhal/Makefile
+++ b/stmhal/Makefile
@@ -143,6 +143,7 @@ SRC_HAL = $(addprefix $(HAL_DIR)/src/,\
stm32f4xx_hal_i2c.c \
stm32f4xx_hal_pcd.c \
stm32f4xx_hal_pcd_ex.c \
+ stm32f4xx_hal_pwr.c \
stm32f4xx_hal_rcc.c \
stm32f4xx_hal_rcc_ex.c \
stm32f4xx_hal_rng.c \
diff --git a/stmhal/modpyb.c b/stmhal/modpyb.c
index 522f95017c..04f47f2d3e 100644
--- a/stmhal/modpyb.c
+++ b/stmhal/modpyb.c
@@ -359,58 +359,36 @@ STATIC mp_obj_t pyb_udelay(mp_obj_t usec_in) {
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(pyb_udelay_obj, pyb_udelay);
-#if 0
-STATIC void SYSCLKConfig_STOP(void) {
- /* After wake-up from STOP reconfigure the system clock */
- /* Enable HSE */
- RCC_HSEConfig(RCC_HSE_ON);
-
- /* Wait till HSE is ready */
- while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET) {
- }
+/// \function stop()
+STATIC mp_obj_t pyb_stop(void) {
+ HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
- /* Enable PLL */
- RCC_PLLCmd(ENABLE);
+ // reconfigure the system clock after waking up
- /* Wait till PLL is ready */
- while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {
+ // enable HSE
+ __HAL_RCC_HSE_CONFIG(RCC_HSE_ON);
+ while (!__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY)) {
}
- /* Select PLL as system clock source */
- RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
-
- /* Wait till PLL is used as system clock source */
- while (RCC_GetSYSCLKSource() != 0x08) {
+ // enable PLL
+ __HAL_RCC_PLL_ENABLE();
+ while (!__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY)) {
}
-}
-#endif
-
-STATIC mp_obj_t pyb_stop(void) {
-#if 0
- PWR_EnterSTANDBYMode();
- //PWR_FlashPowerDownCmd(ENABLE); don't know what the logic is with this
- /* Enter Stop Mode */
- PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);
-
- /* Configures system clock after wake-up from STOP: enable HSE, PLL and select
- * PLL as system clock source (HSE and PLL are disabled in STOP mode) */
- SYSCLKConfig_STOP();
+ // select PLL as system clock source
+ MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, RCC_SYSCLKSOURCE_PLLCLK);
+ while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_CFGR_SWS_PLL) {
+ }
- //PWR_FlashPowerDownCmd(DISABLE);
-#endif
return mp_const_none;
}
-
MP_DEFINE_CONST_FUN_OBJ_0(pyb_stop_obj, pyb_stop);
+/// \function standby()
STATIC mp_obj_t pyb_standby(void) {
-#if 0
- PWR_EnterSTANDBYMode();
-#endif
+ HAL_PWR_EnterSTANDBYMode();
return mp_const_none;
}
-
MP_DEFINE_CONST_FUN_OBJ_0(pyb_standby_obj, pyb_standby);
/// \function have_cdc()