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

cw语法及flash擦除问题

哪个文档?
海纳百川  有容乃大
这个乍一看是很难理解,其实也不复杂。实际上,它是定义了一个名为Program_Byte的宏,而这个宏包含2个指令:一个指令是将数组PGM的第21个字节写为0x20;另一个指令是将数组PGM作为一个函数的入口地址进行调用。而数组PGM的内容,实际上就是一段对FLASH进行操作的程序的二进制代码。这段程序在数组的下面已经给出。可以看到,这段程序本身是需要参数的,所以在后面调用Program_Byte这个宏时,可以看到给了它两个参数。
海纳百川  有容乃大
第一个问题:
FLASH的擦除状态就是0xFF,不需要数据参数。
海纳百川  有容乃大
第二个问题:
在数组PGM所代表的程序中,实际上有两个参数,一个是Address,一个是Date。所以调用它时,可以给它两个参数。但擦除时不需要数据参数,所以只给一个参数也是可以的。当然,若擦除时若要给两个参数,也是可以的,但此时数据参数可以是任意值。
海纳百川  有容乃大
第三个问题:
你可以将此宏指令代入调用程序,这样可能更容易理解:

temp = PGM[21]=0x20;

temp =((unsigned char(*)(unsigned int, unsigned char))(PGM))(0xF000+i,i);

PGM就当成是一个函数的入口地址。
海纳百川  有容乃大
第四个问题:
整体擦除应该是可以的。不知你的程序什么地方有错,可以贴出来看看。
海纳百川  有容乃大
FLASH是否有块保护?
海纳百川  有容乃大
返回列表