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
pull/7508/head
Przemyslaw Stekiel 2018-07-20 08:58:11 +02:00
parent c0ee843d63
commit ace821017f
16 changed files with 69 additions and 13 deletions

View File

@ -357,7 +357,7 @@ void us_ticker_fire_interrupt(void)
void us_ticker_free(void)
{
adi_tmr_Enable(ADI_TMR_DEVICE_GP2, false);
}
/*

View File

@ -355,7 +355,7 @@ void us_ticker_fire_interrupt(void)
void us_ticker_free(void)
{
adi_tmr_Enable(ADI_TMR_DEVICE_GP2, false);
}
/*

View File

@ -139,5 +139,13 @@ void us_ticker_fire_interrupt(void)
void us_ticker_free(void)
{
PIT_StopTimer(PIT, kPIT_Chnl_3);
PIT_StopTimer(PIT, kPIT_Chnl_2);
PIT_StopTimer(PIT, kPIT_Chnl_1);
PIT_StopTimer(PIT, kPIT_Chnl_0);
PIT_DisableInterrupts(PIT, kPIT_Chnl_3, kPIT_TimerInterruptEnable);
NVIC_DisableIRQ(PIT3_IRQn);
us_ticker_inited = false;
}

View File

@ -139,5 +139,13 @@ void us_ticker_fire_interrupt(void)
void us_ticker_free(void)
{
PIT_StopTimer(PIT, kPIT_Chnl_3);
PIT_StopTimer(PIT, kPIT_Chnl_2);
PIT_StopTimer(PIT, kPIT_Chnl_1);
PIT_StopTimer(PIT, kPIT_Chnl_0);
PIT_DisableInterrupts(PIT, kPIT_Chnl_3, kPIT_TimerInterruptEnable);
NVIC_DisableIRQ(PIT3_IRQn);
us_ticker_inited = false;
}

View File

@ -155,5 +155,11 @@ void us_ticker_fire_interrupt(void)
void us_ticker_free(void)
{
PIT_StopTimer(PIT, kPIT_Chnl_1);
PIT_StopTimer(PIT, kPIT_Chnl_0);
TPM_DisableInterrupts(TPM2, kTPM_TimeOverflowInterruptEnable);
NVIC_DisableIRQ(TPM2_IRQn);
us_ticker_inited = false;
}

View File

@ -139,5 +139,13 @@ void us_ticker_fire_interrupt(void)
void us_ticker_free(void)
{
PIT_StopTimer(PIT, kPIT_Chnl_3);
PIT_StopTimer(PIT, kPIT_Chnl_2);
PIT_StopTimer(PIT, kPIT_Chnl_1);
PIT_StopTimer(PIT, kPIT_Chnl_0);
PIT_DisableInterrupts(PIT, kPIT_Chnl_3, kPIT_TimerInterruptEnable);
NVIC_DisableIRQ(PIT3_IRQn);
us_ticker_inited = false;
}

View File

@ -70,6 +70,7 @@ void us_ticker_init(void)
PIT_StopTimer(PIT, kPIT_Chnl_2);
PIT_SetTimerPeriod(PIT, kPIT_Chnl_2, busClock / 1000000 - 1);
PIT_SetTimerChainMode(PIT, kPIT_Chnl_3, true);
PIT_ClearStatusFlags(PIT, kPIT_Chnl_3, PIT_TFLG_TIF_MASK);
NVIC_SetVector(PIT3_IRQn, (uint32_t) pit_isr);
NVIC_EnableIRQ(PIT3_IRQn);
PIT_DisableInterrupts(PIT, kPIT_Chnl_3, kPIT_TimerInterruptEnable);
@ -139,5 +140,13 @@ void us_ticker_fire_interrupt(void)
void us_ticker_free(void)
{
PIT_StartTimer(PIT, kPIT_Chnl_3);
PIT_StartTimer(PIT, kPIT_Chnl_2);
PIT_StartTimer(PIT, kPIT_Chnl_1);
PIT_StartTimer(PIT, kPIT_Chnl_0);
PIT_DisableInterrupts(PIT, kPIT_Chnl_3, kPIT_TimerInterruptEnable);
NVIC_DisableIRQ(PIT3_IRQn);
us_ticker_inited = false;
}

View File

@ -69,6 +69,7 @@ void lp_ticker_init(void)
lp_ticker_inited = true;
} else {
LPTMR_DisableInterrupts(LPTMR0, kLPTMR_TimerInterruptEnable);
NVIC_EnableIRQ(LPTMR0_IRQn);
}
}
@ -119,7 +120,8 @@ void lp_ticker_clear_interrupt(void)
void lp_ticker_free(void)
{
LPTMR_DisableInterrupts(LPTMR0, kLPTMR_TimerInterruptEnable);
NVIC_DisableIRQ(LPTMR0_IRQn);
}
#endif /* DEVICE_LPTICKER */

