4个版本
使用旧的Rust 2015
0.0.4 | 2024年4月18日 |
---|---|
0.0.3 | 2024年3月22日 |
0.0.2 | 2024年3月20日 |
0.0.1 | 2024年3月17日 |
#192 in 操作系统
41KB
881 行
stm32cubeprog-rs
该包提供了STM32CubeProgrammer API的Rust绑定,便于与意法半导体硬件编程工具交互。
兼容性
该包设计为与Linux和Windows操作系统兼容。
需求
您的系统上必须安装STM32CubeProgrammer版本2.14.0或更高版本。
示例用法
以下示例演示了如何在Linux上发现连接的STLinks,检索信息,读写内存以及编程连接的设备。
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Generate path to STM32CubeProgrammer folder
let home_dir = std::env::var_os("HOME")
.map(std::path::PathBuf::from)
.expect("Failed to get home directory, $HOME variable missing");
let binding = home_dir.join("Applications/STMicroelectronics/STM32Cube/STM32CubeProgrammer");
let stm32prog_path = binding
.to_str()
.expect("Failed to join STM32CubeProgrammer path");
// Load STM32CubeProgmmer API library
let stm32prog = stm32cubeprog_rs::STM32CubeProg::new(stm32prog_path)?;
// Find connected STLinks
let mut stlinks = stm32prog.discover()?;
for stlink in stlinks.iter_mut() {
println!("{stlink}");
// Configure the reset mode and the connection mode
stlink.reset_mode(stm32cubeprog_rs::DebugResetMode::HardwareReset);
stlink.connection_mode(stm32cubeprog_rs::DebugConnectMode::UnderReset);
// Connect the STlink
stm32prog.connect(stlink)?;
// Fetch device information
let device_info = stm32prog.device_info()?;
println!("{device_info}");
// Read and write register R0
stm32prog.write_core_register(stm32cubeprog_rs::Register::R0, 0xAABBCCDD)?;
let data = stm32prog.read_core_register(stm32cubeprog_rs::Register::R0)?;
println!("R0: 0x{data:X}");
// Read and write memory
let data = stm32prog.read_memory8(0x1FFF7590, 16)?;
println!("0x1FFF7590: {data:x?}");
stm32prog.write_memory8(0x20000100, data)?;
let data = stm32prog.read_memory32(0x1FFF7590, 4)?;
println!("0x1FFF7590: {data:x?}");
stm32prog.write_memory32(0x20000200, data)?;
// Mass erase the device
stm32prog.mass_erase()?;
// Flash the device
stm32prog.download("demo.hex", None, None, None)?;
// Reset and disconnect the STLink
stm32prog.reset(stlink)?;
stm32prog.disconnect();
}
Ok(())
}
依赖项
~0.6–5.5MB