# HG changeset patch # User Ethan Zonca # Date 2016-10-13 21:38:35 # Node ID fb8415e8edb9a546563a7e3de8886ff2112de8f7 # Parent 1ecaddb549ab92bdd292ff76803ca94da3191b08 Add sleep to most functional modes; decrease clock speed to 2MHz from 8Mhz to save power diff --git a/src/main.c b/src/main.c --- a/src/main.c +++ b/src/main.c @@ -99,6 +99,10 @@ int main(void) { blink_rate = BLINK_SLOW; HAL_PWR_EnterSLEEPMode(0, PWR_SLEEPENTRY_WFI); + HAL_PWR_EnterSLEEPMode(0, PWR_SLEEPENTRY_WFI); + HAL_PWR_EnterSLEEPMode(0, PWR_SLEEPENTRY_WFI); + HAL_PWR_EnterSLEEPMode(0, PWR_SLEEPENTRY_WFI); + // Wait for RTC wakeup interrupt //wfi(); //enter_sleep(); @@ -112,6 +116,11 @@ int main(void) case SYSTEM_GPSACQ: { blink_rate = BLINK_FAST; + HAL_PWR_EnterSLEEPMode(0, PWR_SLEEPENTRY_WFI); + HAL_PWR_EnterSLEEPMode(0, PWR_SLEEPENTRY_WFI); + HAL_PWR_EnterSLEEPMode(0, PWR_SLEEPENTRY_WFI); + HAL_PWR_EnterSLEEPMode(0, PWR_SLEEPENTRY_WFI); + if(!gps_ison()) { @@ -176,6 +185,13 @@ int main(void) state = SYSTEM_IDLE; } } + else + { + HAL_PWR_EnterSLEEPMode(0, PWR_SLEEPENTRY_WFI); + HAL_PWR_EnterSLEEPMode(0, PWR_SLEEPENTRY_WFI); + HAL_PWR_EnterSLEEPMode(0, PWR_SLEEPENTRY_WFI); + HAL_PWR_EnterSLEEPMode(0, PWR_SLEEPENTRY_WFI); + } // Schedule next wakeup (maybe 2mins prior ot timeslot if no osc trim) // Next wakeup should enter SYSTEM_GPSACQ state... diff --git a/src/system.c b/src/system.c --- a/src/system.c +++ b/src/system.c @@ -44,7 +44,7 @@ void sysclk_init(void) RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV4; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0);