Перейти к содержанию

Регистры TIM STM32F4

Регистры таймеров STM32F4: счётчик, предделитель и период, каналы захвата и сравнения, режимы ШИМ, входные фильтры, синхронизация, энкодер, комплементарные выходы и мёртвое время у TIM1 и TIM8, переназначение входов в TIMx_OR.

У STM32F4 те же виды таймеров, что у F1: расширенные TIM1 и TIM8 с комплементарными выходами, мёртвым временем и аварийным входом, TIM2–TIM5 общего назначения — у TIM2 и TIM5 32-битный счётчик, у TIM3 и TIM4 16-битный, — TIM9–TIM14 с одним или двумя каналами и базовые TIM6 и TIM7 (RM0090, главы 17–20).

Частота счёта — тактовая частота таймера, делённая на PSC + 1, период — ARR + 1 отсчётов. Таймеры получают удвоенную частоту шины, если её делитель больше 1: при 168 МГц и APB1 = 42 МГц таймеры TIM2–TIM7 и TIM12–TIM14 тактируются 84 МГц, а TIM1 и TIM8–TIM11 на APB2 — 168 МГц. У STM32F42x/43x бит TIMPRE в RCC_DCKCFGR может поднять частоту таймеров до HCLK.

Регистр TIMx_OR переназначает входы: ITR1 таймера TIM2 (TRGO TIM8, PTP Ethernet, SOF USB), TI4 таймера TIM5 (LSI, LSE или пробуждение RTC — для калибровки генераторов), TI1 таймера TIM11 (HSE_RTC — для измерения частоты HSE). Флаги SR сбрасываются записью нуля в нужный бит, а выходы TIM1 и TIM8 работают только после установки MOE в BDTR.

ЭкземплярБазовый адресЕсть у
TIM20x4000 0000всех
TIM30x4000 0400всех
TIM40x4000 0800всех
TIM50x4000 0C00всех
TIM60x4000 1000всех
TIM70x4000 1400всех
TIM120x4000 1800всех
TIM130x4000 1C00всех
TIM140x4000 2000всех
TIM10x4001 0000всех
TIM80x4001 0400всех
TIM90x4001 4000всех
TIM100x4001 4400всех
TIM110x4001 4800всех

Регистры блока

РегистрСмещениеНазначениеПосле сброса
TIMx_CR10x00Управление счётчиком0x0000
TIMx_CR20x04Выход TRGO, DMA каналов и состояние покоя выходов0x0000
TIMx_SMCR0x08Режим ведомого, триггер и внешний вход ETR0x0000
TIMx_DIER0x0CРазрешение прерываний и запросов DMA0x0000
TIMx_SR0x10Флаги событий0x0000
TIMx_EGR0x14Программные события0x0000
TIMx_CCMR10x18Режимы каналов 1 и 20x0000
TIMx_CCMR20x1CРежимы каналов 3 и 40x0000
TIMx_CCER0x20Включение и полярность каналов0x0000
TIMx_CNT0x24СчётчикTIM1, TIM8, TIM9, TIM10, TIM11, TIM12, TIM13, TIM14, TIM9, TIM10, TIM11, TIM12, TIM13, TIM14, TIM6, TIM7: 0x0000; TIM2, TIM3, TIM4, TIM5: 0x0000 0000
TIMx_PSC0x28Предделитель0x0000
TIMx_ARR0x2CПериод (значение перезагрузки)TIM1, TIM8, TIM9, TIM10, TIM11, TIM12, TIM13, TIM14, TIM9, TIM10, TIM11, TIM12, TIM13, TIM14, TIM6, TIM7: 0xFFFF; TIM2, TIM3, TIM4, TIM5: 0xFFFF FFFF
TIMx_RCR0x30Счётчик повторений (TIM1, TIM8)0x0000
TIMx_CCR10x34Сравнение или захват, канал 1TIM1, TIM8, TIM9, TIM10, TIM11, TIM12, TIM13, TIM14, TIM9, TIM10, TIM11, TIM12, TIM13, TIM14: 0x0000; TIM2, TIM3, TIM4, TIM5: 0x0000 0000
TIMx_CCR20x38Сравнение или захват, канал 2TIM1, TIM8, TIM9, TIM10, TIM11, TIM12, TIM13, TIM14: 0x0000; TIM2, TIM3, TIM4, TIM5: 0x0000 0000
TIMx_CCR30x3CСравнение или захват, канал 3TIM1, TIM8: 0x0000; TIM2, TIM3, TIM4, TIM5: 0x0000 0000
TIMx_CCR40x40Сравнение или захват, канал 4TIM1, TIM8: 0x0000; TIM2, TIM3, TIM4, TIM5: 0x0000 0000
TIMx_BDTR0x44Мёртвое время, аварийный вход и ключ выходов (TIM1, TIM8)0x0000
TIMx_DCR0x48Настройка пакетной передачи DMA0x0000
TIMx_DMAR0x4CОкно пакетной передачи DMATIM1, TIM8: 0x0000 0000; TIM2, TIM3, TIM4, TIM5: 0x0000
TIMx_OR0x50Переназначение входов (TIM2, TIM5, TIM11)0x0000

