Регистры RCC STM32L1
Регистры RCC STM32L1: генераторы MSI, HSI 16 МГц, HSE, LSI и LSE, PLL с множителем и делителем, делители AHB, APB1 и APB2, выход MCO, тактирование RTC и ЖК-индикатора, включение и сброс периферии, причина сброса.
После сброса STM32L1 работает от MSI около 2,097 МГц. До 32 МГц частоту поднимает PLL: на вход идёт HSI или HSE, частота ГУН = вход × PLLMUL (3…48), выход = ГУН / PLLDIV. Для USB ГУН должен давать ровно 96 МГц — USB тактируется от PLLVCO / 2 (RM0038, раздел 6.3).
Порты тактируются через RCC_AHBENR, как у STM32F4, остальная периферия — через RCC_AHBENR, RCC_APB2ENR и RCC_APB1ENR; регистры ...LPENR задают, что работает в режиме Sleep. RTC и ЖК-индикатор тактируются от одного источника, выбранного в RCC_CSR (LSE, LSI или HSE через RTCPRE); запись в RCC_CSR разрешает бит DBP регистра PWR_CR.
| Экземпляр | Базовый адрес | Есть у |
|---|---|---|
| RCC | 0x4002 3800 | всех |
Регистры блока
| Регистр | Смещение | Назначение | После сброса |
|---|---|---|---|
| RCC_CR | 0x00 | Тактовые генераторы HSI, MSI, HSE и PLL | 0b0XX0 0000 0000 0X00 0000 0011 0000 0000 (X — не определено) |
| RCC_ICSCR | 0x04 | Калибровка и подстройка HSI и MSI, диапазон MSI | 0x00XX B0XX (X — не определено) |
| RCC_CFGR | 0x08 | Источник SYSCLK, делители шин, PLL и вывод MCO | 0x0000 0000 |
| RCC_CIR | 0x0C | Прерывания готовности генераторов | 0x0000 0000 |
| RCC_AHBRSTR | 0x10 | Сброс блоков на шине AHB | 0x0000 0000 |
| RCC_APB2RSTR | 0x14 | Сброс блоков на шине APB2 | 0x0000 0000 (в описании регистра напечатано 0x00000 0000; значение — по карте регистров на с. 169) |
| RCC_APB1RSTR | 0x18 | Сброс блоков на шине APB1 | 0x0000 0000 |
| RCC_AHBENR | 0x1C | Тактирование блоков на шине AHB | 0x0000 8000 |
| RCC_APB2ENR | 0x20 | Тактирование блоков на шине APB2 | 0x0000 0000 |
| RCC_APB1ENR | 0x24 | Тактирование блоков на шине APB1 | 0x0000 0000 |
| RCC_AHBLPENR | 0x28 | Тактирование в режиме Sleep блоков на шине AHB | 0x0101 903F |
| RCC_APB2LPENR | 0x2C | Тактирование в режиме Sleep блоков на шине APB2 | 0x0000 521D |
| RCC_APB1LPENR | 0x30 | Тактирование в режиме Sleep блоков на шине APB1 | 0xB0E6 4A37 |
| RCC_CSR | 0x34 | LSI, LSE, тактирование RTC и флаги причины сброса | 0x0C00 0000 (при включении питания) |
Конструктор значения
Выберите регистр и значения полей — конструктор покажет 32-битное значение и строку на C с макросами CMSIS. Поля, которые вы не меняете, берутся из значения после сброса.
Значение: 0x00000000
0000 0000 0000 0000 0000 0000 0000 0000
RCC->CR = 0x00000000;RCC_CR — тактовые генераторы HSI, MSI, HSE и PLL
Смещение 0x00, адрес 0x4002 3800, 32 бит, после сброса 0b0XX0 0000 0000 0X00 0000 0011 0000 0000 (X — не определено). В коде: RCC->CR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | RTCPRE | CSSON | — | PLLRDY | PLLON | — | HSEBYP | HSERDY | HSEON | ||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | MSIRDY | MSION | — | HSIRDY | HSION | ||||||||||
- RTCPRE (биты 30:29) — Делитель HSE для RTC и ЖК-индикатора: 2, 4, 8 или 16 (нужно около 1 МГц); меняется только при выключенном HSE.
RTCPRE Значение 00 HSE / 2 01 HSE / 4 10 HSE / 8 11 HSE / 16 - CSSON (бит 28) — Система защиты тактирования HSE: при отказе кварца SYSCLK переходит на MSI, возникает NMI; бит сбрасывается только системным сбросом.
- PLLRDY (бит 25) — PLL захватила частоту (только чтение).
- PLLON (бит 24) — Включение PLL; сбрасывается при входе в Stop и Standby.
- HSEBYP (бит 18) — Обход генератора HSE: внешний тактовый сигнал вместо кварца.
- HSERDY (бит 17) — Генератор HSE готов (только чтение).
- HSEON (бит 16) — Включение генератора HSE; сбрасывается при входе в Stop и Standby.
- MSIRDY (бит 9) — Генератор MSI готов (только чтение).
- MSION (бит 8) — Включение генератора MSI (после сброса — 2,097 МГц).
- HSIRDY (бит 1) — Генератор HSI готов (только чтение).
- HSION (бит 0) — Включение генератора HSI 16 МГц.
RCC_ICSCR — калибровка и подстройка HSI и MSI, диапазон MSI
Смещение 0x04, адрес 0x4002 3804, 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) — Подстройка частоты HSI поверх заводской калибровки HSICAL.
- HSICAL (биты 7:0) — Заводская калибровка HSI (только чтение).
RCC_CFGR — источник SYSCLK, делители шин, PLL и вывод MCO
Смещение 0x08, адрес 0x4002 3808, 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 |
| — | 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 (биты 26:24) — Источник сигнала на выходе MCO.
MCOSEL Значение Макрос CMSIS 000 Нет сигнала RCC_CFGR_MCOSEL_NOCLOCK 001 SYSCLK RCC_CFGR_MCOSEL_SYSCLK 010 HSI RCC_CFGR_MCOSEL_HSI 011 MSI RCC_CFGR_MCOSEL_MSI 100 HSE RCC_CFGR_MCOSEL_HSE 101 PLL RCC_CFGR_MCOSEL_PLL 110 LSI RCC_CFGR_MCOSEL_LSI 111 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: HSI или HSE.
PLLSRC Значение Макрос CMSIS 0 HSI RCC_CFGR_PLLSRC_HSI 1 HSE RCC_CFGR_PLLSRC_HSE - 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 HSI 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 HSI RCC_CFGR_SW_HSI 10 HSE RCC_CFGR_SW_HSE 11 PLL RCC_CFGR_SW_PLL
RCC_CIR — прерывания готовности генераторов
Смещение 0x0C, адрес 0x4002 380C, 32 бит, после сброса 0x0000 0000. В коде: RCC->CIR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | CSSC | LSECSSC | MSIRDYC | PLLRDYC | HSERDYC | HSIRDYC | LSERDYC | LSIRDYC | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | LSECSSIE | MSIRDYIE | PLLRDYIE | HSERDYIE | HSIRDYIE | LSERDYIE | LSIRDYIE | CSSF | LSECSSF | MSIRDYF | PLLRDYF | HSERDYF | HSIRDYF | LSERDYF | LSIRDYF |
- CSSC (бит 23) — Сброс флага CSSF записью 1.
- LSECSSC (бит 22) — Сброс флага отказа LSE записью 1 (только у STM32L100xBA/xC, STM32L151xBA/xC/xCA/xD/xDX/xE, STM32L152xBA/xC/xCA/xD/xDX/xE, STM32L162).
- MSIRDYC (бит 21) — Сброс флага готовности MSI записью 1.
- PLLRDYC (бит 20) — Сброс флага готовности PLL записью 1.
- HSERDYC (бит 19) — Сброс флага готовности HSE записью 1.
- HSIRDYC (бит 18) — Сброс флага готовности HSI записью 1.
- LSERDYC (бит 17) — Сброс флага готовности LSE записью 1.
- LSIRDYC (бит 16) — Сброс флага готовности LSI записью 1.
- LSECSSIE (бит 14) — Прерывание по отказу LSE (только у STM32L100xBA/xC, STM32L151xBA/xC/xCA/xD/xDX/xE, STM32L152xBA/xC/xCA/xD/xDX/xE, STM32L162).
- MSIRDYIE (бит 13) — Прерывание по готовности MSI.
- PLLRDYIE (бит 12) — Прерывание по готовности PLL.
- HSERDYIE (бит 11) — Прерывание по готовности HSE.
- HSIRDYIE (бит 10) — Прерывание по готовности HSI.
- LSERDYIE (бит 9) — Прерывание по готовности LSE.
- LSIRDYIE (бит 8) — Прерывание по готовности LSI.
- CSSF (бит 7) — Флаг отказа HSE (система защиты тактирования).
- LSECSSF (бит 6) — Флаг отказа LSE (только у STM32L100xBA/xC, STM32L151xBA/xC/xCA/xD/xDX/xE, STM32L152xBA/xC/xCA/xD/xDX/xE, STM32L162).
- MSIRDYF (бит 5) — Флаг прерывания по готовности MSI.
- PLLRDYF (бит 4) — Флаг прерывания по готовности PLL.
- HSERDYF (бит 3) — Флаг прерывания по готовности HSE.
- HSIRDYF (бит 2) — Флаг прерывания по готовности HSI.
- LSERDYF (бит 1) — Флаг прерывания по готовности LSE.
- LSIRDYF (бит 0) — Флаг прерывания по готовности LSI.
RCC_AHBRSTR — сброс блоков на шине AHB
Смещение 0x10, адрес 0x4002 3810, 32 бит, после сброса 0x0000 0000. В коде: RCC->AHBRSTR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | FSMCRST | — | AESRST | — | DMA2RST | DMA1RST | — | ||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| FLITFRST | — | CRCRST | — | GPIOGRST | GPIOFRST | GPIOHRST | GPIOERST | GPIODRST | GPIOCRST | GPIOBRST | GPIOARST | ||||
- FSMCRST (бит 30) — Сброс контроллера внешней памяти FSMC (только у STM32L151xD, STM32L152xD, STM32L162xD).
- AESRST (бит 27) — Сброс блока шифрования AES (только у STM32L162).
- DMA2RST (бит 25) — Сброс DMA2 (только у STM32L100xC, STM32L151xC/xCA/xD/xDX/xE, STM32L152xC/xCA/xD/xDX/xE, STM32L162).
- DMA1RST (бит 24) — Сброс DMA1.
- FLITFRST (бит 15) — Сброс интерфейса флеш-памяти.
- CRCRST (бит 12) — Сброс блока CRC.
- GPIOGRST (бит 7) — Сброс порта G (только у STM32L151xCA/xD/xDX/xE, STM32L152xCA/xD/xDX/xE, STM32L162xCA/xD/xDX/xE).
- GPIOFRST (бит 6) — Сброс порта F (только у STM32L151xCA/xD/xDX/xE, STM32L152xCA/xD/xDX/xE, STM32L162xCA/xD/xDX/xE).
- GPIOHRST (бит 5) — Сброс порта H.
- GPIOERST (бит 4) — Сброс порта E (только у STM32L151, STM32L152, STM32L162).
- GPIODRST (бит 3) — Сброс порта D.
- GPIOCRST (бит 2) — Сброс порта C.
- GPIOBRST (бит 1) — Сброс порта B.
- GPIOARST (бит 0) — Сброс порта A.
RCC_APB2RSTR — сброс блоков на шине APB2
Смещение 0x14, адрес 0x4002 3814, 32 бит, после сброса 0x0000 0000 (в описании регистра напечатано 0x00000 0000; значение — по карте регистров на с. 169). В коде: RCC->APB2RSTR.
| 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 |
| — | USART1RST | — | SPI1RST | SDIORST | — | ADC1RST | — | TIM11RST | TIM10RST | TIM9RST | — | SYSCFGRST | |||
- USART1RST (бит 14) — Сброс USART1.
- SPI1RST (бит 12) — Сброс SPI1.
- SDIORST (бит 11) — Сброс интерфейса карт SDIO (только у STM32L151xD, STM32L152xD, STM32L162xD).
- ADC1RST (бит 9) — Сброс АЦП.
- TIM11RST (бит 4) — Сброс таймера TIM11.
- TIM10RST (бит 3) — Сброс таймера TIM10.
- TIM9RST (бит 2) — Сброс таймера TIM9.
- SYSCFGRST (бит 0) — Сброс SYSCFG и компараторов.
RCC_APB1RSTR — сброс блоков на шине APB1
Смещение 0x18, адрес 0x4002 3818, 32 бит, после сброса 0x0000 0000. В коде: RCC->APB1RSTR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| COMPRST | — | DACRST | PWRRST | — | USBRST | I2C2RST | I2C1RST | UART5RST | UART4RST | USART3RST | USART2RST | — | |||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SPI3RST | SPI2RST | — | WWDGRST | — | LCDRST | — | TIM7RST | TIM6RST | TIM5RST | TIM4RST | TIM3RST | TIM2RST | |||
- COMPRST (бит 31) — Сброс компараторов и RI.
- DACRST (бит 29) — Сброс ЦАП.
- PWRRST (бит 28) — Сброс интерфейса управления питанием PWR.
- USBRST (бит 23) — Сброс USB.
- I2C2RST (бит 22) — Сброс I2C2.
- I2C1RST (бит 21) — Сброс I2C1.
- UART5RST (бит 20) — Сброс UART5 (только у STM32L151xD/xDX/xE, STM32L152xD/xDX/xE, STM32L162xD/xDX/xE).
- UART4RST (бит 19) — Сброс UART4 (только у STM32L151xD/xDX/xE, STM32L152xD/xDX/xE, STM32L162xD/xDX/xE).
- USART3RST (бит 18) — Сброс USART3.
- USART2RST (бит 17) — Сброс USART2.
- SPI3RST (бит 15) — Сброс SPI3 (только у STM32L100xC, STM32L151xC/xCA/xD/xDX/xE, STM32L152xC/xCA/xD/xDX/xE, STM32L162).
- SPI2RST (бит 14) — Сброс SPI2.
- WWDGRST (бит 11) — Сброс оконного сторожевого таймера WWDG.
- LCDRST (бит 9) — Сброс контроллера ЖК-индикатора (только у STM32L100, STM32L152, STM32L162).
- TIM7RST (бит 5) — Сброс таймера TIM7.
- TIM6RST (бит 4) — Сброс таймера TIM6.
- TIM5RST (бит 3) — Сброс таймера TIM5 (только у STM32L151xC/xCA/xD/xDX/xE, STM32L152xC/xCA/xD/xDX/xE, STM32L162).
- TIM4RST (бит 2) — Сброс таймера TIM4.
- TIM3RST (бит 1) — Сброс таймера TIM3.
- TIM2RST (бит 0) — Сброс таймера TIM2.
RCC_AHBENR — тактирование блоков на шине AHB
Смещение 0x1C, адрес 0x4002 381C, 32 бит, после сброса 0x0000 8000. В коде: RCC->AHBENR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | FSMCEN | — | AESEN | — | DMA2EN | DMA1EN | — | ||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | CRCEN | — | GPIOGEN | GPIOFEN | GPIOHEN | GPIOEEN | GPIODEN | GPIOCEN | GPIOBEN | GPIOAEN | |||||
- FSMCEN (бит 30) — Тактирование контроллера внешней памяти FSMC (только у STM32L151xD, STM32L152xD, STM32L162xD).
- AESEN (бит 27) — Тактирование блока шифрования AES (только у STM32L162).
- DMA2EN (бит 25) — Тактирование DMA2 (только у STM32L100xC, STM32L151xC/xCA/xD/xDX/xE, STM32L152xC/xCA/xD/xDX/xE, STM32L162).
- DMA1EN (бит 24) — Тактирование DMA1.
- CRCEN (бит 12) — Тактирование блока CRC.
- GPIOGEN (бит 7) — Тактирование порта G (только у STM32L151xCA/xD/xDX/xE, STM32L152xCA/xD/xDX/xE, STM32L162xCA/xD/xDX/xE).
- GPIOFEN (бит 6) — Тактирование порта F (только у STM32L151xCA/xD/xDX/xE, STM32L152xCA/xD/xDX/xE, STM32L162xCA/xD/xDX/xE).
- GPIOHEN (бит 5) — Тактирование порта H.
- GPIOEEN (бит 4) — Тактирование порта E (только у STM32L151, STM32L152, STM32L162).
- GPIODEN (бит 3) — Тактирование порта D.
- GPIOCEN (бит 2) — Тактирование порта C.
- GPIOBEN (бит 1) — Тактирование порта B.
- GPIOAEN (бит 0) — Тактирование порта A.
RCC_APB2ENR — тактирование блоков на шине APB2
Смещение 0x20, адрес 0x4002 3820, 32 бит, после сброса 0x0000 0000. В коде: RCC->APB2ENR.
| 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 |
| — | USART1EN | — | SPI1EN | SDIOEN | — | ADC1EN | — | TIM11EN | TIM10EN | TIM9EN | — | SYSCFGEN | |||
- USART1EN (бит 14) — Тактирование USART1.
- SPI1EN (бит 12) — Тактирование SPI1.
- SDIOEN (бит 11) — Тактирование интерфейса карт SDIO (только у STM32L151xD, STM32L152xD, STM32L162xD).
- ADC1EN (бит 9) — Тактирование АЦП.
- TIM11EN (бит 4) — Тактирование таймера TIM11.
- TIM10EN (бит 3) — Тактирование таймера TIM10.
- TIM9EN (бит 2) — Тактирование таймера TIM9.
- SYSCFGEN (бит 0) — Тактирование SYSCFG и компараторов.
RCC_APB1ENR — тактирование блоков на шине APB1
Смещение 0x24, адрес 0x4002 3824, 32 бит, после сброса 0x0000 0000. В коде: RCC->APB1ENR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| COMPEN | — | DACEN | PWREN | — | USBEN | I2C2EN | I2C1EN | UART5EN | UART4EN | USART3EN | USART2EN | — | |||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SPI3EN | SPI2EN | — | WWDGEN | — | LCDEN | — | TIM7EN | TIM6EN | TIM5EN | TIM4EN | TIM3EN | TIM2EN | |||
- COMPEN (бит 31) — Тактирование компараторов и RI.
- DACEN (бит 29) — Тактирование ЦАП.
- PWREN (бит 28) — Тактирование интерфейса управления питанием PWR.
- USBEN (бит 23) — Тактирование USB.
- I2C2EN (бит 22) — Тактирование I2C2.
- I2C1EN (бит 21) — Тактирование I2C1.
- UART5EN (бит 20) — Тактирование UART5 (только у STM32L151xD/xDX/xE, STM32L152xD/xDX/xE, STM32L162xD/xDX/xE).
- UART4EN (бит 19) — Тактирование UART4 (только у STM32L151xD/xDX/xE, STM32L152xD/xDX/xE, STM32L162xD/xDX/xE).
- USART3EN (бит 18) — Тактирование USART3.
- USART2EN (бит 17) — Тактирование USART2.
- SPI3EN (бит 15) — Тактирование SPI3 (только у STM32L100xC, STM32L151xC/xCA/xD/xDX/xE, STM32L152xC/xCA/xD/xDX/xE, STM32L162).
- SPI2EN (бит 14) — Тактирование SPI2.
- WWDGEN (бит 11) — Тактирование оконного сторожевого таймера WWDG.
- LCDEN (бит 9) — Тактирование контроллера ЖК-индикатора (только у STM32L100, STM32L152, STM32L162).
- TIM7EN (бит 5) — Тактирование таймера TIM7.
- TIM6EN (бит 4) — Тактирование таймера TIM6.
- TIM5EN (бит 3) — Тактирование таймера TIM5 (только у STM32L151xC/xCA/xD/xDX/xE, STM32L152xC/xCA/xD/xDX/xE, STM32L162).
- TIM4EN (бит 2) — Тактирование таймера TIM4.
- TIM3EN (бит 1) — Тактирование таймера TIM3.
- TIM2EN (бит 0) — Тактирование таймера TIM2.
RCC_AHBLPENR — тактирование в режиме Sleep блоков на шине AHB
Смещение 0x28, адрес 0x4002 3828, 32 бит, после сброса 0x0101 903F. В коде: RCC->AHBLPENR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | FSMCLPEN | — | AESLPEN | — | DMA2LPEN | DMA1LPEN | — | SRAMLPEN | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | CRCLPEN | — | GPIOGLPEN | GPIOFLPEN | GPIOHLPEN | GPIOELPEN | GPIODLPEN | GPIOCLPEN | GPIOBLPEN | GPIOALPEN | |||||
- FSMCLPEN (бит 30) — Тактирование контроллера внешней памяти FSMC в режиме Sleep (только у STM32L151xD, STM32L152xD, STM32L162xD).
- AESLPEN (бит 27) — Тактирование блока шифрования AES в режиме Sleep (только у STM32L162).
- DMA2LPEN (бит 25) — Тактирование DMA2 в режиме Sleep (только у STM32L100xC, STM32L151xC/xCA/xD/xDX/xE, STM32L152xC/xCA/xD/xDX/xE, STM32L162).
- DMA1LPEN (бит 24) — Тактирование DMA1 в режиме Sleep.
- SRAMLPEN (бит 16) — Тактирование SRAM в режиме Sleep.
- CRCLPEN (бит 12) — Тактирование блока CRC в режиме Sleep.
- GPIOGLPEN (бит 7) — Тактирование порта G в режиме Sleep (только у STM32L151xCA/xD/xDX/xE, STM32L152xCA/xD/xDX/xE, STM32L162xCA/xD/xDX/xE).
- GPIOFLPEN (бит 6) — Тактирование порта F в режиме Sleep (только у STM32L151xCA/xD/xDX/xE, STM32L152xCA/xD/xDX/xE, STM32L162xCA/xD/xDX/xE).
- GPIOHLPEN (бит 5) — Тактирование порта H в режиме Sleep.
- GPIOELPEN (бит 4) — Тактирование порта E в режиме Sleep (только у STM32L151, STM32L152, STM32L162).
- GPIODLPEN (бит 3) — Тактирование порта D в режиме Sleep.
- GPIOCLPEN (бит 2) — Тактирование порта C в режиме Sleep.
- GPIOBLPEN (бит 1) — Тактирование порта B в режиме Sleep.
- GPIOALPEN (бит 0) — Тактирование порта A в режиме Sleep.
RCC_APB2LPENR — тактирование в режиме Sleep блоков на шине APB2
Смещение 0x2C, адрес 0x4002 382C, 32 бит, после сброса 0x0000 521D. В коде: RCC->APB2LPENR.
| 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 |
| — | USART1LPEN | — | SPI1LPEN | SDIOLPEN | — | ADC1LPEN | — | TIM11LPEN | TIM10LPEN | TIM9LPEN | — | SYSCFGLPEN | |||
- USART1LPEN (бит 14) — Тактирование USART1 в режиме Sleep.
- SPI1LPEN (бит 12) — Тактирование SPI1 в режиме Sleep.
- SDIOLPEN (бит 11) — Тактирование интерфейса карт SDIO в режиме Sleep (только у STM32L151xD, STM32L152xD, STM32L162xD).
- ADC1LPEN (бит 9) — Тактирование АЦП в режиме Sleep.
- TIM11LPEN (бит 4) — Тактирование таймера TIM11 в режиме Sleep.
- TIM10LPEN (бит 3) — Тактирование таймера TIM10 в режиме Sleep.
- TIM9LPEN (бит 2) — Тактирование таймера TIM9 в режиме Sleep.
- SYSCFGLPEN (бит 0) — Тактирование SYSCFG и компараторов в режиме Sleep.
RCC_APB1LPENR — тактирование в режиме Sleep блоков на шине APB1
Смещение 0x30, адрес 0x4002 3830, 32 бит, после сброса 0xB0E6 4A37. В коде: RCC->APB1LPENR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| COMPLPEN | — | DACLPEN | PWRLPEN | — | USBLPEN | I2C2LPEN | I2C1LPEN | UART5LPEN | UART4LPEN | USART3LPEN | USART2LPEN | — | |||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SPI3LPEN | SPI2LPEN | — | WWDGLPEN | — | LCDLPEN | — | TIM7LPEN | TIM6LPEN | TIM5LPEN | TIM4LPEN | TIM3LPEN | TIM2LPEN | |||
- COMPLPEN (бит 31) — Тактирование компараторов и RI в режиме Sleep.
- DACLPEN (бит 29) — Тактирование ЦАП в режиме Sleep.
- PWRLPEN (бит 28) — Тактирование интерфейса управления питанием PWR в режиме Sleep.
- USBLPEN (бит 23) — Тактирование USB в режиме Sleep.
- I2C2LPEN (бит 22) — Тактирование I2C2 в режиме Sleep.
- I2C1LPEN (бит 21) — Тактирование I2C1 в режиме Sleep.
- UART5LPEN (бит 20) — Тактирование UART5 в режиме Sleep (только у STM32L151xD/xDX/xE, STM32L152xD/xDX/xE, STM32L162xD/xDX/xE).
- UART4LPEN (бит 19) — Тактирование UART4 в режиме Sleep (только у STM32L151xD/xDX/xE, STM32L152xD/xDX/xE, STM32L162xD/xDX/xE).
- USART3LPEN (бит 18) — Тактирование USART3 в режиме Sleep.
- USART2LPEN (бит 17) — Тактирование USART2 в режиме Sleep.
- SPI3LPEN (бит 15) — Тактирование SPI3 в режиме Sleep (только у STM32L100xC, STM32L151xC/xCA/xD/xDX/xE, STM32L152xC/xCA/xD/xDX/xE, STM32L162).
- SPI2LPEN (бит 14) — Тактирование SPI2 в режиме Sleep.
- WWDGLPEN (бит 11) — Тактирование оконного сторожевого таймера WWDG в режиме Sleep.
- LCDLPEN (бит 9) — Тактирование контроллера ЖК-индикатора в режиме Sleep (только у STM32L100, STM32L152, STM32L162).
- TIM7LPEN (бит 5) — Тактирование таймера TIM7 в режиме Sleep.
- TIM6LPEN (бит 4) — Тактирование таймера TIM6 в режиме Sleep.
- TIM5LPEN (бит 3) — Тактирование таймера TIM5 в режиме Sleep (только у STM32L151xC/xCA/xD/xDX/xE, STM32L152xC/xCA/xD/xDX/xE, STM32L162).
- TIM4LPEN (бит 2) — Тактирование таймера TIM4 в режиме Sleep.
- TIM3LPEN (бит 1) — Тактирование таймера TIM3 в режиме Sleep.
- TIM2LPEN (бит 0) — Тактирование таймера TIM2 в режиме Sleep.
RCC_CSR — lSI, LSE, тактирование RTC и флаги причины сброса
Смещение 0x34, адрес 0x4002 3834, 32 бит, после сброса 0x0C00 0000 (при включении питания). В коде: 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 | RMVF | RTCRST | RTCEN | — | RTCSEL | ||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | LSECSSD | LSECSSON | 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).
- RMVF (бит 24) — Запись 1 сбрасывает все флаги причины сброса.
- RTCRST (бит 23) — Программный сброс RTC, его источника тактирования и резервных регистров (и ЖК-индикатора).
- RTCEN (бит 22) — Тактирование 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 (бит 12) — Обнаружен отказ LSE (только чтение) (только у STM32L100xBA/xC, STM32L151xBA/xC/xCA/xD/xDX/xE, STM32L152xBA/xC/xCA/xD/xDX/xE, STM32L162).
- LSECSSON (бит 11) — Система защиты тактирования LSE (только у STM32L100xBA/xC, STM32L151xBA/xC/xCA/xD/xDX/xE, STM32L152xBA/xC/xCA/xD/xDX/xE, STM32L162).
- LSEBYP (бит 10) — Обход генератора LSE: внешний сигнал 32,768 кГц.
- LSERDY (бит 9) — Генератор LSE готов (только чтение).
- LSEON (бит 8) — Включение генератора LSE.
- LSIRDY (бит 1) — Генератор LSI готов (только чтение).
- LSION (бит 0) — Включение генератора LSI (около 37 кГц).
Частые вопросы
Как получить 32 МГц на STM32L152 от HSI?
Выберите диапазон 1 (PWR_CR.VOS = 01) и дождитесь VOSF, установите в FLASH_ACR сначала ACC64, затем LATENCY = 1 и PRFTEN. Включите HSI, задайте PLLSRC = HSI, PLLMUL = ×6 и PLLDIV = /3: ГУН — 96 МГц, выход — 32 МГц. Включите PLL и переключите SW.
Почему не меняется источник тактирования RTC?
RTCSEL нельзя переписать, пока RTC не сброшен. Разрешите запись битом DBP в PWR_CR, сбросьте RTC битом RTCRST в RCC_CSR (это стирает и резервные регистры) и только потом выбирайте новый источник.
Источники
- STMicroelectronics. RM0038: Reference manual (Rev 18) — раздел 6.3: описание регистров, назначение полей и значения после сброса
- STMicroelectronics. cmsis-device-l1 v2.3.4: заголовки CMSIS stm32l100xb.h, stm32l100xba.h, stm32l100xc.h, stm32l151xb.h, stm32l151xba.h, stm32l151xc.h, stm32l151xca.h, stm32l151xd.h, stm32l151xdx.h, stm32l151xe.h, stm32l152xb.h, stm32l152xba.h, stm32l152xc.h, stm32l152xca.h, stm32l152xd.h, stm32l152xdx.h, stm32l152xe.h, stm32l162xc.h, stm32l162xca.h, stm32l162xd.h, stm32l162xdx.h, stm32l162xe.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0
Нашли ошибку в регистрах? ·
Другие регистры STM32L1
- Все регистры STM32L1Блоки периферии и заголовки CMSIS
- 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
- TIM — таймеры общего назначения и базовыеTIMx_CR1, TIMx_CR2, TIMx_SMCR, TIMx_DIER, TIMx_SR, TIMx_EGR
- DMA — контроллеры прямого доступа к памятиDMA_ISR, DMA_IFCR, DMA_CCR, DMA_CNDTR, DMA_CPAR, DMA_CMAR
- АЦП — аналого-цифровой преобразовательADC_SR, ADC_CR1, ADC_CR2, ADC_SMPR1, ADC_SMPR2, ADC_SMPR3
- 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
- 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
- ЦАП — цифро-аналоговый преобразовательDAC_CR, DAC_SWTRIGR, DAC_DHR12R1, DAC_DHR12L1, DAC_DHR8R1, DAC_DHR12R2