首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

读取单片机内flash里的字符串,该如何处理

2013-03-01 
读取单片机内flash里的字符串现写一个程序,用到读取flash内的字符数组。将flash里的chSrc[128]读到DOT[128]

读取单片机内flash里的字符串
现写一个程序,用到读取flash内的字符数组。
将flash里的chSrc[128]读到DOT[128]中使用。
当前代码是


__flash unsiged char chSrc[128];  //已定义
......

void ReadMem()
{
  unsiged char CtI;
  unsiged char DOT[128];
  for(CtI=0; CtI<12; CtI++)
  {
    DOT[CtI]=chSrc[CtI];
  }
  ......
}

使用memcpy()可以在内存中复制数据,不能复制flash中的数据。

这么写memcpy(DOT,chSrc,128);
报错“Error[Pe167]: argument of type "unsigned char __flash *" is incompatible with parameter of type "void const *" E:\工作\Source\LcdDriver.c 229 ”

问题,该怎么写才能用memcpy或类似的函数完成此功能?
chSrc[128]是一个比较大的字符数组,只能放在flash里不能预置到内存里。 flash c 单片机
[解决办法]
1. FLASH操作有page限制。或者一次性操作容量限制。
2. FLASH操作有专用指令。一般的芯片供应商提供的操作方式和一般的内存是不同的。
3. 需要自行建立专用函数,实现FLASH读写功能。然后传递到标准函数输入端。

[解决办法]
强制类型转换试过么?

热点排行