#define FLASH_POWERDATA_ADDR ((uint32_t)0x0800E000) void Save_ConfigData(void) { FLASH_Unlock_Fast(); FLASH_ErasePage_Fast(FLASH_POWERDATA_ADDR); FLASH_BufReset(); FLASH_BufLoad(FLASH_POWERDATA_ADDR, (u32)ConfigInfo.iMaxVoltage, (u32)ConfigInfo.iMaxCurrent, (u32)ConfigInfo.iTime1, (u32)ConfigInfo.iTime2); FLASH_ProgramPage_Fast(FLASH_POWERDATA_ADDR); FLASH_Lock_Fast(); } void Read_ConfigData(void) { ConfigInfo.iMaxVoltage = *(u32 *)(FLASH_POWERDATA_ADDR); ConfigInfo.iMaxCurrent = *(u32 *)(FLASH_POWERDATA_ADDR+0x04); ConfigInfo.iTime1 = *(u32 *)(FLASH_POWERDATA_ADDR+0x08); ConfigInfo.iTime2 = *(u32 *)(FLASH_POWERDATA_ADDR+0x0C); if(0xFFFF == ConfigInfo.iMaxVoltage) { InitPowerInfo(); Save_ConfigData(); } }
一共就这几行代码,每次Read出来都是0XFFFF。 有没有跟ST-LINK Utility类似的工具啊,可以外部读取Flash内容,从而先确定是没写进去,还是读出问题了啊,函数接口又都是void类型,完全不知道问题出在哪里。