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

Регистры PWR STM32F1

Регистры PWR STM32F1: режим глубокого сна (Stop или Standby), стабилизатор в режиме Stop, программируемый детектор напряжения PVD, пробуждение выводом WKUP, флаги пробуждения и доступ к резервному домену.

Режим, в который микроконтроллер уходит по команде WFI или WFE при установленном бите SLEEPDEEP ядра, выбирает бит PDDS: 0 — Stop (сохраняются SRAM и регистры, стабилизатор работает обычным или экономичным по биту LPDS), 1 — Standby (всё, кроме резервного домена, выключено, выход — через сброс). Флаги WUF и SBF сбрасываются записью единиц в CWUF и CSBF (RM0008, раздел 5.4).

Детектор PVD сравнивает VDD с порогом 2,2–2,9 В (поле PLS) и выдаёт результат в PVDO и на линию 16 EXTI. Бит DBP снимает защиту записи с резервного домена — регистров RTC, BKP и RCC_BDCR; без него не включить LSE и часы. Тактирование самого блока PWR — бит PWREN в RCC_APB1ENR.

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

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

РегистрСмещениеНазначениеПосле сброса
PWR_CR0x00Управление питанием0x0000 0000 (сбрасывается при выходе из режима Standby)
PWR_CSR0x04Состояние и управление питанием0x0000 0000 (не сбрасывается при выходе из режима Standby)

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

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

Значение: 0x00000000

0000 0000 0000 0000 0000 0000 0000 0000

PWR->CR = 0x00000000;

PWR_CR — управление питанием

Смещение 0x00, адрес 0x4000 7000, 32 бит, после сброса 0x0000 0000 (сбрасывается при выходе из режима Standby). В коде: PWR->CR.

31302928272625242322212019181716
—
1514131211109876543210
—DBPPLSPVDECSBFCWUFPDDSLPDS
  • DBP (бит 8) — Снятие защиты записи с резервного домена: RTC, резервные регистры, RCC_BDCR.
  • PLS (биты 7:5) — Порог детектора напряжения PVD.
    PLSЗначениеМакрос CMSIS
    0002,2 ВPWR_CR_PLS_LEV0
    0012,3 ВPWR_CR_PLS_LEV1
    0102,4 ВPWR_CR_PLS_LEV2
    0112,5 ВPWR_CR_PLS_LEV3
    1002,6 ВPWR_CR_PLS_LEV4
    1012,7 ВPWR_CR_PLS_LEV5
    1102,8 ВPWR_CR_PLS_LEV6
    1112,9 ВPWR_CR_PLS_LEV7
  • PVDE (бит 4) — Включение детектора напряжения PVD.
  • CSBF (бит 3) — Сброс флага SBF записью единицы.
  • CWUF (бит 2) — Сброс флага WUF записью единицы.
  • PDDS (бит 1) — Режим глубокого сна: Stop или Standby.
    PDDSЗначение
    0Stop
    1Standby
  • LPDS (бит 0) — Стабилизатор в режиме Stop: обычный или экономичный.
    LPDSЗначение
    0Стабилизатор в обычном режиме
    1Стабилизатор в экономичном режиме

PWR_CSR — состояние и управление питанием

Смещение 0x04, адрес 0x4000 7004, 32 бит, после сброса 0x0000 0000 (не сбрасывается при выходе из режима Standby). В коде: PWR->CSR.

31302928272625242322212019181716
—
1514131211109876543210
—EWUP—PVDOSBFWUF
  • EWUP (бит 8) — Вывод WKUP пробуждает из Standby.
  • PVDO (бит 2) — Выход PVD: напряжение ниже порога.
  • SBF (бит 1) — Микроконтроллер был в режиме Standby.
  • WUF (бит 0) — Произошло событие пробуждения.

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

Как перевести STM32F103 в режим Standby?

Включите тактирование PWR, сбросьте флаг WUF записью CWUF = 1, установите PDDS = 1 в PWR_CR и бит SLEEPDEEP в регистре SCB->SCR ядра, затем выполните __WFI(). Выход из Standby — через сброс: по выводу NRST, сторожу IWDG, будильнику RTC или выводу WKUP, если установлен EWUP.

Почему не включается часовой кварц LSE?

Регистр RCC_BDCR в резервном домене защищён от записи. Включите тактирование PWR и BKP в RCC_APB1ENR и установите DBP в PWR_CR — после этого запись LSEON сработает.

Источники

  1. STMicroelectronics. RM0008: Reference manual (Rev 21) — раздел 5.4: описание регистров, назначение полей и значения после сброса
  2. STMicroelectronics. cmsis-device-f1 v4.3.5: заголовки CMSIS stm32f101x6.h, stm32f101xb.h, stm32f101xe.h, stm32f101xg.h, stm32f102x6.h, stm32f102xb.h, stm32f103x6.h, stm32f103xb.h, stm32f103xe.h, stm32f103xg.h, stm32f105xc.h, stm32f107xc.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0

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

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

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