Skip to content

Commit 3ab5697

Browse files
author
Erwan GOURIOU
committed
[STM32F4xx] 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 2afde47 commit 3ab5697

File tree

17 files changed

+232
-12
lines changed

17 files changed

+232
-12
lines changed

hal/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_B96B_F446VE/hal_tick.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,21 @@ HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) {
124124
return HAL_OK;
125125
}
126126

127+
void HAL_SuspendTick(void)
128+
{
129+
TimMasterHandle.Instance = TIM_MST;
130+
131+
// Disable HAL tick and us_ticker update interrupts (used for 32 bit counter)
132+
__HAL_TIM_DISABLE_IT(&TimMasterHandle, TIM_IT_CC2);
133+
}
134+
135+
void HAL_ResumeTick(void)
136+
{
137+
TimMasterHandle.Instance = TIM_MST;
138+
139+
// Enable HAL tick and us_ticker update interrupts (used for 32 bit counter)
140+
__HAL_TIM_ENABLE_IT(&TimMasterHandle, TIM_IT_CC2);
141+
}
127142
/**
128143
* @}
129144
*/

hal/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F401VC/hal_tick.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,21 @@ HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) {
109109
return HAL_OK;
110110
}
111111

112+
void HAL_SuspendTick(void)
113+
{
114+
TimMasterHandle.Instance = TIM_MST;
115+
116+
// Disable HAL tick and us_ticker update interrupts (used for 32 bit counter)
117+
__HAL_TIM_DISABLE_IT(&TimMasterHandle, TIM_IT_CC2);
118+
}
119+
120+
void HAL_ResumeTick(void)
121+
{
122+
TimMasterHandle.Instance = TIM_MST;
123+
124+
// Enable HAL tick and us_ticker update interrupts (used for 32 bit counter)
125+
__HAL_TIM_ENABLE_IT(&TimMasterHandle, TIM_IT_CC2);
126+
}
112127
/**
113128
* @}
114129
*/

hal/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F429ZI/hal_tick.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,21 @@ HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) {
122122
return HAL_OK;
123123
}
124124

125+
void HAL_SuspendTick(void)
126+
{
127+
TimMasterHandle.Instance = TIM_MST;
128+
129+
// Disable HAL tick and us_ticker update interrupts (used for 32 bit counter)
130+
__HAL_TIM_DISABLE_IT(&TimMasterHandle, TIM_IT_CC2);
131+
}
132+
133+
void HAL_ResumeTick(void)
134+
{
135+
TimMasterHandle.Instance = TIM_MST;
136+
137+
// Enable HAL tick and us_ticker update interrupts (used for 32 bit counter)
138+
__HAL_TIM_ENABLE_IT(&TimMasterHandle, TIM_IT_CC2);
139+
}
125140
/**
126141
* @}
127142
*/

hal/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F429ZI/hal_tick.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@
5151

5252
#define HAL_TICK_DELAY (1000) // 1 ms
5353

54+
void HAL_SuspendTick(void);
55+
5456
#ifdef __cplusplus
5557
}
5658
#endif

hal/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F469NI/hal_tick.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,21 @@ HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) {
110110
return HAL_OK;
111111
}
112112

113+
void HAL_SuspendTick(void)
114+
{
115+
TimMasterHandle.Instance = TIM_MST;
116+
117+
// Disable HAL tick and us_ticker update interrupts (used for 32 bit counter)
118+
__HAL_TIM_DISABLE_IT(&TimMasterHandle, TIM_IT_CC2);
119+
}
120+
121+
void HAL_ResumeTick(void)
122+
{
123+
TimMasterHandle.Instance = TIM_MST;
124+
125+
// Enable HAL tick and us_ticker update interrupts (used for 32 bit counter)
126+
__HAL_TIM_ENABLE_IT(&TimMasterHandle, TIM_IT_CC2);
127+
}
113128
/**
114129
* @}
115130
*/

hal/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_ELMO_F411RE/hal_tick.c

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

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

hal/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_MTS_DRAGONFLY_F411RE/hal_tick.c

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

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

hal/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_MTS_MDOT_F405RG/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_STM32F4/TARGET_MTS_MDOT_F411RE/hal_tick.c

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

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

hal/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_NUCLEO_F401RE/hal_tick.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,21 @@ HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) {
109109
return HAL_OK;
110110
}
111111

