|
楼主 |
发表于 2009-3-13 20:22:16
|
显示全部楼层
在GCC里找到了读FLASH的函数了,现在我把读写的都表上来,其实在芯艺的<<AVR单片机GCC程序设计>>里面就有,我最近弄AVR就是一直参考他的这本书的,太有帮助了,真是太感谢他了!
flash 中的变量
在 flash 空间声明变量,GCC 规定使用关键字 __attribute__((progmem))。为了应用上方便,在 <progmem.h>文件中定义了 flash 空间的数据类型,可以直接使用他们定义 flash 变量。表 5-1 列出了这些数据类型。
表 5-1 flash 空间的数据类型
--------------------------------------------------------------------------------
类型 定义
prog_void void __attribute__((progmem))
prog_char char __attribute__((progmem))
prog_uchar unsigned char __attribute__((progmem))
prog_int int __attribute__((progmem))
prog_long long __attribute__((progmem))
prog_long_long long long __attribute__((progmem))
PGM_P prog_char const*
PGM_VOID_P prog_void const*
--------------------------------------------------------------------------------
flash 空间的变量定义。
const prog_uchar LINE[] = {1,2,3,4};
AtmanAvr C 定义了宏 FLASH , flash 空间的变量也可以如下定义:
FLASH char str[] = {"string in flash"};
读FLASH
pgm_read_byte
#include <pgmspace.h>
pgm_read_byte(unsigned short addr);
返回值
8-bit 数据
参数
addr 16-bit ROM 地址
注释
从程序存储空间 addr 读取一字节。
FLASH double d = 123.456; |
|