mirror of https://github.com/ARMmbed/mbed-os.git
STM32: fix us ticker set event timestamp
While we are handling new timestamp, disable ticker's interrupt.pull/4632/head
parent
cbfb234f07
commit
0591b2bcd4
|
@ -44,14 +44,16 @@ uint32_t us_ticker_read()
|
||||||
void us_ticker_set_interrupt(timestamp_t timestamp)
|
void us_ticker_set_interrupt(timestamp_t timestamp)
|
||||||
{
|
{
|
||||||
TimMasterHandle.Instance = TIM_MST;
|
TimMasterHandle.Instance = TIM_MST;
|
||||||
|
// disable IT while we are handling the correct timestamp
|
||||||
|
__HAL_TIM_DISABLE_IT(&TimMasterHandle, TIM_IT_CC1);
|
||||||
// Set new output compare value
|
// Set new output compare value
|
||||||
__HAL_TIM_SET_COMPARE(&TimMasterHandle, TIM_CHANNEL_1, (uint32_t)timestamp);
|
__HAL_TIM_SET_COMPARE(&TimMasterHandle, TIM_CHANNEL_1, (uint32_t)timestamp);
|
||||||
// Enable IT
|
|
||||||
__HAL_TIM_ENABLE_IT(&TimMasterHandle, TIM_IT_CC1);
|
|
||||||
// Check if timestamp has already passed, and if so, set the event immediately
|
// Check if timestamp has already passed, and if so, set the event immediately
|
||||||
if ((int32_t)(timestamp - TIM_MST->CNT) <= 0) {
|
if ((int32_t)(timestamp - TIM_MST->CNT) <= 0) {
|
||||||
LL_TIM_GenerateEvent_CC1(TimMasterHandle.Instance);
|
LL_TIM_GenerateEvent_CC1(TimMasterHandle.Instance);
|
||||||
}
|
}
|
||||||
|
// Enable IT
|
||||||
|
__HAL_TIM_ENABLE_IT(&TimMasterHandle, TIM_IT_CC1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void us_ticker_disable_interrupt(void)
|
void us_ticker_disable_interrupt(void)
|
||||||
|
|
Loading…
Reference in New Issue