Board logo

标题: 请教FLASH读写操作及程序下载问题~! [打印本页]

作者: luojun2005    时间: 2008-9-25 19:27     标题: 请教FLASH读写操作及程序下载问题~!

最近过FLASH读写操作进行数据的整体擦除和读写操作时,遇到了不能对非直接页进行整体擦除各写入的问题.想了很多办法都还没能解决.主要因为在进行PPAGE操作时程序就跑飞了.以下是FLASH读写的公共操作. 我把整体程序传上来

大家看看吧.
void Erase_Write_Pretreat(INT8U page)
{
INT8U i,j;
//1 判断是否设置时钟分频,若无分频,则先分频
if ((FCLKDIV&0x80) == 0) FCLKDIV |= 0x60;
//2 清保护错误和访问错误标志位
FCNFG |= 0x01; //FCNFG的第0位置1,选择BLOCK1
FSTAT |= 0x30; //清保护错误和访问错误标志位
FCNFG &= 0xFE; //FCNFG的第0位置0,选择BLOCK0
FSTAT |= 0x30; //清保护错误和访问错误标志位
//3 查表、选择块号,如果页号不为0就设置页寄存器
if (page != 0)
{
for (i = 0;i < 2;i++)
{
for (j = 0;j < 4;j++)
{
if (page == pagetable[j])
break;
}
if (j < 4)
break;
}
if (i == 0) FCNFG &= 0xFE; //页号3C~3F,选择BLOCK0
if (i == 1) FCNFG |= 0x01; //页号38~3B,选择BLOCK1
PPAGE = page; //设置页寄存器 程序走到这里就飞了


}


}

fPxMAxwo.rar (384.19 KB)

[此贴子已经被作者于2008-9-25 19:27:20编辑过]



附件: [请教FLASH读写操作及程序下载问题~!] fPxMAxwo.rar (2008-9-25 19:09, 384.19 KB) / 下载次数 340
http://bbs.eccn.com/attachment.php?aid=5166&k=57079c40d72c22ff38f18c82c1a05060&t=1732386174&sid=oJ5jSg
作者: luojun2005    时间: 2008-9-25 19:30

这个程序也是<<嵌入式系统--使用HCS12微控制器的设计与应用>>中的例子~~

强烈推荐这本书哦~!


作者: strongchen    时间: 2008-9-26 12:22

那PPAGE的值肯定有问题。
作者: luojun2005    时间: 2008-9-26 12:51

当 FCNFG |= 0x01选择块1的时候,PPAGE的值就在0X38-OX3B中选的.如果不是这样的话那我应该怎么选择块和设置相应的PPAGE呢?

谢谢strongchen~!


作者: luojun2005    时间: 2008-9-28 08:36

strongchen 康 需要你们的班助!!!来看看吧?


作者: vdio    时间: 2008-10-14 11:23

当你写PPAGE寄存器的时候,程序指针PC就直接跳到相应的页了!!因为在那个FLASH页里是么都没有,所以程序跑飞回不来了!!


作者: 蛮子归来    时间: 2008-10-16 22:46

关注楼主的进度ing。。。。

[em07][em07]
作者: luojun2005    时间: 2008-11-12 22:00

大家好,最近遇到些事情.好长时间没来和大家学习了.

上面的问题已经解决了.只在把要操作的PPAGE的那段程序自己定义到一个固定的地址就OK了.如#pragma CODE_SEG NON_BANKED.当然也可以自己定义一段地址来放.






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0