Конструктор значения

Выберите регистр и значения полей — конструктор покажет 32-битное значение и строку на C с макросами CMSIS. Поля, которые вы не меняете, берутся из значения после сброса.

Значение: 0x00000000

0000 0000 0000 0000 0000 0000 0000 0000

TIM2->CR1 = 0x00000000;

TIMx_CR1 — управление счётчиком

Смещение 0x00, 32 бит, после сброса 0x0000. В коде: TIM2->CR1.

31302928272625242322212019181716
—
1514131211109876543210
—CKDARPECMSDIROPMURSUDISCEN
  • CKD (биты 9:8) — Период дискретизации цифровых фильтров tDTS относительно такта таймера.
    CKDЗначение
    00tDTS = tCK_INT
    01tDTS = 2 × tCK_INT
    10tDTS = 4 × tCK_INT
    11Зарезервировано
  • ARPE (бит 7) — Буферизация ARR: новое значение действует с события обновления.
  • CMS (биты 6:5) — Счёт по фронту или центрированный (вверх и вниз).
    CMSЗначение
    00По фронту: направление задаёт DIR
    01Центрированный 1: флаги сравнения при счёте вниз
    10Центрированный 2: флаги сравнения при счёте вверх
    11Центрированный 3: флаги сравнения в обе стороны
  • DIR (бит 4) — Направление счёта.
    DIRЗначение
    0Вверх
    1Вниз
  • OPM (бит 3) — Режим одного импульса: счётчик останавливается на событии обновления.
  • URS (бит 2) — Что вызывает прерывание и запрос DMA обновления.
    URSЗначение
    0Переполнение, бит UG или ведомый режим
    1Только переполнение счётчика
  • UDIS (бит 1) — Запрет события обновления.
  • CEN (бит 0) — Включение счётчика.

TIMx_CR2 — выход TRGO, DMA каналов и состояние покоя выходов

Смещение 0x04, 32 бит, после сброса 0x0000. В коде: TIM2->CR2.

31302928272625242322212019181716
—
1514131211109876543210
—OIS4OIS3NOIS3OIS2NOIS2OIS1NOIS1TI1SMMSCCDSCCUS—CCPC
  • OIS2–OIS4 (по биту на каждый y, положение — на карте битов) — Уровень выхода OCy при MOE = 0 (TIM1, TIM8).
  • OIS3N (бит 13) — Уровень выхода OC3N при MOE = 0 (TIM1, TIM8).
  • OIS2N (бит 11) — Уровень выхода OC2N при MOE = 0 (TIM1, TIM8).
  • OIS1N (бит 9) — Уровень выхода OC1N при MOE = 0 (TIM1, TIM8).
  • OIS1 (бит 8) — Уровень выхода OC1 при MOE = 0 (TIM1, TIM8).
  • TI1S (бит 7) — Вход TI1: вывод CH1 или исключающее ИЛИ выводов CH1–CH3 (датчики Холла).
    TI1SЗначение
    0Вывод CH1
    1CH1 XOR CH2 XOR CH3
  • MMS (биты 6:4) — Сигнал TRGO для ведомых таймеров, АЦП и ЦАП.
    MMSЗначение
    000Сброс: бит UG
    001Включение счётчика CNT_EN
    010Событие обновления
    011Импульс при сравнении или захвате канала 1
    100OC1REF
    101OC2REF
    110OC3REF
    111OC4REF
  • CCDS (бит 3) — Запросы DMA каналов: по событию канала или по обновлению.
    CCDSЗначение
    0По событию канала
    1По событию обновления
  • CCUS (бит 2) — Обновление буферизованных битов каналов: только COMG или ещё фронт TRGI.
  • CCPC (бит 0) — Буферизация CCxE, CCxNE и OCxM до события коммутации COM (TIM1, TIM8).

TIMx_SMCR — режим ведомого, триггер и внешний вход ETR

Смещение 0x08, 32 бит, после сброса 0x0000. В коде: TIM2->SMCR.

