1#include "general_flash.h" 
    2FLASH_EraseInitTypeDef EraseInitStruct;
 
    3extern HAL_StatusTypeDef res_hal;
 
    6uint32_t PAGE_NUMB = 127;
 
   10HAL_StatusTypeDef FLASH_Write_Data(uint32_t* Address, uint8_t* Data, 
int Data_size)
 
   12  HAL_StatusTypeDef res_hal;
 
   19  res_hal = HAL_FLASH_Unlock();
 
   20  if (res_hal != HAL_OK) 
return res_hal;
 
   22  for (adr = *Address; adr < *Address + Data_size; adr = adr + 4)
 
   28      Data[data_cnt + 1] << 8 |
 
   29      Data[data_cnt + 2] << 16 |
 
   30      Data[data_cnt + 3] << 24);
 
   32    res_hal = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, adr, word_data);
 
   34    if (res_hal != HAL_OK) 
return res_hal;
 
   39  *Address += Data_size;
 
   40  res_hal = HAL_FLASH_Lock();
 
   47HAL_StatusTypeDef FLASH_Enable_DualBankMode(
void)
 
   49  HAL_StatusTypeDef res_hal;
 
   50  FLASH_AdvOBProgramInitTypeDef OB_DualBank;
 
   53  res_hal = HAL_FLASH_Unlock();
 
   54  if (res_hal != HAL_OK) 
 
   57  res_hal = HAL_FLASH_OB_Unlock();
 
   58  if (res_hal != HAL_OK) 
 
   62  FLASH->OPTCR |= FLASH_OPTCR_DB1M;
 
   64  res_hal = HAL_FLASH_OB_Launch();
 
   65  if (res_hal != HAL_OK) 
 
   68  res_hal = HAL_FLASH_OB_Lock();
 
   69  if (res_hal != HAL_OK) 
 
   72  res_hal = HAL_FLASH_Lock();
 
   73  if (res_hal != HAL_OK) 
 
   83HAL_StatusTypeDef FLASH_WriteProtection(uint32_t BankN, uint32_t WriteProtection)
 
   85  HAL_StatusTypeDef res_hal;
 
   86  FLASH_OBProgramInitTypeDef OBInit;
 
   89  FLASH->SR |= FLASH_FLAG_WRPERR  
 
   94  res_hal = HAL_FLASH_Unlock();
 
   95  if (res_hal != HAL_OK) 
 
   98  res_hal = HAL_FLASH_OB_Unlock(); 
 
   99  if (res_hal != HAL_OK) 
 
  103  HAL_FLASHEx_OBGetConfig(&OBInit);
 
  106  OBInit.OptionType = OPTIONBYTE_WRP;
 
  107  OBInit.WRPState = WriteProtection; 
 
  108  OBInit.WRPSector = OB_WRP_SECTOR_12; 
 
  109  OBInit.Banks = BankN; 
 
  110  res_hal = HAL_FLASHEx_OBProgram(&OBInit);
 
  111  if (res_hal != HAL_OK) 
 
  115  res_hal = HAL_FLASH_OB_Launch();
 
  116  if (res_hal != HAL_OK) 
 
  120  HAL_FLASHEx_OBGetConfig(&OBInit);
 
  123  res_hal = HAL_FLASH_OB_Lock(); 
 
  124  if (res_hal != HAL_OK) 
 
  127  res_hal = HAL_FLASH_Lock();
 
  128  if (res_hal != HAL_OK) 
 
  135uint8_t FLASH_Read_Byte(uint32_t add)
 
  137  return (*(__IO uint8_t*)(add));
 
  139uint16_t FLASH_Read_HalfWord(uint32_t add)
 
  141  return (*(__IO uint16_t*)(add));
 
  143uint32_t FLASH_Read_Word(uint32_t add)
 
  145  return (*(__IO uint32_t*)(add));
 
  148HAL_StatusTypeDef FLASH_Write_Byte(uint32_t Address, uint8_t Data)
 
  150  HAL_StatusTypeDef res_hal;
 
  152  res_hal = HAL_FLASH_Unlock();
 
  154  if (res_hal != HAL_OK) 
return res_hal;
 
  156  res_hal = HAL_FLASH_Program(FLASH_TYPEPROGRAM_BYTE, Address, (uint8_t)(Data));
 
  158  if (res_hal != HAL_OK) 
return res_hal;
 
  160  res_hal = HAL_FLASH_Lock(); 
 
  163HAL_StatusTypeDef FLASH_Write_HalfWord(uint32_t Address, uint16_t Data)
 
  165  HAL_StatusTypeDef res_hal;
 
  167  res_hal = HAL_FLASH_Unlock();
 
  169  if (res_hal != HAL_OK) 
return res_hal;
 
  171  res_hal = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, Address, (uint16_t)(Data));
 
  173  if (res_hal != HAL_OK) 
return res_hal;
 
  175  res_hal = HAL_FLASH_Lock(); 
 
  178HAL_StatusTypeDef FLASH_Write_Word(uint32_t Address, uint32_t Data)
 
  180  HAL_StatusTypeDef res_hal;
 
  182  res_hal = HAL_FLASH_Unlock();
 
  183  if (res_hal != HAL_OK) 
return res_hal;
 
  185  res_hal = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address, (uint32_t)(Data)); 
 
  186  if (res_hal != HAL_OK) 
return res_hal;
 
  188  res_hal = HAL_FLASH_Lock();