Skip to content

Commit 2afde47

Browse files
author
Erwan GOURIOU
committed
[STM32F3xx] Sleep API factorization
In order to enable sleep API factorization, HAL_Suspend/ResumeTick functions have been implemented in hal_tick.c for each platform.
1 parent a227a94 commit 2afde47

File tree

7 files changed

+96
-11
lines changed

7 files changed

+96
-11
lines changed

hal/targets/cmsis/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F303VC/hal_tick.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,21 @@ HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) {
106106
return HAL_OK;
107107
}
108108

109+
void HAL_SuspendTick(void)
110+
{
111+
TimMasterHandle.Instance = TIM_MST;
112+
113+
// Disable HAL tick and us_ticker update interrupts (used for 32 bit counter)
114+
__HAL_TIM_DISABLE_IT(&TimMasterHandle, TIM_IT_CC2);
115+
}
116+
117+
void HAL_ResumeTick(void)
118+
{
119+
TimMasterHandle.Instance = TIM_MST;
120+
121+
// Enable HAL tick and us_ticker update interrupts (used for 32 bit counter)
122+
__HAL_TIM_ENABLE_IT(&TimMasterHandle, TIM_IT_CC2);
123+
}
109124
/**
110125
* @}
111126
*/

hal/targets/cmsis/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F334C8/hal_tick.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,21 @@ HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) {
106106
return HAL_OK;
107107
}
108108

109+
void HAL_SuspendTick(void)
110+
{
111+
TimMasterHandle.Instance = TIM_MST;
112+
113+
// Disable HAL tick and us_ticker update interrupts (used for 32 bit counter)
114+
__HAL_TIM_DISABLE_IT(&TimMasterHandle, TIM_IT_CC2);
115+
}
116+
117+
void HAL_ResumeTick(void)
118+
{
119+
TimMasterHandle.Instance = TIM_MST;
120+
121+
// Enable HAL tick and us_ticker update interrupts (used for 32 bit counter)
122+
__HAL_TIM_ENABLE_IT(&TimMasterHandle, TIM_IT_CC2);
123+
}
109124
/**
110125
* @}
111126
*/

hal/targets/cmsis/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F302R8/hal_tick.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,21 @@ HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) {
106106
return HAL_OK;
107107
}
108108

109+
void HAL_SuspendTick(void)
110+
{
111+
TimMasterHandle.Instance = TIM_MST;
112+
113+
// Disable HAL tick and us_ticker update interrupts (used for 32 bit counter)
114+
__HAL_TIM_DISABLE_IT(&TimMasterHandle, TIM_IT_CC2);
115+
}
116+
117+
void HAL_ResumeTick(void)
118+
{
119+
TimMasterHandle.Instance = TIM_MST;
120+
121+
// Enable HAL tick and us_ticker update interrupts (used for 32 bit counter)
122+
__HAL_TIM_ENABLE_IT(&TimMasterHandle, TIM_IT_CC2);
123+
}
109124
/**
110125
* @}
111126
*/

hal/targets/cmsis/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F303K8/hal_tick.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,21 @@ HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) {
106106
return HAL_OK;
107107
}
108108

109+
void HAL_SuspendTick(void)
110+
{
111+
TimMasterHandle.Instance = TIM_MST;
112+
113+
// Disable HAL tick and us_ticker update interrupts (used for 32 bit counter)
114+
__HAL_TIM_DISABLE_IT(&TimMasterHandle, TIM_IT_CC2);
115+
}
116+
117+
void HAL_ResumeTick(void)
118+
{
119+
TimMasterHandle.Instance = TIM_MST;
120+
121+
// Enable HAL tick and us_ticker update interrupts (used for 32 bit counter)
122+
__HAL_TIM_ENABLE_IT(&TimMasterHandle, TIM_IT_CC2);
123+
}
109124
/**
110125
* @}
111126
*/

hal/targets/cmsis/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F303RE/hal_tick.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,21 @@ HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) {
106106
return HAL_OK;
107107
}
108108

109+
void HAL_SuspendTick(void)
110+
{
111+
TimMasterHandle.Instance = TIM_MST;
112+
113+
// Disable HAL tick and us_ticker update interrupts (used for 32 bit counter)
114+
__HAL_TIM_DISABLE_IT(&TimMasterHandle, TIM_IT_CC2);
115+
}
116+
117+
void HAL_ResumeTick(void)
118+
{
119+
TimMasterHandle.Instance = TIM_MST;
120+
121+
// Enable HAL tick and us_ticker update interrupts (used for 32 bit counter)
122+
__HAL_TIM_ENABLE_IT(&TimMasterHandle, TIM_IT_CC2);
123+
}
109124
/**
110125
* @}
111126
*/

hal/targets/cmsis/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F334R8/hal_tick.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,21 @@ HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) {
106106
return HAL_OK;
107107
}
108108

109+
void HAL_SuspendTick(void)
110+
{
111+
TimMasterHandle.Instance = TIM_MST;
112+
113+
// Disable HAL tick and us_ticker update interrupts (used for 32 bit counter)
114+
__HAL_TIM_DISABLE_IT(&TimMasterHandle, TIM_IT_CC2);
115+
}
116+
117+
void HAL_ResumeTick(void)
118+
{
119+
TimMasterHandle.Instance = TIM_MST;
120+
121+
// Enable HAL tick and us_ticker update interrupts (used for 32 bit counter)
122+
__HAL_TIM_ENABLE_IT(&TimMasterHandle, TIM_IT_CC2);
123+
}
109124
/**
110125
* @}
111126
*/

hal/targets/hal/TARGET_STM/TARGET_STM32F3/sleep.c

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,22 +33,17 @@
3333

3434
#include "cmsis.h"
3535

36-
static TIM_HandleTypeDef TimMasterHandle;
37-
38-
void sleep(void)
39-
{
40-
TimMasterHandle.Instance = TIM2;
41-
42-
// Disable HAL tick interrupt
43-
__HAL_TIM_DISABLE_IT(&TimMasterHandle, TIM_IT_CC2);
4436

37+
void sleep(void) {
38+
// Stop HAL systick
39+
HAL_SuspendTick();
4540
// Request to enter SLEEP mode
4641
HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI);
47-
48-
// Enable HAL tick interrupt
49-
__HAL_TIM_ENABLE_IT(&TimMasterHandle, TIM_IT_CC2);
42+
// Restart HAL systick
43+
HAL_ResumeTick();
5044
}
5145

46+
5247
void deepsleep(void)
5348
{
5449
// Request to enter STOP mode with regulator in low power mode

0 commit comments

Comments
 (0)