31302928272625242322212019181716
—
1514131211109876543210
ETPECEETPSETFMSMTS—SMS
  • ETP (бит 15) — Полярность внешнего входа ETR.
    ETPЗначение
    0Без инверсии: высокий уровень или нарастающий фронт
    1С инверсией: низкий уровень или спадающий фронт
  • ECE (бит 14) — Внешнее тактирование, режим 2: счёт по фронтам ETR.
  • ETPS (биты 13:12) — Предделитель входа ETR: частота ETRP не выше 1/4 такта таймера.
    ETPSЗначение
    00Без деления
    01Деление на 2
    10Деление на 4
    11Деление на 8
  • ETF (биты 11:8) — Цифровой фильтр входа ETR.
    ETFЗначение
    0000Без фильтра, выборка с частотой fDTS
    0001fCK_INT, N = 2
    0010fCK_INT, N = 4
    0011fCK_INT, N = 8
    0100fDTS / 2, N = 6
    0101fDTS / 2, N = 8
    0110fDTS / 4, N = 6
    0111fDTS / 4, N = 8
    1000fDTS / 8, N = 6
    1001fDTS / 8, N = 8
    1010fDTS / 16, N = 5
    1011fDTS / 16, N = 6
    1100fDTS / 16, N = 8
    1101fDTS / 32, N = 5
    1110fDTS / 32, N = 6
    1111fDTS / 32, N = 8
  • MSM (бит 7) — Задержка события TRGI для синхронного запуска ведомых таймеров.
  • TS (биты 6:4) — Источник триггера TRGI.
    TSЗначение
    000ITR0 — внутренний триггер 0
    001ITR1 — внутренний триггер 1
    010ITR2 — внутренний триггер 2
    011ITR3 — внутренний триггер 3
    100TI1F_ED — любой фронт входа 1
    101TI1FP1 — фильтрованный вход 1
    110TI2FP2 — фильтрованный вход 2
    111ETRF — внешний вход ETR (у TIM9 и TIM12 зарезервировано)
  • SMS (биты 2:0) — Режим ведомого: энкодер, сброс, пропуск, запуск или внешнее тактирование.
    SMSЗначение
    000Выключен: счёт от внутреннего такта
    001Энкодер 1: счёт по фронтам TI1FP1, направление — по уровню TI2FP2
    010Энкодер 2: счёт по фронтам TI2FP2, направление — по уровню TI1FP1
    011Энкодер 3: счёт по фронтам обоих входов
    100Сброс: фронт TRGI перезапускает счётчик
    101Пропуск: счёт, пока на TRGI высокий уровень
    110Запуск: фронт TRGI включает счётчик
    111Внешнее тактирование 1: счёт по фронтам TRGI

TIMx_DIER — разрешение прерываний и запросов DMA

Смещение 0x0C, 32 бит, после сброса 0x0000. В коде: TIM2->DIER.

31302928272625242322212019181716
—
1514131211109876543210
—TDECOMDECC4DECC3DECC2DECC1DEUDEBIETIECOMIECC4IECC3IECC2IECC1IEUIE
  • TDE (бит 14) — Запрос DMA по триггеру.
  • COMDE (бит 13) — Запрос DMA по событию COM.
  • CC4DE (бит 12) — Запрос DMA канала 4.
  • CC3DE (бит 11) — Запрос DMA канала 3.
  • CC2DE (бит 10) — Запрос DMA канала 2.
  • CC1DE (бит 9) — Запрос DMA канала 1.
  • UDE (бит 8) — Запрос DMA по обновлению.
  • BIE (бит 7) — Прерывание по аварийному входу BRK (TIM1, TIM8).
  • TIE (бит 6) — Прерывание по триггеру.
  • COMIE (бит 5) — Прерывание по событию коммутации COM (TIM1, TIM8).
  • CC4IE (бит 4) — Прерывание канала 4.
  • CC3IE (бит 3) — Прерывание канала 3.
  • CC2IE (бит 2) — Прерывание канала 2.
  • CC1IE (бит 1) — Прерывание канала 1.
  • UIE (бит 0) — Прерывание по обновлению.

TIMx_SR — флаги событий

Смещение 0x10, 32 бит, после сброса 0x0000. В коде: TIM2->SR.

