gateway_mcu/CH32V303-FreeRTOS/App/hardwareDriver/Src/HD_Flash.c

61 lines
1.2 KiB
C
Raw Normal View History

/*
* Flash.c
*
* Created on: 2024<EFBFBD><EFBFBD>5<EFBFBD><EFBFBD>16<EFBFBD><EFBFBD>
* Author: 34509
*/
#include "HD_Flash.h"
#include "pDebug.h"
uint8_t readFlash(uint32_t* pBuffer,uint32_t ReadAddr,uint16_t dataLen)
{
for (int i = 0; i < dataLen; i++) {
*(pBuffer + i) = *(uint32_t*)(ReadAddr + 4 * i);
}
return 1;
}
/*
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>flash<EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><EFBFBD>WriteAddr<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊij<EFBFBD><EFBFBD>ҳ<EFBFBD>Ŀ<EFBFBD>ͷ
* @param pBuffer Ҫд<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WriteAddr Ҫд<EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ
NumByteToWrite Ҫд<EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>
* @retval
*
*/
uint8_t writeFlash(uint32_t* pBuffer,uint32_t WriteAddr, uint16_t NumByteToWrite)
{
/* <20><><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ */
int ret = FLASH_ROM_ERASE(WriteAddr, 256);
if (ret != FLASH_COMPLETE) {
return 0;
}
uint32_t buf[64] = {0};
memcpy(buf, pBuffer, (NumByteToWrite / 4));
ret = FLASH_ROM_WRITE(WriteAddr, buf, 256);
if (ret != FLASH_COMPLETE) {
return 0;
}
// FLASH_Unlock();
// for (int i = 0; i < NumByteToWrite; i++) {
// ret = FLASH_ProgramOptionByteData((uint32_t)((uint8_t *)WriteAddr + 1), *(pBuffer + i));
// if (ret != FLASH_COMPLETE) {
// FLASH_Lock();
// return 0;
// }
// }
// FLASH_Lock();
return 1;
}