结构链表存储在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]