file:///C:UsersxgAppDataRoamingTencentUsers764017114QQWinTempRichOleGJM}NW1~QCP]0UYXM4S@$OT.pngfile:///C:UsersxgAppDataRoamingTencentUsers764017114QQWinTempRichOleGJM}NW1~QCP]0UYXM4S@$OT.png写入不成功,读出来的全是空的
#define MAIN_USER_RESET_ADDR 0x9A00ul // app 地址
u16 McuDataStartAddressValue =MAIN_USER_RESET_ADDR;
Iap_To_Write_AppBin(McuDataStartAddressValue,RecCartVaildDataBuffer,RecFileVaildDataTotalLength);
McuDataStartAddressValue+=1024;
void Iap_To_Write_AppBin(u16 Faddress, u8 *pufdata,u16 puflength)
{
u16 ubBuffPtr =0;
FLASH_Unlock(FLASH_MEMTYPE_PROG);
for(ubBuffPtr = 0; ubBuffPtr < puflength; ubBuffPtr++)
{
FLASH_EraseByte(Faddress+ubBuffPtr);
FLASH_ProgramByte((u32)(Faddress+ubBuffPtr), pufdata[ubBuffPtr]);
}
FLASH_Lock(FLASH_MEMTYPE_PROG);
}
void FLASH_ProgramByte(u32 Address, u8 Data)
{
/* Check parameters */
assert_param(IS_FLASH_ADDRESS_OK(Address));
*((PointerAttr u8*) Address) = Data;
}
void FLASH_EraseByte(u32 Address)
{
/* Check parameter */
//assert_param(IS_FLASH_ADDRESS_OK(Address));
/* Erase byte */
*(PointerAttr u8*) (u16)Address = FLASH_CLEAR_BYTE;
}
/**
* @}
为什么请大神指导 ,STTOOL 工具读出来的9A00之后都没有数据。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
stm8本身支持3种Flash编程模式
1.字编程模式,可以按一个字来写入,写入前自动执行擦除无需写代码处理的。
2.块编程模式,也是硬件自动擦除,但是以块为单位写入(具体块大小要按型号容量不同有区分,其实主要是影响写入速度而已),关键是块编程模式时不能执行Flash内的代码,写入相关的函数代码必须全部加载到RAM来执行。
3.快块编程模式写入时不自动执行擦除动作,需要写入前执行你写的擦除指定块代码,所以写入速度比块编程模式更快(但同一地址如果没有擦除执行两次写入不同数据将导致数据错误),执行时对Flash操作的代码也必须先加载到RAM来执行。
看你上面的代码里并没发现有设置Flash编程模式的语句命令。
一周热门 更多>