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

Регистры 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.

ЭкземплярБазовый адресЕсть у
RCC0x4002 1000всех

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

РегистрСмещениеНазначениеПосле сброса
RCC_CR0x00Тактовые генераторы HSI16, MSI, HSE и PLL0x0000 0300 (при включении питания; при системном сбросе — 0b0000 0000 00XX 0X00 0000 0011 0000 0000, X — не определено)
RCC_ICSCR0x04Калибровка и подстройка HSI16 и MSI, диапазон MSI0x00XX B0XX (X — не определено)
RCC_CFGR0x0CИсточник SYSCLK, делители шин, PLL и вывод MCO0x0000 0000
RCC_CIER0x10Разрешение прерываний готовности генераторов0x0000 0000
RCC_CIFR0x14Флаги прерываний готовности генераторов0x0000 0000
RCC_CICR0x18Сброс флагов прерываний генераторов0x0000 0000
RCC_IOPRSTR0x1CСброс портов ввода-вывода0x0000 0000
RCC_AHBRSTR0x20Сброс блоков на шине AHB0x0000 0000
RCC_APB2RSTR0x24Сброс блоков на шине APB20x0000 0000 (в описании регистра напечатано 0x00000 0000; значение — по карте регистров на с. 214)
RCC_APB1RSTR0x28Сброс блоков на шине APB10x0000 0000
RCC_IOPENR0x2CТактирование портов ввода-вывода0x0000 0000
RCC_AHBENR0x30Тактирование блоков на шине AHB0x0000 0100
RCC_APB2ENR0x34Тактирование блоков на шине APB20x0000 0000
RCC_APB1ENR0x38Тактирование блоков на шине APB10x0000 0000
RCC_IOPSMENR0x3CТактирование в режиме Sleep портов ввода-вывода—
RCC_AHBSMENR0x40Тактирование в режиме Sleep блоков на шине AHB—
RCC_APB2SMENR0x44Тактирование в режиме Sleep блоков на шине APB2—
RCC_APB1SMENR0x48Тактирование в режиме Sleep блоков на шине APB1—
RCC_CCIPR0x4CИсточники тактирования USART, LPUART, I2C и LPTIM0x0000 0000
RCC_CSR0x50LSI, 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.

31302928272625242322212019181716
—PLLRDYPLLON—RTCPRECSSHSEONHSEBYPHSERDYHSEON
1514131211109876543210
—MSIRDYMSION—HSIOUTENHSIDIVFHSIDIVENHSIRDYHSIKERONHSION
  • PLLRDY (бит 25) — PLL захватила частоту (только чтение).
  • PLLON (бит 24) — Включение PLL; сбрасывается при входе в Stop и Standby.
  • RTCPRE (биты 21:20) — Делитель HSE для RTC: 2, 4, 8 или 16 (нужно около 1 МГц); меняется только при выключенном HSE.
    RTCPREЗначение
    00HSE / 2
    01HSE / 4
    10HSE / 8
    11HSE / 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.

31302928272625242322212019181716
MSITRIMMSICAL
1514131211109876543210
MSIRANGEHSITRIMHSICAL
  • 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.

