4 releases (2 breaking)
0.3.1 | Nov 19, 2022 |
---|---|
0.3.0 | Nov 19, 2022 |
0.2.0 | Jan 4, 2022 |
0.1.0 | Sep 30, 2017 |
#1556 in Embedded development
26KB
519 lines
eeprom
Flash-based EEPROM emulation for the STM32 series microcontrollers. Uses 2 or more Flash pages for storing 16-bit data.
Examples
use eeprom::EEPROM;
struct MockFlash;
// let param = Params { .. };
// let mut flash: stm32f1::stm32f103::FLASH = /* get flash somehow */;
let mut eeprom = flash.eeprom(params);
eeprom.init().expect("failed to init EEPROM");
eeprom.write(1, 0xdead).expect("failed to write data to EEPROM");
eeprom.write(2, 0xbeef).expect("failed to write data to EEPROM");
assert_eq!(0xdead, eeprom.read(1).unwrap());
assert_eq!(0xbeef, eeprom.read(2).unwrap());
assert_eq!(true, eeprom.read(3).is_none());
Panics
EEPROM controller will panic in the following cases:
- No free space on the page even after compaction
- active page cannot be found during
read
/write
operation (init
makes sure that there is exactly one active page.
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~0–2.7MB
~77K SLoC