我们用的是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_pinrt_kprintf("read value =%ld\r\n",bk_pin);} } void hib_thread() {//其他配置初始化get_hibernate()//获取掉电前写入的值并打印while(1){get_hibernate(); //不断写入pin_vel 值,pin_vel在变化delay();} }
程序运行打印的值获取为0,而非写入的值。请问软件应该如何修改?
有人可以回答帮助我吗?谢谢!!
Susan Yang:
建议您到https://e2e.ti.com/ 发帖询问