pigy0754 发表于 2013-4-24 22:12:32

结构链表存储在AVR的程序存储器中的疑问

大家好,刚使用AVR的芯片,把以前的程序移植过来。
但是有点疑问:AVR存在程序存储区的常量,没法像RAM中的一样直接用指针访问么(但RAM又不够用,只好将链表存在ROM中。)?如果要实现如下功能要怎么办呢?谢谢!
程序中有如下链表常数
extern void func1(void);
extern void func2(void);
......
extern void func10(void);

typedef struct _node
{
      char   val;
   void(*func)(void);
   node*next;
}node;

/* 以下结构存在程序存储区 */
const nodetmp1 = {1,func1, &tmp2};
const node tmp2 = {2, func2,&tmp3};
...............
const node tmp10 = {10,func10, NULL };

const char cstr = "abcdefghijk.......";

void main(void)
{
      node *p = tmp2;
      char*pchar = cstr;
      char tmp;

   p->func();    //这样可以么???

   tmp = *pchar++;    //这样可以么???
   tmp = *pchar++;    //这样可以么???
}

还有一个问题,就是如果我定义多个大数组如下:
const char a;
const char b;
const char c;
我想让上面的几个数组在编译时,固定在ROM的指定位置如:0x0080开始的地址上。要如何操作呢?谢谢!
页: [1]
查看完整版本: 结构链表存储在AVR的程序存储器中的疑问