论坛» 综合技术» 基础知识

const,RAM 我把变量申明成const型的,怎么还占RAM?

院士
2006-12-22 22:43 1楼
const,RAM 我把变量申明成const型的,怎么还占RAM?
院士
2006-12-22 22:43 2楼
问 不声明成 const型的,只占 RAM;声明成 const型的, RAM,ROM都占?为什么?有没有像keil里code 一样的关键字?
哪位DX解决这个问题了?
我用的win AVR 1: 变量也用ROM?什么编译器呀,怎么定义的,贴出来
2: 先说明时用编译器 AVR不同编译器语法差别很大 3: 使使flash这个关键词。 4: 我试了flash了,不行呀还有prog_char什么的,查到的都试过了,还是不行 5: 还是不行#pragma data: code



constunsigned char Matrix001[]=
{
0x00,0x80,0x04,0x84,0x04,0x44,0x04,0xC4,0x04,0xA4,0x44,0x94,0x84,0x8C,0x7E,0xFF

};

#pragma data: code


这样也不行 6: 如此:unsigned char PROGMEM Matrix001[]=
{
0x00,0x80,0x04,0x84,0x04,0x44,0x04,0xC4,0x04,0xA4,0x44,0x94,0x84,0x8C,0x7E,0xFF

};

访问用FLASH的访问函数:
pgm_read_byte(&Matrix001[0]);

7: 按zsmbj说的,编译还是错误,../vfd.c:13: error: parse error before "Matrix001"

PROGMEM 这个关键字,是不是没拼对?
8: win AVR什么版本的?我用win AVR2006版本的,支持PROGMEM 和EEMEM。

要是20050214版本的,试试这个吧: __attribute__ ((progmem)) 9: 这回可以了,谢谢,果真是高手,我的版本是 20050214
这回可以了,谢谢,我在论坛里找了好几天了。
ps:调用时不用别的函数了吧?反正现在编译没错,明天拿到板子再试试。 10: 建议楼主看看芯艺的那篇文章 11: 其实看看win AVR的libc manual里边写的明明白白啊。 12: low level mistake ..#include < AVR/pgmspace.h>
专家
2022-08-20 15:48 3楼

学习学习

共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]