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

Регистры DBG STM32G0

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

Код DEV_ID показывает линейку: 0x466 — STM32G03x/G04x, 0x456 — STM32G05x/G06x, 0x460 — STM32G07x/G08x, 0x467 — STM32G0B1/G0C1 (RM0444, раздел 40.4). В CMSIS блок называется DBG, а не DBGMCU, как у STM32F0.

Биты DBG_STOP и DBG_STANDBY сохраняют связь с отладчиком в режимах пониженного потребления. Регистры APB_FZ1 и APB_FZ2 останавливают таймеры, LPTIM, сторожа, RTC и тайм-ауты SMBus на точке останова. Блок тактируется битом DBGEN в RCC_APBENR1.

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

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

РегистрСмещениеНазначениеПосле сброса
DBG_IDCODE0x00Код устройства и ревизии0xXXXX 64XX (X — код устройства и ревизии, таблица 265 RM0444)
DBG_CR0x04Отладка в режимах Stop и Standby0x0000 0000 (при включении питания; системный сброс регистр не меняет)
DBG_APB_FZ10x08Остановка таймеров и сторожей при отладке, регистр 10x0000 0000 (при включении питания; системный сброс регистр не меняет)
DBG_APB_FZ20x0CОстановка таймеров при отладке, регистр 20x0000 0000 (при включении питания; системный сброс регистр не меняет)

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

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

Значение: 0x00006400

0000 0000 0000 0000 0110 0100 0000 0000

DBG->IDCODE = 0x00006400;

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

Смещение 0x00, адрес 0x4001 5800, 32 бит, после сброса 0xXXXX 64XX (X — код устройства и ревизии, таблица 265 RM0444). В коде: DBG->IDCODE.

31302928272625242322212019181716
REV_ID
1514131211109876543210
—DEV_ID
  • REV_ID (биты 31:16) — Ревизия кристалла.
  • DEV_ID (биты 11:0) — Код устройства (линейки): 0x440, 0x442, 0x444, 0x445, 0x448 у STM32F0; 0x456, 0x460, 0x466, 0x467 у STM32G0.

DBG_CR — отладка в режимах Stop и Standby

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

31302928272625242322212019181716
—
1514131211109876543210
—DBG_STANDBYDBG_STOP—
  • DBG_STANDBY (бит 2) — Отладка в режиме Standby: ядро и тактирование остаются включены.
  • DBG_STOP (бит 1) — Отладка в режиме Stop: тактирование остаётся включено.

DBG_APB_FZ1 — остановка таймеров и сторожей при отладке, регистр 1

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

31302928272625242322212019181716
DBG_LPTIM1_STOPDBG_LPTIM2_STOP—DBG_I2C2_SMBUS_TIMEOUT_STOPDBG_I2C1_SMBUS_TIMEOUT_STOP—
1514131211109876543210
—DBG_IWDG_STOPDBG_WWDG_STOPDBG_RTC_STOP—DBG_TIM7_STOPDBG_TIM6_STOP—DBG_TIM4_STOPDBG_TIM3_STOPDBG_TIM2_STOP
  • DBG_LPTIM1_STOP (бит 31) — Остановка таймера LPTIM1 при остановленном ядре.
  • DBG_LPTIM2_STOP (бит 30) — Остановка таймера LPTIM2 при остановленном ядре.
  • DBG_I2C2_SMBUS_TIMEOUT_STOP (бит 22) — Остановка тайм-аута SMBus у I2C2 при остановленном ядре (только у STM32G0B1, STM32G0C1).
  • DBG_I2C1_SMBUS_TIMEOUT_STOP (бит 21) — Остановка тайм-аута SMBus у I2C1 при остановленном ядре.
  • DBG_IWDG_STOP (бит 12) — Остановка IWDG при остановленном ядре.
  • DBG_WWDG_STOP (бит 11) — Остановка WWDG при остановленном ядре.
  • DBG_RTC_STOP (бит 10) — Остановка RTC при остановленном ядре.
  • DBG_TIM7_STOP (бит 5) — Остановка таймера TIM7 при остановленном ядре (только у STM32G051, STM32G061, STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • DBG_TIM6_STOP (бит 4) — Остановка таймера TIM6 при остановленном ядре (только у STM32G051, STM32G061, STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • DBG_TIM4_STOP (бит 2) — Остановка таймера TIM4 при остановленном ядре (только у STM32G0B1, STM32G0C1).
  • DBG_TIM3_STOP (бит 1) — Остановка таймера TIM3 при остановленном ядре.
  • DBG_TIM2_STOP (бит 0) — Остановка таймера TIM2 при остановленном ядре.

DBG_APB_FZ2 — остановка таймеров при отладке, регистр 2

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

31302928272625242322212019181716
—DBG_TIM17_STOPDBG_TIM16_STOPDBG_TIM15_STOP
1514131211109876543210
DBG_TIM14_STOP—DBG_TIM1_STOP—
  • DBG_TIM17_STOP (бит 18) — Остановка таймера TIM17 при остановленном ядре.
  • DBG_TIM16_STOP (бит 17) — Остановка таймера TIM16 при остановленном ядре.
  • DBG_TIM15_STOP (бит 16) — Остановка таймера TIM15 при остановленном ядре (только у STM32G051, STM32G061, STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • DBG_TIM14_STOP (бит 15) — Остановка таймера TIM14 при остановленном ядре.
  • DBG_TIM1_STOP (бит 11) — Остановка таймера TIM1 при остановленном ядре.

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

Как не дать IWDG сбросить STM32G0 при отладке?

Установите DBG->APBFZ1 |= DBG_APB_FZ1_DBG_IWDG_STOP (предварительно включив DBGEN в RCC_APBENR1).

Источники

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

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