首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

cw语法及flash擦除问题

cw语法及flash擦除问题

#define Program_Byte PGM[21]=0x20; temp =((unsigned char(*)(unsigned int, unsigned char))(PGM)),我在文档里面看到这行代码,((unsigned char(*)(unsigned int, unsigned char))(PGM)),但是对这个说明不太理解,请斑竹指点


其中 unsigned char PGM[]; unsigned char temp;

还有个问题,我想问问对gt60进行整体擦除时,整体擦除怎么传递擦除的地址?

[此贴子已经被作者于2006-9-26 12:40:15编辑过]

[此贴子已经被作者于2006-9-26 12:42:04编辑过]

CW_HCS08_Peripherals_Module_Quick_Reference_UG.pdf
HCS08QRUGSW
这个文档,多指教!

我谈谈我的理解,你帮我分析一下问题在哪里,好吗?
首先执行命令的那段代码,需要参数是flash地址address和写入的数据data,你看那个程序,
1 在进行页擦除时,仅给出了一个地址0xf000参数,数据0xff,并没有给阿,但运行程序看到结果是写进去的全是0xff;
2 在进行字节写入时,给出了一个地址参数,和一个数据参数
疑问:两种情况对应一段程序,这让我有点糊涂?

temp =((unsigned char(*)(unsigned int, unsigned char))(PGM))这个当中,我理解你看哪里有问题,第一个unsigned char表示返回类型,*表示该函数是一个指针类型,函数里面有两个参数,类型分别是unsigned int, unsigned char
疑问:PGM在这里在函数原形当中怎么理解呢?

还有一点,就是我试着将擦写命令换成整体擦除(mass erase),将PGM[21]=0x41,好像没起作用,就是我先写进去数据,然后执行整体擦除,查看存储单元内容,好像没有擦掉!这是什么原因呢?

[此贴子已经被作者于2006-9-26 19:34:27编辑过]

我增加了这么一条宏指令#define Mass_Erase PGM[21]=0x41; temp = ((unsigned char(*)(unsigned int))(PGM))
在程序当中最先执行一次整体擦除指令,这样是不成功的
temp = Mass_Erase(0xf600);
if(temp==0xFF){ //出错点亮led5
PTCD_PTCD5=1;
}
我试了先进行页擦除再进行整体擦除也是不成功的
好像是如果未对flash进行过写入数据的操作,是不能进行整体擦除操作的
不知道是什么原因
保护都解除了,有块保护的话,为什么能在写入字节以后,就可以进行整体擦除呢?
返回列表