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

Регистры PWR STM32G0

Регистры PWR STM32G0: режимы пониженного потребления, диапазон напряжения ядра, Low-power run, детектор PVD и мониторы питания, выводы пробуждения, сохранение SRAM, подтяжки выводов в Standby и Shutdown.

Глубокий сон STM32G0 выбирается полем LPMS: Stop 0, Stop 1 (с маломощным регулятором), Standby и Shutdown — самый экономный, без LSI и BOR. Засыпание — WFI или WFE при SLEEPDEEP. Диапазон напряжения ядра VOS ограничивает частоту: 64 МГц в диапазоне 1, 16 МГц в диапазоне 2; режим Low-power run (LPR) — до 2 МГц (RM0444, раздел 4.3).

В Standby и Shutdown выводы переходят в высокоимпедансное состояние, но регистры PWR_PUCRx и PWR_PDCRx при APC = 1 подтягивают нужные выводы. Бит DBP снимает защиту с домена RTC. Имена полей регистров PUCRD, PUCRE и PUCRF в CMSIS частично начинаются с PD — это опечатка заголовков; страница показывает их как есть, а описывает по регистру.

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

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

РегистрСмещениеНазначениеПосле сброса
PWR_CR10x00Режим пониженного потребления, напряжение ядра, доступ к домену RTC0x0000 0208
PWR_CR20x04Детектор напряжения PVD и мониторы питания0x0000 0100
PWR_CR30x08Выводы пробуждения, SRAM в Standby, подтяжки0x0000 8000
PWR_CR40x0CПолярность выводов пробуждения, заряд батареи VBAT0x0000 0000
PWR_SR10x10Флаги пробуждения и Standby0x0000 0000
PWR_SR20x14Состояние регулятора, PVD и мониторов0b0000 0000 0000 0000 X00X XXXX X000 0000 (X — текущее состояние)
PWR_SCR0x18Сброс флагов пробуждения и Standby0x0000 0000
PWR_PUCRA0x20Подтяжка вверх порта A в Standby и Shutdown0x0000 0000
PWR_PDCRA0x24Подтяжка вниз порта A в Standby и Shutdown0x0000 0000
PWR_PUCRB0x28Подтяжка вверх порта B в Standby и Shutdown0x0000 0000
PWR_PDCRB0x2CПодтяжка вниз порта B в Standby и Shutdown0x0000 0000
PWR_PUCRC0x30Подтяжка вверх порта C в Standby и Shutdown0x0000 0000
PWR_PDCRC0x34Подтяжка вниз порта C в Standby и Shutdown0x0000 0000
PWR_PUCRD0x38Подтяжка вверх порта D в Standby и Shutdown0x0000 0000
PWR_PDCRD0x3CПодтяжка вниз порта D в Standby и Shutdown0x0000 0000
PWR_PUCRE0x40Подтяжка вверх порта E в Standby и Shutdown0x0000 0000
PWR_PDCRE0x44Подтяжка вниз порта E в Standby и Shutdown0x0000 0000
PWR_PUCRF0x48Подтяжка вверх порта F в Standby и Shutdown0x0000 0000
PWR_PDCRF0x4CПодтяжка вниз порта F в Standby и Shutdown0x0000 0000

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

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

Значение: 0x00000208

0000 0000 0000 0000 0000 0010 0000 1000

PWR->CR1 = 0x00000208;

PWR_CR1 — режим пониженного потребления, напряжение ядра, доступ к домену RTC

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

31302928272625242322212019181716
—
1514131211109876543210
—LPR—VOSDBP—FPD_LPSLPFPD_LPRUNFPD_STOPLPMS
  • LPR (бит 14) — Регулятор в маломощном режиме: режим Low-power run (до 2 МГц).
  • VOS (биты 10:9) — Диапазон напряжения ядра: 1 — до 64 МГц, 2 — до 16 МГц.
    VOSЗначение
    01Диапазон 1: до 64 МГц
    10Диапазон 2: до 16 МГц
  • DBP (бит 8) — Снятие защиты записи с домена RTC (регистры RTC и RCC_BDCR).
  • FPD_LPSLP (бит 5) — Выключение флеш-памяти в режиме Low-power sleep.
  • FPD_LPRUN (бит 4) — Выключение флеш-памяти в режиме Low-power run.
  • FPD_STOP (бит 3) — Выключение флеш-памяти в режиме Stop.
  • LPMS (биты 2:0) — Режим глубокого сна: Stop 0, Stop 1, Standby или Shutdown.
    LPMSЗначение
    000Stop 0
    001Stop 1
    011Standby
    100Shutdown

