×

Внимание

Форум находится в режиме только для чтения.

STM32L151C6

11 года 4 мес. назад - 11 года 4 мес. назад #3707 от Stepanov Ivan
Stepanov Ivan создал тему: STM32L151C6
Товарищи, помогите пожалйста! Подскажите, как мне настроить прерывание по таймеру TIM2 мк STM32L151C6 (тактовая частота до 4 МГц), вызывающееся не реже чем раз в 10 микросекунд (если раз в 5мкс то вобще АХОНЬ). У меня на тактовой частоте 4 МГц получается вызвать прерывание раз в 25-30 мкс, этого мало :-\

мой код настройки:

//настройка TIM2
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseInitStructure;
 
  TIM_TimeBaseInitStructure.TIM_Prescaler = 10;//тактовая частота 4MГц
  TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInitStructure.TIM_Period = 10;  // 25us
  TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV4;
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);
  /* Clear update interrupt bit */
  TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
  /* TIM IT enable */
  TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
  /* TIM2 enable counter */
  TIM_Cmd(TIM2, ENABLE);



ps: при меньших значения Prescaler и Period прерывания не вызываются вобще, больше-пожалуста, меньше-накасивыкуси
11 года 4 мес. назад #3709 от newseltek
newseltek ответил в теме Re: STM32L151C6
А почему частота 4 мгц ? - почему нельзя выше ? Ведь на вход и выход из прерывания тратится время - вот у NXP при 60 мгц - это 0.4 мкс - стало быть при 4мгц это  будет 0.4*15 = 6мкс .
11 года 4 мес. назад #3714 от Денис Ягов
Денис Ягов ответил в теме Re: STM32L151C6
Согласен с предыдущим оратором.

На частоте 4МГц за 10 мкс можно выполнить 40 операций. Из них 12 - это вход в прерывание, и 12 - выход.
Кроме того - обязательно снять бит прерывания при выходе/входе - это ещё 2 как минимум. Итого останется максимум 24 команды на тело прерывания.

Однозначно "рулить" регистрами периферии напрямую. Никаких циклов - только линейный код. Никаких вызовов процедур.

Прерывание то что делает?
11 года 4 мес. назад #3742 от Stepanov Ivan
Stepanov Ivan ответил в теме Re: STM32L151C6
Пардон, давно тут не был, проблему решил. Причина как вы и говорили, нехватка быстродействия, а быстрее низя, надо ограничить потребление 1.5 - 1.6 мА, так что тактовая частота вобще 2МГц.
11 года 4 мес. назад - 11 года 4 мес. назад #3743 от Stepanov Ivan
Stepanov Ivan ответил в теме Re: STM32L151C6
Да и еще, как можно проберить, цел-ли мк? не выжег ли я его? Потребление как было так и осталось порядка 1.4-1.5мА. Просто при попытке перенастройки режима порта (регистр MODER) передал туда значение (видимо в синтаксисе жестко накосячил) и тем самым спалил его к**ям :-\ И еще, если не сложно, подскажите пожалйста, как можно перенастроить режим работы порта правильно при обращении к регистру напрямую? и получится ли заранее настроив порт стандартной процедурой (с использованием структуры инициализации и GPIO_Init), в последующем менять режим его работы (с входа на выход и наоборот) передачей соответствующих значений в регистр MODER?
11 года 4 мес. назад #3744 от Денис Ягов
Денис Ягов ответил в теме Re: STM32L151C6
Есть много способов узнать "Что делать". Один - на картинке.
Время создания страницы: 0.053 секунд
Работает на Kunena форум