标题:
C语言如何把函数指针参数传到宏定义开辟的空间呢?
[打印本页]
作者:
hei51com
时间:
2020-11-6 10:46
标题:
C语言如何把函数指针参数传到宏定义开辟的空间呢?
如下,想用#else 替换,但这样编译不通过,请教怎么修改才能编译通过。
typedef struct{
uint8 Address;
uint8 Top_data;
uint8 Middle_data;
uint8 Botton_data;
}RAM_TAB;
RAM_TAB *ram_ptr;
#define RESEVE_ADDR (0x8fb2600)//使用RESEVE保留的内存
typedef struct{
uint8 Address;
uint8 Top_data;
uint8 Middle_data;
uint8 Botton_data;
}ram_tab_t;
#define g_ram_tab_info ((ram_tab_t *)(RESEVE_ADDR))
int WriteRam(uint8 data_length, RAM_TAB *ram_address)
{
uint8 i,
#if 0
ram_ptr = ram_address;
#else
g_ram_tab_info = ram_address;
#endif
for(i = 0; i < data_length; i++)
{
#if 0
if(WriteReg(0x1d,&ram_ptr->Address,ADDR,2) != FALSE)
return -1;
if(WriteReg(0x10,&ram_ptr->Top_data,ADDR,2) != FALSE)
return -1;
if(WriteReg(0x11,&ram_ptr->Middle_data,ADDR,2) != FALSE)
return -1;
if(WriteReg(0x22,&ram_ptr->Botton_data,ADDR,2) != FALSE)
return -1;
ram_ptr++;
#else
if(WriteReg(0x1d,&g_ram_tab_info->Address,ADDR,2) != FALSE)
return -1;
if(WriteReg(0x10,&g_ram_tab_info->Top_data,ADDR,2) != FALSE)
return -1;
if(WriteReg(0x11,&g_ram_tab_info->Middle_data,ADDR,2) != FALSE)
return -1;
if(WriteReg(0x22,&g_ram_tab_info->Botton_data,ADDR,2) != FALSE)
return -1;
g_ram_tab_info++;
#endif
}
return 0;
}
复制代码
作者:
B001
时间:
2020-11-6 15:41
对于像STM32这种程序,你所定义的RESERVE_ADDR属于FLASH的地址范围,g_ram_tab_info代表的是一个FLASH地址,第28行g_ram_tab_info=ram_address是试图将FLASH的指改变,这是不允许的。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1