本帖最后由 rtgchym 于 2013-12-16 13:39 编辑
深夜星空 发表于 2013-12-16 11:09 
还有个问题,每个地址,比如0x0801 FC00 对应的就是32位;0x0801 FC01 对应的也是32位,那地址偏移为什么 ... void Flash_Write( uint32_t WriteAddr, uint16_t *Flash_WriteBuff )
{
uint8_t i;
FLASH_Unlock();
FLASH_ClearFlag( FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR | FLASH_FLAG_EOP );
FLASH_ErasePage( 0x0801FC00 );
for( i = 0; i < 11; i++ )
{
WriteAddr += 2;
FLASH_ProgramHalfWord( WriteAddr, Flash_WriteBuff );
}
FLASH_Lock();
}
uint16_t FLASH_ReadHalfWord( uint32_t Flash_Addr )
{
return *(vu16*)Flash_Addr;
}
void FLASH_Read( uint32_t ReadAddr )
{
uint8_t i;
for( i = 0; i < 11; i++)
{
ReadAddr += 2;
Flash_ReadBuff = FLASH_ReadHalfWord(ReadAddr);
}
}
根据我以前的代码大致改了改,希望对你有用
|