Skip to content

Commit 310b12a

Browse files
committed
[Nuvoton] Fix HAL sleep test failure with lp_ticker
Replace wait_us with nu_busy_wait_us in lp_ticker since wait_us is not allowed in sleep test which would suspend us ticker layer on which wait_us relies. nu_busy_wait_us is implemented by calling us ticker HAL API directly rather than relying on us ticker layer.
1 parent 26c0444 commit 310b12a

File tree

5 files changed

+31
-31
lines changed

5 files changed

+31
-31
lines changed

targets/TARGET_NUVOTON/TARGET_M2351/lp_ticker.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
#if DEVICE_LPTICKER
2020

2121
#include "sleep_api.h"
22-
#include "mbed_wait_api.h"
2322
#include "mbed_assert.h"
2423
#include "nu_modutil.h"
24+
#include "nu_timer.h"
2525
#include "nu_miscutil.h"
2626
#include "partition_M2351.h"
2727

@@ -137,24 +137,24 @@ void lp_ticker_init(void)
137137
// Continuous mode
138138
// NOTE: TIMER_CTL_CNTDATEN_Msk exists in NUC472, but not in M451/M480/M2351. In M451/M480/M2351, TIMER_CNT is updated continuously by default.
139139
timer_base->CTL = TIMER_CONTINUOUS_MODE | prescale_timer/* | TIMER_CTL_CNTDATEN_Msk*/;
140-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
140+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
141141

142142
timer_base->CMP = cmp_timer;
143-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
143+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
144144

145145
// Set vector
146146
NVIC_SetVector(TIMER_MODINIT.irq_n, (uint32_t) TIMER_MODINIT.var);
147147

148148
NVIC_DisableIRQ(TIMER_MODINIT.irq_n);
149149

150150
TIMER_EnableInt(timer_base);
151-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
151+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
152152

153153
TIMER_EnableWakeup(timer_base);
154-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
154+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
155155

156156
TIMER_Start(timer_base);
157-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
157+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
158158

159159
/* Wait for timer to start counting and raise active flag */
160160
while(! (timer_base->CTL & TIMER_CTL_ACTSTS_Msk));

targets/TARGET_NUVOTON/TARGET_M451/lp_ticker.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
#if DEVICE_LPTICKER
2020

2121
#include "sleep_api.h"
22-
#include "mbed_wait_api.h"
2322
#include "mbed_assert.h"
2423
#include "nu_modutil.h"
24+
#include "nu_timer.h"
2525
#include "nu_miscutil.h"
2626

2727
/* Micro seconds per second */
@@ -103,24 +103,24 @@ void lp_ticker_init(void)
103103
// Continuous mode
104104
// NOTE: TIMER_CTL_CNTDATEN_Msk exists in NUC472, but not in M451. In M451, TIMER_CNT is updated continuously by default.
105105
timer_base->CTL = TIMER_CONTINUOUS_MODE | prescale_timer/* | TIMER_CTL_CNTDATEN_Msk*/;
106-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
106+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
107107

108108
timer_base->CMP = cmp_timer;
109-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
109+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
110110

111111
// Set vector
112112
NVIC_SetVector(TIMER_MODINIT.irq_n, (uint32_t) TIMER_MODINIT.var);
113113

114114
NVIC_DisableIRQ(TIMER_MODINIT.irq_n);
115115

116116
TIMER_EnableInt(timer_base);
117-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
117+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
118118

119119
TIMER_EnableWakeup(timer_base);
120-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
120+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
121121

122122
TIMER_Start(timer_base);
123-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
123+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
124124

125125
/* Wait for timer to start counting and raise active flag */
126126
while(! (timer_base->CTL & TIMER_CTL_ACTSTS_Msk));

targets/TARGET_NUVOTON/TARGET_M480/lp_ticker.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
#if DEVICE_LPTICKER
2020

2121
#include "sleep_api.h"
22-
#include "mbed_wait_api.h"
2322
#include "mbed_assert.h"
2423
#include "nu_modutil.h"
24+
#include "nu_timer.h"
2525
#include "nu_miscutil.h"
2626