View File

@ -180,6 +180,15 @@ void common_rtc_init(void)
m_common_rtc_enabled = true;
}
void common_rtc_free()
{
nrf_rtc_task_trigger(COMMON_RTC_INSTANCE, NRF_RTC_TASK_STOP);
nrf_rtc_int_disable(COMMON_RTC_INSTANCE, LP_TICKER_INT_MASK);
NVIC_DisableIRQ(nrf_drv_get_IRQn(COMMON_RTC_INSTANCE));
m_common_rtc_enabled = false;
}
void common_rtc_set_interrupt(uint32_t ticks_count, uint32_t cc_channel,
uint32_t int_mask)
{

View File

@ -36,8 +36,7 @@ void lp_ticker_init(void)
void lp_ticker_free(void)
{
// A common counter is used for RTC, lp_ticker and us_ticker, so it can't be
// disabled here, but this does not cause any extra cost.
common_rtc_free();
}
uint32_t lp_ticker_read()

View File

@ -140,8 +140,7 @@ void us_ticker_clear_interrupt(void)
void us_ticker_free(void)
{
nrf_timer_task_trigger(NRF_TIMER1, NRF_TIMER_TASK_STOP);
nrf_timer_int_disable(NRF_TIMER1, nrf_timer_compare_int_get(NRF_TIMER_CC_CHANNEL0));
NVIC_DisableIRQ(TIMER1_IRQn);
us_ticker_initialized = false;
}

View File

@ -80,5 +80,8 @@ void us_ticker_clear_interrupt(void) {
void us_ticker_free(void)
{
US_TICKER_TIMER->TCR = 0;
US_TICKER_TIMER->MCR &= ~1;
NVIC_DisableIRQ(US_TICKER_TIMER_IRQn);
}

View File

@ -100,5 +100,8 @@ void us_ticker_fire_interrupt(void)
void us_ticker_free(void)
{
CTIMER_StopTimer(CTIMER1);
CTIMER1->MCR &= ~1;
NVIC_DisableIRQ(CTIMER1_IRQn);
us_ticker_inited = false;
}

View File

@ -122,5 +122,5 @@ void us_ticker_clear_interrupt(void)
void us_ticker_free(void)
{
HalTimerOp.HalTimerDis((u32)TimerAdapter.TimerId);
}

View File

@ -231,7 +231,7 @@ void lp_ticker_clear_interrupt(void)
void lp_ticker_free(void)
{
lp_ticker_disable_interrupt();
}
/*****************************************************************/
@ -278,12 +278,12 @@ void lp_ticker_disable_interrupt(void)
void lp_ticker_clear_interrupt(void)
{
NVIC_DisableIRQ(RTC_WKUP_IRQn);
lp_ticker_disable_interrupt();
}
void lp_ticker_free(void)
{
lp_ticker_disable_interrupt();
}
#endif /* MBED_CONF_TARGET_LPTICKER_LPTIM */

View File

@ -206,6 +206,7 @@ void us_ticker_init(void)
{
// Timer is already initialized in HAL_InitTick()
__HAL_TIM_DISABLE_IT(&TimMasterHandle, TIM_IT_CC1);
HAL_TIM_OC_Start(&TimMasterHandle, TIM_CHANNEL_1);
}
uint32_t us_ticker_read()
@ -259,6 +260,7 @@ void restore_timer_ctx(void)
void us_ticker_free(void)
{
HAL_TIM_OC_Stop(&TimMasterHandle, TIM_CHANNEL_1);
us_ticker_disable_interrupt();
}