31302928272625242322212019181716
—
1514131211109876543210
—CC4OFCC3OFCC2OFCC1OF—BIFTIFCOMIFCC4IFCC3IFCC2IFCC1IFUIF
  • CC4OF (бит 12) — Повторный захват канала 4, пока флаг CC4IF не сброшен.
  • CC3OF (бит 11) — Повторный захват канала 3, пока флаг CC3IF не сброшен.
  • CC2OF (бит 10) — Повторный захват канала 2, пока флаг CC2IF не сброшен.
  • CC1OF (бит 9) — Повторный захват канала 1, пока флаг CC1IF не сброшен.
  • BIF (бит 7) — Флаг аварийного входа BRK.
  • TIF (бит 6) — Флаг триггера.
  • COMIF (бит 5) — Флаг события коммутации COM.
  • CC4IF (бит 4) — Флаг канала 4: совпадение при сравнении или захват; сбрасывается записью 0, при захвате — и чтением CCR4.
  • CC3IF (бит 3) — Флаг канала 3: совпадение при сравнении или захват; сбрасывается записью 0, при захвате — и чтением CCR3.
  • CC2IF (бит 2) — Флаг канала 2: совпадение при сравнении или захват; сбрасывается записью 0, при захвате — и чтением CCR2.
  • CC1IF (бит 1) — Флаг канала 1: совпадение при сравнении или захват; сбрасывается записью 0, при захвате — и чтением CCR1.
  • UIF (бит 0) — Флаг обновления; сбрасывается записью 0.

TIMx_EGR — программные события

Смещение 0x14, 32 бит, после сброса 0x0000. В коде: TIM2->EGR.

31302928272625242322212019181716
—
1514131211109876543210
—BGTGCOMGCC4GCC3GCC2GCC1GUG
  • BG (бит 7) — Программное аварийное отключение (как по входу BRK).
  • TG (бит 6) — Программный триггер.
  • COMG (бит 5) — Программное событие коммутации COM.
  • CC4G (бит 4) — Программное событие канала 4.
  • CC3G (бит 3) — Программное событие канала 3.
  • CC2G (бит 2) — Программное событие канала 2.
  • CC1G (бит 1) — Программное событие канала 1.
  • UG (бит 0) — Программное обновление: перезапуск счётчика и загрузка буферов.

TIMx_CCMR1 — режимы каналов 1 и 2

Смещение 0x18, 32 бит, после сброса 0x0000. В коде: TIM2->CCMR1.

31302928272625242322212019181716
—
1514131211109876543210
OC2CEOC2MOC2PEOC2FECC2SOC1CEOC1MOC1PEOC1FECC1S
  • OC2CE (бит 15) — Сброс OC2REF высоким уровнем на входе ETRF.
  • IC2F (биты 15:12) — Цифровой фильтр входа 2 (режим захвата).
    IC2FЗначение
    0000Без фильтра, выборка с частотой fDTS
    0001fCK_INT, N = 2
    0010fCK_INT, N = 4
    0011fCK_INT, N = 8
    0100fDTS / 2, N = 6
    0101fDTS / 2, N = 8
    0110fDTS / 4, N = 6
    0111fDTS / 4, N = 8
    1000fDTS / 8, N = 6
    1001fDTS / 8, N = 8
    1010fDTS / 16, N = 5
    1011fDTS / 16, N = 6
    1100fDTS / 16, N = 8
    1101fDTS / 32, N = 5
    1110fDTS / 32, N = 6
    1111fDTS / 32, N = 8
  • OC2M (биты 14:12) — Режим выхода 2: ШИМ, переключение, принудительный уровень.
    OC2MЗначение
    000Заморожен: сравнение не влияет на выход
    001Активный уровень при совпадении
    010Неактивный уровень при совпадении
    011Переключение при совпадении
    100Принудительно неактивный уровень
    101Принудительно активный уровень
    110ШИМ 1: активен, пока CNT < CCR (при счёте вверх)
    111ШИМ 2: неактивен, пока CNT < CCR (при счёте вверх)
  • OC2PE (бит 11) — Буферизация CCR2: новое значение с события обновления.
  • IC2PSC (биты 11:10) — Предделитель захвата 2: каждое 1, 2, 4 или 8-е событие (режим захвата).
    IC2PSCЗначение
    00Каждый фронт
    01Каждый 2-й фронт
    10Каждый 4-й фронт
    11Каждый 8-й фронт
  • OC2FE (бит 10) — Ускоренная реакция выхода 2 на триггер (режимы ШИМ).
  • CC2S (биты 9:8) — Канал 2: выход или вход и источник захвата; меняется при CC2E = 0.
    CC2SЗначение
    00Выход
    01Вход, захват с TI2
    10Вход, захват с TI1
    11Вход, захват с TRC (внутренний триггер)
  • OC1CE (бит 7) — Сброс OC1REF высоким уровнем на входе ETRF.
  • IC1F (биты 7:4) — Цифровой фильтр входа 1 (режим захвата).
    IC1FЗначение
    0000Без фильтра, выборка с частотой fDTS
    0001fCK_INT, N = 2
    0010fCK_INT, N = 4
    0011fCK_INT, N = 8
    0100fDTS / 2, N = 6
    0101fDTS / 2, N = 8
    0110fDTS / 4, N = 6
    0111fDTS / 4, N = 8
    1000fDTS / 8, N = 6
    1001fDTS / 8, N = 8
    1010fDTS / 16, N = 5
    1011fDTS / 16, N = 6
    1100fDTS / 16, N = 8
    1101fDTS / 32, N = 5
    1110fDTS / 32, N = 6
    1111fDTS / 32, N = 8
  • OC1M (биты 6:4) — Режим выхода 1: ШИМ, переключение, принудительный уровень.
    OC1MЗначение
    000Заморожен: сравнение не влияет на выход
    001Активный уровень при совпадении
    010Неактивный уровень при совпадении
    011Переключение при совпадении
    100Принудительно неактивный уровень
    101Принудительно активный уровень
    110ШИМ 1: активен, пока CNT < CCR (при счёте вверх)
    111ШИМ 2: неактивен, пока CNT < CCR (при счёте вверх)
  • OC1PE (бит 3) — Буферизация CCR1: новое значение с события обновления.
  • IC1PSC (биты 3:2) — Предделитель захвата 1: каждое 1, 2, 4 или 8-е событие (режим захвата).
    IC1PSCЗначение
    00Каждый фронт
    01Каждый 2-й фронт
    10Каждый 4-й фронт
    11Каждый 8-й фронт
  • OC1FE (бит 2) — Ускоренная реакция выхода 1 на триггер (режимы ШИМ).
  • CC1S (биты 1:0) — Канал 1: выход или вход и источник захвата; меняется при CC1E = 0.
    CC1SЗначение
    00Выход
    01Вход, захват с TI1
    10Вход, захват с TI2
    11Вход, захват с TRC (внутренний триггер)

