查看: 1159|回复: 0

ADI EVAL-ADuCM360QSPZ开发套件试用报告七(续)

[复制链接]

该用户从未签到

发表于 2018-8-17 15:27:07 | 显示全部楼层 |阅读模式
分享到:
上一篇写完了Flash的初始化子函数,那么接下来就要编写写入Flash的子函数和从闪存中读取的子函数。写入闪存的子函数代码如下。
void WriteToFlash(unsigned long *pArray, unsigned long ulStartAddress, unsigned int uiSize){   unsigned int uiPollFEESTA = 0;   volatile unsigned long *flashAddress;   unsigned int i = 0;      flashAddress = ( unsigned long *)ulStartAddress;   FeeWrEn(1);   uiPollFEESTA = FeeSta();                                                   for (i = 0; i < uiSize; i = i+4)   {       uiPollFEESTA = 0;      *flashAddress++  = *pArray++;      do         uiPollFEESTA = FeeSta();       while((uiPollFEESTA & FEESTA_CMDBUSY) == FEESTA_CMDBUSY);   }     FeeWrEn(0);     }这段代码的大致意思就是首先开允许写入,然后要确保阅读状态是被清除的,然后将数据写入指定的页面中,然后在失能写入到闪存的权限,这样写入闪存子函数就编写完成了。然后从闪存函数中读取数据,这个子函数相对来讲就比较简单了,代码先给出来。void ReadFromFlash(unsigned long *pArray, unsigned long ulStartAddress, unsigned int uiSize){   volatile unsigned long *flashAddress;   unsigned int i = 0;   flashAddress = ( unsigned long*)ulStartAddress;   for (i = 0; i < uiSize; i = i+4)   {      *pArray++ = *flashAddress++;   }}可以看出只是将写入闪存子函数中的一部分拿出来就完成了读取子函数的编写,代码也是很容易理解的,这里就不在啰嗦了。接下来还有一个中断子函数,在初始化子函数中已经将其使能。中断子函数就是等待闪存控制寄存器完成,然后在判忙一下就可以了,代码贴出来。void Ext_Int1_Handler (){              uiFEESTA = FeeSta();   while ((uiFEESTA & FEESTA_CMDBUSY) == FEESTA_CMDBUSY){      uiFEESTA = FeeSta();   }   FeeMErs();}
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条

手机版|小黑屋|与非网

GMT+8, 2024-4-19 21:59 , Processed in 0.115403 second(s), 17 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.