This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

tm4c123gh6pz eeprom问题。



为何有时候读出数据全部为0,还望赶紧得到帮助。

  unsigned long   Read_buf[128];
  char i;
初始化
    // 使能EEPROM
    SysCtlPeripheralEnable(SYSCTL_PERIPH_EEPROM0);
  
    // 初始化EEPROM
    EEPROMInit(); 
-------------------------------
写参数   一共是128个参数Para_Buf(128)参数赋值省略。
EEPROMProgram(Para_Buf, 0x400, sizeof(Para_Buf));
-------------------------------------------
读数据

    EEPROMRead(Read_buf, 0x400, sizeof(Read_buf));
 
  • 我简单的测试了一下,没有问题,下面是我的测试程序

    #include "inc/hw_ints.h"
    #include "inc/hw_memmap.h"
    #include "inc/hw_types.h"
    #include "driverlib/sysctl.h"
    #include "driverlib/eeprom.h"

    void main(void) {
     unsigned long   Read_buf[2];
     unsigned long   Para_buf[2];
     int i;
     for(i = 0; i < 2; i++){
      Para_buf[i] = 0x2134 + i;
     }
     for(i = 0; i < 2; i++){
      Read_buf[i] = 0;
     }
     // Set the system clock running at 16MHz.
     SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_USE_OSC|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
     SysCtlPeripheralEnable(SYSCTL_PERIPH_EEPROM0);
     EEPROMInit();

     EEPROMProgram(Para_buf, 0x400, sizeof(Para_buf));

     EEPROMRead(Read_buf, 0x400, sizeof(Read_buf));
     i = 0;

     

    至于你的问题可以考虑是不是数组定义的太大,我测试是定义成128的长度,程序直接跑飞

  • 我的问题是偶尔又一次全部读出数据为0,至于数组eeprom有2k的存储空间,128个参数不算很多吧。难道还要分10几个数组分开存?