OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3541|回复: 2

FLASH模拟EEPROM写数据写到一半出错是什么问题?

[复制链接]

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2015-8-3
在线时间
7 小时
发表于 2015-8-11 17:11:01 | 显示全部楼层 |阅读模式
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擦除也都成功的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2015-8-3
在线时间
7 小时
 楼主| 发表于 2015-8-11 17:11:02 | 显示全部楼层
已解决,换了个后面的地址就行了。但不知道为什么。我看之前定义的地址命名都是空的,FLASH擦除也都成功的
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-11 22:44:33 | 显示全部楼层
帮顶....
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-23 04:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表