87#ifdef HAL_FLASH_MODULE_ENABLED
94#define FLASH_TIMEOUT_VALUE 50000U
105 .NbSectorsToErase = 0U,
108 .Bank = FLASH_BANK_1,
121static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data);
122static void FLASH_Program_Word(uint32_t Address, uint32_t Data);
123static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data);
124static void FLASH_Program_Byte(uint32_t Address, uint8_t Data);
125static void FLASH_SetErrorCode(
void);
179 FLASH_Program_Byte(Address, (uint8_t) Data);
184 FLASH_Program_HalfWord(Address, (uint16_t) Data);
189 FLASH_Program_Word(Address, (uint32_t) Data);
194 FLASH_Program_DoubleWord(Address, Data);
201 FLASH->CR &= (~FLASH_CR_PG);
238 FLASH_Program_Byte(Address, (uint8_t) Data);
243 FLASH_Program_HalfWord(Address, (uint16_t) Data);
248 FLASH_Program_Word(Address, (uint32_t) Data);
253 FLASH_Program_DoubleWord(Address, Data);
265 uint32_t addresstmp = 0U;
268#if defined(FLASH_SR_RDERR)
279 addresstmp = pFlash.
Sector;
280 pFlash.
Sector = 0xFFFFFFFFU;
285 addresstmp = pFlash.
Bank;
294 FLASH_SetErrorCode();
317 addresstmp = pFlash.
Sector;
323 addresstmp = pFlash.
Sector;
330 pFlash.
Sector = addresstmp = 0xFFFFFFFFU;
364 CLEAR_BIT(FLASH->CR, (FLASH_CR_PG | FLASH_CR_SER | FLASH_CR_SNB | FLASH_MER_BIT));
436 if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET)
443 if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET)
459 FLASH->CR |= FLASH_CR_LOCK;
470 if ((FLASH->OPTCR & FLASH_OPTCR_OPTLOCK) != RESET)
491 FLASH->OPTCR |= FLASH_OPTCR_OPTLOCK;
553 uint32_t tickstart = 0U;
568 if ((Timeout == 0U) || ((
HAL_GetTick() - tickstart) > Timeout))
581#if defined(FLASH_SR_RDERR)
590 FLASH_SetErrorCode();
611static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data)
617 CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE);
619 FLASH->CR |= FLASH_CR_PG;
622 *(__IO uint32_t *)Address = (uint32_t)Data;
629 *(__IO uint32_t *)(Address + 4) = (uint32_t)(Data >> 32);
645static void FLASH_Program_Word(uint32_t Address, uint32_t Data)
651 CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE);
653 FLASH->CR |= FLASH_CR_PG;
655 *(__IO uint32_t *)Address = Data;
670static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data)
676 CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE);
678 FLASH->CR |= FLASH_CR_PG;
680 *(__IO uint16_t *)Address = Data;
695static void FLASH_Program_Byte(uint32_t Address, uint8_t Data)
701 CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE);
703 FLASH->CR |= FLASH_CR_PG;
705 *(__IO uint8_t *)Address = Data;
712static void FLASH_SetErrorCode(
void)
745#if defined(FLASH_SR_RDERR)
#define IS_FLASH_ADDRESS(ADDRESS)
void FLASH_FlushCaches(void)
void FLASH_Erase_Sector(uint32_t Sector, uint8_t VoltageRange)
#define FLASH_VOLTAGE_RANGE_1
#define HAL_FLASH_ERROR_WRP
#define HAL_FLASH_ERROR_RD
#define HAL_FLASH_ERROR_PGP
#define HAL_FLASH_ERROR_PGS
#define HAL_FLASH_ERROR_PGA
#define HAL_FLASH_ERROR_NONE
#define HAL_FLASH_ERROR_OPERATION
void HAL_FLASH_IRQHandler(void)
void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue)
void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue)
HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data)
HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data)
HAL_StatusTypeDef HAL_FLASH_OB_Launch(void)
HAL_StatusTypeDef HAL_FLASH_Unlock(void)
HAL_StatusTypeDef HAL_FLASH_OB_Lock(void)
HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void)
HAL_StatusTypeDef HAL_FLASH_Lock(void)
uint32_t HAL_FLASH_GetError(void)
HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout)
#define __HAL_FLASH_GET_FLAG(__FLAG__)
Get the specified FLASH flag status.
#define __HAL_FLASH_ENABLE_IT(__INTERRUPT__)
Enable the specified FLASH interrupt.
#define __HAL_FLASH_DISABLE_IT(__INTERRUPT__)
Disable the specified FLASH interrupt.
#define __HAL_FLASH_CLEAR_FLAG(__FLAG__)
Clear the specified FLASH flags.
#define FLASH_FLAG_PGSERR
#define FLASH_FLAG_PGAERR
#define FLASH_FLAG_WRPERR
#define FLASH_FLAG_PGPERR
#define IS_FLASH_TYPEPROGRAM(VALUE)
#define OPTCR_BYTE0_ADDRESS
OPTCR register byte 0 (Bits[7:0]) base address.
#define FLASH_PSIZE_DOUBLE_WORD
#define FLASH_PSIZE_HALF_WORD
#define FLASH_TYPEPROGRAM_HALFWORD
#define FLASH_TYPEPROGRAM_BYTE
#define FLASH_TYPEPROGRAM_WORD
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
#define assert_param(expr)
This file contains all the functions prototypes for the HAL module driver.
HAL_StatusTypeDef
HAL Status structures definition.
#define __HAL_UNLOCK(__HANDLE__)
#define __HAL_LOCK(__HANDLE__)
FLASH handle Structure definition.
volatile uint32_t NbSectorsToErase
volatile FLASH_ProcedureTypeDef ProcedureOnGoing
volatile uint32_t Address
volatile uint32_t ErrorCode
volatile uint8_t VoltageForErase