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

Регистры FLASH STM32G0

Регистры FLASH STM32G0: такты ожидания, кэш инструкций и предвыборка, ключи, программирование и стирание, флаги ошибок, коррекция ошибок ECC, байты опций, защита чтения, записи и PCROP.

Флеш-память STM32G0 программируется двойными словами по 64 бита (с ECC на каждое): установите PG и запишите два слова подряд по выровненному адресу. Быстрое программирование FSTPG пишет строку из 32 двойных слов. Страница — 2 КБ, номер страницы для стирания — в поле PNB регистра FLASH_CR (RM0444, раздел 3.3).

Байты опций в FLASH_OPTR задают уровень защиты чтения RDP, пороги BOR, режимы сторожей, сбросы при входе в пониженное потребление, режим вывода NRST и загрузку nBOOT0/nBOOT_SEL. Их меняют после ключей FLASH_OPTKEYR битом OPTSTRT, а применяют — OBL_LAUNCH.

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

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

РегистрСмещениеНазначениеПосле сброса
FLASH_ACR0x00Такты ожидания, кэш инструкций и предвыборка0b0000 0000 0000 010X 0000 0110 0000 0000 (X — бит PROGEMPTY: обновляется при загрузке байтов опций, системный сброс его не меняет)
FLASH_KEYR0x08Ключ разблокировки FLASH_CR0x0000 0000
FLASH_OPTKEYR0x0CКлюч разблокировки байтов опций0x0000 0000
FLASH_SR0x10Флаги занятости, окончания и ошибок0x000X 0000
FLASH_CR0x14Программирование, стирание и блокировка0xC000 0000
FLASH_ECCR0x18Ошибки ECC банка 10x0000 0000
FLASH_ECC2R0x1CОшибки ECC банка 20x0000 0000
FLASH_OPTR0x20Байты опций: защита чтения, BOR, сторожа, загрузка0b11XX XXXX 1XXX XXXX XXXX XXXX XXXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания)
FLASH_PCROP1ASR0x24Начало области PCROP A банка 10b0000 0000 0000 0000 0000 000X XXXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания)
FLASH_PCROP1AER0x28Конец области PCROP A банка 10bX000 0000 0000 0000 0000 000X XXXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания)
FLASH_WRP1AR0x2CОбласть A защиты от записи, банк 10x00XX 00XX (X — биты опций, загруженные из флеш-памяти при включении питания)
FLASH_WRP1BR0x30Область B защиты от записи, банк 10b0000 0000 0XXX XXXX 0000 0000 0XXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания)
FLASH_PCROP1BSR0x34Начало области PCROP B банка 10b0000 0000 0000 0000 0000 000X XXXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания)
FLASH_PCROP1BER0x38Конец области PCROP B банка 10b0000 0000 0000 0000 0000 000X XXXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания)
FLASH_PCROP2ASR0x44Начало области PCROP A банка 20b0000 0000 0000 0000 0000 000X XXXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания)
FLASH_PCROP2AER0x48Конец области PCROP A банка 20bX000 0000 0000 0000 0000 000X XXXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания)
FLASH_WRP2AR0x4CОбласть A защиты от записи, банк 20b0000 0000 0XXX XXXX 0000 0000 0XXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания)
FLASH_WRP2BR0x50Область B защиты от записи, банк 20b0000 0000 0XXX XXXX 0000 0000 0XXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания)
FLASH_PCROP2BSR0x54Начало области PCROP B банка 20b0000 0000 0000 0000 0000 000X XXXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания)
FLASH_PCROP2BER0x58Конец области PCROP B банка 20b0000 0000 0000 0000 0000 000X XXXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания)
FLASH_SECR0x80Защищённая область и блокировка загрузки0x0000 0000 (X — биты опций, загруженные из флеш-памяти при включении питания)

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

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

Значение: 0x00000000

0000 0000 0000 0000 0000 0000 0000 0000

FLASH->ACR = 0x00000000;

FLASH_ACR — такты ожидания, кэш инструкций и предвыборка

Смещение 0x00, адрес 0x4002 2000, 32 бит, после сброса 0b0000 0000 0000 010X 0000 0110 0000 0000 (X — бит PROGEMPTY: обновляется при загрузке байтов опций, системный сброс его не меняет). В коде: FLASH->ACR.

