|
大家好,刚使用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 node tmp1 = {1,func1, &tmp2};
const node tmp2 = {2, func2,&tmp3};
...............
const node tmp10 = {10,func10, NULL };
const char cstr[100] = "abcdefghijk.......";
void main(void)
{
node *p = tmp2;
char *pchar = cstr;
char tmp;
p->func(); //这样可以么???
tmp = *pchar++; //这样可以么???
tmp = *pchar++; //这样可以么???
}
还有一个问题,就是如果我定义多个大数组如下:
const char a[200];
const char b[200];
const char c[300];
我想让上面的几个数组在编译时,固定在ROM的指定位置如:0x0080开始的地址上。要如何操作呢?谢谢!
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|