ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
18 июля
1596696 Топик полностью
IBAH (Вчера, 23:12 - 23:28, просмотров: 62) ответил IBAH на Обратная задача. Переехал с GD32F103 на STM32F103. Перестал работать таймер TIM1!!!! Все включено. В отладчике вижу: тактирование на шине включено, таймер включен, а CNT не тикает! Я начинаю верить в чудеса...
Глюк трудно постигаемой природы... 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))



ГДЕ ЗАКРАЛСЯ ГЛЮК!!!!!


///


///