31302928272625242322212019181716
—DBG_SWEN—PROGEMPTY
1514131211109876543210
—ICRST—ICENPRFTEN—LATENCY
  • DBG_SWEN (бит 18) — Разрешение доступа отладчика SWD.
  • PROGEMPTY (бит 16) — Флеш-память пуста (0xFFFF FFFF по адресу 0x0800 0000): загрузка из системной памяти.
  • ICRST (бит 11) — Сброс кэша инструкций; только при выключенном кэше.
  • ICEN (бит 9) — Включение кэша инструкций.
  • PRFTEN (бит 8) — Включение буфера предвыборки.
  • LATENCY (биты 2:0) — Такты ожидания флеш-памяти: 0 — до 24 МГц, 1 — до 48 МГц, 2 — до 64 МГц.
    LATENCYЗначение
    0000 тактов ожидания: HCLK до 24 МГц
    0011 такт ожидания: до 48 МГц
    0102 такта ожидания: до 64 МГц

FLASH_KEYR — ключ разблокировки FLASH_CR

Смещение 0x08, адрес 0x4002 2008, 32 бит, после сброса 0x0000 0000. В коде: FLASH->KEYR.

Регистр данных: значение занимает его целиком.

FLASH_OPTKEYR — ключ разблокировки байтов опций

Смещение 0x0C, адрес 0x4002 200C, 32 бит, после сброса 0x0000 0000. В коде: FLASH->OPTKEYR.

Регистр данных: значение занимает его целиком.

FLASH_SR — флаги занятости, окончания и ошибок

Смещение 0x10, адрес 0x4002 2010, 32 бит, после сброса 0x000X 0000. В коде: FLASH->SR.

31302928272625242322212019181716
—CFGBSYBSY2BSY1
1514131211109876543210
OPTVERRRDERR—FASTERRMISERRPGSERRSIZERRPGAERRWRPERRPROGERR—OPERREOP
  • CFGBSY (бит 18) — Занят: идёт программирование или стирание.
  • BSY2 (бит 17) — Идёт операция с флеш-памятью (банк 2) (только у STM32G0B1, STM32G0C1).
  • BSY1 (бит 16) — Идёт операция с флеш-памятью (банк 1).
  • OPTVERR (бит 15) — Байты опций не прошли проверку при загрузке.
  • RDERR (бит 14) — Чтение защищённой области PCROP.
  • FASTERR (бит 9) — Прерывание быстрого программирования.
  • MISERR (бит 8) — Нарушена последовательность быстрого программирования.
  • PGSERR (бит 7) — Ошибка последовательности программирования.
  • SIZERR (бит 6) — Запись не двойным словом.
  • PGAERR (бит 5) — Ошибка выравнивания: двойное слово не по границе 8 байт.
  • WRPERR (бит 4) — Запись в защищённую страницу; сбрасывается записью 1.
  • PROGERR (бит 3) — Программирование ячейки, которая не стёрта; сбрасывается записью 1.
  • OPERR (бит 1) — Ошибка операции; сбрасывается записью 1.
  • EOP (бит 0) — Операция завершена; сбрасывается записью 1.

FLASH_CR — программирование, стирание и блокировка

Смещение 0x14, адрес 0x4002 2014, 32 бит, после сброса 0xC000 0000. В коде: FLASH->CR.

