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

Регистры TIM STM32F1

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

Все таймеры STM32F1 описаны одной структурой TIM_TypeDef, но устроены по-разному: расширенные TIM1 и TIM8 — с комплементарными выходами, мёртвым временем и аварийным входом BRK, TIM2–TIM5 — общего назначения с четырьмя каналами, TIM9–TIM14 (только XL-density) — с одним или двумя каналами, TIM6 и TIM7 — базовые, без каналов. Счётчики у всех 16-битные. Регистры и биты, которых у таймера нет, у него не работают (RM0008, главы 14–17).

Частота счёта — тактовая частота таймера, делённая на PSC + 1, период — ARR + 1 отсчётов. Таймеры получают удвоенную частоту своей шины, если её делитель больше 1: при SYSCLK 72 МГц и APB1 36 МГц таймер TIM2 тактируется 72 МГц. TIM1 и TIM8–TIM11 сидят на шине APB2, остальные — на APB1. Для ШИМ в поле OCxM записывают 110 (PWM 1), включают буфер OCxPE и выход CCxE, а скважность задают в CCRx.

Флаги регистра SR сбрасываются записью нуля в нужный бит при единицах в остальных: TIMx->SR = ~TIM_SR_UIF. У TIM1 и TIM8 выходы каналов работают только после установки бита MOE в регистре BDTR.

ЭкземплярБазовый адресЕсть у
TIM20x4000 0000всех
TIM30x4000 0400всех
TIM40x4000 0800STM32F101xB/xE/xG, STM32F102xB, STM32F103xB/xE/xG, STM32F105, STM32F107
TIM50x4000 0C00STM32F101xE/xG, STM32F103xE/xG, STM32F105, STM32F107
TIM60x4000 1000STM32F101xE/xG, STM32F103xE/xG, STM32F105, STM32F107
TIM70x4000 1400STM32F101xE/xG, STM32F103xE/xG, STM32F105, STM32F107
TIM120x4000 1800STM32F101xG, STM32F103xG
TIM130x4000 1C00STM32F101xG, STM32F103xG
TIM140x4000 2000STM32F101xG, STM32F103xG
TIM10x4001 2C00STM32F103, STM32F105, STM32F107
TIM80x4001 3400STM32F103xE/xG
TIM90x4001 4C00STM32F101xG, STM32F103xG
TIM100x4001 5000STM32F101xG, STM32F103xG
TIM110x4001 5400STM32F101xG, STM32F103xG

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

РегистрСмещениеНазначениеПосле сброса
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Период (значение перезагрузки)0xFFFF
TIMx_RCR0x30Счётчик повторений (TIM1, TIM8)0x0000
TIMx_CCR10x34Сравнение или захват, канал 10x0000
TIMx_CCR20x38Сравнение или захват, канал 20x0000
TIMx_CCR30x3CСравнение или захват, канал 30x0000
TIMx_CCR40x40Сравнение или захват, канал 40x0000
TIMx_BDTR0x44Мёртвое время, аварийный вход и ключ выходов (TIM1, TIM8)0x0000
TIMx_DCR0x48Настройка пакетной передачи DMA0x0000
TIMx_DMAR0x4CОкно пакетной передачи DMATIM1, TIM8: 0x0000 0000; TIM2, TIM3, TIM4, TIM5: 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
—CC4PCC4ECC3NPCC3NECC3PCC3ECC2NPCC2NECC2PCC2ECC1NPCC1NECC1PCC1E
  • 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) — Значение счётчика: у таймеров STM32F1 используются биты 15:0.

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

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

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

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

Смещение 0x2C, 32 бит, после сброса 0xFFFF. В коде: 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 бит, после сброса 0x0000. В коде: TIM2->CCR1.

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

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

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

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

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

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

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

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

Смещение 0x40, 32 бит, после сброса 0x0000. В коде: 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 с регистрами таймера.

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

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

При тактовой частоте таймера 72 МГц: PSC = 71 (счёт 1 МГц), ARR = 999 (1000 отсчётов — 1 кГц). Для канала 1: OC1M = 110 и OC1PE = 1 в CCMR1, CC1E = 1 в CCER, скважность в CCR1 (500 — 50 %). Затем ARPE = 1 в CR1, UG = 1 в EGR для загрузки буферов и CEN = 1.

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

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

Как подключить энкодер к таймеру?

Сигналы энкодера подают на каналы 1 и 2. В CCMR1 запишите CC1S = 01 и CC2S = 01 — входы TI1 и TI2, в SMCR — SMS = 011: счёт по фронтам обоих сигналов, четыре отсчёта на период. Задайте ARR = 0xFFFF и включите счётчик; положение читается из CNT, направление — бит DIR.

Источники

  1. STMicroelectronics. RM0008: Reference manual (Rev 21) — раздел 14.4–17.4: описание регистров, назначение полей и значения после сброса
  2. STMicroelectronics. cmsis-device-f1 v4.3.5: заголовки CMSIS stm32f101x6.h, stm32f101xb.h, stm32f101xe.h, stm32f101xg.h, stm32f102x6.h, stm32f102xb.h, stm32f103x6.h, stm32f103xb.h, stm32f103xe.h, stm32f103xg.h, stm32f105xc.h, stm32f107xc.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0

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

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

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