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();