Регистры 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.
| Экземпляр | Базовый адрес | Есть у |
|---|---|---|
| TIM2 | 0x4000 0000 | всех |
| TIM3 | 0x4000 0400 | всех |
| TIM4 | 0x4000 0800 | всех |
| TIM5 | 0x4000 0C00 | всех |
| TIM6 | 0x4000 1000 | всех |
| TIM7 | 0x4000 1400 | всех |
| TIM12 | 0x4000 1800 | всех |
| TIM13 | 0x4000 1C00 | всех |
| TIM14 | 0x4000 2000 | всех |
| TIM1 | 0x4001 0000 | всех |
| TIM8 | 0x4001 0400 | всех |
| TIM9 | 0x4001 4000 | всех |
| TIM10 | 0x4001 4400 | всех |
| TIM11 | 0x4001 4800 | всех |
Регистры блока
| Регистр | Смещение | Назначение | После сброса |
|---|---|---|---|
| TIMx_CR1 | 0x00 | Управление счётчиком | 0x0000 |
| TIMx_CR2 | 0x04 | Выход TRGO, DMA каналов и состояние покоя выходов | 0x0000 |
| TIMx_SMCR | 0x08 | Режим ведомого, триггер и внешний вход ETR | 0x0000 |
| TIMx_DIER | 0x0C | Разрешение прерываний и запросов DMA | 0x0000 |
| TIMx_SR | 0x10 | Флаги событий | 0x0000 |
| TIMx_EGR | 0x14 | Программные события | 0x0000 |
| TIMx_CCMR1 | 0x18 | Режимы каналов 1 и 2 | 0x0000 |
| TIMx_CCMR2 | 0x1C | Режимы каналов 3 и 4 | 0x0000 |
| TIMx_CCER | 0x20 | Включение и полярность каналов | 0x0000 |
| TIMx_CNT | 0x24 | Счётчик | TIM1, TIM8, TIM9, TIM10, TIM11, TIM12, TIM13, TIM14, TIM9, TIM10, TIM11, TIM12, TIM13, TIM14, TIM6, TIM7: 0x0000; TIM2, TIM3, TIM4, TIM5: 0x0000 0000 |
| TIMx_PSC | 0x28 | Предделитель | 0x0000 |
| TIMx_ARR | 0x2C | Период (значение перезагрузки) | TIM1, TIM8, TIM9, TIM10, TIM11, TIM12, TIM13, TIM14, TIM9, TIM10, TIM11, TIM12, TIM13, TIM14, TIM6, TIM7: 0xFFFF; TIM2, TIM3, TIM4, TIM5: 0xFFFF FFFF |
| TIMx_RCR | 0x30 | Счётчик повторений (TIM1, TIM8) | 0x0000 |
| TIMx_CCR1 | 0x34 | Сравнение или захват, канал 1 | TIM1, TIM8, TIM9, TIM10, TIM11, TIM12, TIM13, TIM14, TIM9, TIM10, TIM11, TIM12, TIM13, TIM14: 0x0000; TIM2, TIM3, TIM4, TIM5: 0x0000 0000 |
| TIMx_CCR2 | 0x38 | Сравнение или захват, канал 2 | TIM1, TIM8, TIM9, TIM10, TIM11, TIM12, TIM13, TIM14: 0x0000; TIM2, TIM3, TIM4, TIM5: 0x0000 0000 |
| TIMx_CCR3 | 0x3C | Сравнение или захват, канал 3 | TIM1, TIM8: 0x0000; TIM2, TIM3, TIM4, TIM5: 0x0000 0000 |
| TIMx_CCR4 | 0x40 | Сравнение или захват, канал 4 | TIM1, TIM8: 0x0000; TIM2, TIM3, TIM4, TIM5: 0x0000 0000 |
| TIMx_BDTR | 0x44 | Мёртвое время, аварийный вход и ключ выходов (TIM1, TIM8) | 0x0000 |
| TIMx_DCR | 0x48 | Настройка пакетной передачи DMA | 0x0000 |
| TIMx_DMAR | 0x4C | Окно пакетной передачи DMA | TIM1, TIM8: 0x0000 0000; TIM2, TIM3, TIM4, TIM5: 0x0000 |
| TIMx_OR | 0x50 | Переназначение входов (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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | CKD | ARPE | CMS | DIR | OPM | URS | UDIS | CEN | |||||||
- CKD (биты 9:8) — Период дискретизации цифровых фильтров tDTS относительно такта таймера.
CKD Значение 00 tDTS = tCK_INT 01 tDTS = 2 × tCK_INT 10 tDTS = 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | OIS4 | OIS3N | OIS3 | OIS2N | OIS2 | OIS1N | OIS1 | TI1S | MMS | CCDS | CCUS | — | 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 1 CH1 XOR CH2 XOR CH3 - MMS (биты 6:4) — Сигнал TRGO для ведомых таймеров, АЦП и ЦАП.
MMS Значение 000 Сброс: бит UG 001 Включение счётчика CNT_EN 010 Событие обновления 011 Импульс при сравнении или захвате канала 1 100 OC1REF 101 OC2REF 110 OC3REF 111 OC4REF - 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| ETP | ECE | ETPS | ETF | MSM | TS | — | 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 0001 fCK_INT, N = 2 0010 fCK_INT, N = 4 0011 fCK_INT, N = 8 0100 fDTS / 2, N = 6 0101 fDTS / 2, N = 8 0110 fDTS / 4, N = 6 0111 fDTS / 4, N = 8 1000 fDTS / 8, N = 6 1001 fDTS / 8, N = 8 1010 fDTS / 16, N = 5 1011 fDTS / 16, N = 6 1100 fDTS / 16, N = 8 1101 fDTS / 32, N = 5 1110 fDTS / 32, N = 6 1111 fDTS / 32, N = 8 - MSM (бит 7) — Задержка события TRGI для синхронного запуска ведомых таймеров.
- TS (биты 6:4) — Источник триггера TRGI.
TS Значение 000 ITR0 — внутренний триггер 0 001 ITR1 — внутренний триггер 1 010 ITR2 — внутренний триггер 2 011 ITR3 — внутренний триггер 3 100 TI1F_ED — любой фронт входа 1 101 TI1FP1 — фильтрованный вход 1 110 TI2FP2 — фильтрованный вход 2 111 ETRF — внешний вход 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | TDE | COMDE | CC4DE | CC3DE | CC2DE | CC1DE | UDE | BIE | TIE | COMIE | CC4IE | CC3IE | CC2IE | CC1IE | UIE |
- 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | CC4OF | CC3OF | CC2OF | CC1OF | — | BIF | TIF | COMIF | CC4IF | CC3IF | CC2IF | CC1IF | UIF | ||
- 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | BG | TG | COMG | CC4G | CC3G | CC2G | CC1G | UG | |||||||
- 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| OC2CE | OC2M | OC2PE | OC2FE | CC2S | OC1CE | OC1M | OC1PE | OC1FE | CC1S | ||||||
- OC2CE (бит 15) — Сброс OC2REF высоким уровнем на входе ETRF.
- IC2F (биты 15:12) — Цифровой фильтр входа 2 (режим захвата).
IC2F Значение 0000 Без фильтра, выборка с частотой fDTS 0001 fCK_INT, N = 2 0010 fCK_INT, N = 4 0011 fCK_INT, N = 8 0100 fDTS / 2, N = 6 0101 fDTS / 2, N = 8 0110 fDTS / 4, N = 6 0111 fDTS / 4, N = 8 1000 fDTS / 8, N = 6 1001 fDTS / 8, N = 8 1010 fDTS / 16, N = 5 1011 fDTS / 16, N = 6 1100 fDTS / 16, N = 8 1101 fDTS / 32, N = 5 1110 fDTS / 32, N = 6 1111 fDTS / 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 0001 fCK_INT, N = 2 0010 fCK_INT, N = 4 0011 fCK_INT, N = 8 0100 fDTS / 2, N = 6 0101 fDTS / 2, N = 8 0110 fDTS / 4, N = 6 0111 fDTS / 4, N = 8 1000 fDTS / 8, N = 6 1001 fDTS / 8, N = 8 1010 fDTS / 16, N = 5 1011 fDTS / 16, N = 6 1100 fDTS / 16, N = 8 1101 fDTS / 32, N = 5 1110 fDTS / 32, N = 6 1111 fDTS / 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| OC4CE | OC4M | OC4PE | OC4FE | CC4S | OC3CE | OC3M | OC3PE | OC3FE | CC3S | ||||||
- OC4CE (бит 15) — Сброс OC4REF высоким уровнем на входе ETRF.
- IC4F (биты 15:12) — Цифровой фильтр входа 4 (режим захвата).
IC4F Значение 0000 Без фильтра, выборка с частотой fDTS 0001 fCK_INT, N = 2 0010 fCK_INT, N = 4 0011 fCK_INT, N = 8 0100 fDTS / 2, N = 6 0101 fDTS / 2, N = 8 0110 fDTS / 4, N = 6 0111 fDTS / 4, N = 8 1000 fDTS / 8, N = 6 1001 fDTS / 8, N = 8 1010 fDTS / 16, N = 5 1011 fDTS / 16, N = 6 1100 fDTS / 16, N = 8 1101 fDTS / 32, N = 5 1110 fDTS / 32, N = 6 1111 fDTS / 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 0001 fCK_INT, N = 2 0010 fCK_INT, N = 4 0011 fCK_INT, N = 8 0100 fDTS / 2, N = 6 0101 fDTS / 2, N = 8 0110 fDTS / 4, N = 6 0111 fDTS / 4, N = 8 1000 fDTS / 8, N = 6 1001 fDTS / 8, N = 8 1010 fDTS / 16, N = 5 1011 fDTS / 16, N = 6 1100 fDTS / 16, N = 8 1101 fDTS / 32, N = 5 1110 fDTS / 32, N = 6 1111 fDTS / 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| CC4NP | — | CC4P | CC4E | CC3NP | CC3NE | CC3P | CC3E | CC2NP | CC2NE | CC2P | CC2E | CC1NP | CC1NE | CC1P | CC1E |
- 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| CNT | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| CNT | |||||||||||||||
- CNT (биты 31:0) — Значение счётчика: 32 бита у TIM2 и TIM5, у остальных таймеров 16.
TIMx_PSC — предделитель
Смещение 0x28, 32 бит, после сброса 0x0000. В коде: TIM2->PSC.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| ARR | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| ARR | |||||||||||||||
- ARR (биты 31:0) — Период: счётчик считает от 0 до ARR, всего ARR + 1 отсчётов.
TIMx_RCR — счётчик повторений (TIM1, TIM8)
Смещение 0x30, 32 бит, после сброса 0x0000. В коде: TIM2->RCR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| CCR2 | |||||||||||||||
- CCR2 (биты 15:0) — Значение сравнения канала 2 или захваченное значение счётчика.
TIMx_CCR3 — сравнение или захват, канал 3
Смещение 0x3C, 32 бит, после сброса TIM1, TIM8: 0x0000; TIM2, TIM3, TIM4, TIM5: 0x0000 0000. В коде: TIM2->CCR3.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| CCR3 | |||||||||||||||
- CCR3 (биты 15:0) — Значение сравнения канала 3 или захваченное значение счётчика.
TIMx_CCR4 — сравнение или захват, канал 4
Смещение 0x40, 32 бит, после сброса TIM1, TIM8: 0x0000; TIM2, TIM3, TIM4, TIM5: 0x0000 0000. В коде: TIM2->CCR4.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| CCR4 | |||||||||||||||
- CCR4 (биты 15:0) — Значение сравнения канала 4 или захваченное значение счётчика.
TIMx_BDTR — мёртвое время, аварийный вход и ключ выходов (TIM1, TIM8)
Смещение 0x44, 32 бит, после сброса 0x0000. В коде: TIM2->BDTR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| MOE | AOE | BKP | BKE | OSSR | OSSI | LOCK | DTG | ||||||||
- 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| DMAB | |||||||||||||||
- DMAB (биты 15:0) — Окно пакетного обмена DMA с регистрами таймера.
TIMx_OR — переназначение входов (TIM2, TIM5, TIM11)
Смещение 0x50, 32 бит, после сброса 0x0000. В коде: TIM2->OR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | ITR1_RMP | — | TI4_RMP | — | TI1_RMP | ||||||||||
- ITR1_RMP (биты 11:10) — Источник внутреннего триггера ITR1 таймера TIM2.
ITR1_RMP Значение 00 TRGO таймера TIM8 01 Триггер PTP Ethernet 10 SOF USB OTG FS 11 SOF USB OTG HS - TI4_RMP (биты 7:6) — Источник входа TI4 таймера TIM5.
TI4_RMP Значение 00 Вывод TIM5_CH4 01 LSI — для калибровки 10 LSE — для калибровки 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 ставился автоматически.
Источники
- STMicroelectronics. RM0090: Reference manual (Rev 22) — раздел 17.4–20.4: описание регистров, назначение полей и значения после сброса
- 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
- Все регистры STM32F4Блоки периферии и заголовки CMSIS
- RCC — сброс и тактированиеRCC_CR, RCC_PLLCFGR, RCC_CFGR, RCC_CIR, RCC_AHB1RSTR, RCC_AHB2RSTR
- GPIO — порты ввода-выводаGPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, GPIOx_PUPDR, GPIOx_IDR, GPIOx_ODR
- SYSCFG — системная конфигурацияSYSCFG_MEMRMP, SYSCFG_PMC, SYSCFG_EXTICR1, SYSCFG_EXTICR2, SYSCFG_EXTICR3, SYSCFG_EXTICR4
- EXTI — контроллер внешних прерываний и событийEXTI_IMR, EXTI_EMR, EXTI_RTSR, EXTI_FTSR, EXTI_SWIER, EXTI_PR
- USART — последовательные порты USART и UARTUSART_SR, USART_DR, USART_BRR, USART_CR1, USART_CR2, USART_CR3
- SPI — интерфейсы SPI и I2SSPI_CR1, SPI_CR2, SPI_SR, SPI_DR, SPI_CRCPR, SPI_RXCRCR
- I2C — интерфейс I2CI2C_CR1, I2C_CR2, I2C_OAR1, I2C_OAR2, I2C_DR, I2C_SR1
- DMA — контроллеры прямого доступа к памятиDMA_LISR, DMA_HISR, DMA_LIFCR, DMA_HIFCR, DMA_SxCR, DMA_SxNDT
- ADC — аналого-цифровые преобразователиADC_SR, ADC_CR1, ADC_CR2, ADC_SMPR1, ADC_SMPR2, ADC_JOFR1
- IWDG — независимый сторожевой таймерIWDG_KR, IWDG_PR, IWDG_RLR, IWDG_SR
- WWDG — оконный сторожевой таймерWWDG_CR, WWDG_CFR, WWDG_SR
- CRC — блок вычисления CRCCRC_DR, CRC_IDR, CRC_CR
- DBGMCU — регистры отладкиDBGMCU_IDCODE, DBGMCU_CR, DBGMCU_APB1_FZ, DBGMCU_APB2_FZ