31302928272625242322212019181716
LOCKOPTLOCKSEC_PROT2SEC_PROTOBL_LAUNCHRDERRIEERRIEEOPIE—FSTPGOPTSTRTSTRT
1514131211109876543210
MER2—BKERPNBMER1PERPG
  • LOCK (бит 31) — Блокировка FLASH_CR; снимается ключами FLASH_KEYR.
  • OPTLOCK (бит 30) — Блокировка байтов опций; снимается ключами FLASH_OPTKEYR.
  • SEC_PROT2 (бит 29) — Закрыть защищённую область банка 2 до сброса (только у STM32G0B1, STM32G0C1).
  • SEC_PROT (бит 28) — Закрыть защищённую область до сброса.
  • OBL_LAUNCH (бит 27) — Перезагрузить байты опций (вызывает системный сброс).
  • RDERRIE (бит 26) — Прерывание по ошибке чтения PCROP.
  • ERRIE (бит 25) — Прерывание по ошибке.
  • EOPIE (бит 24) — Прерывание по окончании операции.
  • FSTPG (бит 18) — Быстрое программирование строки из 32 двойных слов.
  • OPTSTRT (бит 17) — Запуск записи байтов опций.
  • STRT (бит 16) — Запуск стирания.
  • MER2 (бит 15) — Стирание всей флеш-памяти банка 2 (только у STM32G0B1, STM32G0C1).
  • BKER (бит 13) — Банк стираемой страницы (только у STM32G0B1, STM32G0C1).
  • PNB (биты 12:3) — Номер стираемой страницы (по 2 КБ).
  • MER1 (бит 2) — Стирание всей флеш-памяти банка 1.
  • PER (бит 1) — Стирание страницы.
  • PG (бит 0) — Программирование.

FLASH_ECCR — ошибки ECC банка 1

Смещение 0x18, адрес 0x4002 2018, 32 бит, после сброса 0x0000 0000. В коде: FLASH->ECCR.

31302928272625242322212019181716
ECCDECCC—ECCCIE—SYSF_ECC—
1514131211109876543210
—ADDR_ECC
  • ECCD (бит 31) — Двойная ошибка ECC (неисправимая); сбрасывается записью 1.
  • ECCC (бит 30) — Одиночная ошибка ECC исправлена; сбрасывается записью 1.
  • ECCCIE (бит 24) — Прерывание по исправленной ошибке ECC.
  • SYSF_ECC (бит 20) — Ошибка ECC в системной памяти.
  • ADDR_ECC (биты 14:0) — Адрес двойного слова с ошибкой ECC (только у STM32G0B1, STM32G0C1).
  • ADDR_ECC (биты 13:0) — Адрес двойного слова с ошибкой ECC (только у STM32G031, STM32G041, STM32G051, STM32G061, STM32G071, STM32G081).

FLASH_ECC2R — ошибки ECC банка 2

Смещение 0x1C, адрес 0x4002 201C, 32 бит, после сброса 0x0000 0000; регистр есть только у STM32G0B1, STM32G0C1. В коде: FLASH->ECC2R.

31302928272625242322212019181716
ECCDECCC—ECCCIE—SYSF_ECC—
1514131211109876543210
—ADDR_ECC
  • ECCD (бит 31) — Двойная ошибка ECC (неисправимая); сбрасывается записью 1.
  • ECCC (бит 30) — Одиночная ошибка ECC исправлена; сбрасывается записью 1.
  • ECCCIE (бит 24) — Прерывание по исправленной ошибке ECC.
  • SYSF_ECC (бит 20) — Ошибка ECC в системной памяти.
  • ADDR_ECC (биты 14:0) — Адрес двойного слова с ошибкой ECC.

FLASH_OPTR — байты опций: защита чтения, BOR, сторожа, загрузка

Смещение 0x20, адрес 0x4002 2020, 32 бит, после сброса 0b11XX XXXX 1XXX XXXX XXXX XXXX XXXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания). В коде: FLASH->OPTR.

