|
在STM32的硬件条件下,很容易实现Stm32库的保存和读取Stm32备份寄存器。如果您需要在重新引导之间持久保存数据,那简直就是为你设计的。
项目中使用的东西 硬件组件: STMicroelectronicsSTM32 Nucleo-144 Boards *1; nanoFramework VisualStudio extension 背景 有时候你的应用需要在重启之间保存数据。只是简单的数据收集。添加一个外部EEPROM并不是你想要做的事情。一堆额外的复杂,布线,更多的代码,板的真实状态和(如果这是一个商业项目)更多的成本到BOM。 STM32 SoC有一个被称为备份内存的RAM区域,它由RTC电源插头供电,可以在重启后继续工作。这是一个完美的工具。 nanoFramework.Hardware。Stm32类库抽象了使用此内存所需的所有配置和复杂性。您只需将需要保存的值(支持许多本机类型,因此您应该找到所需的类型)扔给它即可。如果你已经将电源连接到Vbatt pin,那就是。 当需要时,返回到API并读取这些值。 代码: 示例应用程序写入STM32备份内存并读取 using System; using System.Threading; using nanoFramework.Hardware.Stm32; namespace Stm32BackupMemory.TestApp { public class Program { public static voidMain() { Console.WriteLine($"The backup memory has {BackupMemory.Size}bytes."); // write a bytearray uinttestBufferPosition = 5; byte[] testBuffer= new byte[] { 0xFA, 0xCE, 0xBE, 0xEF, 0xFA, 0xCE, 0xBE, 0xEF }; BackupMemory.WriteBytes(testBufferPosition, testBuffer); // read back thebyte array byte[]readBackBuffer = new byte[testBuffer.Length]; BackupMemory.ReadBytes(testBufferPosition, readBackBuffer); if(readBackBuffer.GetHashCode() != testBuffer.GetHashCode()) { Console.WriteLine("Array read from backup memory is different thanwhat was written."); } else { Console.WriteLine("Buffer comparison check!"); } // write an Int64 uinttestInt64Position = 15; Int64 testInt64 =9876543210; BackupMemory.WriteInt64(testInt64Position, testInt64); if(BackupMemory.ReadInt64(testInt64Position) != testInt64) { Console.WriteLine("Int64 read from backup memory is different thanwhat was written."); } else { Console.WriteLine("Int64 comparison check!"); } Thread.Sleep(Timeout.Infinite); } } } |
STM32
超强工具——STM32CubeMX 你会用吗?
集结出发! STM32全国研讨会系列之一:ST智能门铃中国首秀
关于STM32启动文件的几个小问题
【银杏科技ARM+FPGA双核心应用】STM32H7系列35——USB_VCP_FS
【银杏科技ARM+FPGA双核心应用】STM32H7系列28——USB_HID
粉丝分享 | 图说CRC原理应用及STM32硬件CRC外设
STM32L151进入低功耗,并由RTC唤醒的故事
[转]stm32控制NFC模块(PN532)源码(P2P,模拟卡,读写卡等
STM32G070RB+LVGL移植
微信公众号
手机版