Регистры RCC STM32L0
Регистры RCC STM32L0x1: генераторы MSI, HSI16, HSE, LSI и LSE, PLL с множителем и делителем, делители AHB, APB1 и APB2, выход MCO, источники тактирования USART, LPUART, I2C и LPTIM, включение и сброс периферии, причина сброса.
После сброса STM32L0 работает от MSI около 2,097 МГц — генератора с семью диапазонами от 65,536 кГц до 4,194 МГц (поле MSIRANGE регистра RCC_ICSCR). До 32 МГц частоту поднимает PLL: на вход идёт HSI16 или HSE, частота ГУН = вход × PLLMUL (3…48), выход = ГУН / PLLDIV (2, 3 или 4). Частоту ограничивает и диапазон напряжения ядра в PWR_CR (RM0377, раздел 7.3).
Порты тактируются через отдельный регистр RCC_IOPENR, остальная периферия — через RCC_AHBENR, RCC_APB2ENR и RCC_APB1ENR; регистры ...SMENR задают, что продолжает работать в режиме Sleep. RCC_CCIPR выбирает такт USART1, USART2, LPUART1, I2C1, I2C3 и LPTIM1: от HSI16 или LSE они работают и в режиме Stop. RTC и LSE настраиваются в RCC_CSR — запись туда разрешает бит DBP регистра PWR_CR.
| Экземпляр | Базовый адрес | Есть у |
|---|---|---|
| RCC | 0x4002 1000 | всех |
Регистры блока
| Регистр | Смещение | Назначение | После сброса |
|---|---|---|---|
| RCC_CR | 0x00 | Тактовые генераторы HSI16, MSI, HSE и PLL | 0x0000 0300 (при включении питания; при системном сбросе — 0b0000 0000 00XX 0X00 0000 0011 0000 0000, X — не определено) |
| RCC_ICSCR | 0x04 | Калибровка и подстройка HSI16 и MSI, диапазон MSI | 0x00XX B0XX (X — не определено) |
| RCC_CFGR | 0x0C | Источник SYSCLK, делители шин, PLL и вывод MCO | 0x0000 0000 |
| RCC_CIER | 0x10 | Разрешение прерываний готовности генераторов | 0x0000 0000 |
| RCC_CIFR | 0x14 | Флаги прерываний готовности генераторов | 0x0000 0000 |
| RCC_CICR | 0x18 | Сброс флагов прерываний генераторов | 0x0000 0000 |
| RCC_IOPRSTR | 0x1C | Сброс портов ввода-вывода | 0x0000 0000 |
| RCC_AHBRSTR | 0x20 | Сброс блоков на шине AHB | 0x0000 0000 |
| RCC_APB2RSTR | 0x24 | Сброс блоков на шине APB2 | 0x0000 0000 (в описании регистра напечатано 0x00000 0000; значение — по карте регистров на с. 214) |
| RCC_APB1RSTR | 0x28 | Сброс блоков на шине APB1 | 0x0000 0000 |
| RCC_IOPENR | 0x2C | Тактирование портов ввода-вывода | 0x0000 0000 |
| RCC_AHBENR | 0x30 | Тактирование блоков на шине AHB | 0x0000 0100 |
| RCC_APB2ENR | 0x34 | Тактирование блоков на шине APB2 | 0x0000 0000 |
| RCC_APB1ENR | 0x38 | Тактирование блоков на шине APB1 | 0x0000 0000 |
| RCC_IOPSMENR | 0x3C | Тактирование в режиме Sleep портов ввода-вывода | — |
| RCC_AHBSMENR | 0x40 | Тактирование в режиме Sleep блоков на шине AHB | — |
| RCC_APB2SMENR | 0x44 | Тактирование в режиме Sleep блоков на шине APB2 | — |
| RCC_APB1SMENR | 0x48 | Тактирование в режиме Sleep блоков на шине APB1 | — |
| RCC_CCIPR | 0x4C | Источники тактирования USART, LPUART, I2C и LPTIM | 0x0000 0000 |
| RCC_CSR | 0x50 | LSI, LSE, тактирование RTC и флаги причины сброса | 0x0C00 0004 |
Конструктор значения
Выберите регистр и значения полей — конструктор покажет 32-битное значение и строку на C с макросами CMSIS. Поля, которые вы не меняете, берутся из значения после сброса.
Значение: 0x00000300
0000 0000 0000 0000 0000 0011 0000 0000
RCC->CR = 0x00000300;RCC_CR — тактовые генераторы HSI16, MSI, HSE и PLL
Смещение 0x00, адрес 0x4002 1000, 32 бит, после сброса 0x0000 0300 (при включении питания; при системном сбросе — 0b0000 0000 00XX 0X00 0000 0011 0000 0000, X — не определено). В коде: RCC->CR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | PLLRDY | PLLON | — | RTCPRE | CSSHSEON | HSEBYP | HSERDY | HSEON | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | MSIRDY | MSION | — | HSIOUTEN | HSIDIVF | HSIDIVEN | HSIRDY | HSIKERON | HSION | ||||||
- PLLRDY (бит 25) — PLL захватила частоту (только чтение).
- PLLON (бит 24) — Включение PLL; сбрасывается при входе в Stop и Standby.
- RTCPRE (биты 21:20) — Делитель HSE для RTC: 2, 4, 8 или 16 (нужно около 1 МГц); меняется только при выключенном HSE.
RTCPRE Значение 00 HSE / 2 01 HSE / 4 10 HSE / 8 11 HSE / 16 - CSSHSEON (бит 19) — Система защиты тактирования HSE: при отказе кварца SYSCLK переходит на MSI или HSI16, возникает NMI; бит сбрасывается только системным сбросом (только у STM32L031, STM32L041, STM32L051, STM32L071, STM32L081).
- HSEBYP (бит 18) — Обход генератора HSE: внешний тактовый сигнал вместо кварца.
- HSERDY (бит 17) — Генератор HSE готов (только чтение).
- HSEON (бит 16) — Включение генератора HSE; сбрасывается при входе в Stop и Standby.
- MSIRDY (бит 9) — Генератор MSI готов (только чтение).
- MSION (бит 8) — Включение генератора MSI (после сброса — 2,097 МГц).
- HSIOUTEN (бит 5) — Подача HSI16 на вход ETR таймера TIM2 (при ETR_RMP = 011 в TIM2_OR) (только у STM32L011, STM32L021, STM32L031, STM32L041, STM32L071, STM32L081).
- HSIDIVF (бит 4) — Делитель HSI16 на 4 работает (только чтение).
- HSIDIVEN (бит 3) — Деление HSI16 на 4: системная частота 4 МГц от HSI16.
- HSIRDY (бит 2) — Генератор HSI16 готов (только чтение).
- HSIKERON (бит 1) — HSI16 не выключается в режиме Stop и сразу тактирует USART и I2C1.
- HSION (бит 0) — Включение генератора HSI16 16 МГц.
RCC_ICSCR — калибровка и подстройка HSI16 и MSI, диапазон MSI
Смещение 0x04, адрес 0x4002 1004, 32 бит, после сброса 0x00XX B0XX (X — не определено). В коде: RCC->ICSCR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| MSITRIM | MSICAL | ||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| MSIRANGE | HSITRIM | HSICAL | |||||||||||||
- MSITRIM (биты 31:24) — Подстройка частоты MSI поверх заводской калибровки.
- MSICAL (биты 23:16) — Заводская калибровка MSI (только чтение).
- MSIRANGE (биты 15:13) — Частота MSI: от 65,536 кГц до 4,194 МГц.
MSIRANGE Значение 000 Диапазон 0: около 65,536 кГц 001 Диапазон 1: около 131,072 кГц 010 Диапазон 2: около 262,144 кГц 011 Диапазон 3: около 524,288 кГц 100 Диапазон 4: около 1,048 МГц 101 Диапазон 5: около 2,097 МГц (после сброса) 110 Диапазон 6: около 4,194 МГц - HSITRIM (биты 12:8) — Подстройка частоты HSI16 поверх заводской калибровки HSICAL.
- HSICAL (биты 7:0) — Заводская калибровка HSI16 (только чтение).
RCC_CFGR — источник SYSCLK, делители шин, PLL и вывод MCO
Смещение 0x0C, адрес 0x4002 100C, 32 бит, после сброса 0x0000 0000. В коде: RCC->CFGR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | MCOPRE | MCOSEL | PLLDIV | PLLMUL | — | PLLSRC | |||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| STOPWUCK | — | PPRE2 | PPRE1 | HPRE | SWS | SW | |||||||||
- MCOPRE (биты 30:28) — Делитель сигнала на выходе MCO.
MCOPRE Значение Макрос CMSIS 000 Без деления RCC_CFGR_MCOPRE_DIV1 001 Деление на 2 RCC_CFGR_MCOPRE_DIV2 010 Деление на 4 RCC_CFGR_MCOPRE_DIV4 011 Деление на 8 RCC_CFGR_MCOPRE_DIV8 100 Деление на 16 RCC_CFGR_MCOPRE_DIV16 - MCOSEL (биты 27:24) — Источник сигнала на выходе MCO.
MCOSEL Значение Макрос CMSIS 0000 Нет сигнала RCC_CFGR_MCOSEL_NOCLOCK 0001 SYSCLK RCC_CFGR_MCOSEL_SYSCLK 0010 HSI16 RCC_CFGR_MCOSEL_HSI 0011 MSI RCC_CFGR_MCOSEL_MSI 0100 HSE RCC_CFGR_MCOSEL_HSE 0101 PLL RCC_CFGR_MCOSEL_PLL 0110 LSI RCC_CFGR_MCOSEL_LSI 0111 LSE RCC_CFGR_MCOSEL_LSE - PLLDIV (биты 23:22) — Делитель выхода PLL: частота ГУН / 2, / 3 или / 4.
PLLDIV Значение Макрос CMSIS 01 Частота ГУН / 2 RCC_CFGR_PLLDIV2 10 Частота ГУН / 3 RCC_CFGR_PLLDIV3 11 Частота ГУН / 4 RCC_CFGR_PLLDIV4 - PLLMUL (биты 21:18) — Множитель PLL: ×3…×48; частота ГУН — не больше 96 МГц в диапазоне 1.
PLLMUL Значение Макрос CMSIS 0000 ×3 RCC_CFGR_PLLMUL3 0001 ×4 RCC_CFGR_PLLMUL4 0010 ×6 RCC_CFGR_PLLMUL6 0011 ×8 RCC_CFGR_PLLMUL8 0100 ×12 RCC_CFGR_PLLMUL12 0101 ×16 RCC_CFGR_PLLMUL16 0110 ×24 RCC_CFGR_PLLMUL24 0111 ×32 RCC_CFGR_PLLMUL32 1000 ×48 RCC_CFGR_PLLMUL48 - PLLSRC (бит 16) — Источник тактирования PLL: HSI16 или HSE.
PLLSRC Значение Макрос CMSIS 0 HSI16 RCC_CFGR_PLLSRC_HSI 1 HSE RCC_CFGR_PLLSRC_HSE - STOPWUCK (бит 15) — Генератор после выхода из Stop: MSI или HSI16.
STOPWUCK Значение 0 MSI 1 HSI16 (или HSI16 / 4 при HSIDIVEN = 1) - PPRE2 (биты 13:11) — Делитель шины APB2: PCLK2 = HCLK / 1…16.
PPRE2 Значение Макрос CMSIS 000 Без деления RCC_CFGR_PPRE2_DIV1 100 Деление на 2 RCC_CFGR_PPRE2_DIV2 101 Деление на 4 RCC_CFGR_PPRE2_DIV4 110 Деление на 8 RCC_CFGR_PPRE2_DIV8 111 Деление на 16 RCC_CFGR_PPRE2_DIV16 - PPRE1 (биты 10:8) — Делитель шины APB1: PCLK1 = HCLK / 1…16.
PPRE1 Значение Макрос CMSIS 000 Без деления RCC_CFGR_PPRE1_DIV1 100 Деление на 2 RCC_CFGR_PPRE1_DIV2 101 Деление на 4 RCC_CFGR_PPRE1_DIV4 110 Деление на 8 RCC_CFGR_PPRE1_DIV8 111 Деление на 16 RCC_CFGR_PPRE1_DIV16 - HPRE (биты 7:4) — Делитель шины AHB: HCLK = SYSCLK / 1…512.
HPRE Значение Макрос CMSIS 0000 Без деления RCC_CFGR_HPRE_DIV1 1000 Деление на 2 RCC_CFGR_HPRE_DIV2 1001 Деление на 4 RCC_CFGR_HPRE_DIV4 1010 Деление на 8 RCC_CFGR_HPRE_DIV8 1011 Деление на 16 RCC_CFGR_HPRE_DIV16 1100 Деление на 64 RCC_CFGR_HPRE_DIV64 1101 Деление на 128 RCC_CFGR_HPRE_DIV128 1110 Деление на 256 RCC_CFGR_HPRE_DIV256 1111 Деление на 512 RCC_CFGR_HPRE_DIV512 - SWS (биты 3:2) — Текущий источник SYSCLK (только чтение).
SWS Значение Макрос CMSIS 00 MSI RCC_CFGR_SWS_MSI 01 HSI16 RCC_CFGR_SWS_HSI 10 HSE RCC_CFGR_SWS_HSE 11 PLL RCC_CFGR_SWS_PLL - SW (биты 1:0) — Выбор источника SYSCLK.
SW Значение Макрос CMSIS 00 MSI RCC_CFGR_SW_MSI 01 HSI16 RCC_CFGR_SW_HSI 10 HSE RCC_CFGR_SW_HSE 11 PLL RCC_CFGR_SW_PLL
RCC_CIER — разрешение прерываний готовности генераторов
Смещение 0x10, адрес 0x4002 1010, 32 бит, после сброса 0x0000 0000. В коде: RCC->CIER.
| 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 |
| — | CSSLSE | — | MSIRDYIE | PLLRDYIE | HSERDYIE | HSIRDYIE | LSERDYIE | LSIRDYIE | |||||||
- CSSLSE (бит 7) — Прерывание по отказу LSE.
- MSIRDYIE (бит 5) — Прерывание по готовности MSI.
- PLLRDYIE (бит 4) — Прерывание по готовности PLL.
- HSERDYIE (бит 3) — Прерывание по готовности HSE.
- HSIRDYIE (бит 2) — Прерывание по готовности HSI.
- LSERDYIE (бит 1) — Прерывание по готовности LSE.
- LSIRDYIE (бит 0) — Прерывание по готовности LSI.
RCC_CIFR — флаги прерываний готовности генераторов
Смещение 0x14, адрес 0x4002 1014, 32 бит, после сброса 0x0000 0000. В коде: RCC->CIFR.
| 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 |
| — | CSSHSEF | CSSLSEF | — | MSIRDYF | PLLRDYF | HSERDYF | HSIRDYF | LSERDYF | LSIRDYF | ||||||
- CSSHSEF (бит 8) — Флаг отказа HSE (система защиты тактирования) (только у STM32L031, STM32L041, STM32L051, STM32L071, STM32L081).
- CSSLSEF (бит 7) — Флаг отказа LSE.
- MSIRDYF (бит 5) — Флаг прерывания по готовности MSI.
- PLLRDYF (бит 4) — Флаг прерывания по готовности PLL.
- HSERDYF (бит 3) — Флаг прерывания по готовности HSE.
- HSIRDYF (бит 2) — Флаг прерывания по готовности HSI.
- LSERDYF (бит 1) — Флаг прерывания по готовности LSE.
- LSIRDYF (бит 0) — Флаг прерывания по готовности LSI.
RCC_CICR — сброс флагов прерываний генераторов
Смещение 0x18, адрес 0x4002 1018, 32 бит, после сброса 0x0000 0000. В коде: RCC->CICR.
| 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 |
| — | CSSHSEC | CSSLSEC | — | MSIRDYC | PLLRDYC | HSERDYC | HSIRDYC | LSERDYC | LSIRDYC | ||||||
- CSSHSEC (бит 8) — Сброс флага отказа HSE записью 1 (только у STM32L031, STM32L041, STM32L051, STM32L071, STM32L081).
- CSSLSEC (бит 7) — Сброс флага отказа LSE записью 1.
- MSIRDYC (бит 5) — Сброс флага готовности MSI записью 1.
- PLLRDYC (бит 4) — Сброс флага готовности PLL записью 1.
- HSERDYC (бит 3) — Сброс флага готовности HSE записью 1.
- HSIRDYC (бит 2) — Сброс флага готовности HSI записью 1.
- LSERDYC (бит 1) — Сброс флага готовности LSE записью 1.
- LSIRDYC (бит 0) — Сброс флага готовности LSI записью 1.
RCC_IOPRSTR — сброс портов ввода-вывода
Смещение 0x1C, адрес 0x4002 101C, 32 бит, после сброса 0x0000 0000. В коде: RCC->IOPRSTR.
| 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 |
| — | IOPHRST | — | IOPERST | IOPDRST | IOPCRST | IOPBRST | IOPARST | ||||||||
- IOPHRST (бит 7) — Сброс порта H (только у STM32L031, STM32L041, STM32L051, STM32L071, STM32L081).
- IOPERST (бит 4) — Сброс порта E (только у STM32L071, STM32L081).
- IOPDRST (бит 3) — Сброс порта D (только у STM32L051, STM32L071, STM32L081).
- IOPCRST (бит 2) — Сброс порта C.
- IOPBRST (бит 1) — Сброс порта B.
- IOPARST (бит 0) — Сброс порта A.
RCC_AHBRSTR — сброс блоков на шине AHB
Смещение 0x20, адрес 0x4002 1020, 32 бит, после сброса 0x0000 0000. В коде: RCC->AHBRSTR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | CRYPRST | — | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | CRCRST | — | MIFRST | — | DMARST | ||||||||||
- CRYPRST (бит 24) — Сброс блока шифрования AES (только у STM32L021, STM32L041, STM32L081).
- CRCRST (бит 12) — Сброс блока CRC.
- MIFRST (бит 8) — Сброс интерфейса памяти NVM.
- DMARST (бит 0) — Сброс DMA.
RCC_APB2RSTR — сброс блоков на шине APB2
Смещение 0x24, адрес 0x4002 1024, 32 бит, после сброса 0x0000 0000 (в описании регистра напечатано 0x00000 0000; значение — по карте регистров на с. 214). В коде: RCC->APB2RSTR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | DBGRST | — | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | USART1RST | — | SPI1RST | — | ADCRST | — | TIM22RST | — | TIM21RST | — | SYSCFGRST | ||||
- DBGRST (бит 22) — Сброс модуля отладки DBG.
- USART1RST (бит 14) — Сброс USART1 (только у STM32L051, STM32L071, STM32L081).
- SPI1RST (бит 12) — Сброс SPI1.
- ADCRST (бит 9) — Сброс АЦП.
- TIM22RST (бит 5) — Сброс таймера TIM22 (только у STM32L031, STM32L041, STM32L051, STM32L071, STM32L081).
- TIM21RST (бит 2) — Сброс таймера TIM21.
- SYSCFGRST (бит 0) — Сброс SYSCFG и компараторов.
RCC_APB1RSTR — сброс блоков на шине APB1
Смещение 0x28, адрес 0x4002 1028, 32 бит, после сброса 0x0000 0000. В коде: RCC->APB1RSTR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| LPTIM1RST | I2C3RST | — | PWRRST | — | I2C2RST | I2C1RST | USART5RST | USART4RST | LPUART1RST | USART2RST | — | ||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | SPI2RST | — | WWDGRST | — | TIM7RST | TIM6RST | — | TIM3RST | TIM2RST | ||||||
- LPTIM1RST (бит 31) — Сброс таймера LPTIM1.
- I2C3RST (бит 30) — Сброс I2C3 (только у STM32L071, STM32L081).
- PWRRST (бит 28) — Сброс интерфейса управления питанием PWR.
- I2C2RST (бит 22) — Сброс I2C2 (только у STM32L051, STM32L071, STM32L081).
- I2C1RST (бит 21) — Сброс I2C1.
- USART5RST (бит 20) — Сброс USART5 (только у STM32L071, STM32L081).
- USART4RST (бит 19) — Сброс USART4 (только у STM32L071, STM32L081).
- LPUART1RST (бит 18) — Сброс LPUART1.
- USART2RST (бит 17) — Сброс USART2.
- SPI2RST (бит 14) — Сброс SPI2 (только у STM32L051, STM32L071, STM32L081).
- WWDGRST (бит 11) — Сброс оконного сторожевого таймера WWDG.
- TIM7RST (бит 5) — Сброс таймера TIM7 (только у STM32L071, STM32L081).
- TIM6RST (бит 4) — Сброс таймера TIM6 (только у STM32L051, STM32L071, STM32L081).
- TIM3RST (бит 1) — Сброс таймера TIM3 (только у STM32L071, STM32L081).
- TIM2RST (бит 0) — Сброс таймера TIM2.
RCC_IOPENR — тактирование портов ввода-вывода
Смещение 0x2C, адрес 0x4002 102C, 32 бит, после сброса 0x0000 0000. В коде: RCC->IOPENR.
| 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 |
| — | IOPHEN | — | IOPEEN | IOPDEN | IOPCEN | IOPBEN | IOPAEN | ||||||||
- IOPHEN (бит 7) — Тактирование порта H (только у STM32L031, STM32L041, STM32L051, STM32L071, STM32L081).
- IOPEEN (бит 4) — Тактирование порта E (только у STM32L071, STM32L081).
- IOPDEN (бит 3) — Тактирование порта D (только у STM32L051, STM32L071, STM32L081).
- IOPCEN (бит 2) — Тактирование порта C.
- IOPBEN (бит 1) — Тактирование порта B.
- IOPAEN (бит 0) — Тактирование порта A.
RCC_AHBENR — тактирование блоков на шине AHB
Смещение 0x30, адрес 0x4002 1030, 32 бит, после сброса 0x0000 0100. В коде: RCC->AHBENR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | CRYPEN | — | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | CRCEN | — | MIFEN | — | DMAEN | ||||||||||
- CRYPEN (бит 24) — Тактирование блока шифрования AES (только у STM32L021, STM32L041, STM32L081).
- CRCEN (бит 12) — Тактирование блока CRC.
- MIFEN (бит 8) — Тактирование интерфейса памяти NVM.
- DMAEN (бит 0) — Тактирование DMA.
RCC_APB2ENR — тактирование блоков на шине APB2
Смещение 0x34, адрес 0x4002 1034, 32 бит, после сброса 0x0000 0000. В коде: RCC->APB2ENR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | DBGEN | — | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | USART1EN | — | SPI1EN | — | ADCEN | — | FWEN | — | TIM22EN | — | TIM21EN | — | SYSCFGEN | ||
- DBGEN (бит 22) — Тактирование модуля отладки DBG.
- USART1EN (бит 14) — Тактирование USART1 (только у STM32L051, STM32L071, STM32L081).
- SPI1EN (бит 12) — Тактирование SPI1.
- ADCEN (бит 9) — Тактирование АЦП.
- FWEN (бит 7) — Тактирование файрвола.
- TIM22EN (бит 5) — Тактирование таймера TIM22 (только у STM32L031, STM32L041, STM32L051, STM32L071, STM32L081).
- TIM21EN (бит 2) — Тактирование таймера TIM21.
- SYSCFGEN (бит 0) — Тактирование SYSCFG и компараторов.
RCC_APB1ENR — тактирование блоков на шине APB1
Смещение 0x38, адрес 0x4002 1038, 32 бит, после сброса 0x0000 0000. В коде: RCC->APB1ENR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| LPTIM1EN | I2C3EN | — | PWREN | — | I2C2EN | I2C1EN | USART5EN | USART4EN | LPUART1EN | USART2EN | — | ||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | SPI2EN | — | WWDGEN | — | TIM7EN | TIM6EN | — | TIM3EN | TIM2EN | ||||||
- LPTIM1EN (бит 31) — Тактирование таймера LPTIM1.
- I2C3EN (бит 30) — Тактирование I2C3 (только у STM32L071, STM32L081).
- PWREN (бит 28) — Тактирование интерфейса управления питанием PWR.
- I2C2EN (бит 22) — Тактирование I2C2 (только у STM32L051, STM32L071, STM32L081).
- I2C1EN (бит 21) — Тактирование I2C1.
- USART5EN (бит 20) — Тактирование USART5 (только у STM32L071, STM32L081).
- USART4EN (бит 19) — Тактирование USART4 (только у STM32L071, STM32L081).
- LPUART1EN (бит 18) — Тактирование LPUART1.
- USART2EN (бит 17) — Тактирование USART2.
- SPI2EN (бит 14) — Тактирование SPI2 (только у STM32L051, STM32L071, STM32L081).
- WWDGEN (бит 11) — Тактирование оконного сторожевого таймера WWDG.
- TIM7EN (бит 5) — Тактирование таймера TIM7 (только у STM32L071, STM32L081).
- TIM6EN (бит 4) — Тактирование таймера TIM6 (только у STM32L051, STM32L071, STM32L081).
- TIM3EN (бит 1) — Тактирование таймера TIM3 (только у STM32L071, STM32L081).
- TIM2EN (бит 0) — Тактирование таймера TIM2.
RCC_IOPSMENR — тактирование в режиме Sleep портов ввода-вывода
Смещение 0x3C, адрес 0x4002 103C, 32 бит. В коде: RCC->IOPSMENR.
| 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 |
| — | IOPHSMEN | — | IOPESMEN | IOPDSMEN | IOPCSMEN | IOPBSMEN | IOPASMEN | ||||||||
- IOPHSMEN (бит 7) — Тактирование порта H в режиме Sleep (только у STM32L031, STM32L041, STM32L051, STM32L071, STM32L081).
- IOPESMEN (бит 4) — Тактирование порта E в режиме Sleep (только у STM32L071, STM32L081).
- IOPDSMEN (бит 3) — Тактирование порта D в режиме Sleep (только у STM32L051, STM32L071, STM32L081).
- IOPCSMEN (бит 2) — Тактирование порта C в режиме Sleep.
- IOPBSMEN (бит 1) — Тактирование порта B в режиме Sleep.
- IOPASMEN (бит 0) — Тактирование порта A в режиме Sleep.
RCC_AHBSMENR — тактирование в режиме Sleep блоков на шине AHB
Смещение 0x40, адрес 0x4002 1040, 32 бит. В коде: RCC->AHBSMENR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | CRYPSMEN | — | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | CRCSMEN | — | SRAMSMEN | MIFSMEN | — | DMASMEN | |||||||||
- CRYPSMEN (бит 24) — Тактирование блока шифрования AES в режиме Sleep (только у STM32L021, STM32L041, STM32L081).
- CRCSMEN (бит 12) — Тактирование блока CRC в режиме Sleep.
- SRAMSMEN (бит 9) — Тактирование SRAM в режиме Sleep.
- MIFSMEN (бит 8) — Тактирование интерфейса памяти NVM в режиме Sleep.
- DMASMEN (бит 0) — Тактирование DMA в режиме Sleep.
RCC_APB2SMENR — тактирование в режиме Sleep блоков на шине APB2
Смещение 0x44, адрес 0x4002 1044, 32 бит. В коде: RCC->APB2SMENR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | DBGSMEN | — | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | USART1SMEN | — | SPI1SMEN | — | ADCSMEN | — | TIM22SMEN | — | TIM21SMEN | — | SYSCFGSMEN | ||||
- DBGSMEN (бит 22) — Тактирование модуля отладки DBG в режиме Sleep.
- USART1SMEN (бит 14) — Тактирование USART1 в режиме Sleep (только у STM32L051, STM32L071, STM32L081).
- SPI1SMEN (бит 12) — Тактирование SPI1 в режиме Sleep.
- ADCSMEN (бит 9) — Тактирование АЦП в режиме Sleep.
- TIM22SMEN (бит 5) — Тактирование таймера TIM22 в режиме Sleep (только у STM32L031, STM32L041, STM32L051, STM32L071, STM32L081).
- TIM21SMEN (бит 2) — Тактирование таймера TIM21 в режиме Sleep.
- SYSCFGSMEN (бит 0) — Тактирование SYSCFG и компараторов в режиме Sleep.
RCC_APB1SMENR — тактирование в режиме Sleep блоков на шине APB1
Смещение 0x48, адрес 0x4002 1048, 32 бит. В коде: RCC->APB1SMENR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| LPTIM1SMEN | I2C3SMEN | — | PWRSMEN | — | I2C2SMEN | I2C1SMEN | USART5SMEN | USART4SMEN | LPUART1SMEN | USART2SMEN | — | ||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | SPI2SMEN | — | WWDGSMEN | — | TIM7SMEN | TIM6SMEN | — | TIM3SMEN | TIM2SMEN | ||||||
- LPTIM1SMEN (бит 31) — Тактирование таймера LPTIM1 в режиме Sleep.
- I2C3SMEN (бит 30) — Тактирование I2C3 в режиме Sleep (только у STM32L071, STM32L081).
- PWRSMEN (бит 28) — Тактирование интерфейса управления питанием PWR в режиме Sleep.
- I2C2SMEN (бит 22) — Тактирование I2C2 в режиме Sleep (только у STM32L051, STM32L071, STM32L081).
- I2C1SMEN (бит 21) — Тактирование I2C1 в режиме Sleep.
- USART5SMEN (бит 20) — Тактирование USART5 в режиме Sleep (только у STM32L071, STM32L081).
- USART4SMEN (бит 19) — Тактирование USART4 в режиме Sleep (только у STM32L071, STM32L081).
- LPUART1SMEN (бит 18) — Тактирование LPUART1 в режиме Sleep.
- USART2SMEN (бит 17) — Тактирование USART2 в режиме Sleep.
- SPI2SMEN (бит 14) — Тактирование SPI2 в режиме Sleep (только у STM32L051, STM32L071, STM32L081).
- WWDGSMEN (бит 11) — Тактирование оконного сторожевого таймера WWDG в режиме Sleep.
- TIM7SMEN (бит 5) — Тактирование таймера TIM7 в режиме Sleep (только у STM32L071, STM32L081).
- TIM6SMEN (бит 4) — Тактирование таймера TIM6 в режиме Sleep (только у STM32L051, STM32L071, STM32L081).
- TIM3SMEN (бит 1) — Тактирование таймера TIM3 в режиме Sleep (только у STM32L071, STM32L081).
- TIM2SMEN (бит 0) — Тактирование таймера TIM2 в режиме Sleep.
RCC_CCIPR — источники тактирования USART, LPUART, I2C и LPTIM
Смещение 0x4C, адрес 0x4002 104C, 32 бит, после сброса 0x0000 0000. В коде: RCC->CCIPR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | LPTIM1SEL | I2C3SEL | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | I2C1SEL | LPUART1SEL | — | USART2SEL | USART1SEL | ||||||||||
- LPTIM1SEL (биты 19:18) — Источник тактирования LPTIM1.
LPTIM1SEL Значение 00 PCLK (шина APB) 01 LSI 10 HSI16 11 LSE - I2C3SEL (биты 17:16) — Источник тактирования I2C3 (только у STM32L071, STM32L081).
I2C3SEL Значение 00 PCLK (шина APB) 01 SYSCLK 10 HSI16 - I2C1SEL (биты 13:12) — Источник тактирования I2C1.
I2C1SEL Значение 00 PCLK (шина APB) 01 SYSCLK 10 HSI16 - LPUART1SEL (биты 11:10) — Источник тактирования LPUART1.
LPUART1SEL Значение 00 PCLK (шина APB) 01 SYSCLK 10 HSI16 11 LSE - USART2SEL (биты 3:2) — Источник тактирования USART2.
USART2SEL Значение 00 PCLK (шина APB) 01 SYSCLK 10 HSI16 11 LSE - USART1SEL (биты 1:0) — Источник тактирования USART1 (только у STM32L051, STM32L071, STM32L081).
USART1SEL Значение 00 PCLK (шина APB) 01 SYSCLK 10 HSI16 11 LSE
RCC_CSR — lSI, LSE, тактирование RTC и флаги причины сброса
Смещение 0x50, адрес 0x4002 1050, 32 бит, после сброса 0x0C00 0004. В коде: RCC->CSR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| LPWRRSTF | WWDGRSTF | IWDGRSTF | SFTRSTF | PORRSTF | PINRSTF | OBLRSTF | FWRSTF | RMVF | — | RTCRST | RTCEN | RTCSEL | |||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | LSECSSD | LSECSSON | LSEDRV | LSEBYP | LSERDY | LSEON | — | LSIRDY | LSION | ||||||
- LPWRRSTF (бит 31) — Причина сброса: вход в Stop или Standby запрещён байтом опций (nRST_STOP, nRST_STDBY).
- WWDGRSTF (бит 30) — Причина сброса: оконный сторожевой таймер WWDG.
- IWDGRSTF (бит 29) — Причина сброса: независимый сторожевой таймер IWDG.
- SFTRSTF (бит 28) — Причина сброса: программный (SYSRESETREQ).
- PORRSTF (бит 27) — Причина сброса: включение или пропадание питания (POR/PDR).
- PINRSTF (бит 26) — Причина сброса: вывод NRST.
- OBLRSTF (бит 25) — Причина сброса: загрузка байтов опций (OBL_LAUNCH).
- FWRSTF (бит 24) — Причина сброса: файрвол (только у STM32L031, STM32L041, STM32L051, STM32L071, STM32L081).
- RMVF (бит 23) — Запись 1 сбрасывает все флаги причины сброса.
- RTCRST (бит 19) — Программный сброс RTC, его источника тактирования и резервных регистров.
- RTCEN (бит 18) — Тактирование RTC.
- RTCSEL (биты 17:16) — Источник тактирования RTC; меняется только после сброса RTCRST.
RTCSEL Значение Макрос CMSIS 00 Нет тактирования RCC_CSR_RTCSEL_NOCLOCK 01 LSE RCC_CSR_RTCSEL_LSE 10 LSI RCC_CSR_RTCSEL_LSI 11 HSE через делитель RTCPRE RCC_CSR_RTCSEL_HSE - LSECSSD (бит 14) — Обнаружен отказ LSE (только чтение).
- LSECSSON (бит 13) — Система защиты тактирования LSE.
- LSEDRV (биты 12:11) — Сила возбуждения кварца LSE.
LSEDRV Значение 00 Наименьшая 01 Средняя низкая 10 Средняя высокая 11 Наибольшая - LSEBYP (бит 10) — Обход генератора LSE: внешний сигнал 32,768 кГц.
- LSERDY (бит 9) — Генератор LSE готов (только чтение).
- LSEON (бит 8) — Включение генератора LSE.
- LSIRDY (бит 1) — Генератор LSI готов (только чтение).
- LSION (бит 0) — Включение генератора LSI (около 37 кГц).
Частые вопросы
Как получить 32 МГц на STM32L0 от HSI16?
Установите диапазон 1 (PWR_CR.VOS = 01) и FLASH_ACR.LATENCY = 1, включите HSI16 и дождитесь HSIRDY. В RCC_CFGR задайте PLLSRC = HSI, PLLMUL = ×4 и PLLDIV = /2: ГУН — 64 МГц, выход — 32 МГц. Включите PLL, дождитесь PLLRDY и переключите SW на PLL.
Почему LPUART1 не принимает данные в режиме Stop?
В Stop останавливается тактирование шины APB. Для приёма в Stop выберите в RCC_CCIPR.LPUART1SEL источник LSE или HSI16 (для HSI16 — ещё бит HSIKERON в RCC_CR) и разрешите пробуждение в регистрах LPUART.
Источники
- STMicroelectronics. RM0377: Reference manual (Rev 10) — раздел 7.3: описание регистров, назначение полей и значения после сброса
- 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
- Все регистры STM32L0Блоки периферии и заголовки CMSIS
- GPIO — порты ввода-выводаGPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, GPIOx_PUPDR, GPIOx_IDR, GPIOx_ODR
- SYSCFG — системная конфигурацияSYSCFG_CFGR1, SYSCFG_CFGR2, SYSCFG_EXTICR1, SYSCFG_EXTICR2, SYSCFG_EXTICR3, SYSCFG_EXTICR4
- EXTI — контроллер внешних прерываний и событийEXTI_IMR, EXTI_EMR, EXTI_RTSR, EXTI_FTSR, EXTI_SWIER, EXTI_PR
- USART — последовательные порты USART и LPUARTUSART_CR1, USART_CR2, USART_CR3, USART_BRR, USART_GTPR, USART_RTOR
- SPI — интерфейсы SPI и I2SSPI_CR1, SPI_CR2, SPI_SR, SPI_DR, SPI_CRCPR, SPI_RXCRCR
- I2C — интерфейс I2CI2C_CR1, I2C_CR2, I2C_OAR1, I2C_OAR2, I2C_TIMINGR, I2C_TIMEOUTR
- TIM — таймеры общего назначения и базовыеTIMx_CR1, TIMx_CR2, TIMx_SMCR, TIMx_DIER, TIMx_SR, TIMx_EGR
- LPTIM — малопотребляющий таймерLPTIM_ISR, LPTIM_ICR, LPTIM_IER, LPTIM_CFGR, LPTIM_CR, LPTIM_CMP
- DMA — контроллер прямого доступа к памятиDMA_ISR, DMA_IFCR, DMA_CCR, DMA_CNDTR, DMA_CPAR, DMA_CMAR
- АЦП — аналого-цифровой преобразовательADC_ISR, ADC_IER, ADC_CR, ADC_CFGR1, ADC_CFGR2, ADC_SMPR
- IWDG — независимый сторожевой таймерIWDG_KR, IWDG_PR, IWDG_RLR, IWDG_SR, IWDG_WINR
- WWDG — оконный сторожевой таймерWWDG_CR, WWDG_CFR, WWDG_SR
- CRC — блок вычисления CRCCRC_DR, CRC_IDR, CRC_CR, CRC_INIT, CRC_POL
- DBG — поддержка отладкиDBGMCU_IDCODE, DBG_CR, DBG_APB1_FZ, DBG_APB2_FZ
- PWR — управление питаниемPWR_CR, PWR_CSR
- FLASH — интерфейс флеш-памяти и EEPROMFLASH_ACR, FLASH_PECR, FLASH_PDKEYR, FLASH_PEKEYR, FLASH_PRGKEYR, FLASH_OPTKEYR
- RTC — часы реального времениRTC_TR, RTC_DR, RTC_CR, RTC_ISR, RTC_PRER, RTC_WUTR