31302928272625242322212019181716
—IRHENNRST_MODEnBOOT0nBOOT1nBOOT_SEL—RAM_PARITY_CHECKDUAL_BANKnSWAP_BANKWWDG_SWIWDG_STDBYIWDG_STOPIWDG_SW
1514131211109876543210
nRST_SHDWnRST_STDBYnRST_STOPBORF_LEVBORR_LEVBOR_ENRDP
  • IRHEN (бит 29) — Сброс внутренними источниками выводится на NRST.
  • NRST_MODE (биты 28:27) — Режим вывода NRST: вход и выход сброса, только вход или GPIO.
  • nBOOT0 (бит 26) — Значение BOOT0 при BOOT_SEL = 0.
  • nBOOT1 (бит 25) — Вместе с BOOT0 выбирает загрузку из SRAM или системной памяти.
  • nBOOT_SEL (бит 24) — Загрузка по биту nBOOT0 (1) или по выводу BOOT0 (0).
  • RAM_PARITY_CHECK (бит 22) — Контроль чётности SRAM (0 — включён).
  • DUAL_BANK (бит 21) — Двухбанковый режим (STM32G0B1/C1 с 256 КБ) (только у STM32G0B1, STM32G0C1).
  • nSWAP_BANK (бит 20) — Перестановка банков флеш-памяти (только у STM32G0B1, STM32G0C1).
  • WWDG_SW (бит 19) — Сторож WWDG: программный или аппаратный.
  • IWDG_STDBY (бит 18) — Остановка IWDG в Standby.
  • IWDG_STOP (бит 17) — Остановка IWDG в Stop.
  • IWDG_SW (бит 16) — Сторож IWDG: программный (1) или аппаратный — включён после сброса (0).
  • nRST_SHDW (бит 15) — Сброс при входе в Shutdown (0) или нормальный вход.
  • nRST_STDBY (бит 14) — Сброс при входе в Standby (0) или нормальный вход.
  • nRST_STOP (бит 13) — Сброс при входе в Stop (0) или нормальный вход.
  • BORF_LEV (биты 12:11) — Порог BOR при спаде напряжения.
  • BORR_LEV (биты 10:9) — Порог BOR при нарастании напряжения.
  • BOR_EN (бит 8) — Включение сброса по снижению напряжения BOR.
  • RDP (биты 7:0) — Защита чтения: 0xAA — уровень 0, 0xCC — уровень 2 (необратимо), другое — уровень 1.

FLASH_PCROP1ASR — начало области PCROP A банка 1

Смещение 0x24, адрес 0x4002 2024, 32 бит, после сброса 0b0000 0000 0000 0000 0000 000X XXXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания). В коде: FLASH->PCROP1ASR.

31302928272625242322212019181716
—
1514131211109876543210
—PCROP1A_STRT
  • PCROP1A_STRT (биты 8:0) — Начало области A защиты PCROP банка 1, в блоках по 512 байт (только у STM32G0B1, STM32G0C1).
  • PCROP1A_STRT (биты 7:0) — Начало области A защиты PCROP банка 1, в блоках по 512 байт (только у STM32G071, STM32G081).
  • PCROP1A_STRT (биты 6:0) — Начало области A защиты PCROP банка 1, в блоках по 512 байт (только у STM32G031, STM32G041, STM32G051, STM32G061).

FLASH_PCROP1AER — конец области PCROP A банка 1

Смещение 0x28, адрес 0x4002 2028, 32 бит, после сброса 0bX000 0000 0000 0000 0000 000X XXXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания). В коде: FLASH->PCROP1AER.

31302928272625242322212019181716
PCROP_RDP—
1514131211109876543210
—PCROP1A_END
  • PCROP_RDP (бит 31) — Стирать области PCROP при снижении уровня защиты чтения с 1 до 0.
  • PCROP1A_END (биты 8:0) — Конец области A защиты PCROP банка 1, в блоках по 512 байт (только у STM32G0B1, STM32G0C1).
  • PCROP1A_END (биты 7:0) — Конец области A защиты PCROP банка 1, в блоках по 512 байт (только у STM32G071, STM32G081).
  • PCROP1A_END (биты 6:0) — Конец области A защиты PCROP банка 1, в блоках по 512 байт (только у STM32G031, STM32G041, STM32G051, STM32G061).

FLASH_WRP1AR — область A защиты от записи, банк 1

Смещение 0x2C, адрес 0x4002 202C, 32 бит, после сброса 0x00XX 00XX (X — биты опций, загруженные из флеш-памяти при включении питания). В коде: FLASH->WRP1AR.

31302928272625242322212019181716
—WRP1A_END
1514131211109876543210
—WRP1A_STRT
  • WRP1A_END (биты 22:16) — Последняя страница области A защиты от записи банка 1 (только у STM32G0B1, STM32G0C1).
  • WRP1A_END (биты 21:16) — Последняя страница области A защиты от записи банка 1 (только у STM32G071, STM32G081).
  • WRP1A_END (биты 20:16) — Последняя страница области A защиты от записи банка 1 (только у STM32G031, STM32G041, STM32G051, STM32G061).
  • WRP1A_STRT (биты 6:0) — Первая страница области A защиты от записи банка 1 (только у STM32G0B1, STM32G0C1).
  • WRP1A_STRT (биты 5:0) — Первая страница области A защиты от записи банка 1 (только у STM32G071, STM32G081).
  • WRP1A_STRT (биты 4:0) — Первая страница области A защиты от записи банка 1 (только у STM32G031, STM32G041, STM32G051, STM32G061).

