初级会员

- 积分
- 59
- 金钱
- 59
- 注册时间
- 2015-8-3
- 在线时间
- 7 小时
|
5金钱
参考原子兄的程序改的
主要函数如下:
if (!FLASH_Write_Data(secpos*STM_SECTOR_SIZE+STM32_FLASH_BASE,STMFLASH_BUF,STM_SECTOR_SIZE/2))
{//写入更新的缓冲区
return false;
}
bool FLASH_Write_Data(u32 WriteAddr,u16 *pBuffer,u16 nLen)
{
u16 i;
volatile u8 temp=0;
for(i=0;i<nLen;i++)
{
if (FLASH_ProgramHalfWord(WriteAddr,pBuffer)!=FLASH_COMPLETE)
{
continue;
}
WriteAddr+=2;//地址增加2.
}
return true;
}
问题如下:
WriteAddr=0x802000;
nLen=0x400;
写之前检查过了,待写入的页面全为FFFF
问题是当写到i=0x24D的时候,就直接返回继续执行FLASH_Write_Data函数了。
但是我如果在i=0x24D的时候单步执行进入FLASH_ProgramHalfWord子函数,再跳出来就可以继续了?只要不进FLASH_ProgramHalfWord就出错,前面那些写进去的数据也都正取。
请问这可能是什么问题?
|
最佳答案
查看完整内容[请看2#楼]
已解决,换了个后面的地址就行了。但不知道为什么。我看之前定义的地址命名都是空的,FLASH擦除也都成功的
|