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]