FLASH_WRP1BR — область B защиты от записи, банк 1

Смещение 0x30, адрес 0x4002 2030, 32 бит, после сброса 0b0000 0000 0XXX XXXX 0000 0000 0XXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания). В коде: FLASH->WRP1BR.

31302928272625242322212019181716
—WRP1B_END
1514131211109876543210
—WRP1B_STRT
  • WRP1B_END (биты 22:16) — Последняя страница области B защиты от записи банка 1 (только у STM32G0B1, STM32G0C1).
  • WRP1B_END (биты 21:16) — Последняя страница области B защиты от записи банка 1 (только у STM32G071, STM32G081).
  • WRP1B_END (биты 20:16) — Последняя страница области B защиты от записи банка 1 (только у STM32G031, STM32G041, STM32G051, STM32G061).
  • WRP1B_STRT (биты 6:0) — Первая страница области B защиты от записи банка 1 (только у STM32G0B1, STM32G0C1).
  • WRP1B_STRT (биты 5:0) — Первая страница области B защиты от записи банка 1 (только у STM32G071, STM32G081).
  • WRP1B_STRT (биты 4:0) — Первая страница области B защиты от записи банка 1 (только у STM32G031, STM32G041, STM32G051, STM32G061).

FLASH_PCROP1BSR — начало области PCROP B банка 1

Смещение 0x34, адрес 0x4002 2034, 32 бит, после сброса 0b0000 0000 0000 0000 0000 000X XXXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания). В коде: FLASH->PCROP1BSR.

31302928272625242322212019181716
—
1514131211109876543210
—PCROP1B_STRT
  • PCROP1B_STRT (биты 8:0) — Начало области B защиты PCROP банка 1, в блоках по 512 байт (только у STM32G0B1, STM32G0C1).
  • PCROP1B_STRT (биты 7:0) — Начало области B защиты PCROP банка 1, в блоках по 512 байт (только у STM32G071, STM32G081).
  • PCROP1B_STRT (биты 6:0) — Начало области B защиты PCROP банка 1, в блоках по 512 байт (только у STM32G031, STM32G041, STM32G051, STM32G061).

FLASH_PCROP1BER — конец области PCROP B банка 1

Смещение 0x38, адрес 0x4002 2038, 32 бит, после сброса 0b0000 0000 0000 0000 0000 000X XXXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания). В коде: FLASH->PCROP1BER.

31302928272625242322212019181716
—
1514131211109876543210
—PCROP1B_END
  • PCROP1B_END (биты 8:0) — Конец области B защиты PCROP банка 1, в блоках по 512 байт (только у STM32G0B1, STM32G0C1).
  • PCROP1B_END (биты 7:0) — Конец области B защиты PCROP банка 1, в блоках по 512 байт (только у STM32G071, STM32G081).
  • PCROP1B_END (биты 6:0) — Конец области B защиты PCROP банка 1, в блоках по 512 байт (только у STM32G031, STM32G041, STM32G051, STM32G061).

FLASH_PCROP2ASR — начало области PCROP A банка 2

Смещение 0x44, адрес 0x4002 2044, 32 бит, после сброса 0b0000 0000 0000 0000 0000 000X XXXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания); регистр есть только у STM32G0B1, STM32G0C1. В коде: FLASH->PCROP2ASR.

31302928272625242322212019181716
—
1514131211109876543210
—PCROP2A_STRT
  • PCROP2A_STRT (биты 8:0) — Начало области A защиты PCROP банка 2, в блоках по 512 байт.

FLASH_PCROP2AER — конец области PCROP A банка 2

Смещение 0x48, адрес 0x4002 2048, 32 бит, после сброса 0bX000 0000 0000 0000 0000 000X XXXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания); регистр есть только у STM32G0B1, STM32G0C1. В коде: FLASH->PCROP2AER.

31302928272625242322212019181716
—
1514131211109876543210
—PCROP2A_END
  • PCROP2A_END (биты 8:0) — Конец области A защиты PCROP банка 2, в блоках по 512 байт.

