代码如下:
[C] 纯文本查看 复制代码 /*******************************************************************************************
* @brief This function writes a data buffer in flash (data are 32-bit aligned).
* @note Buff size 必须4字节对齐
* @param FlashAddress: start address for writing data buffer
* @param Data: pointer on data buffer
* @param DataLength: length of data buffer (unit is 32-bit word)
*****************************************************************************************/
Func_Status BSP_FLASH_Write(uint32_t FlashAddress, void *pBuffer , uint32_t WordLength)
{
Func_Status ret = Ret_OK;
if((FlashAddress < APP_START_ADDR) || (FlashAddress > FLASH_END_ADDR))
{
ret = Ret_PARAM_ERR;
return ret;
}
HAL_FLASH_Unlock();
for (int i = 0; i < WordLength; i+=8)
{
if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_FLASHWORD, FlashAddress, ((uint32_t)(pBuffer+i))) == HAL_OK)
{
FlashAddress += 32;
}
else
{
ret = Ret_ERROR;
}
}
HAL_FLASH_Lock();
return ret;
}
|