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