TIMx_CCMR2 — режимы каналов 3 и 4

Смещение 0x1C, 32 бит, после сброса 0x0000. В коде: TIM2->CCMR2.

31302928272625242322212019181716
—
1514131211109876543210
OC4CEOC4MOC4PEOC4FECC4SOC3CEOC3MOC3PEOC3FECC3S
  • OC4CE (бит 15) — Сброс OC4REF высоким уровнем на входе ETRF.
  • IC4F (биты 15:12) — Цифровой фильтр входа 4 (режим захвата).
    IC4FЗначение
    0000Без фильтра, выборка с частотой fDTS
    0001fCK_INT, N = 2
    0010fCK_INT, N = 4
    0011fCK_INT, N = 8
    0100fDTS / 2, N = 6
    0101fDTS / 2, N = 8
    0110fDTS / 4, N = 6
    0111fDTS / 4, N = 8
    1000fDTS / 8, N = 6
    1001fDTS / 8, N = 8
    1010fDTS / 16, N = 5
    1011fDTS / 16, N = 6
    1100fDTS / 16, N = 8
    1101fDTS / 32, N = 5
    1110fDTS / 32, N = 6
    1111fDTS / 32, N = 8
  • OC4M (биты 14:12) — Режим выхода 4: ШИМ, переключение, принудительный уровень.
    OC4MЗначение
    000Заморожен: сравнение не влияет на выход
    001Активный уровень при совпадении
    010Неактивный уровень при совпадении
    011Переключение при совпадении
    100Принудительно неактивный уровень
    101Принудительно активный уровень
    110ШИМ 1: активен, пока CNT < CCR (при счёте вверх)
    111ШИМ 2: неактивен, пока CNT < CCR (при счёте вверх)
  • OC4PE (бит 11) — Буферизация CCR4: новое значение с события обновления.
  • IC4PSC (биты 11:10) — Предделитель захвата 4: каждое 1, 2, 4 или 8-е событие (режим захвата).
    IC4PSCЗначение
    00Каждый фронт
    01Каждый 2-й фронт
    10Каждый 4-й фронт
    11Каждый 8-й фронт
  • OC4FE (бит 10) — Ускоренная реакция выхода 4 на триггер (режимы ШИМ).
  • CC4S (биты 9:8) — Канал 4: выход или вход и источник захвата; меняется при CC4E = 0.
    CC4SЗначение
    00Выход
    01Вход, захват с TI4
    10Вход, захват с TI3
    11Вход, захват с TRC (внутренний триггер)
  • OC3CE (бит 7) — Сброс OC3REF высоким уровнем на входе ETRF.
  • IC3F (биты 7:4) — Цифровой фильтр входа 3 (режим захвата).
    IC3FЗначение
    0000Без фильтра, выборка с частотой fDTS
    0001fCK_INT, N = 2
    0010fCK_INT, N = 4
    0011fCK_INT, N = 8
    0100fDTS / 2, N = 6
    0101fDTS / 2, N = 8
    0110fDTS / 4, N = 6
    0111fDTS / 4, N = 8
    1000fDTS / 8, N = 6
    1001fDTS / 8, N = 8
    1010fDTS / 16, N = 5
    1011fDTS / 16, N = 6
    1100fDTS / 16, N = 8
    1101fDTS / 32, N = 5
    1110fDTS / 32, N = 6
    1111fDTS / 32, N = 8
  • OC3M (биты 6:4) — Режим выхода 3: ШИМ, переключение, принудительный уровень.
    OC3MЗначение
    000Заморожен: сравнение не влияет на выход
    001Активный уровень при совпадении
    010Неактивный уровень при совпадении
    011Переключение при совпадении
    100Принудительно неактивный уровень
    101Принудительно активный уровень
    110ШИМ 1: активен, пока CNT < CCR (при счёте вверх)
    111ШИМ 2: неактивен, пока CNT < CCR (при счёте вверх)
  • OC3PE (бит 3) — Буферизация CCR3: новое значение с события обновления.
  • IC3PSC (биты 3:2) — Предделитель захвата 3: каждое 1, 2, 4 или 8-е событие (режим захвата).
    IC3PSCЗначение
    00Каждый фронт
    01Каждый 2-й фронт
    10Каждый 4-й фронт
    11Каждый 8-й фронт
  • OC3FE (бит 2) — Ускоренная реакция выхода 3 на триггер (режимы ШИМ).
  • CC3S (биты 1:0) — Канал 3: выход или вход и источник захвата; меняется при CC3E = 0.
    CC3SЗначение
    00Выход
    01Вход, захват с TI3
    10Вход, захват с TI4
    11Вход, захват с TRC (внутренний триггер)

