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

Регистры TIM STM32F0

Регистры таймеров STM32F0: расширенного TIM1, 32-битного TIM2, TIM3, базовых TIM6 и TIM7, TIM14 и TIM15–TIM17 — счёт, предделитель, период, режимы каналов, ШИМ и захват, синхронизация таймеров, мёртвое время и аварийный останов.

Регистры таймеров STM32F0 устроены так же, как у STM32F4: TIMx_CR1, CCMR1/CCMR2 с режимами каналов, CCER с включением и полярностью, PSC, ARR и CCRx. Таймеры отличаются набором функций: TIM1 — четыре канала с комплементарными выходами и мёртвым временем, TIM2 — 32-битный, TIM3 — 16-битный на четыре канала, TIM14 — один канал, TIM15 — два канала, TIM16 и TIM17 — по одному с комплементарным выходом, TIM6 и TIM7 — только счёт и запуск ЦАП.

Все таймеры STM32F0 тактируются от PCLK, при делителе APB больше 1 — удвоенной частотой. Частота счёта — fTIM / (PSC + 1), период — (ARR + 1) тактов. Поле OCxM задаёт режим выхода: 110 — ШИМ 1, 111 — ШИМ 2; у TIM1, TIM15–TIM17 выходы включает бит MOE регистра BDTR.

Значения после сброса — из глав 17–21 RM0091; поля, которых нет у части таймеров, страница показывает, но запись в них не действует.

ЭкземплярБазовый адресЕсть у
TIM20x4000 0000всех
TIM30x4000 0400всех
TIM60x4000 1000STM32F051, STM32F058, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098
TIM70x4000 1400STM32F071, STM32F072, STM32F078, STM32F091, STM32F098
TIM140x4000 2000всех
TIM10x4001 2C00всех
TIM150x4001 4000STM32F051, STM32F058, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098
TIM160x4001 4400всех
TIM170x4001 4800всех

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

РегистрСмещениеНазначениеПосле сброса
TIMx_CR10x00Счёт, режим одного импульса, буферизация0x0000
TIMx_CR20x04Ведущий режим, DMA, состояния выходов0x0000
TIMx_SMCR0x08Ведомый режим, триггер и внешний такт0x0000
TIMx_DIER0x0CРазрешение прерываний и запросов DMA0x0000
TIMx_SR0x10Флаги прерываний0x0000
TIMx_EGR0x14Программные события0x0000
TIMx_CCMR10x18Режимы каналов 1 и 20x0000
TIMx_CCMR20x1CРежимы каналов 3 и 40x0000
TIMx_CCER0x20Включение и полярность каналов0x0000
TIMx_CNT0x24СчётчикTIM1, TIM14, TIM15, TIM16, TIM17, TIM6, TIM7: 0x0000; TIM2, TIM3: 0x0000 0000
TIMx_PSC0x28Предделитель0x0000
TIMx_ARR0x2CПериод (значение перезагрузки)TIM1, TIM14, TIM15, TIM16, TIM17, TIM6, TIM7: 0xFFFF; TIM2, TIM3: 0xFFFF FFFF
TIMx_RCR0x30Счётчик повторений0x0000
TIMx_CCR10x34Сравнение и захват, канал 1TIM1, TIM14, TIM15, TIM16, TIM17: 0x0000; TIM2, TIM3: 0x0000 0000
TIMx_CCR20x38Сравнение и захват, канал 2TIM1, TIM15: 0x0000; TIM2, TIM3: 0x0000 0000
TIMx_CCR30x3CСравнение и захват, канал 3TIM1: 0x0000; TIM2, TIM3: 0x0000 0000
TIMx_CCR40x40Сравнение и захват, канал 4TIM1: 0x0000; TIM2, TIM3: 0x0000 0000
TIMx_BDTR0x44Аварийный останов и мёртвое время0x0000
TIMx_DCR0x48Пакетная передача DMA0x0000
TIMx_DMAR0x4CАдрес пакетной передачи DMA0x0000

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

