sunyanxia1980 发表于 2008-12-22 12:03:52

AVR162 单片机中把数据定义在FLASH 区,应该用什么关键字【恢复】

马老师您好:



     我在用AVR的时候需要定义一个大的数组,这个数组不需要改,所以我想把它定义在FLASH区,应该用哪个关键字?我看您写的书上有一个

程序里面是真么写的: flash int a={1,2,};那是不是就是说用关键字flash? 关键字const 是不是把数据定义在数据区,只是它是常量,不改变?我用的ICCAVR 编译器?我也没有发现有什么地方告诉我怎么做的,所以只好向您求助了。谢谢!

sunyanxia1980 发表于 2009-1-9 13:41:58

我看了看macros.h文件,发现里面是这么写的:define flash const; 说的是flash 和const是一回事,所以我用flash 和const 定义就都没有问题了。

sunyanxia1980 发表于 2009-1-4 11:47:56

好的,谢谢楼上的回复,我看看。

boawen 发表于 2008-12-27 20:51:38

你看一下MACROS.H文件里面的宏定义文件就知道了。你调试这个程序的时候一定调用了MACROS.H这个文件吧

sunyanxia1980 发表于 2008-12-23 13:22:58

谢谢,大家的回答,我在编译器中flash 和const这两个关键字我都用了,结果编译的时候也没有告诉我错误,运行的时候还是可以正常运行。这是怎么一回事,是不是说都可以用?我用的是ICCV7 for AVR 这个编译器。

tearsman520 发表于 2008-12-22 22:20:56

取决于编译器,CVAVR就是flash 变量名 值……

hhrfjz 发表于 2008-12-22 12:37:49

ICCAVR 就是const

zc3909 发表于 2008-12-22 12:29:14

看用什么编译器了

117433525 发表于 2008-12-22 12:24:28

const

bbi3014 发表于 2009-6-15 11:39:45

又学到东西了

wnwnwn 发表于 2013-5-8 11:20:04

我也有想同的问题,我用的是winavr编译器。

machao 发表于 2013-5-8 19:23:41

wnwnwn 发表于 2013-5-8 11:20 static/image/common/back.gif
我也有想同的问题,我用的是winavr编译器。

上面已经回答的非常清楚了,你用什么编译器,先真正看该编译器的使用说明

wnwnwn 发表于 2013-5-9 22:54:45

machao 发表于 2013-5-8 19:23 static/image/common/back.gif
上面已经回答的非常清楚了,你用什么编译器,先真正看该编译器的使用说明 ...

感谢马老师的解答,我已经懂了{:smile:}

wnwnwn 发表于 2013-5-14 15:36:54

本帖最后由 wnwnwn 于 2013-5-14 15:44 编辑

machao 发表于 2013-5-8 19:23 static/image/common/back.gif
上面已经回答的非常清楚了,你用什么编译器,先真正看该编译器的使用说明 ...

马老师,为什么我加入pgmspace.h头文件之后,编译的时候提示没有定义prog_uchar变量呢?然后用const uint8 s[] PROGMEM定义就能通过。
页: [1]
查看完整版本: AVR162 单片机中把数据定义在FLASH 区,应该用什么关键字【恢复】