Code Monkey home page Code Monkey logo

stm32f4xx-hal's Introduction

stm32f4xx-hal

Crates.io Released API docs

stm32f4xx-hal contains a multi device hardware abstraction on top of the peripheral access API for the STMicro STM32F4 series microcontrollers. The selection of the MCU is done by feature gates, typically specified by board support crates. Currently supported configurations are:

  • stm32f401
  • stm32f405
  • stm32f407
  • stm32f410
  • stm32f411
  • stm32f412
  • stm32f413
  • stm32f415
  • stm32f417
  • stm32f423
  • stm32f427
  • stm32f429
  • stm32f437
  • stm32f439
  • stm32f446
  • stm32f469
  • stm32f479

The idea behind this crate is to gloss over the slight differences in the various peripherals available on those MCUs so a HAL can be written for all chips in that same family without having to cut and paste crates for every single model.

Collaboration on this crate is highly welcome as are pull requests!

This crate relies on Adam Greigs fantastic stm32f4 crate to provide appropriate register definitions and implements a partial set of the embedded-hal traits.

Some of the implementation was shamelessly adapted from the stm32f103xx-hal crate by Jorge Aparicio.

Setting up your project

Check if the BSP for your board exists in the stm32-rs page. If it exists, the stm32f4xx-hal crate should be already included, so you can use the bsp as BSP for your project.

Otherwise, create a new Rust project as you usually do with cargo init. The "hello world" of embedded development is usually to blink a LED. The code to do so is available in examples/delay-blinky.rs. Copy that file to the main.rs of your project.

You also need to add some dependencies to your Cargo.toml:

[dependencies]
embedded-hal = "0.2"
nb = "0.1.2"
cortex-m = "0.6"
cortex-m-rt = "0.6"
# Panic behaviour, see https://crates.io/keywords/panic-impl for alternatives
panic-halt = "0.2"

[dependencies.stm32f4xx-hal]
version = "0.8"
features = ["rt", "stm32f407"] # replace the model of your microcontroller here

We also need to tell Rust how to link our executable and how to lay out the result in memory. To accomplish all this, copy .cargo/config and memory.x from the stm32f4xx-hal repository to your project and make sure the sizes match up with the datasheet. Also note that there might be different kinds of memory which are not equal; to be on the safe side only specify the size of the first block at the specified address.

License

0-clause BSD license.

stm32f4xx-hal's People

Contributors

arkap avatar astro avatar aurelj avatar birkenfeld avatar bobmcwhirter avatar bors[bot] avatar bschwind avatar disasm avatar flamparski avatar gbip avatar glbsalazar avatar jamwaffles avatar jkristell avatar mabezdev avatar marcoieni avatar mcuby avatar mgottschlag avatar mvirkkunen avatar pdgilbert avatar plorefice avatar psycowithespn avatar redrield avatar ryan-summers avatar samcrow avatar texitoi avatar thalesfragoso avatar therealprof avatar theunkn0wn1 avatar timbod7 avatar xoviat avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.