15 releases (5 breaking)

✓ Uses Rust 2018 edition

0.6.2 May 3, 2020
0.5.0 Dec 3, 2019
0.4.0 Oct 13, 2019
0.1.7 Jul 5, 2019

#15 in Embedded development

Download history 28/week @ 2020-01-23 16/week @ 2020-01-30 5/week @ 2020-02-06 19/week @ 2020-02-13 38/week @ 2020-02-20 91/week @ 2020-02-27 33/week @ 2020-03-05 20/week @ 2020-03-12 42/week @ 2020-03-19 16/week @ 2020-03-26 24/week @ 2020-04-02 95/week @ 2020-04-09 51/week @ 2020-04-16 12/week @ 2020-04-23 21/week @ 2020-04-30 10/week @ 2020-05-07

153 downloads per month

0BSD license

275KB
71 lines

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.6.2"
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.

Dependencies

~13MB
~397K SLoC