Skip to content
A hardware abstraction layer (HAL) for the STM32L0 series microcontrollers written in Rust
Rust Other
  1. Rust 98.0%
  2. Other 2.0%
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.cargo
examples
flash-code Extend Flash API to support writing half-pages Nov 27, 2019
src Remove `ExtiExt` in favor of a wrapper struct Jan 13, 2020
tools
.gitignore
.travis.yml
Cargo.toml
LICENSE-0BSD.txt
README.md
build.rs
flash.sh
gdb_session.sh
jlink.gdb
memory_l0x1.x
memory_l0x2.x
memory_l0x3.x
openocd.cfg
openocd.gdb
openocd_flash.sh
openocd_session.sh

README.md

stm32l0xx-hal

Build Status

stm32l0xx-hal is a Hardware Abstraction Layer (HAL) for the STMicro STM32L0xx family of microcontrollers.

This crate relies on Adam Greig's stm32l0 crate to provide appropriate register definitions and implements a partial set of the embedded-hal traits.

Based on the stm32l1xx-hal crate by Vitaly Domnikov and the stm32f4xx-hal crate by Daniel Egger.

Supported Configurations

  • stm32l0x1
  • stm32l0x2
  • stm32l0x3

Build Dependencies

  1. Rustup toolchain installer

    https://rustup.rs

Toolchain Configuration

$ rustup target add thumbv6m-none-eabi

Build Examples

$ cargo build --release --examples --features stm32l0x1,rt

Using as a Dependency

To use the stm32l0xx-hal crate as a dependency, add the following definition to your Cargo.toml:

[dependencies.stm32l0xx-hal]
version = "0.5.0"
features = ["stm32l0x1", "rt"]

Example Projects: HABEXpico

Dependecies for Flashing

  1. Download and install the arm-none-eabi toolchain

    https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads We recommend installing the precompiled binaries to '/usr/local/opt'. Add the bin folders (/bin & /arm-none-eabi/bin) to your environments variable 'PATH'.

  2. Install STLink Tool (>=v1.5.1)

    https://github.com/texane/stlink

  3. Install OpenOCD (OPTIONAL)

    NOTE: OpenOCD v0.10.0 does not fully support the stm32l0 family MCU. We recommend using gnu-mcu-eclipse/openocd instead:

    https://gnu-mcu-eclipse.github.io/openocd/install/ We recommend installing the precompiled binaries to '/usr/local/opt'. Add the bin folders (i.e. - /usr/local/opt/gnu-mcu-eclipse/openocd/0.10.0-12-20190422-2015/bin) to your environments variable 'PATH'.

  4. Install GDB Dashboard (OPTIONAL)

    https://github.com/cyrus-and/gdb-dashboard

Flashing

The following instructions outline how-to on flashing the 'serial' example code. This can be extended to any other example code.

Flashing with ST-Flash:

  1. Flash the microcontroller using the flash script
    $ ./flash.sh target/thumbv6m-none-eabi/release/examples/serial
    

Flashing with OpenOCD

  1. Flash the microcontroller using the openocd flash script
    $ ./openocd_flash.sh target/thumbv6m-none-eabi/release/examples/serial
    

Debugging

Debugging with GDB

  1. Terminal 1 - OpenOCD Session:

    $ ./openocd_session.sh
    
  2. Terminal 2 - GDB Session:

    $ ./gdb_session.sh target/thumbv6m-none-eabi/release/examples/serial
    

Debugging with GDB Py and GDB Dashboard

  1. Terminal 1 - OpenOCD Session:

    $ ./openocd_session.sh
    
  2. Terminal 2 - GDB Py Session:

    $ ./gdb_session.sh target/thumbv6m-none-eabi/release/examples/serial -d
    

    Note: Users can redirect the dashboard output to separate terminal (i.e. - ttys001) using:

    >>> dashboard -output /dev/ttys001
    

Contibutor Notes

  • Revert local dependencies to external cargo and uncomment configurations before committing

License

0-Clause BSD License, see LICENSE-0BSD.txt for more details.

You can’t perform that action at this time.