TIMx_CCER — включение и полярность каналов

Смещение 0x20, 32 бит, после сброса 0x0000. В коде: TIM2->CCER.

31302928272625242322212019181716
—
1514131211109876543210
CC4NP—CC4PCC4ECC3NPCC3NECC3PCC3ECC2NPCC2NECC2PCC2ECC1NPCC1NECC1PCC1E
  • CC4NP (бит 15) — Полярность комплементарного выхода 4N.
    CC4NPЗначение
    0Активный высокий; захват по нарастающему фронту
    1Активный низкий; захват по спадающему фронту
  • CC4P (бит 13) — Полярность выхода 4; в режиме захвата — фронт захвата.
    CC4PЗначение
    0Активный высокий; захват по нарастающему фронту
    1Активный низкий; захват по спадающему фронту
  • CC4E (бит 12) — Включение выхода 4; в режиме захвата — разрешение захвата.
  • CC3NP (бит 11) — Полярность комплементарного выхода 3N.
    CC3NPЗначение
    0Активный высокий; захват по нарастающему фронту
    1Активный низкий; захват по спадающему фронту
  • CC3NE (бит 10) — Включение комплементарного выхода 3N (TIM1, TIM8).
  • CC3P (бит 9) — Полярность выхода 3; в режиме захвата — фронт захвата.
    CC3PЗначение
    0Активный высокий; захват по нарастающему фронту
    1Активный низкий; захват по спадающему фронту
  • CC3E (бит 8) — Включение выхода 3; в режиме захвата — разрешение захвата.
  • CC2NP (бит 7) — Полярность комплементарного выхода 2N.
    CC2NPЗначение
    0Активный высокий; захват по нарастающему фронту
    1Активный низкий; захват по спадающему фронту
  • CC2NE (бит 6) — Включение комплементарного выхода 2N (TIM1, TIM8).
  • CC2P (бит 5) — Полярность выхода 2; в режиме захвата — фронт захвата.
    CC2PЗначение
    0Активный высокий; захват по нарастающему фронту
    1Активный низкий; захват по спадающему фронту
  • CC2E (бит 4) — Включение выхода 2; в режиме захвата — разрешение захвата.
  • CC1NP (бит 3) — Полярность комплементарного выхода 1N.
    CC1NPЗначение
    0Активный высокий; захват по нарастающему фронту
    1Активный низкий; захват по спадающему фронту
  • CC1NE (бит 2) — Включение комплементарного выхода 1N (TIM1, TIM8).
  • CC1P (бит 1) — Полярность выхода 1; в режиме захвата — фронт захвата.
    CC1PЗначение
    0Активный высокий; захват по нарастающему фронту
    1Активный низкий; захват по спадающему фронту
  • CC1E (бит 0) — Включение выхода 1; в режиме захвата — разрешение захвата.

