Flash status register (FLASH_SR)

Регистр состояния flash-памяти

Смещение (Address offset): 0x0C

Reset value: 0x0000'0000

3130292827262524
Reserved
------------------------
00000000
2322212019181716
Reserved
------------------------
00000000


15141312111098
Reserved
------------------------
00000000
76543210
Reserved EOP WRPRTERR Reserved PGERR Reserved BSY
------rrw--rw---r
00000000


Bits 31:6
Reserved
Must be kept at cleared
Зарезервировано. Должно быть всегда установлено в 0
Bit 5
EOP
End of operation
Завершение операции

Устанавливается аппаратно по завершении операции перепрошивки (программирование или стирание). Сбрасывается программно записью "1".

Устанавливается в конце каждой успешной операции.

Bit 4
WRPRTERR
Write protection error
Ошибка при защите от записи

Устанавливается аппаратно при попытке записи по адресу флэш-памяти, защищенного от записи. Сбрасывается программно записью "1".

Bit 3
Reserved
Must be kept at cleared
Зарезервировано. Должно быть всегда установлено в 0
Bit 2
PGERR
Programming error

Устанавливается аппаратно, если адрес, который необходимо запрограммировать, содержит значение, отличное от '0xFFFF' перед программированием. Сбрасывается программно записью "1".

Бит STRT в регистре FLASH_CR должен быть сброшен перед началом операции программирования.

Bit 1
Reserved
Must be kept at cleared
Зарезервировано. Должно быть всегда установлено в 0
Bit 0
BSY
Busy
Занято

Указывает, что выполняется операция перепрошивки. Устанавливается аппаратно в начале операции перепрошивки и сбрасывается аппаратно по завершении операции или при возникновении ошибки.



//-  stm32F10x.h

/******************  Bit definition for FLASH_SR register  *******************/
#define  FLASH_SR_BSY         ((uint8_t)0x01)    /* Busy */
#define  FLASH_SR_PGERR       ((uint8_t)0x04)    /* Programming Error */
#define  FLASH_SR_WRPRTERR    ((uint8_t)0x10)    /* Write Protection Error */
#define  FLASH_SR_EOP         ((uint8_t)0x20)    /* End of operation */

//-  stm32f10x_flash.h

typedef enum
{ 
  FLASH_BUSY      = 1,
  FLASH_ERROR_PG,
  FLASH_ERROR_WRP,
  FLASH_COMPLETE,
  FLASH_TIMEOUT
}FLASH_Status;

#define FLASH_FLAG_BSY        ((uint32_t)0x00000001)    /* FLASH Busy flag */
#define FLASH_FLAG_PGERR      ((uint32_t)0x00000004)    /* FLASH Program error flag */
#define FLASH_FLAG_WRPRTERR   ((uint32_t)0x00000010)    /* FLASH Write protected error flag */
#define FLASH_FLAG_EOP        ((uint32_t)0x00000020)    /* FLASH End of Operation flag */