请问 用 const 和 __flash定义变量有什么区别(在IAR中)?
请问 用 const 和 __flash定义变量有什么区别(在IAR中)?如:
const unsigned char huan[]={
0x04,0x34,0xC4,0x04,0xC4,0x3C,0x20,0x10,
0x0F,0xE8,0x08,0x08,0x28,0x18,0x00,0x00,
0x10,0x08,0x06,0x01,0x82,0x8C,0x40,0x30,
0x0C,0x03,0x0C,0x10,0x60,0xC0,0x40,0x00};
和
__flash unsigned char huan[]={
0x04,0x34,0xC4,0x04,0xC4,0x3C,0x20,0x10,
0x0F,0xE8,0x08,0x08,0x28,0x18,0x00,0x00,
0x10,0x08,0x06,0x01,0x82,0x8C,0x40,0x30,
0x0C,0x03,0x0C,0x10,0x60,0xC0,0x40,0x00};
是否都定义在 flash区啊?
谢谢 咋没人说的?
我定义的__flash 类型数组,在函数中不能当实参传递,而const却可以
不知道为什么? 我也想知道啊 ! const 在SRAM和FLASH中
__flash 仅在FLASH中 如定义:
const unsigned char tanhao[]={0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00};
函数:void byte_disp(unsigned char pag, unsigned char row, const unsigned char *bytek)
则 tanhao 可以作为该函数的第三个参数传递
但__flash unsigned char tanhao[]={0x00,0x00,0x00,0xf8,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00};
函数:void byte_disp(unsigned char pag, unsigned char row, __flash unsigned char *bytek)
则 tanhao 不能作为该函数的第三个参数传递
错误:Error: argument of type "unsigned char __flash *" is incompatible with parameter of type "unsigned char *" E:\avr\iar\main.c 350
Error: declaration is incompatible with "void byte_disppp(unsigned char, unsigned char, unsigned char *)"E:\avr\iar\main.c 533 请高手们帮我看看,到底要怎么修改呢?
谢谢了 __flash unsigned char huan[]={
0x04,0x34,0xC4,0x04,0xC4,0x3C,0x20,0x10,
0x0F,0xE8,0x08,0x08,0x28,0x18,0x00,0x00,
0x10,0x08,0x06,0x01,0x82,0x8C,0x40,0x30,
0x0C,0x03,0x0C,0x10,0x60,0xC0,0x40,0x00};
居然和
unsigned char __flash huan[]={
0x04,0x34,0xC4,0x04,0xC4,0x3C,0x20,0x10,
0x0F,0xE8,0x08,0x08,0x28,0x18,0x00,0x00,
0x10,0x08,0x06,0x01,0x82,0x8C,0x40,0x30,
0x0C,0x03,0x0C,0x10,0x60,0xC0,0x40,0x00};
不一样的,谁能说说二者区别啊? 应该用下边一种定义,我在IAR也遇到过这样的问题 我改成下面的就OK了
关于IAR的C扩展资料太少了 TO gdf78 :
你的两种定义都没有问题,是引用出了问题,函数应该这样:
void byte_disp(unsigned char pag, unsigned char row, unsigned char __flash *bytek)
引用时传递的是flash的地址,该地址在引用函数中必须存放在ram中,才能进行运算。 谢谢 joson!
在定义数组时,
__flash unsigned char m[]={0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00}
和
unsigned char __flash m[]={0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00}
的意思是否一样的?
而定义函数参数时,是否一定要unsigned char __flash ,而不能写成__flash unsigned char?
另:“该地址在引用函数中必须存放在ram中”,是什么意思呢?
我这么调用是正常的:byte_disp(1,5,m);而m是定义在flash中的啊 mark
不错 我也刚碰到类拟问题。我也想知道??? const定义的数组能在IAR用? amwito007 发表于 2012-9-11 16:35 static/image/common/back.gif
const定义的数组能在IAR用?
我也遇到这问题,如果是对结构体初始赋值那就更不行了,一直都没弄懂如何对结构体及嵌套结构体初始赋值! const 存放到RAM,但不允许更改,是只读的
flash 存放到flash,
页:
[1]