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

Регистры TIM STM32G4

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

Таймеры STM32G4 — развитие таймеров STM32G0: поля OCxM, SMS, TS и MMS расширены дополнительными битами (OCxM_3, SMS_3, TS_3 и TS_4, MMS_3), а новые регистры дают дизеринг ШИМ (бит DITHEN), асимметричное мёртвое время (DTR2), обработку индекса энкодера (ECR) и выбор источников входов TI1–TI4 (TISEL). Таймеры тактируются до 170 МГц (RM0440, главы 29–32).

TIM2 и TIM5 — 32-битные (TIM5 только у STM32G473/G474/G483/G484), TIM20 есть у категорий 3 и 4. Выходы расширенных таймеров и TIM15–TIM17 включает бит MOE регистра BDTR. Регистры TIMx_AF1, AF2 и OR задают входы аварийного останова и опции каждого таймера своими макросами и на странице не показаны.

ЭкземплярБазовый адресЕсть у
TIM20x4000 0000всех
TIM30x4000 0400всех
TIM40x4000 0800всех
TIM50x4000 0C00STM32G473, STM32G474, STM32G483, STM32G484
TIM60x4000 1000всех
TIM70x4000 1400всех
TIM10x4001 2C00всех
TIM80x4001 3400всех
TIM150x4001 4000всех
TIM160x4001 4400всех
TIM170x4001 4800всех
TIM200x4001 5000STM32G471, STM32G473, STM32G474, STM32G483, STM32G484, STM32G491, STM32G4A1

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

РегистрСмещениеНазначениеПосле сброса
TIMx_CR10x00Счёт, режим одного импульса, буферизация0x0000
TIMx_CR20x04Ведущий режим, DMA, состояния выходовTIM1, TIM8, TIM20, TIM2, TIM3, TIM4, TIM5: 0x0000 0000; TIM15, TIM16, TIM17, TIM6, TIM7: 0x0000
TIMx_SMCR0x08Ведомый режим, триггер и внешний такт0x0000 0000
TIMx_DIER0x0CРазрешение прерываний и запросов DMATIM1, TIM8, TIM20, TIM2, TIM3, TIM4, TIM5: 0x0000 0000; TIM15, TIM16, TIM17, TIM6, TIM7: 0x0000
TIMx_SR0x10Флаги прерыванийTIM1, TIM8, TIM20, TIM2, TIM3, TIM4, TIM5: 0x0000 0000; TIM15, TIM16, TIM17, TIM6, TIM7: 0x0000
TIMx_EGR0x14Программные события0x0000
TIMx_CCMR10x18Режимы каналов 1 и 20x0000 0000
TIMx_CCMR20x1CРежимы каналов 3 и 40x0000 0000
TIMx_CCER0x20Включение и полярность каналовTIM1, TIM8, TIM20: 0x0000 0000; TIM2, TIM3, TIM4, TIM5, TIM15, TIM16, TIM17: 0x0000
TIMx_CNT0x24Счётчик0x0000 0000
TIMx_PSC0x28Предделитель0x0000
TIMx_ARR0x2CПериод (значение перезагрузки)TIM1, TIM8, TIM20, TIM3, TIM4, TIM15, TIM16, TIM17, TIM6, TIM7: 0x0000 FFFF; TIM2, TIM5: 0xFFFF FFFF
TIMx_RCR0x30Счётчик повторений0x0000
TIMx_CCR10x34Сравнение и захват, канал 10x0000 0000
TIMx_CCR20x38Сравнение и захват, канал 20x0000 0000
TIMx_CCR30x3CСравнение и захват, канал 30x0000 0000
TIMx_CCR40x40Сравнение и захват, канал 40x0000 0000
TIMx_BDTR0x44Аварийный останов и мёртвое время0x0000 0000
TIMx_CCR50x48Сравнение, канал 50x0000 0000
TIMx_CCR60x4CСравнение, канал 60x0000 0000
TIMx_CCMR30x50Режимы каналов 5 и 60x0000 0000
TIMx_DTR20x54Асимметричное мёртвое время0x0000 0000
TIMx_ECR0x58Режим энкодера: индекс0x0000 0000
TIMx_TISEL0x5CВыбор входов TI1–TI40x0000 0000
TIMx_DCR0x3DCПакетная передача DMA0x0000 0000
TIMx_DMAR0x3E0Адрес пакетной передачи DMA0x0000 0000

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

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

Значение: 0x00000000

0000 0000 0000 0000 0000 0000 0000 0000

TIM2->CR1 = 0x00000000;

