Сделан центрированный центрированный режим счета
This commit is contained in:
parent
f856b33e1c
commit
4433c7df9c
@ -65,7 +65,15 @@ void TIMx_Count(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS)
|
||||
TIMS->tx_cnt -= TIMS->tx_step / TIMx->PSC;
|
||||
else if (((TIMx->CR1 & TIM_CR1_DIR) == 0) && TIMx->CR1) // down COUNTER and COUNTER ENABLE
|
||||
TIMS->tx_cnt += TIMS->tx_step / TIMx->PSC;
|
||||
|
||||
if (TIMS->tx_cnt > 0)
|
||||
{
|
||||
TIMx->CNT = (uint32_t)TIMS->tx_cnt;
|
||||
}
|
||||
else
|
||||
{
|
||||
TIMx->CNT = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -85,13 +93,17 @@ void Overflow_Check(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS)
|
||||
|
||||
if (TIMS->tx_cnt > TIMS->RELOAD || TIMS->tx_cnt < 0) // OVERFLOW
|
||||
{
|
||||
TIMS->RELOAD = TIMx->ARR; // RELOAD ARR
|
||||
|
||||
switch (TIMx->CR1 & TIM_CR1_CMS)
|
||||
{
|
||||
case TIM_COUNTERMODE_CENTERALIGNED1:
|
||||
case TIM_COUNTERMODE_CENTERALIGNED2:
|
||||
case TIM_COUNTERMODE_CENTERALIGNED3:
|
||||
TIMx->CR1 ^= TIM_CR1_DIR;
|
||||
if(TIMS->tx_cnt > TIMS->RELOAD)
|
||||
TIMx->CR1 |= TIM_CR1_DIR;
|
||||
else if(TIMS->tx_cnt < 0)
|
||||
TIMx->CR1 &= ~TIM_CR1_DIR;
|
||||
|
||||
if (TIMx->DIER & TIM_DIER_UIE) // if update interrupt enable
|
||||
call_IRQHandller(TIMx); // call HANDLER
|
||||
@ -99,7 +111,6 @@ void Overflow_Check(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS)
|
||||
|
||||
// default counting
|
||||
default:
|
||||
TIMS->RELOAD = TIMx->ARR; // RELOAD ARR
|
||||
|
||||
if (TIMS->tx_cnt > TIMx->ARR) // reset COUNTER
|
||||
TIMS->tx_cnt = 0;
|
||||
|
||||
Binary file not shown.
Loading…
Reference in New Issue
Block a user