我们用的是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,而非写入的值。请问软件应该如何修改?
有人可以回答帮助我吗?谢谢!!