TIMx_CNT — счётчик

Смещение 0x24, 32 бит, после сброса TIM1, TIM8, TIM9, TIM10, TIM11, TIM12, TIM13, TIM14, TIM9, TIM10, TIM11, TIM12, TIM13, TIM14, TIM6, TIM7: 0x0000; TIM2, TIM3, TIM4, TIM5: 0x0000 0000. В коде: TIM2->CNT.

31302928272625242322212019181716
CNT
1514131211109876543210
CNT
  • CNT (биты 31:0) — Значение счётчика: 32 бита у TIM2 и TIM5, у остальных таймеров 16.

TIMx_PSC — предделитель

Смещение 0x28, 32 бит, после сброса 0x0000. В коде: TIM2->PSC.

31302928272625242322212019181716
—
1514131211109876543210
PSC
  • PSC (биты 15:0) — Предделитель: частота счёта = такт таймера / (PSC + 1).

TIMx_ARR — период (значение перезагрузки)

Смещение 0x2C, 32 бит, после сброса TIM1, TIM8, TIM9, TIM10, TIM11, TIM12, TIM13, TIM14, TIM9, TIM10, TIM11, TIM12, TIM13, TIM14, TIM6, TIM7: 0xFFFF; TIM2, TIM3, TIM4, TIM5: 0xFFFF FFFF. В коде: TIM2->ARR.

31302928272625242322212019181716
ARR
1514131211109876543210
ARR
  • ARR (биты 31:0) — Период: счётчик считает от 0 до ARR, всего ARR + 1 отсчётов.

TIMx_RCR — счётчик повторений (TIM1, TIM8)

Смещение 0x30, 32 бит, после сброса 0x0000. В коде: TIM2->RCR.

31302928272625242322212019181716
—
1514131211109876543210
—REP
  • REP (биты 7:0) — Счётчик повторений: событие обновления раз в REP + 1 периодов.

TIMx_CCR1 — сравнение или захват, канал 1

Смещение 0x34, 32 бит, после сброса TIM1, TIM8, TIM9, TIM10, TIM11, TIM12, TIM13, TIM14, TIM9, TIM10, TIM11, TIM12, TIM13, TIM14: 0x0000; TIM2, TIM3, TIM4, TIM5: 0x0000 0000. В коде: TIM2->CCR1.

31302928272625242322212019181716
—
1514131211109876543210
CCR1
  • CCR1 (биты 15:0) — Значение сравнения канала 1 или захваченное значение счётчика.

TIMx_CCR2 — сравнение или захват, канал 2

Смещение 0x38, 32 бит, после сброса TIM1, TIM8, TIM9, TIM10, TIM11, TIM12, TIM13, TIM14: 0x0000; TIM2, TIM3, TIM4, TIM5: 0x0000 0000. В коде: TIM2->CCR2.

31302928272625242322212019181716
—
1514131211109876543210
CCR2
  • CCR2 (биты 15:0) — Значение сравнения канала 2 или захваченное значение счётчика.

TIMx_CCR3 — сравнение или захват, канал 3

Смещение 0x3C, 32 бит, после сброса TIM1, TIM8: 0x0000; TIM2, TIM3, TIM4, TIM5: 0x0000 0000. В коде: TIM2->CCR3.

31302928272625242322212019181716
—
1514131211109876543210
CCR3
  • CCR3 (биты 15:0) — Значение сравнения канала 3 или захваченное значение счётчика.

TIMx_CCR4 — сравнение или захват, канал 4

Смещение 0x40, 32 бит, после сброса TIM1, TIM8: 0x0000; TIM2, TIM3, TIM4, TIM5: 0x0000 0000. В коде: TIM2->CCR4.

31302928272625242322212019181716
—
1514131211109876543210
CCR4
  • CCR4 (биты 15:0) — Значение сравнения канала 4 или захваченное значение счётчика.

TIMx_BDTR — мёртвое время, аварийный вход и ключ выходов (TIM1, TIM8)

Смещение 0x44, 32 бит, после сброса 0x0000. В коде: TIM2->BDTR.