31302928272625242322212019181716
—MCOPREMCOSELPLLDIVPLLMUL—PLLSRC
1514131211109876543210
STOPWUCK—PPRE2PPRE1HPRESWSSW
  • MCOPRE (биты 30:28) — Делитель сигнала на выходе MCO.
    MCOPREЗначениеМакрос CMSIS
    000Без деленияRCC_CFGR_MCOPRE_DIV1
    001Деление на 2RCC_CFGR_MCOPRE_DIV2
    010Деление на 4RCC_CFGR_MCOPRE_DIV4
    011Деление на 8RCC_CFGR_MCOPRE_DIV8
    100Деление на 16RCC_CFGR_MCOPRE_DIV16
  • MCOSEL (биты 27:24) — Источник сигнала на выходе MCO.
    MCOSELЗначениеМакрос CMSIS
    0000Нет сигналаRCC_CFGR_MCOSEL_NOCLOCK
    0001SYSCLKRCC_CFGR_MCOSEL_SYSCLK
    0010HSI16RCC_CFGR_MCOSEL_HSI
    0011MSIRCC_CFGR_MCOSEL_MSI
    0100HSERCC_CFGR_MCOSEL_HSE
    0101PLLRCC_CFGR_MCOSEL_PLL
    0110LSIRCC_CFGR_MCOSEL_LSI
    0111LSERCC_CFGR_MCOSEL_LSE
  • PLLDIV (биты 23:22) — Делитель выхода PLL: частота ГУН / 2, / 3 или / 4.
    PLLDIVЗначениеМакрос CMSIS
    01Частота ГУН / 2RCC_CFGR_PLLDIV2
    10Частота ГУН / 3RCC_CFGR_PLLDIV3
    11Частота ГУН / 4RCC_CFGR_PLLDIV4
  • PLLMUL (биты 21:18) — Множитель PLL: ×3…×48; частота ГУН — не больше 96 МГц в диапазоне 1.
    PLLMULЗначениеМакрос CMSIS
    0000×3RCC_CFGR_PLLMUL3
    0001×4RCC_CFGR_PLLMUL4
    0010×6RCC_CFGR_PLLMUL6
    0011×8RCC_CFGR_PLLMUL8
    0100×12RCC_CFGR_PLLMUL12
    0101×16RCC_CFGR_PLLMUL16
    0110×24RCC_CFGR_PLLMUL24
    0111×32RCC_CFGR_PLLMUL32
    1000×48RCC_CFGR_PLLMUL48
  • PLLSRC (бит 16) — Источник тактирования PLL: HSI16 или HSE.
    PLLSRCЗначениеМакрос CMSIS
    0HSI16RCC_CFGR_PLLSRC_HSI
    1HSERCC_CFGR_PLLSRC_HSE
  • STOPWUCK (бит 15) — Генератор после выхода из Stop: MSI или HSI16.
    STOPWUCKЗначение
    0MSI
    1HSI16 (или HSI16 / 4 при HSIDIVEN = 1)
  • PPRE2 (биты 13:11) — Делитель шины APB2: PCLK2 = HCLK / 1…16.
    PPRE2ЗначениеМакрос CMSIS
    000Без деленияRCC_CFGR_PPRE2_DIV1
    100Деление на 2RCC_CFGR_PPRE2_DIV2
    101Деление на 4RCC_CFGR_PPRE2_DIV4
    110Деление на 8RCC_CFGR_PPRE2_DIV8
    111Деление на 16RCC_CFGR_PPRE2_DIV16
  • PPRE1 (биты 10:8) — Делитель шины APB1: PCLK1 = HCLK / 1…16.
    PPRE1ЗначениеМакрос CMSIS
    000Без деленияRCC_CFGR_PPRE1_DIV1
    100Деление на 2RCC_CFGR_PPRE1_DIV2
    101Деление на 4RCC_CFGR_PPRE1_DIV4
    110Деление на 8RCC_CFGR_PPRE1_DIV8
    111Деление на 16RCC_CFGR_PPRE1_DIV16
  • HPRE (биты 7:4) — Делитель шины AHB: HCLK = SYSCLK / 1…512.
    HPREЗначениеМакрос CMSIS
    0000Без деленияRCC_CFGR_HPRE_DIV1
    1000Деление на 2RCC_CFGR_HPRE_DIV2
    1001Деление на 4RCC_CFGR_HPRE_DIV4
    1010Деление на 8RCC_CFGR_HPRE_DIV8
    1011Деление на 16RCC_CFGR_HPRE_DIV16
    1100Деление на 64RCC_CFGR_HPRE_DIV64
    1101Деление на 128RCC_CFGR_HPRE_DIV128
    1110Деление на 256RCC_CFGR_HPRE_DIV256
    1111Деление на 512RCC_CFGR_HPRE_DIV512
  • SWS (биты 3:2) — Текущий источник SYSCLK (только чтение).
    SWSЗначениеМакрос CMSIS
    00MSIRCC_CFGR_SWS_MSI
    01HSI16RCC_CFGR_SWS_HSI
    10HSERCC_CFGR_SWS_HSE
    11PLLRCC_CFGR_SWS_PLL
  • SW (биты 1:0) — Выбор источника SYSCLK.
    SWЗначениеМакрос CMSIS
    00MSIRCC_CFGR_SW_MSI
    01HSI16RCC_CFGR_SW_HSI
    10HSERCC_CFGR_SW_HSE
    11PLLRCC_CFGR_SW_PLL

RCC_CIER — разрешение прерываний готовности генераторов

Смещение 0x10, адрес 0x4002 1010, 32 бит, после сброса 0x0000 0000. В коде: RCC->CIER.

31302928272625242322212019181716
—
1514131211109876543210
—CSSLSE—MSIRDYIEPLLRDYIEHSERDYIEHSIRDYIELSERDYIELSIRDYIE
  • 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.

31302928272625242322212019181716
—
1514131211109876543210
—CSSHSEFCSSLSEF—MSIRDYFPLLRDYFHSERDYFHSIRDYFLSERDYFLSIRDYF
  • 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.

