首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取EEPROM AVR

读取EEPROM AVR
EN

Stack Overflow用户
提问于 2014-06-09 19:06:18
回答 1查看 1.6K关注 0票数 0

当我从eeprom接收数据时,我遇到了问题。

首先,我编写了以下代码:

代码语言:javascript
复制
#include <avr/io.h>
#include <avr/eeprom.h>

char     NAME[5]   EEMEM   = "a001";
char     UNIT[2]   EEMEM   = "C";
uint16_t CYCLICITY EEMEM   = 2000;

int main(void)
{
    while(1)
    {
        //TODO:: Please write your application code 
    }
}

我从中提取了一个.hex和.eep文件。然后我和阿夫杜德一起写了这些文件。首先,我写错了,因为我只将.hex文件放在eerpom:w上,并且销毁了一些字节,这并不重要。之后,我使用正确的命令编写,并看到部分数据,如在下一个打印屏幕中。

我正在保存一个数字,一个C和a001。正如您在第一行中所看到的,有..C.a001。这是我写的9个字节。

现在进入另一个程序!我试着这样做:

代码语言:javascript
复制
char     EEMEM NAME[5]  ;  
char     EEMEM UNIT[2]  ;
uint16_t EEMEM CYCLICITY; 

void _vReadEEPROM(char *au8Name,char *au8Unit,uint16_t *u16Cyclicity)
{
  eeprom_read_block((void *)&au8Name,(const void *)NAME,5);
  eeprom_read_block((void *)&au8Unit,(const void *)UNIT,2);
  *u16Cyclicity = eeprom_read_word(&CYCLICITY);
}

护理人员处于一个全球结构中:

代码语言:javascript
复制
typedef struct 
{
    uint16_t u16Cyclicity;
    uint16_t u16Value;
    char     pu8Name[5];
    char     pu8Unit[2];
}EEH_layout;

在我发送的“UART崩溃”(我还有另一个话题)的主要内容中。直到这段代码,USART发送了好的值和garbage..but,当我把它放在这里时,USART没有发送任何东西,正如我所理解的那样,这是因为从eeprom读取0(null)。CPU正在工作,因为我有一个1秒计时器,可以暂停闪烁一个led。THis正在工作,所以问题是我从EEPORM获得了0。

另外,我也不确定如何编写EEPROM,因为到处都是关于EEPROM的大量教程,但是没有地方告诉我们如何配置EEPROM,而且只能阅读。我不想在我的代码中有这个参数,我想要他们从eeprom,我将独自编写!

编辑: uint16参数是ok的,我设法通过UART读取它,它是2000;但是字符不确定,它是空的。

编辑:测试确定,问题是函数的参数没有使用OK。我用pau8 Name[]而不是*pau8Name来更改函数,因为指针wAS初始化错误!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-10 18:17:32

永远要注意指针!

问题是未初始化的指针。见编辑后!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24127172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档