TIMx_CR1 — счёт, режим одного импульса, буферизация

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

31302928272625242322212019181716
—
1514131211109876543210
—DITHENUIFREMAP—CKDARPECMSDIROPMURSUDISCEN
  • DITHEN (бит 12) — Дизеринг: дробная часть периода и сравнения в младших 4 битах ARR и CCRx.
  • UIFREMAP (бит 11) — Копия флага UIF в старшем бите CNT.
  • 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 бит, после сброса TIM1, TIM8, TIM20, TIM2, TIM3, TIM4, TIM5: 0x0000 0000; TIM15, TIM16, TIM17, TIM6, TIM7: 0x0000. В коде: TIM2->CR2.

31302928272625242322212019181716
—MMS_3—MMS2—OIS6—OIS5
1514131211109876543210
OIS4NOIS4OIS3NOIS3OIS2NOIS2OIS1NOIS1TI1SMMSCCDSCCUS—CCPC
  • MMS_3 (бит 25) — Старший бит режима ведущего: сигналы TRGO 8–15 (сравнения каналов 4–6, энкодер).
  • MMS2 (биты 23:20) — Сигнал TRGO2 для АЦП: событие, сравнение каналов 1–6.
  • OIS6 (бит 18) — Уровень OC6 в состоянии простоя (MOE = 0).
  • OIS5 (бит 16) — Уровень OC5 в состоянии простоя (MOE = 0).
  • OIS4N (бит 15) — Уровень выхода OC4N при MOE = 0 (TIM1, TIM8, TIM20, TIM15–TIM17).
  • OIS2–OIS4 (по биту на каждый y, положение — на карте битов) — Уровень выхода OCy при MOE = 0 (TIM1, TIM8, TIM20, TIM15–TIM17).
  • OIS3N (бит 13) — Уровень выхода OC3N при MOE = 0 (TIM1, TIM8, TIM20, TIM15–TIM17).
  • OIS2N (бит 11) — Уровень выхода OC2N при MOE = 0 (TIM1, TIM8, TIM20, TIM15–TIM17).
  • OIS1N (бит 9) — Уровень выхода OC1N при MOE = 0 (TIM1, TIM8, TIM20, TIM15–TIM17).
  • OIS1 (бит 8) — Уровень выхода OC1 при MOE = 0 (TIM1, TIM8, TIM20, 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, TIM8, TIM20, TIM15–TIM17).

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

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

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

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

Смещение 0x0C, 32 бит, после сброса TIM1, TIM8, TIM20, TIM2, TIM3, TIM4, TIM5: 0x0000 0000; TIM15, TIM16, TIM17, TIM6, TIM7: 0x0000. В коде: TIM2->DIER.

31302928272625242322212019181716
—TERRIEIERRIEDIRIEIDXIE—
1514131211109876543210
—TDECOMDECC4DECC3DECC2DECC1DEUDEBIETIECOMIECC4IECC3IECC2IECC1IEUIE
  • TERRIE (бит 23) — Прерывание по ошибке перехода энкодера.
  • IERRIE (бит 22) — Прерывание по ошибке индекса энкодера.
  • DIRIE (бит 21) — Прерывание по смене направления счёта.
  • IDXIE (бит 20) — Прерывание по индексу энкодера.
  • 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, TIM20, TIM15–TIM17).
  • TIE (бит 6) — Прерывание по триггеру.
  • COMIE (бит 5) — Прерывание по событию коммутации COM (TIM1, TIM8, TIM20, TIM15–TIM17).
  • CC4IE (бит 4) — Прерывание канала 4.
  • CC3IE (бит 3) — Прерывание канала 3.
  • CC2IE (бит 2) — Прерывание канала 2.
  • CC1IE (бит 1) — Прерывание канала 1.
  • UIE (бит 0) — Прерывание по обновлению.

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

Смещение 0x10, 32 бит, после сброса TIM1, TIM8, TIM20, TIM2, TIM3, TIM4, TIM5: 0x0000 0000; TIM15, TIM16, TIM17, TIM6, TIM7: 0x0000. В коде: TIM2->SR.

