这几天刚用到AVR,关于数组存至flash,做个笔记。
avr 数组存flash环境:avr_studio+win_avr
包含头文件:#include <avr/pgmspace.h>
声明数组temp : __attribute__((__progmem__))const prog_uint16_t temp={1,2,.....};
读取时:x=pgm_read_word(temp);(数据为uint8时使用不同的函数,具体参考<avr/pgmspace.h>文件)
另:#pragrma data:code 据说也可以,没试过。
总结:
1.标准C语言const只是声明是常量,并没有指定存储区域,根据编译器的不同,可能在ROM中,也可能在RAM中(若在RAM中,理论上仍可修改,只是编译器禁止修改),AVR编译器定位在RAM中,keil则定位在ROM区。
2.而用code(貌似只有keil才有)声明的对象也会被安排在ROM中。
页:
[1]