Skip to content

Commit ace8210

Browse files
committed
Add implementation of ticker_free() function to CI boards.
This PR provides implementation of ticker_free() function for the following boards: ARCH_PRO EV_COG_AD3029LZ EV_COG_AD4050LZ K22F K64F K82F KW24D KW41Z LPC546XX NRF51_DK NRF52_DK NUCLEO_F207ZG NUCLEO_F401RE NUCLEO_F429ZI NUCLEO_F746ZG REALTEK_RTL8195AM
1 parent c0ee843 commit ace8210

File tree

16 files changed

+69
-13
lines changed

16 files changed

+69
-13
lines changed

targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/us_ticker.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ void us_ticker_fire_interrupt(void)
357357

358358
void us_ticker_free(void)
359359
{
360-
360+
adi_tmr_Enable(ADI_TMR_DEVICE_GP2, false);
361361
}
362362

363363
/*

targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/api/us_ticker.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@ void us_ticker_fire_interrupt(void)
355355

356356
void us_ticker_free(void)
357357
{
358-
358+
adi_tmr_Enable(ADI_TMR_DEVICE_GP2, false);
359359
}
360360

361361
/*

targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_K82F/us_ticker.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,5 +139,13 @@ void us_ticker_fire_interrupt(void)
139139

140140
void us_ticker_free(void)
141141
{
142+
PIT_StopTimer(PIT, kPIT_Chnl_3);
143+
PIT_StopTimer(PIT, kPIT_Chnl_2);
144+
PIT_StopTimer(PIT, kPIT_Chnl_1);
145+
PIT_StopTimer(PIT, kPIT_Chnl_0);
146+
147+
PIT_DisableInterrupts(PIT, kPIT_Chnl_3, kPIT_TimerInterruptEnable);
148+
NVIC_DisableIRQ(PIT3_IRQn);
142149

150+
us_ticker_inited = false;
143151
}

targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KW24D/us_ticker.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,5 +139,13 @@ void us_ticker_fire_interrupt(void)
139139

140140
void us_ticker_free(void)
141141
{
142+
PIT_StopTimer(PIT, kPIT_Chnl_3);
143+
PIT_StopTimer(PIT, kPIT_Chnl_2);
144+
PIT_StopTimer(PIT, kPIT_Chnl_1);
145+
PIT_StopTimer(PIT, kPIT_Chnl_0);
146+
147+
PIT_DisableInterrupts(PIT, kPIT_Chnl_3, kPIT_TimerInterruptEnable);
148+
NVIC_DisableIRQ(PIT3_IRQn);
142149

150+
us_ticker_inited = false;
143151
}

targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KW41Z/us_ticker.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,5 +155,11 @@ void us_ticker_fire_interrupt(void)
155155

156156
void us_ticker_free(void)
157157
{
158+
PIT_StopTimer(PIT, kPIT_Chnl_1);
159+
PIT_StopTimer(PIT, kPIT_Chnl_0);
158160

161+
TPM_DisableInterrupts(TPM2, kTPM_TimeOverflowInterruptEnable);
162+
NVIC_DisableIRQ(TPM2_IRQn);
163+
164+
us_ticker_inited = false;
159165
}

targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K22F/us_ticker.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,5 +139,13 @@ void us_ticker_fire_interrupt(void)
139139

140140
void us_ticker_free(void)
141141
{
142+
PIT_StopTimer(PIT, kPIT_Chnl_3);
143+
PIT_StopTimer(PIT, kPIT_Chnl_2);
144+
PIT_StopTimer(PIT, kPIT_Chnl_1);
145+
PIT_StopTimer(PIT, kPIT_Chnl_0);
146+
147+
PIT_DisableInterrupts(PIT, kPIT_Chnl_3, kPIT_TimerInterruptEnable);
148+
NVIC_DisableIRQ(PIT3_IRQn);
142149

150+
us_ticker_inited = false;
143151
}

targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K64F/us_ticker.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ void us_ticker_init(void)
7070
PIT_StopTimer(PIT, kPIT_Chnl_2);
7171
PIT_SetTimerPeriod(PIT, kPIT_Chnl_2, busClock / 1000000 - 1);
7272
PIT_SetTimerChainMode(PIT, kPIT_Chnl_3, true);
73+
PIT_ClearStatusFlags(PIT, kPIT_Chnl_3, PIT_TFLG_TIF_MASK);
7374
NVIC_SetVector(PIT3_IRQn, (uint32_t) pit_isr);
7475
NVIC_EnableIRQ(PIT3_IRQn);
7576
PIT_DisableInterrupts(PIT, kPIT_Chnl_3, kPIT_TimerInterruptEnable);
@@ -139,5 +140,13 @@ void us_ticker_fire_interrupt(void)
139140

140141
void us_ticker_free(void)
141142
{
143+
PIT_StartTimer(PIT, kPIT_Chnl_3);
144+
PIT_StartTimer(PIT, kPIT_Chnl_2);
145+
PIT_StartTimer(PIT, kPIT_Chnl_1);
146+
PIT_StartTimer(PIT, kPIT_Chnl_0);
147+
148+
PIT_DisableInterrupts(PIT, kPIT_Chnl_3, kPIT_TimerInterruptEnable);
149+
NVIC_DisableIRQ(PIT3_IRQn);
142150

151+
us_ticker_inited = false;
143152
}

targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/api/lp_ticker.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ void lp_ticker_init(void)
6969
lp_ticker_inited = true;
7070
} else {
7171
LPTMR_DisableInterrupts(LPTMR0, kLPTMR_TimerInterruptEnable);
72+
NVIC_EnableIRQ(LPTMR0_IRQn);
7273
}
7374
}
7475

@@ -119,7 +120,8 @@ void lp_ticker_clear_interrupt(void)
119120

120121
void lp_ticker_free(void)
121122
{
122-
123+
LPTMR_DisableInterrupts(LPTMR0, kLPTMR_TimerInterruptEnable);
124+
NVIC_DisableIRQ(LPTMR0_IRQn);
123125
}
124126

125127
#endif /* DEVICE_LPTICKER */