31302928272625242322212019181716
—TERRFIERRFDIRFIDXF—CC6IFCC5IF
1514131211109876543210
—SBIFCC4OFCC3OFCC2OFCC1OFB2IFBIFTIFCOMIFCC4IFCC3IFCC2IFCC1IFUIF
  • TERRF (бит 23) — Ошибка перехода энкодера: недопустимая смена состояния входов.
  • IERRF (бит 22) — Ошибка индекса: индекс пришёл не в той позиции.
  • DIRF (бит 21) — Направление счёта сменилось.
  • IDXF (бит 20) — Пришёл индекс энкодера.
  • CC6IF (бит 17) — Сработало сравнение канала 6.
  • CC5IF (бит 16) — Сработало сравнение канала 5.
  • SBIF (бит 13) — Системный аварийный останов (ошибки, LOCKUP, PVD).
  • CC4OF (бит 12) — Повторный захват канала 4, пока флаг CC4IF не сброшен.
  • CC3OF (бит 11) — Повторный захват канала 3, пока флаг CC3IF не сброшен.
  • CC2OF (бит 10) — Повторный захват канала 2, пока флаг CC2IF не сброшен.
  • CC1OF (бит 9) — Повторный захват канала 1, пока флаг CC1IF не сброшен.
  • B2IF (бит 8) — Сработал аварийный вход 2.
  • 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
—B2GBGTGCOMGCC4GCC3GCC2GCC1GUG
  • B2G (бит 8) — Программный аварийный останов по входу 2.
  • 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 0000. В коде: TIM2->CCMR1.

31302928272625242322212019181716
—OC2M_3—OC1M_3
1514131211109876543210
OC2CEOC2MOC2PEOC2FECC2SOC1CEOC1MOC1PEOC1FECC1S
  • OC2M_3 (бит 24) — Старший бит режима сравнения канала 2: асимметричные и комбинированные режимы ШИМ.
  • OC1M_3 (бит 16) — Старший бит режима сравнения канала 1: асимметричные и комбинированные режимы ШИМ.
  • OC2CE (бит 15) — Сброс OC2REF сигналом ocref_clr_int: вход OCREF_CLR или ETRF (выбор — бит OCCS).
  • IC2F (биты 15:12) — Цифровой фильтр входа 2 (режим захвата).
  • OC2M (биты 14:12) — Режим сравнения канала 2, биты 2:0 (бит 3 — OC2M_3).
  • OC2PE (бит 11) — Буферизация CCR2: новое значение с события обновления.
  • IC2PSC (биты 11:10) — Предделитель захвата 2: каждое 1, 2, 4 или 8-е событие (режим захвата).
  • OC2FE (бит 10) — Ускоренная реакция выхода 2 на триггер (режимы ШИМ).
  • CC2S (биты 9:8) — Канал 2: выход или вход и источник захвата; меняется при CC2E = 0.
  • OC1CE (бит 7) — Сброс OC1REF сигналом ocref_clr_int: вход OCREF_CLR или ETRF (выбор — бит OCCS).
  • IC1F (биты 7:4) — Цифровой фильтр входа 1 (режим захвата).
  • OC1M (биты 6:4) — Режим сравнения канала 1, биты 2:0 (бит 3 — OC1M_3).
  • 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 0000. В коде: TIM2->CCMR2.