2727
/* Micro seconds per second */
@@ -103,24 +103,24 @@ void lp_ticker_init(void)
103103
// Continuous mode
104104
// NOTE: TIMER_CTL_CNTDATEN_Msk exists in NUC472, but not in M451/M480. In M451/M480, TIMER_CNT is updated continuously by default.
105105
timer_base->CTL = TIMER_CONTINUOUS_MODE | prescale_timer/* | TIMER_CTL_CNTDATEN_Msk*/;
106-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
106+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
107107

108108
timer_base->CMP = cmp_timer;
109-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
109+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
110110

111111
// Set vector
112112
NVIC_SetVector(TIMER_MODINIT.irq_n, (uint32_t) TIMER_MODINIT.var);
113113

114114
NVIC_DisableIRQ(TIMER_MODINIT.irq_n);
115115

116116
TIMER_EnableInt(timer_base);
117-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
117+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
118118

119119
TIMER_EnableWakeup(timer_base);
120-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
120+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
121121

122122
TIMER_Start(timer_base);
123-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
123+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
124124

125125
/* Wait for timer to start counting and raise active flag */
126126
while(! (timer_base->CTL & TIMER_CTL_ACTSTS_Msk));

targets/TARGET_NUVOTON/TARGET_NANO100/lp_ticker.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
#if DEVICE_LPTICKER
2020

2121
#include "sleep_api.h"
22-
#include "mbed_wait_api.h"
2322
#include "mbed_assert.h"
2423
#include "nu_modutil.h"
24+
#include "nu_timer.h"
2525
#include "nu_miscutil.h"
2626

2727
/* Micro seconds per second */
@@ -104,27 +104,27 @@ void lp_ticker_init(void)
104104
MBED_ASSERT(cmp_timer >= TMR_CMP_MIN && cmp_timer <= TMR_CMP_MAX);
105105
// Continuous mode
106106
timer_base->CTL = TIMER_CONTINUOUS_MODE;
107-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
107+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
108108

109109
timer_base->PRECNT = prescale_timer;
110-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
110+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
111111

112112
timer_base->CMPR = cmp_timer;
113-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
113+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
114114

115115
// Set vector
116116
NVIC_SetVector(TIMER_MODINIT.irq_n, (uint32_t) TIMER_MODINIT.var);
117117

118118
NVIC_DisableIRQ(TIMER_MODINIT.irq_n);
119119

120120
TIMER_EnableInt(timer_base);
121-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
121+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
122122

123123
TIMER_EnableWakeup(timer_base);
124-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
124+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
125125

126126
TIMER_Start(timer_base);
127-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
127+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
128128

129129
/* Wait for timer to start counting and raise active flag */
130130
while(! (timer_base->CTL & TIMER_CTL_TMR_ACT_Msk));

targets/TARGET_NUVOTON/TARGET_NUC472/lp_ticker.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
#if DEVICE_LPTICKER
2020

2121
#include "sleep_api.h"
22-
#include "mbed_wait_api.h"
2322
#include "mbed_assert.h"
2423
#include "nu_modutil.h"
24+
#include "nu_timer.h"
2525
#include "nu_miscutil.h"
2626

2727
/* Micro seconds per second */
@@ -102,24 +102,24 @@ void lp_ticker_init(void)
102102
MBED_ASSERT(cmp_timer >= TMR_CMP_MIN && cmp_timer <= TMR_CMP_MAX);
103103
// Continuous mode
104104
timer_base->CTL = TIMER_CONTINUOUS_MODE | prescale_timer | TIMER_CTL_CNTDATEN_Msk;
105-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
105+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
106106

107107
timer_base->CMP = cmp_timer;
108-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
108+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
109109

110110
// Set vector
111111
NVIC_SetVector(TIMER_MODINIT.irq_n, (uint32_t) TIMER_MODINIT.var);
112112

113113
NVIC_DisableIRQ(TIMER_MODINIT.irq_n);
114114

115115
TIMER_EnableInt(timer_base);
116-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
116+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
117117

118118
TIMER_EnableWakeup(timer_base);
119-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
119+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
120120

121121
TIMER_Start(timer_base);
122-
wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
122+
nu_busy_wait_us((NU_US_PER_SEC / NU_TMRCLK_PER_SEC) * 3);
123123

124124
/* Wait for timer to start counting and raise active flag */
125125
while(! (timer_base->CTL & TIMER_CTL_ACTSTS_Msk));

0 commit comments

Comments
 (0)