FLASH_WRP2AR — область A защиты от записи, банк 2

Смещение 0x4C, адрес 0x4002 204C, 32 бит, после сброса 0b0000 0000 0XXX XXXX 0000 0000 0XXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания); регистр есть только у STM32G0B1, STM32G0C1. В коде: FLASH->WRP2AR.

31302928272625242322212019181716
—WRP2A_END
1514131211109876543210
—WRP2A_STRT
  • WRP2A_END (биты 22:16) — Последняя страница области A защиты от записи банка 2.
  • WRP2A_STRT (биты 6:0) — Первая страница области A защиты от записи банка 2.

FLASH_WRP2BR — область B защиты от записи, банк 2

Смещение 0x50, адрес 0x4002 2050, 32 бит, после сброса 0b0000 0000 0XXX XXXX 0000 0000 0XXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания); регистр есть только у STM32G0B1, STM32G0C1. В коде: FLASH->WRP2BR.

31302928272625242322212019181716
—WRP2B_END
1514131211109876543210
—WRP2B_STRT
  • WRP2B_END (биты 22:16) — Последняя страница области B защиты от записи банка 2.
  • WRP2B_STRT (биты 6:0) — Первая страница области B защиты от записи банка 2.

FLASH_PCROP2BSR — начало области PCROP B банка 2

Смещение 0x54, адрес 0x4002 2054, 32 бит, после сброса 0b0000 0000 0000 0000 0000 000X XXXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания); регистр есть только у STM32G0B1, STM32G0C1. В коде: FLASH->PCROP2BSR.

31302928272625242322212019181716
—
1514131211109876543210
—PCROP2B_STRT
  • PCROP2B_STRT (биты 8:0) — Начало области B защиты PCROP банка 2, в блоках по 512 байт.

FLASH_PCROP2BER — конец области PCROP B банка 2

Смещение 0x58, адрес 0x4002 2058, 32 бит, после сброса 0b0000 0000 0000 0000 0000 000X XXXX XXXX (X — биты опций, загруженные из флеш-памяти при включении питания); регистр есть только у STM32G0B1, STM32G0C1. В коде: FLASH->PCROP2BER.

31302928272625242322212019181716
—
1514131211109876543210
—PCROP2B_END
  • PCROP2B_END (биты 8:0) — Конец области B защиты PCROP банка 2, в блоках по 512 байт.

FLASH_SECR — защищённая область и блокировка загрузки

Смещение 0x80, адрес 0x4002 2080, 32 бит, после сброса 0x0000 0000 (X — биты опций, загруженные из флеш-памяти при включении питания). В коде: FLASH->SECR.

31302928272625242322212019181716
—SEC_SIZE2—BOOT_LOCK
1514131211109876543210
—SEC_SIZE
  • SEC_SIZE2 (биты 27:20) — Размер защищённой области банка 2 в страницах (только у STM32G0B1, STM32G0C1).
  • BOOT_LOCK (бит 16) — Запуск только из основной флеш-памяти.
  • SEC_SIZE (биты 7:0) — Размер защищённой области в страницах (только у STM32G0B1, STM32G0C1).
  • SEC_SIZE (биты 6:0) — Размер защищённой области в страницах (только у STM32G071, STM32G081).
  • SEC_SIZE (биты 5:0) — Размер защищённой области в страницах (только у STM32G031, STM32G041, STM32G051, STM32G061).

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

Как записать двойное слово во флеш-память STM32G0?

FLASH->KEYR = 0x45670123; FLASH->KEYR = 0xCDEF89AB; дождитесь сброса BSY1, сбросьте флаги ошибок в SR. FLASH->CR |= FLASH_CR_PG; запишите два 32-битных слова по адресу, кратному 8; дождитесь BSY1 = 0, проверьте EOP и сбросьте PG.

Почему STM32G0 игнорирует вывод BOOT0?

По умолчанию nBOOT_SEL = 1 в байтах опций: загрузка определяется битом nBOOT0, а вывод PA14-BOOT0 работает как SWCLK. Чтобы снова использовать вывод BOOT0, сбросьте nBOOT_SEL в FLASH_OPTR.

Источники

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

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