金牌会员
- 积分
- 2689
- 威望
- 1401
- 贡献
- 718
- 兑换币
- 877
- 注册时间
- 2014-7-1
- 在线时间
- 285 小时
|
/***FUNC+*********************************************************************/
/* Name : Flash_writeDATA16 */
/* Descrp : flash写入操作 */
/* Input : sectNo:目标扇区号 (K60N512实际使用0~255) */
/* offset:写入扇区内部偏移地址(0~2043) */
/* DATA :需要写入的数据 */
/* */
/***FUNC-*********************************************************************/
U8 Flash_writeDATA8(U16 sectNo,U16 offset,U8 DATA)
{
U32 destaddr;
union
{
U32 word;
U8 byte4[4];
} dest;
union
{
U32 Data;
U8 data[1];
} dest1;
if(offset%4 != 0)
return 1; //参数设定错误,偏移量未对齐(4字节对齐)//此处提示警告,但是安全的……
// 设置写入命令
destaddr = (U32)(sectNo*(1<<11) + offset);//计算地址
dest.word = destaddr;
dest1.Data = DATA;
// 设置目标地址
FTFL_FCCOB0 = PGM4;
FTFL_FCCOB1 = dest.byte4[2];
FTFL_FCCOB2 = dest.byte4[1];
FTFL_FCCOB3 = dest.byte4[0];
// 拷贝数据
{ //FTFL_FCCOB4 =dest1.data[3];
// FTFL_FCCOB5 =dest1.data[2];
FTFL_FCCOB7 =dest1.data[0];
if(1 == Flash_cmd_launch())
return 2; //写入命令错误
}
return 0; //成功执行
}
我这边只能看返回值 但是返回值总是错的 不知从哪里开始改?
zz = Flash_writeDATA8(255,0,123); zz我的定义是9 在线读也一直是9 求指导
|
|