31302928272625242322212019181716
—
1514131211109876543210
—CSSHSECCSSLSEC—MSIRDYCPLLRDYCHSERDYCHSIRDYCLSERDYCLSIRDYC
  • 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.

31302928272625242322212019181716
—
1514131211109876543210
—IOPHRST—IOPERSTIOPDRSTIOPCRSTIOPBRSTIOPARST
  • 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.

31302928272625242322212019181716
—CRYPRST—
1514131211109876543210
—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.

31302928272625242322212019181716
—DBGRST—
1514131211109876543210
—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.

31302928272625242322212019181716
LPTIM1RSTI2C3RST—PWRRST—I2C2RSTI2C1RSTUSART5RSTUSART4RSTLPUART1RSTUSART2RST—
1514131211109876543210
—SPI2RST—WWDGRST—TIM7RSTTIM6RST—TIM3RSTTIM2RST
  • 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.

31302928272625242322212019181716
—
1514131211109876543210
—IOPHEN—IOPEENIOPDENIOPCENIOPBENIOPAEN
  • 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.

31302928272625242322212019181716
—CRYPEN—
1514131211109876543210
—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.

31302928272625242322212019181716
—DBGEN—
1514131211109876543210
—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.

31302928272625242322212019181716
LPTIM1ENI2C3EN—PWREN—I2C2ENI2C1ENUSART5ENUSART4ENLPUART1ENUSART2EN—
1514131211109876543210
—SPI2EN—WWDGEN—TIM7ENTIM6EN—TIM3ENTIM2EN
  • 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.

31302928272625242322212019181716
—
1514131211109876543210
—IOPHSMEN—IOPESMENIOPDSMENIOPCSMENIOPBSMENIOPASMEN
  • 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.

31302928272625242322212019181716
—CRYPSMEN—
1514131211109876543210
—CRCSMEN—SRAMSMENMIFSMEN—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.

31302928272625242322212019181716
—DBGSMEN—
1514131211109876543210
—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.

31302928272625242322212019181716
LPTIM1SMENI2C3SMEN—PWRSMEN—I2C2SMENI2C1SMENUSART5SMENUSART4SMENLPUART1SMENUSART2SMEN—
1514131211109876543210
—SPI2SMEN—WWDGSMEN—TIM7SMENTIM6SMEN—TIM3SMENTIM2SMEN
  • 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.

31302928272625242322212019181716
—LPTIM1SELI2C3SEL
1514131211109876543210
—I2C1SELLPUART1SEL—USART2SELUSART1SEL
  • LPTIM1SEL (биты 19:18) — Источник тактирования LPTIM1.
    LPTIM1SELЗначение
    00PCLK (шина APB)
    01LSI
    10HSI16
    11LSE
  • I2C3SEL (биты 17:16) — Источник тактирования I2C3 (только у STM32L071, STM32L081).
    I2C3SELЗначение
    00PCLK (шина APB)
    01SYSCLK
    10HSI16
  • I2C1SEL (биты 13:12) — Источник тактирования I2C1.
    I2C1SELЗначение
    00PCLK (шина APB)
    01SYSCLK
    10HSI16
  • LPUART1SEL (биты 11:10) — Источник тактирования LPUART1.
    LPUART1SELЗначение
    00PCLK (шина APB)
    01SYSCLK
    10HSI16
    11LSE
  • USART2SEL (биты 3:2) — Источник тактирования USART2.
    USART2SELЗначение
    00PCLK (шина APB)
    01SYSCLK
    10HSI16
    11LSE
  • USART1SEL (биты 1:0) — Источник тактирования USART1 (только у STM32L051, STM32L071, STM32L081).
    USART1SELЗначение
    00PCLK (шина APB)
    01SYSCLK
    10HSI16
    11LSE

RCC_CSR — lSI, LSE, тактирование RTC и флаги причины сброса

Смещение 0x50, адрес 0x4002 1050, 32 бит, после сброса 0x0C00 0004. В коде: RCC->CSR.

31302928272625242322212019181716
LPWRRSTFWWDGRSTFIWDGRSTFSFTRSTFPORRSTFPINRSTFOBLRSTFFWRSTFRMVF—RTCRSTRTCENRTCSEL
1514131211109876543210
—LSECSSDLSECSSONLSEDRVLSEBYPLSERDYLSEON—LSIRDYLSION
  • 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
    01LSERCC_CSR_RTCSEL_LSE
    10LSIRCC_CSR_RTCSEL_LSI
    11HSE через делитель RTCPRERCC_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.

Источники

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

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

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

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