Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Таймер STM32F7
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Maxim_Sh
Запустил на СТМке таймер, по прерыванию дергаю GPIO
Центральная частота STM 200МГц, таймер работает (судя по CUBE) от 100 МГц
Проект сгенерин в CUBE, подключены lwip, HAL, FreeRTOS
GPIO в режиме хай спид (до 50 Мгц)

проблема в разгоне частоты дерганья GPIO
максимум удалось набрать 500КГц (судя по осцилу), нужно в 10 раз быстрее

управлял скоростью таймера примерно так (не обращайте внимание на значения)
Код
    TIM_TimeBaseInitTypeDef base_timer;
    TIM_TimeBaseStructInit(&base_timer);
  
    base_timer.TIM_Prescaler = 240 - 1; // делитель 240
    base_timer.TIM_Period = 100; //период 100 импульсов

    TIM_TimeBaseInit(TIM6, &base_timer);


примерно при TIM_Prescaler = n и TIM_Period = k достигаются те самые 500Кгц, n и k не предельны (порядка 100 и 50)
делая еще меньше делитель и период - никакого эффекта

Помогите, может кто сталкивался, как получить больше скорости на GPIO?
ViKo
Посмотрите в отладчике такты, надеюсь, поймете, кто виноват и что делать и почему в России две беды...
Kabdim
Не знаток СТМок, но судя по доке ТИМ6 самый примитивный таймер, а значит вы ГПИО дергали в обработчике прерывания? Если да - не удивительно. Надо прочитать 22.3.10 Output compare mode и далее про PWM.
Maxim_Sh
Цитата
Не знаток СТМок, но судя по доке ТИМ6 самый примитивный таймер, а значит вы ГПИО дергали в обработчике прерывания? Если да - не удивительно. Надо прочитать 22.3.10 Output compare mode и далее про PWM.

Спасибо, почитаю. Но таймер не 6, а 11, пример брал из интеренета, т.к. подрукой не было исходников.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.