Выберите регистр и значения полей — конструктор покажет 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 относительно такта таймера.
  • ARPE (бит 7) — Буферизация ARR: новое значение действует с события обновления.
  • CMS (биты 6:5) — Счёт по фронту или центрированный (вверх и вниз).
  • DIR (бит 4) — Направление счёта.
  • OPM (бит 3) — Режим одного импульса: счётчик останавливается на событии обновления.
  • URS (бит 2) — Что вызывает прерывание и запрос DMA обновления.
  • UDIS (бит 1) — Запрет события обновления.
  • CEN (бит 0) — Включение счётчика.

TIMx_CR2 — ведущий режим, DMA, состояния выходов

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

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

TIMx_SMCR — ведомый режим, триггер и внешний такт

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

31302928272625242322212019181716
—
1514131211109876543210
ETPECEETPSETFMSMTSOCCSSMS
  • ETP (бит 15) — Полярность внешнего входа ETR.
  • ECE (бит 14) — Внешнее тактирование, режим 2: счёт по фронтам ETR.
  • ETPS (биты 13:12) — Предделитель входа ETR: частота ETRP не выше 1/4 такта таймера.
  • ETF (биты 11:8) — Цифровой фильтр входа ETR.
  • MSM (бит 7) — Задержка события TRGI для синхронного запуска ведомых таймеров.
  • TS (биты 6:4) — Источник триггера TRGI.
  • OCCS (бит 3) — Источник сигнала OCREF_CLR: вход ETRF или внутренний сигнал (компаратор).
  • SMS (биты 2:0) — Режим ведомого: энкодер, сброс, пропуск, запуск или внешнее тактирование.

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, TIM15–TIM17).
  • TIE (бит 6) — Прерывание по триггеру.
  • COMIE (бит 5) — Прерывание по событию коммутации COM (TIM1, TIM15–TIM17).
  • 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 (режим захвата).
  • OC2M (биты 14:12) — Режим выхода 2: ШИМ, переключение, принудительный уровень.
  • OC2PE (бит 11) — Буферизация CCR2: новое значение с события обновления.
  • IC2PSC (биты 11:10) — Предделитель захвата 2: каждое 1, 2, 4 или 8-е событие (режим захвата).
  • OC2FE (бит 10) — Ускоренная реакция выхода 2 на триггер (режимы ШИМ).
  • CC2S (биты 9:8) — Канал 2: выход или вход и источник захвата; меняется при CC2E = 0.
  • OC1CE (бит 7) — Сброс OC1REF высоким уровнем на входе ETRF.
  • IC1F (биты 7:4) — Цифровой фильтр входа 1 (режим захвата).
  • OC1M (биты 6:4) — Режим выхода 1: ШИМ, переключение, принудительный уровень.
  • OC1PE (бит 3) — Буферизация CCR1: новое значение с события обновления.
  • IC1PSC (биты 3:2) — Предделитель захвата 1: каждое 1, 2, 4 или 8-е событие (режим захвата).
  • OC1FE (бит 2) — Ускоренная реакция выхода 1 на триггер (режимы ШИМ).
  • CC1S (биты 1:0) — Канал 1: выход или вход и источник захвата; меняется при CC1E = 0.

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

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

