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.

Hibernate模块存储数据写入和读出

Other Parts Discussed in Thread: TM4C129EKCPDT

我们用的是TM4C129EKCPDT 这个芯片。

我想实现每次改变IO口状态,将该状态 (uint32_t 的变量数据) 保存到HIBDATA寄存器上(调用HibernateDataSet),用以实现重新上电的时候,之前记录的IO状态可以重新读出(HibernateDataGet函数读出)。

硬件操作是对VBAT (PIN 68)引脚通过纽扣电池供电,未对XSOC0 或者XSOC1(PIN 66/67)加晶振。(是否有问题?)

软件参考官方历程,简化代码如下:

uint32_t pin_vel = 0x00000001;
uint32_t bk_pin = 0x00000000;
set_hibernate()
{
   HibernateDataSet(&pin_vel,1);   //pin_vel 根据IO状态改变而变化值
}

get_hibernate()
{
    SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE);    // Enable the hibernate module.
    HibernateClockConfig(HIBERNATE_OSC_LOWDRIVE);
    ui32Status = HibernateIntStatus(0);
    HibernateIntClear(ui32Status);
    if(HibernateIsActive())
    {
        HibernateDataGet(&bk_pin,1); //读取写入的数据到bk_pin
        rt_kprintf("read value =%ld\r\n",bk_pin);
    }
}

void hib_thread()
{
    //其他配置初始化
    get_hibernate()//获取掉电前写入的值并打印
    while(1)
    {
        get_hibernate();  //不断写入pin_vel 值,pin_vel在变化
        delay();
    }
}

程序运行打印的值获取为0,而非写入的值。请问软件应该如何修改?

有人可以回答帮助我吗?谢谢!!