31302928272625242322212019181716
—
1514131211109876543210
MOEAOEBKPBKEOSSROSSILOCKDTG
  • MOE (бит 15) — Главное включение выходов; сбрасывается аппаратно по входу BRK.
  • AOE (бит 14) — Автоматическая установка MOE на событии обновления.
  • BKP (бит 13) — Полярность аварийного входа BRK.
    BKPЗначение
    0Активный низкий уровень
    1Активный высокий уровень
  • BKE (бит 12) — Включение аварийного входа BRK и сигнала отказа CSS.
  • OSSR (бит 11) — Состояние выключенного выхода при MOE = 1.
  • OSSI (бит 10) — Состояние выключенного выхода при MOE = 0.
  • LOCK (биты 9:8) — Защита настроек от записи; записывается один раз после сброса.
    LOCKЗначение
    00Защита выключена
    01Уровень 1: DTG, OISx, BKE, BKP, AOE
    10Уровень 2: и полярности каналов, OSSR, OSSI
    11Уровень 3: и режимы выходов OCxM, OCxPE
  • DTG (биты 7:0) — Мёртвое время между комплементарными выходами.

TIMx_DCR — настройка пакетной передачи DMA

Смещение 0x48, 32 бит, после сброса 0x0000. В коде: TIM2->DCR.

31302928272625242322212019181716
—
1514131211109876543210
—DBL—DBA
  • DBL (биты 12:8) — Число передач в пакете DMA: DBL + 1.
  • DBA (биты 4:0) — Первый регистр пакета DMA: смещение от CR1 в словах.

TIMx_DMAR — окно пакетной передачи DMA

Смещение 0x4C, 32 бит, после сброса TIM1, TIM8: 0x0000 0000; TIM2, TIM3, TIM4, TIM5: 0x0000. В коде: TIM2->DMAR.

31302928272625242322212019181716
—
1514131211109876543210
DMAB
  • DMAB (биты 15:0) — Окно пакетного обмена DMA с регистрами таймера.

TIMx_OR — переназначение входов (TIM2, TIM5, TIM11)

Смещение 0x50, 32 бит, после сброса 0x0000. В коде: TIM2->OR.

31302928272625242322212019181716
—
1514131211109876543210
—ITR1_RMP—TI4_RMP—TI1_RMP
  • ITR1_RMP (биты 11:10) — Источник внутреннего триггера ITR1 таймера TIM2.
    ITR1_RMPЗначение
    00TRGO таймера TIM8
    01Триггер PTP Ethernet
    10SOF USB OTG FS
    11SOF USB OTG HS
  • TI4_RMP (биты 7:6) — Источник входа TI4 таймера TIM5.
    TI4_RMPЗначение
    00Вывод TIM5_CH4
    01LSI — для калибровки
    10LSE — для калибровки
    11Прерывание пробуждения RTC
  • TI1_RMP (биты 1:0) — Источник входа TI1 таймера TIM11: вывод или HSE_RTC для измерения частоты.

Частые вопросы

Как получить ШИМ 1 кГц на TIM3 STM32F407?

При 168 МГц TIM3 тактируется 84 МГц: PSC = 83 (счёт 1 МГц), ARR = 999. Для канала 1: OC1M = 110 и OC1PE = 1 в CCMR1, CC1E = 1 в CCER, скважность в CCR1. Затем ARPE = 1, UG = 1 в EGR и CEN = 1. Вывод канала переведите в режим альтернативной функции AF2.

Какие таймеры STM32F4 32-битные?

TIM2 и TIM5: у них 32-битные CNT, ARR и CCR1–CCR4, а ARR после сброса равен 0xFFFF FFFF. С делителем PSC = 0 при 84 МГц такой счётчик переполняется примерно раз в 51 секунду.

Почему не работает ШИМ на TIM1 или TIM8?

Выходы расширенных таймеров включает общий бит MOE регистра BDTR. Пока он сброшен, каналы не выдают сигнал, хотя счётчик работает. Установите TIM1->BDTR |= TIM_BDTR_MOE или включите AOE, чтобы MOE ставился автоматически.

Источники

  1. STMicroelectronics. RM0090: Reference manual (Rev 22) — раздел 17.4–20.4: описание регистров, назначение полей и значения после сброса
  2. STMicroelectronics. cmsis-device-f4 v2.6.11: заголовки CMSIS stm32f405xx.h, stm32f407xx.h, stm32f415xx.h, stm32f417xx.h, stm32f427xx.h, stm32f429xx.h, stm32f437xx.h, stm32f439xx.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0

Нашли ошибку в регистрах?

Другие регистры STM32F4

Калькуляторы и статьи