112+
void HAL_SuspendTick(void)
113+
{
114+
TimMasterHandle.Instance = TIM_MST;
115+
116+
// Disable HAL tick and us_ticker update interrupts (used for 32 bit counter)
117+
__HAL_TIM_DISABLE_IT(&TimMasterHandle, TIM_IT_CC2);
118+
}
119+
120+
void HAL_ResumeTick(void)
121+
{
122+
TimMasterHandle.Instance = TIM_MST;
123+
124+
// Enable HAL tick and us_ticker update interrupts (used for 32 bit counter)
125+
__HAL_TIM_ENABLE_IT(&TimMasterHandle, TIM_IT_CC2);
126+
}
112127
/**
113128
* @}
114129
*/

hal/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_NUCLEO_F410RB/hal_tick.c

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

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

hal/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_NUCLEO_F411RE/hal_tick.c

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

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

hal/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_NUCLEO_F429ZI/hal_tick.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,21 @@ HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) {
122122
return HAL_OK;
123123
}
124124

125+
void HAL_SuspendTick(void)
126+
{
127+
TimMasterHandle.Instance = TIM_MST;
128+
129+
// Disable HAL tick and us_ticker update interrupts (used for 32 bit counter)
130+
__HAL_TIM_DISABLE_IT(&TimMasterHandle, TIM_IT_CC2);
131+
}
132+
133+
void HAL_ResumeTick(void)
134+
{
135+
TimMasterHandle.Instance = TIM_MST;
136+
137+
// Enable HAL tick and us_ticker update interrupts (used for 32 bit counter)
138+
__HAL_TIM_ENABLE_IT(&TimMasterHandle, TIM_IT_CC2);
139+
}
125140
/**
126141
* @}
127142
*/

hal/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_NUCLEO_F446RE/hal_tick.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,21 @@ HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) {
124124
return HAL_OK;
125125
}
126126

127+
void HAL_SuspendTick(void)
128+
{
129+
TimMasterHandle.Instance = TIM_MST;
130+
131+
// Disable HAL tick and us_ticker update interrupts (used for 32 bit counter)
132+
__HAL_TIM_DISABLE_IT(&TimMasterHandle, TIM_IT_CC2);
133+
}
134+
135+
void HAL_ResumeTick(void)
136+
{
137+
TimMasterHandle.Instance = TIM_MST;
138+
139+
// Enable HAL tick and us_ticker update interrupts (used for 32 bit counter)
140+
__HAL_TIM_ENABLE_IT(&TimMasterHandle, TIM_IT_CC2);
141+
}
127142
/**
128143
* @}
129144
*/

hal/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_STM32F407VG/hal_tick.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,21 @@ HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) {
110110
return HAL_OK;
111111
}
112112

113+
void HAL_SuspendTick(void)
114+
{
115+
TimMasterHandle.Instance = TIM_MST;
116+
117+
// Disable HAL tick and us_ticker update interrupts (used for 32 bit counter)
118+
__HAL_TIM_DISABLE_IT(&TimMasterHandle, TIM_IT_CC2);
119+
}
120+
121+
void HAL_ResumeTick(void)
122+
{
123+
TimMasterHandle.Instance = TIM_MST;
124+
125+
// Enable HAL tick and us_ticker update interrupts (used for 32 bit counter)
126+
__HAL_TIM_ENABLE_IT(&TimMasterHandle, TIM_IT_CC2);
127+
}
113128
/**
114129
* @}
115130
*/

hal/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_UBLOX_C029/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_STM32F4/sleep.c

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,25 +28,18 @@
2828
*******************************************************************************
2929
*/
3030
#include "sleep_api.h"
31-
3231
#if DEVICE_SLEEP
3332

3433
#include "cmsis.h"
3534

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

36+
void sleep(void) {
37+
// Stop HAL systick
38+
HAL_SuspendTick();
4539
// Request to enter SLEEP mode
4640
HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI);
47-
48-
// Enable HAL tick interrupt
49-
__HAL_TIM_ENABLE_IT(&TimMasterHandle, TIM_IT_CC2);
41+
// Restart HAL systick
42+
HAL_ResumeTick();
5043
}
5144

5245
void deepsleep(void)

0 commit comments

Comments
 (0)