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

Регистры TIM STM32L0

Регистры таймеров STM32L0x1: 16-битные таймеры общего назначения TIM2 и TIM3 с четырьмя каналами, TIM21 и TIM22 с двумя каналами, базовые TIM6 и TIM7 — счёт, захват, сравнение, ШИМ, энкодер и синхронизация.

У STM32L0 нет расширенных таймеров с комплементарными выходами: все таймеры 16-битные. TIM2 и TIM3 (TIM3 — у L071 и L081) — по четыре канала захвата и сравнения, TIM21 и TIM22 (TIM22 — кроме L011 и L021) — по два, TIM6 (у L051, L071, L081) и TIM7 (у L071, L081) — базовые таймеры для отсчёта времени. Частота счёта = fCK / (PSC + 1), период — ARR + 1 тактов (RM0377, разделы 16.4, 17.4 и 18.4).

Регистры TIM2_OR, TIM3_OR, TIM21_OR и TIM22_OR переназначают входы на внутренние сигналы (LSE, HSI16, компараторы) и на этой странице не показаны: у каждого таймера свой набор битов.

ЭкземплярБазовый адресЕсть у
TIM20x4000 0000всех
TIM30x4000 0400STM32L071, STM32L081
TIM60x4000 1000STM32L051, STM32L071, STM32L081
TIM70x4000 1400STM32L071, STM32L081
TIM210x4001 0800всех
TIM220x4001 1400STM32L031, STM32L041, STM32L051, STM32L071, STM32L081

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

РегистрСмещениеНазначениеПосле сброса
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Счётчик0x0000
TIMx_PSC0x28Предделитель0x0000
TIMx_ARR0x2CПериод (значение перезагрузки)TIM2, TIM3: 0xFFFF FFFF (так в руководстве; TIM2 и TIM3 STM32L0 — 16-битные таймеры, биты 31:16 их ARR зарезервированы); TIM21, TIM22, TIM6, TIM7: 0xFFFF
TIMx_CCR10x34Сравнение и захват, канал 10x0000
TIMx_CCR20x38Сравнение и захват, канал 20x0000
TIMx_CCR30x3CСравнение и захват, канал 30x0000
TIMx_CCR40x40Сравнение и захват, канал 40x0000
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
—TI1SMMSCCDS—
  • TI1S (бит 7) — Вход TI1: вывод CH1 или исключающее ИЛИ выводов CH1–CH3 (датчики Холла).
  • MMS (биты 6:4) — Сигнал TRGO для ведомых таймеров, АЦП и ЦАП.
  • CCDS (бит 3) — Запросы DMA каналов: по событию канала или по обновлению.

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

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

31302928272625242322212019181716
—
1514131211109876543210
ETPECEETPSETFMSMTS—SMS
  • 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.
  • SMS (биты 2:0) — Режим ведомого: энкодер, сброс, пропуск, запуск или внешнее тактирование.

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

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

31302928272625242322212019181716
—
1514131211109876543210
—TDE—CC4DECC3DECC2DECC1DEUDE—TIE—CC4IECC3IECC2IECC1IEUIE
  • TDE (бит 14) — Запрос DMA по триггеру.
  • CC4DE (бит 12) — Запрос DMA канала 4.
  • CC3DE (бит 11) — Запрос DMA канала 3.
  • CC2DE (бит 10) — Запрос DMA канала 2.
  • CC1DE (бит 9) — Запрос DMA канала 1.
  • UDE (бит 8) — Запрос DMA по обновлению.
  • TIE (бит 6) — Прерывание по триггеру.
  • CC4IE (бит 4) — Прерывание канала 4.
  • CC3IE (бит 3) — Прерывание канала 3.
  • CC2IE (бит 2) — Прерывание канала 2.
  • CC1IE (бит 1) — Прерывание канала 1.
  • UIE (бит 0) — Прерывание по обновлению.

TIMx_SR — флаги прерываний

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

31302928272625242322212019181716
—
1514131211109876543210
—CC4OFCC3OFCC2OFCC1OF—TIF—CC4IFCC3IFCC2IFCC1IFUIF
  • CC4OF (бит 12) — Повторный захват канала 4, пока флаг CC4IF не сброшен.
  • CC3OF (бит 11) — Повторный захват канала 3, пока флаг CC3IF не сброшен.
  • CC2OF (бит 10) — Повторный захват канала 2, пока флаг CC2IF не сброшен.
  • CC1OF (бит 9) — Повторный захват канала 1, пока флаг CC1IF не сброшен.
  • TIF (бит 6) — Флаг триггера.
  • 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
—TG—CC4GCC3GCC2GCC1GUG
  • TG (бит 6) — Программный триггер.
  • 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—CC4PCC4ECC3NP—CC3PCC3ECC2NP—CC2PCC2ECC1NP—CC1PCC1E
  • CC4NP (бит 15) — Полярность комплементарного выхода 4N.
  • CC4P (бит 13) — Полярность выхода 4; в режиме захвата — фронт захвата.
  • CC4E (бит 12) — Включение выхода 4; в режиме захвата — разрешение захвата.
  • CC3NP (бит 11) — Полярность комплементарного выхода 3N.
  • CC3P (бит 9) — Полярность выхода 3; в режиме захвата — фронт захвата.
  • CC3E (бит 8) — Включение выхода 3; в режиме захвата — разрешение захвата.
  • CC2NP (бит 7) — Полярность комплементарного выхода 2N.
  • CC2P (бит 5) — Полярность выхода 2; в режиме захвата — фронт захвата.
  • CC2E (бит 4) — Включение выхода 2; в режиме захвата — разрешение захвата.
  • CC1NP (бит 3) — Полярность комплементарного выхода 1N.
  • CC1P (бит 1) — Полярность выхода 1; в режиме захвата — фронт захвата.
  • CC1E (бит 0) — Включение выхода 1; в режиме захвата — разрешение захвата.

TIMx_CNT — счётчик

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

31302928272625242322212019181716
—
1514131211109876543210
CNT
  • CNT (биты 15:0) — Значение счётчика: 16 бит у всех таймеров STM32L0.

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

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

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

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

Смещение 0x2C, 32 бит, после сброса TIM2, TIM3: 0xFFFF FFFF (так в руководстве; TIM2 и TIM3 STM32L0 — 16-битные таймеры, биты 31:16 их ARR зарезервированы); TIM21, TIM22, TIM6, TIM7: 0xFFFF. В коде: TIM2->ARR.

31302928272625242322212019181716
—
1514131211109876543210
ARR
  • ARR (биты 15:0) — Период: счётчик считает от 0 до ARR, всего ARR + 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_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 кГц на TIM2 STM32L0 при 32 МГц?

PSC = 31 (такт счёта 1 МГц), ARR = 999. Канал 1 в режиме ШИМ 1: CCMR1.OC1M = 110 и OC1PE = 1, коэффициент заполнения — CCR1 / 1000. Включите выход битом CC1E и счётчик битом CEN, перед этим один раз запишите UG.

Чем TIM21 отличается от TIM2?

У TIM21 и TIM22 только два канала и нет DMA, зато они тактируются с шины APB2 и могут работать в ведомом режиме с TIM2. По регистрам это подмножество TIM2.

Источники

  1. STMicroelectronics. RM0377: Reference manual (Rev 10) — раздел 16.4: описание регистров, назначение полей и значения после сброса
  2. STMicroelectronics. cmsis-device-l0 v1.9.4: заголовки CMSIS stm32l011xx.h, stm32l021xx.h, stm32l031xx.h, stm32l041xx.h, stm32l051xx.h, stm32l071xx.h, stm32l081xx.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0

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

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

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