31302928272625242322212019181716
—
1514131211109876543210
OC4CEOC4MOC4PEOC4FECC4SOC3CEOC3MOC3PEOC3FECC3S
  • OC4CE (бит 15) — Сброс OC4REF высоким уровнем на входе ETRF.
  • IC4F (биты 15:12) — Цифровой фильтр входа 4 (режим захвата).
  • OC4M (биты 14:12) — Режим выхода 4: ШИМ, переключение, принудительный уровень.
  • OC4PE (бит 11) — Буферизация CCR4: новое значение с события обновления.
  • IC4PSC (биты 11:10) — Предделитель захвата 4: каждое 1, 2, 4 или 8-е событие (режим захвата).
  • OC4FE (бит 10) — Ускоренная реакция выхода 4 на триггер (режимы ШИМ).
  • CC4S (биты 9:8) — Канал 4: выход или вход и источник захвата; меняется при CC4E = 0.
  • OC3CE (бит 7) — Сброс OC3REF высоким уровнем на входе ETRF.
  • IC3F (биты 7:4) — Цифровой фильтр входа 3 (режим захвата).
  • OC3M (биты 6:4) — Режим выхода 3: ШИМ, переключение, принудительный уровень.
  • OC3PE (бит 3) — Буферизация CCR3: новое значение с события обновления.
  • IC3PSC (биты 3:2) — Предделитель захвата 3: каждое 1, 2, 4 или 8-е событие (режим захвата).
  • OC3FE (бит 2) — Ускоренная реакция выхода 3 на триггер (режимы ШИМ).
  • CC3S (биты 1:0) — Канал 3: выход или вход и источник захвата; меняется при CC3E = 0.

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

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

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

TIMx_CNT — счётчик

Смещение 0x24, 32 бит, после сброса TIM1, TIM14, TIM15, TIM16, TIM17, TIM6, TIM7: 0x0000; TIM2, TIM3: 0x0000 0000. В коде: TIM2->CNT.

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

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

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

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

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

Смещение 0x2C, 32 бит, после сброса TIM1, TIM14, TIM15, TIM16, TIM17, TIM6, TIM7: 0xFFFF; TIM2, TIM3: 0xFFFF FFFF. В коде: TIM2->ARR.

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

TIMx_RCR — счётчик повторений

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

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

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

Смещение 0x34, 32 бит, после сброса TIM1, TIM14, TIM15, TIM16, TIM17: 0x0000; TIM2, TIM3: 0x0000 0000. В коде: TIM2->CCR1.

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

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

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

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

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

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

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

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

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

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

TIMx_BDTR — аварийный останов и мёртвое время

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

31302928272625242322212019181716
—
1514131211109876543210
MOEAOEBKPBKEOSSROSSILOCKDTG
  • MOE (бит 15) — Главное включение выходов; сбрасывается аппаратно по входу BRK.
  • AOE (бит 14) — Автоматическая установка MOE на событии обновления.
  • BKP (бит 13) — Полярность аварийного входа BRK.
  • BKE (бит 12) — Включение аварийного входа BRK и сигнала отказа CSS.
  • OSSR (бит 11) — Состояние выключенного выхода при MOE = 1.
  • OSSI (бит 10) — Состояние выключенного выхода при MOE = 0.
  • LOCK (биты 9:8) — Защита настроек от записи; записывается один раз после сброса.
  • 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 бит, после сброса 0x0000. В коде: TIM2->DMAR.

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

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

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

PSC = 47 (счёт 1 МГц), ARR = 999. В CCMR1 для канала 1: OC1M = 110 и OC1PE = 1; в CCER — CC1E = 1; скважность — CCR1 = 0…1000. Затем EGR.UG = 1 и CR1.CEN = 1.

Почему не выходит ШИМ с TIM1 или TIM16?

У таймеров с комплементарными выходами нужен ещё бит MOE в регистре BDTR. Без него выходы остаются в состоянии простоя, даже если CCxE включён.

Источники

  1. STMicroelectronics. RM0091: Reference manual (Rev 10) — раздел 17.4–21.4: описание регистров, назначение полей и значения после сброса
  2. STMicroelectronics. cmsis-device-f0 v2.3.8: заголовки CMSIS stm32f031x6.h, stm32f038xx.h, stm32f042x6.h, stm32f048xx.h, stm32f051x8.h, stm32f058xx.h, stm32f071xb.h, stm32f072xb.h, stm32f078xx.h, stm32f091xc.h, stm32f098xx.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0

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

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

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