微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > AVR单片机三种存储器使用问题

AVR单片机三种存储器使用问题

时间:12-10 来源:互联网 点击:

#include avr/io.h>
#include avr/eeprom.h>
int main(void)
{
unsigned char val;
eeprom_busy_wait(); //等待EEPROM 读写就绪
eeprom_write_byte(0,0xaa); //将0xaa 写入到EEPORM 0 地址处
eeprom_busy_wait();
val=eeprom_read_byte(0); //从EEPROM 0 地址处读取一字节赋给RAM 变量val
while(1);
}
方式二:先定义EEPROM 区变量法
示例:
#include avr/io.h>
#include avr/eeprom.h>
unsigned char val1 __attribute__((section(".eeprom")));//EEPROM 变量定义方式
int main(void)
{
unsigned char val2;
eeprom_busy_wait();
eeprom_write_byte (val1, 0xAA);
eeprom_busy_wait();
val2 = eeprom_read_byte(val1);
while(1);
}
在这种方式下变量在EEPROM 存储器内的具体地址由编译器自动分配。相对方式一,数据在EEPROM 中的具体位置是不透明的。为EEPROM 变量赋的初始值,编译时被分配到.eeprom 段中,可用avr-objcopy 工具从.elf 文件中提取并产生ihex 或binary 等格式的文件。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top