Глюк трудно постигаемой природы... ARR установился в ноль!!! Пишу
через LL, инициализация: //
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_TIM1);
TIM_InitStruct.Prescaler = (SystemCoreClock / WaitUsTimerFreq) - 1;
TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP;
TIM_InitStruct.Autoreload = 0xFFFF;
TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1;
TIM_InitStruct.RepetitionCounter = 0;
LL_TIM_Init(TIM1, &TIM_InitStruct);
LL_TIM_SetClockSource(TIM1, LL_TIM_CLOCKSOURCE_INTERNAL);
LL_TIM_SetTriggerOutput(TIM1, LL_TIM_TRGO_RESET);
LL_TIM_DisableMasterSlaveMode(TIM1);
TIM1->CNT=0;
//TIM1->ARR=0xFFFF;
LL_TIM_EnableCounter(TIM1);
/// ARR равен 0
Добавляю
TIM1->ARR=0xFFFF;
Работает.
Пишу
TIM_InitStruct.Autoreload = 0xFFFFFFFF;
Работает.
Пишу
TIM_InitStruct.Autoreload = 0x0000FFFF;
Не работает.
Autoreload определен как uint32
В LL_TIM_Init(); тупо вызывается функция
LL_TIM_SetAutoReload(TIMx, TIM_InitStructur->Autoreload);
__STATIC_INLINE void LL_TIM_SetAutoReload(TIM_TypeDef *TIMx, uint32_t AutoReload)
{
WRITE_REG(TIMx->ARR, AutoReload);
}
в файле stm32f1xx.h
#define WRITE_REG(REG, VAL) ((REG) = (VAL))
ГДЕ ЗАКРАЛСЯ ГЛЮК!!!!!
///
///