PWR_CR2 — детектор напряжения PVD и мониторы питания

Смещение 0x04, адрес 0x4000 7004, 32 бит, после сброса 0x0000 0100. В коде: PWR->CR2.

31302928272625242322212019181716
—
1514131211109876543210
—PVM_VDDIO2PVMEN_DACPVDRTPVDFTPVDE
  • PVM_VDDIO2 (биты 10:8) — Монитор питания VDDIO2 (порог 1,2 В) и изоляция выводов домена VDDIO2; в CMSIS поверх него ещё биты USV, IOSV, PVMEN_USB — в RM0444 Rev 6 их нет (только у STM32G0B1, STM32G0C1).
    PVM_VDDIO2Значение
    000Монитор выключен, выводы домена VDDIO2 изолированы
    001Монитор включён, выводы работают или изолированы по уровню VDDIO2
    110Монитор в обход, выводы включены
  • PVMEN_DAC (бит 7) — Монитор напряжения VDDA для ЦАП.
  • PVDRT (биты 6:4) — Порог PVD при нарастании напряжения.
  • PVDFT (биты 3:1) — Порог PVD при спаде напряжения.
  • PVDE (бит 0) — Включение детектора напряжения PVD.

PWR_CR3 — выводы пробуждения, SRAM в Standby, подтяжки

Смещение 0x08, адрес 0x4000 7008, 32 бит, после сброса 0x0000 8000. В коде: PWR->CR3.

