Flash control register (FLASH_CR)
Регистр управления flash-памятью
Смещение (Address offset): 0x10
Reset value: 0x0000'0080
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
Reserved | |||||||
--- | --- | --- | --- | --- | --- | --- | --- |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
Reserved | |||||||
--- | --- | --- | --- | --- | --- | --- | --- |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
Reserved | EOPIE | Reserved | ERRIE | OPTWRE | Reserved | ||
--- | --- | --- | rw | --- | rw | rw | --- |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
LOCK | STRT | OPTER | OPTPG | Reserved | MER | PER | PG |
rw | rw | rw | rw | -- | rw | rw | rw |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Разрешает прерывание, когда завершается операция перепрошивки (записи или стирания) и устанавливается бит EOP в регистре FLASH_SR.
0 : прерывание запрещено
1 : прерывание разрешено
Разрешает прерывание при ошибке контроллера flash-памяти, когда установливается бит PGERR или WRPRTERR в регистре FLASH_SR: при попытке записи по адресу флэш-памяти, защищенного от записи, или при ошибке записи.
0 : прерывание запрещено
1 : прерывание разрешено
Устанавливается аппаратно при записи правильных ключей в регистр FLASH_OPTKEYR. Когда бит установлен - можно программировать байты параметров. Сбрасывается программно.
Сбрасывается аппаратно при записи правильных ключей в регистр FLASH_KEYR. При неудачной разблокировке контроллера flash-памяти остаётся установленым до окончания следующей попытки.
По завершении операции перепрошивки (записи или стирания) контроллер flash-памяти необходимо заблокировать программно записью "1".
Устанавливается только программно и запускает операцию стирания flash-памяти. Сбрасывается аппаратно при начале операции и установке бита BSY в регистре FLASH_SR.
Устанавливается программно и запускает операцию стирания байтов параметров.
Устанавливается программно и запускает операцию программирования байтов параметров.
Стирает все выбранные пользователем страницы.
Стирает выбранную пользователем страницу.
Запускает программирование flash-памяти
//- stm32F10x.h
/******************* Bit definition for FLASH_CR register *******************/
#define FLASH_CR_PG ((uint16_t)0x0001) /* Programming */
#define FLASH_CR_PER ((uint16_t)0x0002) /* Page Erase */
#define FLASH_CR_MER ((uint16_t)0x0004) /* Mass Erase */
#define FLASH_CR_OPTPG ((uint16_t)0x0010) /* Option Byte Programming */
#define FLASH_CR_OPTER ((uint16_t)0x0020) /* Option Byte Erase */
#define FLASH_CR_STRT ((uint16_t)0x0040) /* Start */
#define FLASH_CR_LOCK ((uint16_t)0x0080) /* Lock */
#define FLASH_CR_OPTWRE ((uint16_t)0x0200) /* Option Bytes Write Enable */
#define FLASH_CR_ERRIE ((uint16_t)0x0400) /* Error Interrupt Enable */
#define FLASH_CR_EOPIE ((uint16_t)0x1000) /* End of operation interrupt enable */