targets/TARGET_NORDIC/TARGET_NRF5x/common_rtc.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,15 @@ void common_rtc_init(void)
180180
m_common_rtc_enabled = true;
181181
}
182182

183+
void common_rtc_free()
184+
{
185+
nrf_rtc_task_trigger(COMMON_RTC_INSTANCE, NRF_RTC_TASK_STOP);
186+
nrf_rtc_int_disable(COMMON_RTC_INSTANCE, LP_TICKER_INT_MASK);
187+
NVIC_DisableIRQ(nrf_drv_get_IRQn(COMMON_RTC_INSTANCE));
188+
189+
m_common_rtc_enabled = false;
190+
}
191+
183192
void common_rtc_set_interrupt(uint32_t ticks_count, uint32_t cc_channel,
184193
uint32_t int_mask)
185194
{

targets/TARGET_NORDIC/TARGET_NRF5x/lp_ticker.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@ void lp_ticker_init(void)
3636

3737
void lp_ticker_free(void)
3838
{
39-
// A common counter is used for RTC, lp_ticker and us_ticker, so it can't be
40-
// disabled here, but this does not cause any extra cost.
39+
common_rtc_free();
4140
}
4241

4342
uint32_t lp_ticker_read()

targets/TARGET_NORDIC/TARGET_NRF5x/us_ticker.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,7 @@ void us_ticker_clear_interrupt(void)
140140
void us_ticker_free(void)
141141
{
142142
nrf_timer_task_trigger(NRF_TIMER1, NRF_TIMER_TASK_STOP);
143-
144143
nrf_timer_int_disable(NRF_TIMER1, nrf_timer_compare_int_get(NRF_TIMER_CC_CHANNEL0));
145-
144+
NVIC_DisableIRQ(TIMER1_IRQn);
146145
us_ticker_initialized = false;
147146
}

targets/TARGET_NXP/TARGET_LPC176X/us_ticker.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,5 +80,8 @@ void us_ticker_clear_interrupt(void) {
8080

8181
void us_ticker_free(void)
8282
{
83+
US_TICKER_TIMER->TCR = 0;
8384

85+
US_TICKER_TIMER->MCR &= ~1;
86+
NVIC_DisableIRQ(US_TICKER_TIMER_IRQn);
8487
}

targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_LPC/us_ticker.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,5 +100,8 @@ void us_ticker_fire_interrupt(void)
100100

101101
void us_ticker_free(void)
102102
{
103-
103+
CTIMER_StopTimer(CTIMER1);
104+
CTIMER1->MCR &= ~1;
105+
NVIC_DisableIRQ(CTIMER1_IRQn);
106+
us_ticker_inited = false;
104107
}

targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/us_ticker.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,5 +122,5 @@ void us_ticker_clear_interrupt(void)
122122

123123
void us_ticker_free(void)
124124
{
125-
125+
HalTimerOp.HalTimerDis((u32)TimerAdapter.TimerId);
126126
}

targets/TARGET_STM/lp_ticker.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ void lp_ticker_clear_interrupt(void)
231231

232232
void lp_ticker_free(void)
233233
{
234-
234+
lp_ticker_disable_interrupt();
235235
}
236236

237237
/*****************************************************************/
@@ -278,12 +278,12 @@ void lp_ticker_disable_interrupt(void)
278278

279279
void lp_ticker_clear_interrupt(void)
280280
{
281-
NVIC_DisableIRQ(RTC_WKUP_IRQn);
281+
lp_ticker_disable_interrupt();
282282
}
283283

284284
void lp_ticker_free(void)
285285
{
286-
286+
lp_ticker_disable_interrupt();
287287
}
288288

289289
#endif /* MBED_CONF_TARGET_LPTICKER_LPTIM */

targets/TARGET_STM/us_ticker.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@ void us_ticker_init(void)
206206
{
207207
// Timer is already initialized in HAL_InitTick()
208208
__HAL_TIM_DISABLE_IT(&TimMasterHandle, TIM_IT_CC1);
209+
HAL_TIM_OC_Start(&TimMasterHandle, TIM_CHANNEL_1);
209210
}
210211

211212
uint32_t us_ticker_read()
@@ -259,6 +260,7 @@ void restore_timer_ctx(void)
259260

260261
void us_ticker_free(void)
261262
{
262-
263+
HAL_TIM_OC_Stop(&TimMasterHandle, TIM_CHANNEL_1);
264+
us_ticker_disable_interrupt();
263265
}
264266

0 commit comments

Comments
 (0)