| | |
| | | * @retval 0:error; 1:success |
| | | */ |
| | | |
| | | |
| | | extern uint16_t testflag; |
| | | uint32_t FLASH_Prepare(uint32_t Address, uint32_t Len) //起始地址和字长 |
| | | {uint32_t PageError = 0; |
| | | FLASH_EraseInitTypeDef EraseInitStruct; |
| | |
| | | EraseInitStruct.NbPages = Len >>7; |
| | | // HAL_FLASH_Lock(); |
| | | if (HAL_FLASHEx_Erase(&EraseInitStruct, &PageError) != HAL_OK) |
| | | { |
| | | { |
| | | testflag=1; |
| | | HAL_FLASH_Lock(); |
| | | return 0; |
| | | |
| | | }else{ |
| | | testflag=0; |
| | | HAL_FLASH_Lock(); |
| | | return 1; |
| | | } |
| | |
| | | * @retval 0:error ; 1:success |
| | | */ |
| | | #define DATA_32 ((uint32_t)0x12345678) |
| | | uint32_t temp21; |
| | | uint32_t FLASH_Write( uint32_t Address, const uint8_t* pData, uint32_t Len) |
| | | { |
| | | uint32_t WriteCount = 0,temp; |
| | | uint32_t WriteCount = 0; |
| | | uint32_t FlashDestination = Address; |
| | | uint32_t FlashSource = (uint32_t)pData; |
| | | HAL_StatusTypeDef FLASHStatus = HAL_OK; |
| | |
| | | HAL_FLASH_Unlock(); |
| | | |
| | | for( ; WriteCount < Len; WriteCount+=4) |
| | | {temp=*(uint32_t*)FlashSource; |
| | | FLASHStatus = HAL_FLASH_Program(FLASH_TYPEPROGRAMDATA_WORD, FlashDestination, temp); |
| | | {temp21=*(uint32_t*)FlashSource; |
| | | FLASHStatus = HAL_FLASH_Program(FLASH_TYPEPROGRAMDATA_WORD, FlashDestination, temp21); |
| | | |
| | | if( FLASHStatus != HAL_OK) |
| | | { |