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

Регистры DBG STM32L0

Регистры DBG STM32L0x1: код устройства и ревизии, сохранение отладки в режимах пониженного потребления и остановка таймеров, RTC, сторожевых таймеров и I2C при остановке ядра отладчиком.

Блок DBG STM32L0 лежит на шине APB2 (адрес 0x4001 5800) и тактируется битом DBGEN регистра RCC_APB2ENR. DBG_CR сохраняет связь с отладчиком в Sleep, Stop и Standby: без этих битов отладчик теряет микроконтроллер при входе в Stop. Регистры APB1_FZ и APB2_FZ останавливают таймеры, RTC, сторожей и тайм-аут SMBus, пока ядро стоит на точке останова (RM0377, раздел 27.9).

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

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

РегистрСмещениеНазначениеПосле сброса
DBGMCU_IDCODE0x00Код устройства и ревизии—
DBG_CR0x04Отладка в режимах пониженного потребления0x0000 0000 (при включении питания; системный сброс регистр не меняет)
DBG_APB1_FZ0x08Остановка таймеров и сторожей при отладке (APB, группа 1)0x0000 0000 (при включении питания; системный сброс регистр не меняет)
DBG_APB2_FZ0x0CОстановка таймеров при отладке (APB, группа 2)0x0000 0000 (при включении питания; системный сброс регистр не меняет)

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

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

Значение: 0x00000000

0000 0000 0000 0000 0000 0000 0000 0000

DBGMCU->IDCODE = 0x00000000;

DBGMCU_IDCODE — код устройства и ревизии

Смещение 0x00, адрес 0x4001 5800, 32 бит. В коде: DBGMCU->IDCODE.

31302928272625242322212019181716
REV_ID
1514131211109876543210
—DEV_ID
  • REV_ID (биты 31:16) — Ревизия кристалла.
  • DEV_ID (биты 11:0) — Код устройства: 0x457 у категории 1 (L011, L021), 0x425 у категории 2 (L031, L041), 0x417 у категории 3 (L051), 0x447 у категории 5 (L071, L081).

DBG_CR — отладка в режимах пониженного потребления

Смещение 0x04, адрес 0x4001 5804, 32 бит, после сброса 0x0000 0000 (при включении питания; системный сброс регистр не меняет). В коде: DBGMCU->CR.

31302928272625242322212019181716
—
1514131211109876543210
—DBG
  • DBG (биты 2:0) — Отладка в режимах Sleep, Stop и Standby: биты DBG_SLEEP, DBG_STOP, DBG_STANDBY.
    DBGЗначениеМакрос CMSIS
    001DBG_SLEEP: отладка в режиме SleepDBGMCU_CR_DBG_SLEEP
    010DBG_STOP: отладка в режиме StopDBGMCU_CR_DBG_STOP
    100DBG_STANDBY: отладка в режиме StandbyDBGMCU_CR_DBG_STANDBY

DBG_APB1_FZ — остановка таймеров и сторожей при отладке (APB, группа 1)

Смещение 0x08, адрес 0x4001 5808, 32 бит, после сброса 0x0000 0000 (при включении питания; системный сброс регистр не меняет). В коде: DBGMCU->APB1FZ.

31302928272625242322212019181716
DBG_LPTIMER_STOP—DBG_I2C1_STOP—
1514131211109876543210
—DBG_IWDG_STOPDBG_WWDG_STOPDBG_RTC_STOP—DBG_TIM7_STOPDBG_TIM6_STOP—DBG_TIM3_STOPDBG_TIM2_STOP
  • DBG_LPTIMER_STOP (бит 31) — LPTIM1 останавливается, когда ядро остановлено отладчиком.
  • DBG_I2C1_STOP (бит 21) — Остановка I2C1 при остановленном ядре.
  • DBG_IWDG_STOP (бит 12) — Остановка IWDG при остановленном ядре.
  • DBG_WWDG_STOP (бит 11) — Остановка WWDG при остановленном ядре.
  • DBG_RTC_STOP (бит 10) — Остановка RTC при остановленном ядре.
  • DBG_TIM7_STOP (бит 5) — Остановка таймера TIM7 при остановленном ядре (только у STM32L071, STM32L081).
  • DBG_TIM6_STOP (бит 4) — Остановка таймера TIM6 при остановленном ядре (только у STM32L051, STM32L071, STM32L081).
  • DBG_TIM3_STOP (бит 1) — Остановка таймера TIM3 при остановленном ядре (только у STM32L071, STM32L081).
  • DBG_TIM2_STOP (бит 0) — Остановка таймера TIM2 при остановленном ядре.

DBG_APB2_FZ — остановка таймеров при отладке (APB, группа 2)

Смещение 0x0C, адрес 0x4001 580C, 32 бит, после сброса 0x0000 0000 (при включении питания; системный сброс регистр не меняет). В коде: DBGMCU->APB2FZ.

31302928272625242322212019181716
—
1514131211109876543210
—DBG_TIM22_STOP—DBG_TIM21_STOP—
  • DBG_TIM22_STOP (бит 5) — Остановка таймера TIM22 при остановленном ядре (только у STM32L031, STM32L041, STM32L051, STM32L071, STM32L081).
  • DBG_TIM21_STOP (бит 2) — Остановка таймера TIM21 при остановленном ядре.

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

Почему отладчик отключается, когда STM32L0 входит в Stop?

В Stop останавливается тактирование ядра и отладочного интерфейса. Установите бит DBG_STOP в DBGMCU->CR (и включите тактирование DBG битом DBGEN) — на время отладки потребление в Stop будет выше.

Источники

  1. STMicroelectronics. RM0377: Reference manual (Rev 10) — раздел 27.9: описание регистров, назначение полей и значения после сброса
  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

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