31302928272625242322212019181716
—
1514131211109876543210
EIWUL—APCENB_ULPRRS—EWUP6EWUP5EWUP4EWUP3EWUP2EWUP1
  • EIWUL (бит 15) — Внутренняя линия пробуждения (RTC, TAMP, LSE CSS) из Standby и Shutdown.
  • APC (бит 10) — Применить подтяжки PWR_PUCRx и PWR_PDCRx в Standby и Shutdown.
  • ENB_ULP (бит 9) — Периодическая выборка детектора сброса при сверхнизком потреблении.
  • RRS (бит 8) — Сохранение SRAM в режиме Standby.
  • EWUP1–EWUP6 (по биту на каждый y, положение — на карте битов) — Вывод пробуждения WKUPy.
  • EWUP5 (бит 4) — Вывод пробуждения WKUP5 (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • EWUP3 (бит 2) — Вывод пробуждения WKUP3 (только у STM32G0B1, STM32G0C1).

PWR_CR4 — полярность выводов пробуждения, заряд батареи VBAT

Смещение 0x0C, адрес 0x4000 700C, 32 бит, после сброса 0x0000 0000. В коде: PWR->CR4.

31302928272625242322212019181716
—
1514131211109876543210
—VBRSVBE—WP6WP5WP4WP3WP2WP1
  • VBRS (бит 9) — Резистор заряда батареи VBAT: 5 или 1,5 кОм.
  • VBE (бит 8) — Заряд батареи VBAT от VDD.
  • WP1–WP6 (по биту на каждый y, положение — на карте битов) — Полярность вывода WKUPy: пробуждение по высокому или низкому уровню.
  • WP5 (бит 4) — Полярность вывода WKUP5: пробуждение по высокому или низкому уровню (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • WP3 (бит 2) — Полярность вывода WKUP3: пробуждение по высокому или низкому уровню (только у STM32G0B1, STM32G0C1).

PWR_SR1 — флаги пробуждения и Standby

Смещение 0x10, адрес 0x4000 7010, 32 бит, после сброса 0x0000 0000. В коде: PWR->SR1.

31302928272625242322212019181716
—
1514131211109876543210
WUFI—SBF—WUF6WUF5WUF4WUF3WUF2WUF1
  • WUFI (бит 15) — Пробуждение по внутренней линии; сбрасывается вместе с источником.
  • SBF (бит 8) — Микроконтроллер вышел из режима Standby.
  • WUF1–WUF6 (по биту на каждый y, положение — на карте битов) — Пробуждение выводом WKUPy.
  • WUF5 (бит 4) — Пробуждение выводом WKUP5 (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • WUF3 (бит 2) — Пробуждение выводом WKUP3 (только у STM32G0B1, STM32G0C1).

PWR_SR2 — состояние регулятора, PVD и мониторов

Смещение 0x14, адрес 0x4000 7014, 32 бит, после сброса 0b0000 0000 0000 0000 X00X XXXX X000 0000 (X — текущее состояние). В коде: PWR->SR2.

31302928272625242322212019181716
—
1514131211109876543210
PVMO_DAC—PVMO_VDDIO2—PVDOVOSFREGLPFREGLPSFLASH_RDY—
  • PVMO_DAC (бит 15) — Монитор VDDA: напряжение ниже порога.
  • PVMO_VDDIO2 (бит 13) — Монитор VDDIO2: 1 — VDDIO2 ниже 1,2 В (не готово); в CMSIS этот бит назван ещё и PVMO_USB (только у STM32G0B1, STM32G0C1).
  • PVDO (бит 11) — Выход PVD: VDD ниже порога.
  • VOSF (бит 10) — Идёт смена диапазона напряжения ядра.
  • REGLPF (бит 9) — Регулятор работает в маломощном режиме.
  • REGLPS (бит 8) — Маломощный регулятор готов.
  • FLASH_RDY (бит 7) — Флеш-память готова после выхода из пониженного потребления.

PWR_SCR — сброс флагов пробуждения и Standby

Смещение 0x18, адрес 0x4000 7018, 32 бит, после сброса 0x0000 0000. В коде: PWR->SCR.

31302928272625242322212019181716
—
1514131211109876543210
—CSBF—CWUF6CWUF5CWUF4CWUF3CWUF2CWUF1
  • CSBF (бит 8) — Сброс флага SBF записью 1.
  • CWUF2–CWUF6 (по биту на каждый y, положение — на карте битов) — Сброс флага WUFy записью 1.
  • CWUF5 (бит 4) — Сброс флага WUF5 записью 1 (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • CWUF3 (бит 2) — Сброс флага WUF3 записью 1 (только у STM32G0B1, STM32G0C1).
  • CWUF1 (бит 0) — Сброс флага WUF1 записью 1.

PWR_PUCRA — подтяжка вверх порта A в Standby и Shutdown

Смещение 0x20, адрес 0x4000 7020, 32 бит, после сброса 0x0000 0000. В коде: PWR->PUCRA.

31302928272625242322212019181716
—
1514131211109876543210
PU15PU14PU13PU12PU11PU10PU9PU8PU7PU6PU5PU4PU3PU2PU1PU0
  • PU0–PU15 (по биту на каждый y, положение — на карте битов) — Подтяжка вверх вывода PAy в Standby и Shutdown (при APC = 1).
  • PU1 (бит 1) — Подтяжка вверх вывода PA1 в Standby и Shutdown (при APC = 1).

PWR_PDCRA — подтяжка вниз порта A в Standby и Shutdown

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

31302928272625242322212019181716
—
1514131211109876543210
PD15PD14PD13PD12PD11PD10PD9PD8PD7PD6PD5PD4PD3PD2PD1PD0
  • PD0–PD15 (по биту на каждый y, положение — на карте битов) — Подтяжка вниз вывода PAy в Standby и Shutdown (при APC = 1).
  • PD1 (бит 1) — Подтяжка вниз вывода PA1 в Standby и Shutdown (при APC = 1).

PWR_PUCRB — подтяжка вверх порта B в Standby и Shutdown

Смещение 0x28, адрес 0x4000 7028, 32 бит, после сброса 0x0000 0000. В коде: PWR->PUCRB.

31302928272625242322212019181716
—
1514131211109876543210
PU15PU14PU13PU12PU11PU10PU9PU8PU7PU6PU5PU4PU3PU2PU1PU0
  • PU0–PU15 (по биту на каждый y, положение — на карте битов) — Подтяжка вверх вывода PBy в Standby и Shutdown (при APC = 1).
  • PU1 (бит 1) — Подтяжка вверх вывода PB1 в Standby и Shutdown (при APC = 1).

PWR_PDCRB — подтяжка вниз порта B в Standby и Shutdown

Смещение 0x2C, адрес 0x4000 702C, 32 бит, после сброса 0x0000 0000. В коде: PWR->PDCRB.

31302928272625242322212019181716
—
1514131211109876543210
PD15PD14PD13PD12PD11PD10PD9PD8PD7PD6PD5PD4PD3PD2PD1PD0
  • PD0–PD15 (по биту на каждый y, положение — на карте битов) — Подтяжка вниз вывода PBy в Standby и Shutdown (при APC = 1).
  • PD1 (бит 1) — Подтяжка вниз вывода PB1 в Standby и Shutdown (при APC = 1).

PWR_PUCRC — подтяжка вверх порта C в Standby и Shutdown

Смещение 0x30, адрес 0x4000 7030, 32 бит, после сброса 0x0000 0000. В коде: PWR->PUCRC.

31302928272625242322212019181716
—
1514131211109876543210
PU15PU14PU13PU12PU11PU10PU9PU8PU7PU6PU5PU4PU3PU2PU1PU0
  • PU6–PU15 (по биту на каждый y, положение — на карте битов) — Подтяжка вверх вывода PCy в Standby и Shutdown (при APC = 1).
  • PU0–PU12 (по биту на каждый y, положение — на карте битов) — Подтяжка вверх вывода PCy в Standby и Shutdown (при APC = 1) (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • PU1 (бит 1) — Подтяжка вверх вывода PC1 в Standby и Shutdown (при APC = 1) (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).

PWR_PDCRC — подтяжка вниз порта C в Standby и Shutdown

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

31302928272625242322212019181716
—
1514131211109876543210
PD15PD14PD13PD12PD11PD10PD9PD8PD7PD6PD5PD4PD3PD2PD1PD0
  • PD6–PD15 (по биту на каждый y, положение — на карте битов) — Подтяжка вниз вывода PCy в Standby и Shutdown (при APC = 1).
  • PD0–PD12 (по биту на каждый y, положение — на карте битов) — Подтяжка вниз вывода PCy в Standby и Shutdown (при APC = 1) (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • PD1 (бит 1) — Подтяжка вниз вывода PC1 в Standby и Shutdown (при APC = 1) (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).

PWR_PUCRD — подтяжка вверх порта D в Standby и Shutdown

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

31302928272625242322212019181716
—
1514131211109876543210
PD15PD14PD13PD12PD11PD10PU9PU8—PU6PU5PU4PU3PU2PU1PU0
  • PD10–PD15 (по биту на каждый y, положение — на карте битов) — Подтяжка вверх вывода PDy в Standby и Shutdown (при APC = 1) (только у STM32G0B1, STM32G0C1).
  • PU4–PU9 (по биту на каждый y, положение — на карте битов) — Подтяжка вверх вывода PDy в Standby и Shutdown (при APC = 1) (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • PU0–PU3 (по биту на каждый y, положение — на карте битов) — Подтяжка вверх вывода PDy в Standby и Shutdown (при APC = 1).
  • PU1 (бит 1) — Подтяжка вверх вывода PD1 в Standby и Shutdown (при APC = 1).

PWR_PDCRD — подтяжка вниз порта D в Standby и Shutdown

Смещение 0x3C, адрес 0x4000 703C, 32 бит, после сброса 0x0000 0000. В коде: PWR->PDCRD.

31302928272625242322212019181716
—
1514131211109876543210
PD15PD14PD13PD12PD11PD10PD9PD8—PD6PD5PD4PD3PD2PD1PD0
  • PD10–PD15 (по биту на каждый y, положение — на карте битов) — Подтяжка вниз вывода PDy в Standby и Shutdown (при APC = 1) (только у STM32G0B1, STM32G0C1).
  • PD4–PD9 (по биту на каждый y, положение — на карте битов) — Подтяжка вниз вывода PDy в Standby и Shutdown (при APC = 1) (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • PD0–PD3 (по биту на каждый y, положение — на карте битов) — Подтяжка вниз вывода PDy в Standby и Shutdown (при APC = 1).
  • PD1 (бит 1) — Подтяжка вниз вывода PD1 в Standby и Shutdown (при APC = 1).

PWR_PUCRE — подтяжка вверх порта E в Standby и Shutdown

Смещение 0x40, адрес 0x4000 7040, 32 бит, после сброса 0x0000 0000; регистр есть только у STM32G0B1, STM32G0C1. В коде: PWR->PUCRE.

31302928272625242322212019181716
—
1514131211109876543210
PD15PD14PD13PD12PD11PD10PD9PD8PD7PD6PD5PU4PU3PU2PU1PU0
  • PD5–PD15 (по биту на каждый y, положение — на карте битов) — Подтяжка вверх вывода PEy в Standby и Shutdown (при APC = 1).
  • PU0–PU4 (по биту на каждый y, положение — на карте битов) — Подтяжка вверх вывода PEy в Standby и Shutdown (при APC = 1).
  • PU1 (бит 1) — Подтяжка вверх вывода PE1 в Standby и Shutdown (при APC = 1).

PWR_PDCRE — подтяжка вниз порта E в Standby и Shutdown

Смещение 0x44, адрес 0x4000 7044, 32 бит, после сброса 0x0000 0000; регистр есть только у STM32G0B1, STM32G0C1. В коде: PWR->PDCRE.

31302928272625242322212019181716
—
1514131211109876543210
PD15PD14PD13PD12PD11PD10PD9PD8PD7PD6PD5PD4PD3PD2PD1PD0
  • PD0–PD15 (по биту на каждый y, положение — на карте битов) — Подтяжка вниз вывода PEy в Standby и Shutdown (при APC = 1).
  • PD1 (бит 1) — Подтяжка вниз вывода PE1 в Standby и Shutdown (при APC = 1).

PWR_PUCRF — подтяжка вверх порта F в Standby и Shutdown

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

31302928272625242322212019181716
—
1514131211109876543210
—PD13PD12PD11PD10PD9PD8PD7PD6PD5PU4PU3PU2PU1PU0
  • PD5–PD13 (по биту на каждый y, положение — на карте битов) — Подтяжка вверх вывода PFy в Standby и Shutdown (при APC = 1) (только у STM32G0B1, STM32G0C1).
  • PU4 (бит 4) — Подтяжка вверх вывода PF4 в Standby и Shutdown (при APC = 1) (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • PU3 (бит 3) — Подтяжка вверх вывода PF3 в Standby и Shutdown (при APC = 1) (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • PU2 (бит 2) — Подтяжка вверх вывода PF2 в Standby и Shutdown (при APC = 1).
  • PU0 (бит 0) — Подтяжка вверх вывода PF0 в Standby и Shutdown (при APC = 1).
  • PU1 (бит 1) — Подтяжка вверх вывода PF1 в Standby и Shutdown (при APC = 1).

PWR_PDCRF — подтяжка вниз порта F в Standby и Shutdown

Смещение 0x4C, адрес 0x4000 704C, 32 бит, после сброса 0x0000 0000. В коде: PWR->PDCRF.

31302928272625242322212019181716
—
1514131211109876543210
—PD13PD12PD11PD10PD9PD8PD7PD6PD5PD4PD3PD2PD1PD0
  • PD5–PD13 (по биту на каждый y, положение — на карте битов) — Подтяжка вниз вывода PFy в Standby и Shutdown (при APC = 1) (только у STM32G0B1, STM32G0C1).
  • PD4 (бит 4) — Подтяжка вниз вывода PF4 в Standby и Shutdown (при APC = 1) (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • PD3 (бит 3) — Подтяжка вниз вывода PF3 в Standby и Shutdown (при APC = 1) (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • PD2 (бит 2) — Подтяжка вниз вывода PF2 в Standby и Shutdown (при APC = 1).
  • PD0 (бит 0) — Подтяжка вниз вывода PF0 в Standby и Shutdown (при APC = 1).
  • PD1 (бит 1) — Подтяжка вниз вывода PF1 в Standby и Shutdown (при APC = 1).

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

Как перейти в Shutdown с пробуждением от WKUP1 (PA0)?

PWR->CR3 |= PWR_CR3_EWUP1; PWR->SCR = PWR_SCR_CWUF; PWR->CR1 = (PWR->CR1 & ~PWR_CR1_LPMS) | PWR_CR1_LPMS_2; SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; __WFI(). Выход из Shutdown — как после сброса.

Источники

  1. STMicroelectronics. RM0444: Reference manual (Rev 6) — раздел 4.4: описание регистров, назначение полей и значения после сброса
  2. STMicroelectronics. cmsis-device-g0 v1.4.5: заголовки CMSIS stm32g031xx.h, stm32g041xx.h, stm32g051xx.h, stm32g061xx.h, stm32g071xx.h, stm32g081xx.h, stm32g0b1xx.h, stm32g0c1xx.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0

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

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

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