读取单片机内flash里的字符串

baoyz 2013-02-22 09:57:10
现写一个程序,用到读取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里不能预置到内存里。
...全文
747 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
baoyz 2013-02-27
  • 打赏
  • 举报
回复
转不了。里外都转过。改定义类也试过了。
lbing7 2013-02-25
  • 打赏
  • 举报
回复
强制类型转换试过么?
baoyz 2013-02-23
  • 打赏
  • 举报
回复
引用 1 楼 duojinian 的回复:
1. FLASH操作有page限制。或者一次性操作容量限制。 2. FLASH操作有专用指令。一般的芯片供应商提供的操作方式和一般的内存是不同的。 3. 需要自行建立专用函数,实现FLASH读写功能。然后传递到标准函数输入端。
我用的是ATmega32A型的CPU,请教我该用什么命令比较好呢? 我现在用的是for循环,要是操作命令太复杂了。还不如不换了。这才是问题。
DISINHUI 2013-02-23
  • 打赏
  • 举报
回复
1. FLASH操作有page限制。或者一次性操作容量限制。 2. FLASH操作有专用指令。一般的芯片供应商提供的操作方式和一般的内存是不同的。 3. 需要自行建立专用函数,实现FLASH读写功能。然后传递到标准函数输入端。

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