程序的问题出在参数传递上。当调用函数IFsh1_SetByteFlash时,你用的格式是:
IFsh1_SetByteFlash(0xC000,PassWordDef[0]);
同时,你可以看到函数IFsh1_SetByteFlash的格式为:
byte IFsh1_SetByteFlash(word Addr,byte Data)
{
return NonDestructiveUnsecureWrite((word )&Data,Addr,0x06); /* Write data to the flash */
}
所以,实际上在你调用函数IFsh1_SetByteFlash时,只是将一个数组元素的值传过来,它的真正地址值并没有传过来。用(word )&Data解析出的地址值是错误的。因此,你一次写6的数只有第一个是正确的。
如果要正确地一次写入6个字节,就必须将真正的地址值传过来。试试看吧,相信你能做到。 |