31302928272625242322212019181716
—OC4M_3—OC3M_3
1514131211109876543210
OC4CEOC4MOC4PEOC4FECC4SOC3CEOC3MOC3PEOC3FECC3S
  • OC4M_3 (бит 24) — Старший бит режима сравнения канала 4: асимметричные и комбинированные режимы ШИМ.
  • OC3M_3 (бит 16) — Старший бит режима сравнения канала 3: асимметричные и комбинированные режимы ШИМ.
  • OC4CE (бит 15) — Сброс OC4REF сигналом ocref_clr_int: вход OCREF_CLR или ETRF (выбор — бит OCCS).
  • IC4F (биты 15:12) — Цифровой фильтр входа 4 (режим захвата).
  • OC4M (биты 14:12) — Режим сравнения канала 4, биты 2:0 (бит 3 — OC4M_3).
  • OC4PE (бит 11) — Буферизация CCR4: новое значение с события обновления.
  • IC4PSC (биты 11:10) — Предделитель захвата 4: каждое 1, 2, 4 или 8-е событие (режим захвата).
  • OC4FE (бит 10) — Ускоренная реакция выхода 4 на триггер (режимы ШИМ).
  • CC4S (биты 9:8) — Канал 4: выход или вход и источник захвата; меняется при CC4E = 0.
  • OC3CE (бит 7) — Сброс OC3REF сигналом ocref_clr_int: вход OCREF_CLR или ETRF (выбор — бит OCCS).
  • IC3F (биты 7:4) — Цифровой фильтр входа 3 (режим захвата).
  • OC3M (биты 6:4) — Режим сравнения канала 3, биты 2:0 (бит 3 — OC3M_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 бит, после сброса TIM1, TIM8, TIM20: 0x0000 0000; TIM2, TIM3, TIM4, TIM5, TIM15, TIM16, TIM17: 0x0000. В коде: TIM2->CCER.

31302928272625242322212019181716
—CC6PCC6E—CC5PCC5E
1514131211109876543210
CC4NPCC4NECC4PCC4ECC3NPCC3NECC3PCC3ECC2NPCC2NECC2PCC2ECC1NPCC1NECC1PCC1E
  • CC6P (бит 21) — Полярность OC6.
  • CC6E (бит 20) — Включение выхода OC6 (внутренний сигнал).
  • CC5P (бит 17) — Полярность OC5.
  • CC5E (бит 16) — Включение выхода OC5 (внутренний сигнал).
  • CC4NP (бит 15) — Полярность комплементарного выхода 4N.
  • CC4NE (бит 14) — Включение комплементарного выхода 4N (TIM1, TIM8, TIM20, TIM15–TIM17).
  • CC4P (бит 13) — Полярность выхода 4; в режиме захвата — фронт захвата.
  • CC4E (бит 12) — Включение выхода 4; в режиме захвата — разрешение захвата.
  • CC3NP (бит 11) — Полярность комплементарного выхода 3N.
  • CC3NE (бит 10) — Включение комплементарного выхода 3N (TIM1, TIM8, TIM20, TIM15–TIM17).
  • CC3P (бит 9) — Полярность выхода 3; в режиме захвата — фронт захвата.
  • CC3E (бит 8) — Включение выхода 3; в режиме захвата — разрешение захвата.
  • CC2NP (бит 7) — Полярность комплементарного выхода 2N.
  • CC2NE (бит 6) — Включение комплементарного выхода 2N (TIM1, TIM8, TIM20, TIM15–TIM17).
  • CC2P (бит 5) — Полярность выхода 2; в режиме захвата — фронт захвата.
  • CC2E (бит 4) — Включение выхода 2; в режиме захвата — разрешение захвата.
  • CC1NP (бит 3) — Полярность комплементарного выхода 1N.
  • CC1NE (бит 2) — Включение комплементарного выхода 1N (TIM1, TIM8, TIM20, TIM15–TIM17).
  • CC1P (бит 1) — Полярность выхода 1; в режиме захвата — фронт захвата.
  • CC1E (бит 0) — Включение выхода 1; в режиме захвата — разрешение захвата.

TIMx_CNT — счётчик

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

31302928272625242322212019181716
UIFCPY—
1514131211109876543210
—
  • UIFCPY (бит 31) — Копия флага UIF (при UIFREMAP = 1).
  • 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, TIM20, TIM3, TIM4, TIM15, TIM16, TIM17, TIM6, TIM7: 0x0000 FFFF; TIM2, TIM5: 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 (биты 15:0) — Счётчик повторений: событие обновления раз в REP + 1 периодов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

31302928272625242322212019181716
—BK2BIDBKBIDBK2DSRMBKDSRMBK2PBK2EBK2FBKF
1514131211109876543210
MOEAOEBKPBKEOSSROSSILOCKDTG
  • BK2BID (бит 29) — Аварийный вход 2 двунаправленный: может выдавать сигнал.
  • BKBID (бит 28) — Аварийный вход двунаправленный: может выдавать сигнал.
  • BK2DSRM (бит 27) — Снятие и взвод аварийного входа 2.
  • BKDSRM (бит 26) — Снятие и взвод аварийного входа.
  • BK2P (бит 25) — Полярность аварийного входа 2.
  • BK2E (бит 24) — Включение аварийного входа 2.
  • BK2F (биты 23:20) — Фильтр аварийного входа 2.
  • BKF (биты 19:16) — Фильтр аварийного входа.
  • 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_CCR5 — сравнение, канал 5

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

31302928272625242322212019181716
GC5C3GC5C2GC5C1—CCR5
1514131211109876543210
CCR5
  • GC5C3 (бит 31) — Объединение OC5REF с OC3REF (логическое И).
  • GC5C2 (бит 30) — Объединение OC5REF с OC2REF (логическое И).
  • GC5C1 (бит 29) — Объединение OC5REF с OC1REF (логическое И).
  • CCR5 (биты 19:0) — Значение сравнения канала 5.

TIMx_CCR6 — сравнение, канал 6

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

31302928272625242322212019181716
—CCR6
1514131211109876543210
CCR6
  • CCR6 (биты 19:0) — Значение сравнения канала 6.

TIMx_CCMR3 — режимы каналов 5 и 6

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

31302928272625242322212019181716
—OC6M_3—OC5M_3
1514131211109876543210
OC6CEOC6MOC6PEOC6FE—OC5CEOC5MOC5PEOC5FE—
  • OC6M_3 (бит 24) — Старший бит режима сравнения канала 6: асимметричные и комбинированные режимы ШИМ.
  • OC5M_3 (бит 16) — Старший бит режима сравнения канала 5: асимметричные и комбинированные режимы ШИМ.
  • OC6CE (бит 15) — Сброс OC6REF сигналом ocref_clr_int: вход OCREF_CLR или ETRF (выбор — бит OCCS).
  • OC6M (биты 14:12) — Режим сравнения канала 6, биты 2:0.
  • OC6PE (бит 11) — Буферизация CCR6.
  • OC6FE (бит 10) — Быстрое включение OC6.
  • OC5CE (бит 7) — Сброс OC5REF сигналом ocref_clr_int: вход OCREF_CLR или ETRF (выбор — бит OCCS).
  • OC5M (биты 6:4) — Режим сравнения канала 5, биты 2:0.
  • OC5PE (бит 3) — Буферизация CCR5.
  • OC5FE (бит 2) — Быстрое включение OC5.

TIMx_DTR2 — асимметричное мёртвое время

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

31302928272625242322212019181716
—DTPEDTAE
1514131211109876543210
—DTGF
  • DTPE (бит 17) — Предзагрузка мёртвого времени.
  • DTAE (бит 16) — Асимметричное мёртвое время: по спадающему фронту — DTGF, по нарастающему — DTG.
  • DTGF (биты 7:0) — Мёртвое время по спадающему фронту (кодировка как у DTG).

TIMx_ECR — режим энкодера: индекс

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

31302928272625242322212019181716
—PWPRSCPW
1514131211109876543210
—IPOSFIDX—IDIRIE
  • PWPRSC (биты 26:24) — Предделитель генератора импульсов: tPWG = 2^PWPRSC × tTIM.
  • PW (биты 23:16) — Длительность импульса: tPW = PW × tPWG.
  • IPOS (биты 7:6) — При каком состоянии входов A и B индекс сбрасывает счётчик.
  • FIDX (бит 5) — Учитывать только первый индекс.
  • IDIR (биты 2:1) — Направление, в котором индекс сбрасывает счётчик: любое, только вверх, только вниз.
  • IE (бит 0) — Сброс счётчика индексом энкодера.

TIMx_TISEL — выбор входов TI1–TI4

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

31302928272625242322212019181716
—TI4SEL—TI3SEL
1514131211109876543210
—TI2SEL—TI1SEL
  • TI4SEL (биты 27:24) — Источник входа TI4: вывод TIMx_CH4 или внутренний сигнал (компараторы).
  • TI3SEL (биты 19:16) — Источник входа TI3: вывод TIMx_CH3 или внутренний сигнал (компараторы).
  • TI2SEL (биты 11:8) — Источник входа TI2: вывод TIMx_CH2 или внутренний сигнал (компараторы).
  • TI1SEL (биты 3:0) — Источник входа TI1: вывод TIMx_CH1 или внутренний сигнал (компараторы).

TIMx_DCR — пакетная передача DMA

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

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

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

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

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

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

Как получить ШИМ 100 кГц с разрешением лучше 1700 шагов на TIM1 STM32G474?

При 170 МГц и ARR = 1699 шагов ровно 1700. Включите дизеринг DITHEN = 1: младшие 4 бита ARR и CCRx становятся дробными, разрешение растёт в 16 раз за счёт чередования длительностей периодов.

Как сбрасывать счётчик энкодера по индексу?

Подайте индекс на вход ETR, в ECR установите IE = 1, выберите IDIR и IPOS (при каких состояниях A и B индекс действует) и включите режим энкодера в SMS. Флаг IDXF и прерывание IDXIE покажут каждый индекс.

Источники

  1. STMicroelectronics. RM0440: Reference manual (Rev 9) — раздел 29.6–32.4: описание регистров, назначение полей и значения после сброса
  2. STMicroelectronics. cmsis-device-g4 v1.2.6: заголовки CMSIS stm32g431xx.h, stm32g441xx.h, stm32g471xx.h, stm32g473xx.h, stm32g474xx.h, stm32g483xx.h, stm32g484xx.h, stm32g491xx.h, stm32g4a1xx.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0

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

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

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