107#define assert_param(expr) ((void)0)
118#define HAL_FLASH_MODULE_ENABLED
120#ifdef HAL_FLASH_MODULE_ENABLED
127#define SECTOR_MASK ((uint32_t)0xFFFFFF07U)
128#define FLASH_TIMEOUT_VALUE ((uint32_t)50000U)
188HAL_StatusTypeDef
HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data)
190 HAL_StatusTypeDef status = HAL_ERROR;
196 assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram));
205 case FLASH_TYPEPROGRAM_BYTE :
212 case FLASH_TYPEPROGRAM_HALFWORD :
219 case FLASH_TYPEPROGRAM_WORD :
226 case FLASH_TYPEPROGRAM_DOUBLEWORD :
239 FLASH->CR &= (~FLASH_CR_PG);
259 HAL_StatusTypeDef status = HAL_OK;
265 assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram));
268 __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP);
271 __HAL_FLASH_ENABLE_IT(FLASH_IT_ERR);
274 __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR |\
275 FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR| FLASH_FLAG_ERSERR);
282 case FLASH_TYPEPROGRAM_BYTE :
289 case FLASH_TYPEPROGRAM_HALFWORD :
296 case FLASH_TYPEPROGRAM_WORD :
303 case FLASH_TYPEPROGRAM_DOUBLEWORD :
324 FLASH->CR &= (~FLASH_CR_PG);
327 FLASH->CR &= (~FLASH_CR_SER);
328 FLASH->CR &= SECTOR_MASK;
331 FLASH->CR &= (~FLASH_MER_BIT);
334 if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP) != RESET)
337 __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP);
341 case FLASH_PROC_SECTERASE :
370 case FLASH_PROC_MASSERASE :
380 case FLASH_PROC_PROGRAM :
395 if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_ALL_ERRORS) != RESET)
399 case FLASH_PROC_SECTERASE :
406 case FLASH_PROC_MASSERASE :
412 case FLASH_PROC_PROGRAM :
434 __HAL_FLASH_DISABLE_IT(FLASH_IT_EOP);
437 __HAL_FLASH_DISABLE_IT(FLASH_IT_ERR);
506 if((FLASH->CR & FLASH_CR_LOCK) != RESET)
509 FLASH->KEYR = FLASH_KEY1;
510 FLASH->KEYR = FLASH_KEY2;
527 FLASH->CR |= FLASH_CR_LOCK;
538 if((FLASH->OPTCR & FLASH_OPTCR_OPTLOCK) != RESET)
541 FLASH->OPTKEYR = FLASH_OPT_KEY1;
542 FLASH->OPTKEYR = FLASH_OPT_KEY2;
559 FLASH->OPTCR |= FLASH_OPTCR_OPTLOCK;
571 FLASH->OPTCR |= FLASH_OPTCR_OPTSTRT;
633 while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY) != RESET)
647 if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_ALL_ERRORS) != RESET)
655 if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP) != RESET)
658 __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP);
681 assert_param(IS_FLASH_ADDRESS(Address));
684 FLASH->CR &= CR_PSIZE_MASK;
685 FLASH->CR |= FLASH_PSIZE_DOUBLE_WORD;
686 FLASH->CR |= FLASH_CR_PG;
688 *(__IO uint64_t*)Address = Data;
711 assert_param(IS_FLASH_ADDRESS(Address));
714 FLASH->CR &= CR_PSIZE_MASK;
715 FLASH->CR |= FLASH_PSIZE_WORD;
716 FLASH->CR |= FLASH_CR_PG;
718 *(__IO uint32_t*)Address = Data;
740 assert_param(IS_FLASH_ADDRESS(Address));
743 FLASH->CR &= CR_PSIZE_MASK;
744 FLASH->CR |= FLASH_PSIZE_HALF_WORD;
745 FLASH->CR |= FLASH_CR_PG;
747 *(__IO uint16_t*)Address = Data;
770 assert_param(IS_FLASH_ADDRESS(Address));
773 FLASH->CR &= CR_PSIZE_MASK;
774 FLASH->CR |= FLASH_PSIZE_BYTE;
775 FLASH->CR |= FLASH_CR_PG;
777 *(__IO uint8_t*)Address = Data;
790 if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPERR) != RESET)
795 if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) != RESET)
800 if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) != RESET)
805 if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGPERR) != RESET)
810 if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_ERSERR) != RESET)
815#if defined (FLASH_OPTCR2_PCROP)
816 if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) != RESET)
823 __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_ALL_ERRORS);
void HAL_FLASH_IRQHandler(void)
This function handles FLASH interrupt request.
__weak void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue)
FLASH operation error interrupt callback.
__weak void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue)
FLASH end of operation interrupt callback.
HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data)
Program byte, halfword, word or double word at a specified address with interrupt enabled.
HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data)
Program byte, halfword, word or double word at a specified address.
HAL_StatusTypeDef HAL_FLASH_OB_Launch(void)
Launch the option byte loading.
HAL_StatusTypeDef HAL_FLASH_Unlock(void)
Unlock the FLASH control register access.
HAL_StatusTypeDef HAL_FLASH_OB_Lock(void)
Lock the FLASH Option Control Registers access.
HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void)
Unlock the FLASH Option Control Registers access.
HAL_StatusTypeDef HAL_FLASH_Lock(void)
Locks the FLASH control register access.
uint32_t HAL_FLASH_GetError(void)
Get the specific FLASH error flag.
static void FLASH_Program_Word(uint32_t Address, uint32_t Data)
Program word (32-bit) at a specified address.
static void FLASH_Program_Byte(uint32_t Address, uint8_t Data)
Program byte (8-bit) at a specified address.
static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data)
Program a half-word (16-bit) at a specified address.
static void FLASH_SetErrorCode(void)
Set the specific FLASH error flag.
static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data)
Program a double word (64-bit) at a specified address.
HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout)
Wait for a FLASH operation to complete.
FLASH_ProcessTypeDef pFlash
void FLASH_Erase_Sector(uint32_t Sector, uint8_t VoltageRange)
Erase the specified FLASH memory sector.
Header file of FLASH HAL module.
Header file of FLASH HAL Extension module.
FLASH handle Structure definition
__IO uint32_t NbSectorsToErase
__IO uint8_t VoltageForErase
__IO FLASH_ProcedureTypeDef ProcedureOnGoing