xad74 发表于 2012-9-20 16:38:57

GCC memcpy_P 与 memcpy的困惑

今天写个程序在FLASH中定义了个数组
const uchar SetInitDa ={30,24,2,204,20,0x33,0x03,0xCD,0x02,1};
然后又定义了个结构体
struct Set
{uchar   Mode1Time;                                                         //同步脉宽长度
uchar   Mode2Time;                                                         //非同步脉宽长度
uchar   FinMode;                                                         //触发模式
uchar   Mode1Da;                                                         //同步亮度
uchar   Mode2Da;                                                         //非同步亮度
uint    LmDa;                                                            //光控值
uint    OnOffDa;                                                         //光控区间值
uchar   LocAdd;                                                            //本机地址
uchar   D_NId;
uchar   SumDa;                                                             //数据校验
};

struct Set SetDa;

当有memcpy_P((uchar *)&SetDa,&SetInitDa,10);数值老是出错,
而用 memcpy((uchar *)&SetDa,&SetInitDa,10);时数值却是正确的,但在“库函数”里明明说
6.5.4Function 文件
6.5.4.1 void * memcpy_P(void * dest, PGM_VOID_P src, size_t n)
memcpy_P()函数类似于 memcpy(),只是 src 字符串位于程序存储器空间中。
不知何故????{:dizzy:}
页: [1]
查看完整版本: GCC memcpy_P 与 memcpy的困惑