void Flash(uint32_t address, uint32_t data, uint16_t datasize, char operation){ if(operation == 1){ HAL_FLASH_Unlock(); EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES; EraseInitStruct.PageAddress = address; EraseInitStruct.NbPages = 1U; if (HAL_FLASHEx_Erase(&EraseInitStruct, &SectorError) != HAL_OK){ Error_Handler(); } addressNew = address; //while (Address < SECTOR_63){ if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, addressNew, data) == HAL_OK){ addressNew = addressNew + 4; } else { Error_Handler(); } //} HAL_FLASH_Lock(); DATA_READ = *(__IO uint32_t*)addressNew; if(DATA_READ == data){ GPIOA->BSRR = DE_Pin; char msg[9] = {"Flash OK"}; HAL_UART_Transmit(&huart2, (uint8_t *)&msg, sizeof(msg), 0xFFFF); GPIOA->BRR = DE_Pin; } else{ GPIOA->BSRR = DE_Pin; uint8_t msg[datasize]; for(int i = 0; i> 24; msg[1] = DATA_READ >> 16; msg[2] = DATA_READ >> 8; msg[3] = DATA_READ; HAL_UART_Transmit(&huart2, (uint8_t *)&msg, sizeof(msg), 0xFFFF); GPIOA->BRR = DE_Pin; } } else{ DATA_READ = *(__IO uint32_t*)address; GPIOA->BSRR = DE_Pin; uint8_t msg[4] = {0,0,0,0}; msg[0] = DATA_READ >> 24; msg[1] = DATA_READ >> 16; msg[2] = DATA_READ >> 8; msg[3] = DATA_READ; HAL_UART_Transmit(&huart2, (uint8_t *)&msg, sizeof(msg), 0xFFFF); GPIOA->BRR = DE_Pin; } }