OpenEdv-开源电子网

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

FLASH程序中有段语句无法理解,求大神指点

[复制链接]

7

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2015-9-16
在线时间
10 小时
发表于 2015-9-18 17:32:22 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]void STMFLASH_Write(u32 WriteAddr,u32 *pBuffer,u32 NumToWrite) { FLASH_Status status = FLASH_COMPLETE; u32 addrx=0; u32 endaddr=0; if(WriteAddr<STM32_FLASH_BASE||WriteAddr%4)return; FLASH_Unlock(); FLASH_DataCacheCmd(DISABLE) addrx=WriteAddr; endaddr=WriteAddr+NumToWrite*4; if(addrx<0X1FFF0000) { while(addrx<endaddr) { if(STMFLASH_ReadWord(addrx)!=0XFFFFFFFF) { status=FLASH_EraseSector(STMFLASH_GetFlashSector(addrx),VoltageRange_3); if(status!=FLASH_COMPLETE)break; }else addrx+=4; } } 里面的 FLASH_Status status = FLASH_COMPLETE;这句该如何理解啊,想了半个小时想不通[/mw_shl_code]


最佳答案

查看完整内容[请看2#楼]

初始化而已啊。。。。 就跟你定义变量i=0初始化一样。。。 这个蛮好理解的。。。。 后面会设置status=FLASH_EraseSector()返回的值。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

230

主题

1950

帖子

10

精华

论坛元老

Rank: 8Rank: 8

积分
4562
金钱
4562
注册时间
2010-12-14
在线时间
32 小时
发表于 2015-9-18 17:32:23 | 显示全部楼层
初始化而已啊。。。。
就跟你定义变量i=0初始化一样。。。
这个蛮好理解的。。。。
后面会设置status=FLASH_EraseSector()返回的值。。。
我是开源电子网?网站管理员,对网站有任何问题,请与我联系!QQ:389063473Email:389063473@qq.com
回复

使用道具 举报

7

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2015-9-16
在线时间
10 小时
 楼主| 发表于 2015-9-19 15:00:14 | 显示全部楼层
回复【2楼】Admin:
---------------------------------
额,懂了,谢谢,
还有一个问题
if(addrx<0X1FFF0000) //只有主存储,才需要执行擦除工作!
关于这一条判断语句,假如FLASH不是1024K的容量也是应该如此判断吗?
还是要根据具体容量大小进行判断,假如是一个512K的只有前面8个扇区,是否应该以扇区8的起始地址0x08080000来判断?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-25 09:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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