Сделан центрированный центрированный режим счета

This commit is contained in:
Razvalyaev 2025-04-01 14:07:36 +03:00
parent f856b33e1c
commit 4433c7df9c
2 changed files with 14 additions and 3 deletions

View File

@ -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.