2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Этот контент основан наВидео Jiangxie Technology STM32Содержание, организованность.
тип | серийный номер | автобус | Функция |
---|---|---|---|
Расширенный таймер | ТИМ1, ТИМ8 | АПБ2 | Он имеет все функции общего таймера, а также дополнительно имеет функции счетчика повторений, генерации мертвой зоны, дополнительного выхода, тормозного входа и т. д. |
Универсальный таймер | ТИМ2, ТИМ3, ТИМ4, ТИМ5 | АПБ1 | Он имеет все функции базового таймера и дополнительные функции, такие как выбор внутреннего и внешнего источника синхронизации, захват входного сигнала, сравнение выходного сигнала, интерфейс энкодера, режим запуска «главный-подчиненный» и т. д. |
базовый таймер | ТИМ6, ТИМ7 | АПБ1 | Имеет функции запланированного прерывания и запуска ЦАП в мастер-режиме. |
Основная функция:
Прескалер PSC
Вход счетчика опорных сигналов подключается перед прескалером. Поскольку базовый таймер может выбирать только внутренние часы, входную линию прескалера можно считать подключенной к внутренним часам (CK_INT).
Источником внутренней синхронизации является TIMxCLK RCC. Значение частоты здесь обычно соответствует основной частоте системы 72 МГц.
Запись 0 в прескалере означает отсутствие деления частоты; запись 1 означает деление частоты на 2, а выходная частота = входная частота/2 = 36 МГц.
Запись 2 означает деление на 3, а выход = вход/3. Поэтому значение прескалера отличается от фактического коэффициента деления частоты на 1, а реальный коэффициент деления частоты = значению прескалера 1. Прескалер 16-битный, поэтому максимальное значение можно записать как 65535, которое делится на 65536.
Счетчик CNT
Счетчик может считать предварительно разделенные тактовые импульсы. Каждый раз, когда тактовые импульсы счетчика достигают нарастающего фронта, значение счетчика увеличивается на 1. Счетчик тоже 16-битный, поэтому значение внутри можно складывать от 0 до 65535. Если добавить больше, счетчик вернется к 0 и запустится снова. Таким образом, значение счетчика будет продолжать увеличиваться во время процесса подсчета. Когда приращение достигнет целевого значения, будет сгенерировано прерывание, и запланированная задача будет завершена. Следовательно, для хранения целевого значения необходим регистр, который является регистром автоматической перезагрузки.
Автоматическая перезагрузка реестра
Регистр автоматической перезагрузки также имеет размер 16 бит и хранит записываемую цель счетчика. Во время работы значение счетчика продолжает увеличиваться, а значение автоматической перезагрузки является фиксированным. Когда значение счетчика равно значению автоматической перезагрузки, время истекло. Затем он сгенерирует сигнал прерывания, обнулит счетчик, и счетчик автоматически начнет следующий отсчет.
Стрелки U и пользовательского интерфейса
Нарисованная на картинке стрелка скидки вверх означает, что здесь будет сгенерирован сигнал прерывания. Подобное прерывание, значение счетчика которого равно значению автоматической перезагрузки, обычно называется «прерыванием обновления». Это прерывание обновления приведет к NVIC. Как только мы настроим канал таймера NVIC, на прерывание обновления таймера будет реагировать ЦП. Стрелка вниз означает, что будет создано событие, и соответствующее событие здесь называется «событием обновления». События обновления не вызывают прерываний, но могут запускать работу других внутренних схем.
Основная функция:
16-битный счетчик аккумуляторов с автоматической перезагрузкой вверх, вниз, вверх/вверх
16-битный программируемый прескалер, используемый для деления входной тактовой частоты на любое значение от 1 до 65536.
4 независимых канала:
Схемы синхронизации, управляющие таймерами и межсоединениями таймеров с использованием внешних сигналов.
Прерывание/DMA генерируется при возникновении следующих событий:
Поддерживает схемы инкрементального (квадратурного) энкодера и датчика Холла для позиционирования.
Триггерный вход в качестве внешнего тактового сигнала или поциклового управления током.
счетчик CNT
Счетчик CNT поддерживает режим прямого счета, режим обратного счета и режим выравнивания по центру. Режим нисходящего счета начинается со значения перезагрузки и уменьшается вниз. После того, как оно уменьшится до 0, он возвращается к значению перезагрузки и применяется для прерывания. Режим с выравниванием по центру начинается с 0, сначала увеличивается, подсчитывает значение перезагрузки и применяется для прерывания, а затем уменьшается до 0, а затем применяется для прерывания.
источник синхронизации
В качестве источника синхронизации общего таймера можно выбрать не только внутреннюю тактовую частоту 72 МГц, но также можно выбрать внешнюю тактовую частоту.
(1)Первые внешние часы отВнешние часы на выводе TIMx_ETR То есть вы можете подключить внешний тактовый сигнал прямоугольной формы к выводу ETR TIM2, PA0, а затем настроить внутренний выбор полярности, схему обнаружения фронта и прескалера, а также схему входного фильтра. Эти две схемы могут подвергаться тактовому сигналу. определенная формовка. Поскольку это внешний тактовый сигнал, неизбежно возникнут некоторые сбои, поэтому эти схемы могут фильтровать входной сигнал. Отфильтрованный сигнал делится на два канала. Верхний канал ETRF поступает в контроллер триггера, а затем в качестве единицы измерения времени можно выбрать часы. Эту дорогу еще называют «Режим внешних часов 2”。
(2) TRGI также может предоставить внешние часы. , в основном используется в качестве триггерного входа. Этот триггерный вход может запускать подчиненный режим таймера. Когда TRGI используется в качестве внешнего тактового сигнала, этот путь называется «Режим внешних часов 1". Какие внешние тактовые сигналы проходят по этому пути? Первый - это сигнал вывода ETR. Второй - сигнал ITR. Эта часть тактового сигнала поступает от других таймеров. TRGO в ведущем режиме может привести к другие таймеры. При подключении к выводам ITR других таймеров сигналы от ITR0 до ITR3 поступают от выходов TRGO остальных четырех таймеров. Вы также можете выбрать TI1F_ED, который здесь подключен к блоку ввода. Вывод CH1, то есть тактовый сигнал получается от вывода CH1. Суффикс ED (Edge) здесь означает фронт. Его также можно получить через TI1FP1 и TI2FP2 — тактовый сигнал, подключенный к выводу CH1, а TI2FP2 — к выводу. контакт CH2.
Краткое описание: Входом для внешнего тактового режима 1 может быть вывод ETR, другие таймеры, фронт вывода CH1, вывод CH1 и вывод CH2.
Схема сравнения выходов
Правая часть ниже представляет собой схему сравнения выходов. Всего имеется четыре канала, соответствующие контактам CH1–CH4, которые можно использовать для вывода сигналов ШИМ и управления двигателями.
Входная схема захвата
Слева находится входная схема захвата, которая также имеет четыре канала, соответствующие выводам CH1–CH4, которые можно использовать для измерения частоты входного прямоугольного сигнала и т. д.
регистр захвата/сравнения
Средний регистр — это регистр захвата/сравнения, который используется совместно схемами захвата ввода и сравнения вывода. Поскольку входной захват и сравнение вывода не могут использоваться одновременно, регистры здесь являются общими, а выводы также являются общими.
Основная функция:
Повторить счетчик
Отличие от обычного таймера: первый заключается в добавлении счетчика повторений, к которому применяется прерывание. С помощью этого счетчика можно реализовать, что события обновления и прерывания обновления происходят только каждые несколько циклов счета. Исходная структура такова, что обновление будет происходить после завершения каждого цикла счета, что эквивалентно повторному делению выходного сигнала обновления.
Генератор зоны нечувствительности DTG и дополнительный выход
Ниже приводится модернизация модуля сравнения выходов с помощью усовершенствованного таймера DTG (генерация мертвого времени) — это схема генерации мертвой зоны. Выходной контакт справа был изменен с исходного на два дополнительных выхода, которые могут выводить пару дополнительных волн ШИМ. Эти схемы используются для управления трехфазными бесщеточными двигателями, такими как самолеты-квадрокоптеры, с задними электрическими колесами. транспортные средства и электрические дрели. Подождите, это может быть трехфазный бесщеточный двигатель. Поскольку схема привода трехфазного бесщеточного двигателя обычно требует 3 плеч моста, каждое плечо моста управляется двумя мощными переключающими трубками, поэтому всего требуется 6 мощных переключающих трубок. Таким образом, первые три вывода ШИМ здесь становятся взаимодополняющими выходами. Кроме того, чтобы предотвратить явление кратковременного прострела, вызванное несовершенством устройства в момент переключения, когда дополнительный выходной ШИМ управляет плечом моста, спереди добавлена схема генерации мертвой зоны. В момент переключения выключателя создается мертвая зона определенной продолжительности, позволяющая отключить как верхнюю, так и нижнюю трубы плеча моста для предотвращения прострела.
вход тормоза
Последняя часть — это функция входа тормоза, которая должна обеспечить гарантию безопасности моторного привода. Если внешний вывод BKIN (Break IN) генерирует сигнал торможения или внутренние часы выходят из строя и возникает неисправность, схема управления автоматически отключит выход двигателя, чтобы предотвратить несчастные случаи.
Управление операциями: управление некоторыми битами в регистре, такими как запуск и остановка, обратный отсчет и т. д.
Правая сторона — это место, куда поступает сигнал после истечения времени синхронизации и генерации прерывания обновления. Если это расширенный таймер, будет дополнительный счетчик повторений. Сигнал прерывания сначала устанавливает бит флага прерывания в регистре состояния. Этот бит флага будет управляться через выход прерывания и подавать заявку на прерывание к NVIC. Управление выходом прерывания — это бит разрешения для вывода прерывания. Если вам нужно прерывание, не забудьте его разрешить.
Регистр автозагрузки был изменен с FF на 36, а целевое значение значения счетчика изменилось с FF на 36, поэтому после подсчета 36 здесь он будет напрямую обновлен, чтобы начать следующий раунд подсчета.
В середине подсчета измените целевое значение подсчета с F5 на 36. Ниже находится теневой регистр. Этот теневой регистр по-прежнему является F5, поэтому теперь цель подсчета все еще считает F5, генерируя событие обновления. В то же время 36, которые нужно изменить, передаются в теневой. регистр, и в следующем отсчете. Это изменение действительно только в том случае, если цикл равен 36, поэтому цель введения теневого регистра на самом деле заключается в синхронизации, то есть в том, чтобы позволить изменениям значений и событиям обновления происходить синхронно, чтобы предотвратить ошибки, вызванные изменениями. во время операции.
источник синхронизации
В схеме генерации тактового сигнала имеется четыре источника колебаний:
(1) HSI: внутренний высокоскоростной RC-генератор 8 МГц;
(2) HSE: внешний высокоскоростной кварцевый генератор с частотой 4–16 МГц, также известный как кварцевый генератор, обычно подключается к частоте 8 МГц;
(3) LSE: внешний низкоскоростной кварцевый генератор с частотой 32,768 кГц, который обычно обеспечивает синхронизацию часов реального времени;
(4) LSI: Наконец, имеется внутренний низкоскоростной RC-генератор с частотой 40 кГц, который может обеспечивать тактовую частоту для сторожевого таймера.
Вышеупомянутые два высокоскоростных кварцевых генератора используются для обеспечения тактовой частоты системы. Все тактовые сигналы AHB, APB2 и APB1 созданы на основе этих двух высокоскоростных кварцевых генераторов. Просто внешний кварцевый генератор более стабилен, чем внешний. внутренний RC-генератор, поэтому обычно используется внешний кварцевый генератор.
Часы конфигурации ST
В функции SystemInit ST настраивает часы: сначала он запускает внутренние часы HSI, выбирает внутренние 8 МГц в качестве системных часов и временно работает с внутренними 8 МГц часами. Затем запустите внешний тактовый сигнал, настройте внешний тактовый сигнал для входа в фазовую автоподстройку частоты с ФАПЧ для умножения частоты, 8 МГц умножается в 9 раз, и вы получаете 72 МГц. После того, как выходной сигнал фазовой автоподстройки частоты станет стабильным, выберите фазовую автоподстройку частоты. вывод как системные часы, так что системные часы переключаются с 8 МГц на 72 МГц.
Система безопасности часов CSS
CSS (система безопасности часов): система безопасности часов также отвечает за переключение часов. В случае сбоя внешних часов она автоматически переключает внешние часы обратно на внутренние, чтобы обеспечить работу. системных часов и предотвратить зависание программы. Смерть, вызванная несчастным случаем.
схема распределения часов
*2
, а затем с правой стороны он открывается отдельно для таймеров 2-7, потому что коэффициент прескалера здесь равен 2, поэтому частота здесь должна быть*2
, поэтому тактовая частота таймеров 2–7 составляет 72 МГц. Поэтому, будь то расширенный таймер, общий таймер или базовый таймер, их внутренняя опорная частота составляет 72 МГц.*2
. Поскольку коэффициент деления частоты равен 1, тактовая частота таймеров 1 и 8 составляет 72 МГц.// 恢复缺省配置
void TIM_DeInit(TIM_TypeDef* TIMx);
// 时基单元初始化
void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
// 结构体变量赋一个默认值
void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
// 使能计数器---运行控制
void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);
// 使能中断输出---中断输出控制
void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);
/*-----------------时基单元的时钟选择---------*/
// 选择内部时钟
void TIM_InternalClockConfig(TIM_TypeDef* TIMx);
// 选择ITRx其他定时器的时钟
void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
// 选择TIx捕获通道的时钟
void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource,
uint16_t TIM_ICPolarity, uint16_t ICFilter);
// 选择ETR通过外部时钟模式1输入的时钟
void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,
uint16_t ExtTRGFilter);
// 选择ETR通过外部时钟模式2输入的时钟
void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler,
uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);
/*--------------------------------------------------------*/
// 不是用来选择时钟的,单独用来配置ETR引脚的预分频器、极性、滤波参数的
void TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,
uint16_t ExtTRGFilter);
// 用来单独写预分频值的
void TIM_PrescalerConfig(TIM_TypeDef* TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode);
// 用来改变计数器的计数模式
void TIM_CounterModeConfig(TIM_TypeDef* TIMx, uint16_t TIM_CounterMode);
// 自动重装器预装功能配置
void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);
// 给计数器写入一个值
void TIM_SetCounter(TIM_TypeDef* TIMx, uint16_t Counter);
// 给自动重装器写入一个值
void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint16_t Autoreload);
// 获取当前计数器的值
uint16_t TIM_GetCounter(TIM_TypeDef* TIMx);
// 获取当前的预分频器的值
uint16_t TIM_GetPrescaler(TIM_TypeDef* TIMx);
/*-------------获取标志位和清除标志位的------------*/
FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);
void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);