stm32l4xx-hal 0.7.1

Hardware abstraction layer for the stm32l4xx chips
Documentation
# Change Log

All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).


## [v0.7.1] - 2022-04-11

### Fixed

    - Shorten old buffer when we have extra characters in DMA buffer after a character match.
## [v0.7.0] - 2022-04-04

### Added

    - Add delay implementation based on `cortex_m::asm::delay`.
    - Implement `RngCore` and `CryptoRng` for the hardware RNG.
    - Support analog to digital converters (ADC).
    - Support SPI slave mode.
    - Add DMA and interrupt support for SPI and ADC peripherals.
    - Add support for measuring Vref, Vbat and temperature.
    - Add alternate function 0 to GPIO.
    - Add preliminary bxCAN support.
    - Add more GPIO combinations for I2C and PWM peripherals.
    - Add wakeup clock sources to RTC config.
    - Support RTC domain backup registers.
    - Support I2C on stm32l4x3 devices.
    - Support I2C3 peripheral on stm32l4x6 devices.
    - Experimental support for the Synopsis USB library.
    - Experimental support for USB OTG FS for stm32l4x5 and stm32l4x6 devices.
    - Support stm32l4r9 devices.

### Changed

    - Use device-specific features rather than by-peripheral features.
    - Use `fugit` duration nd rate units instead of custom
    - Use const-generics for GPIO (require Rust 1.51)
    - Import I2C implementation from `stm32h7xx-hal` crate.
    - Use a `Config` struct for initializing I2C peripherals.
    - Check that the clock requested for the low-power timer is enabled.
    - Take `clocks` argument by value when setting up low-power timer.
    - Use sane low-power timer defaults (LSI, no prescaler).
    - Make `LowPowerTimer<_>::set_autoreload()` public.
    - Enable SPI2 for all stm32l4x2 devices as some of them have it.
    - Target hardfp by default since stm32l4 cores are Cortex-M4F.
    - Require typed input when converting from milliseconds to hertz.
    - Rework alternate function typestates.
    - Use MSI as default/fallback clock source for SYSCLK.
    - Use specialized PAC for stm32l412 and stm32l422 devices.
    - Add `toggeable` trait to GPIO pins.
    - Update `stm32l4` dependency.

### Fixed

    - Fix TIM1 PWM frequency computation.
    - Fix TIM5 counter width.
    - Fix PSC computation off-by-one error.
    - Change wait states values according to datasheet.
    - Fix incorrect I2C2 on PC0/PC1 on stm32l4x3 devices.
    - Swap QSPI pins and remove conflicting/wrong implementations.
    - Add power on GPIOG pins.
    - Support 0 byte writes on I2C.

## [v0.6.0] - 2020-12-11

### Added

    - USB driver for `stm32l4x2` and `stm32l4x3` devices.
    - USART3 and UART4, with dma support.
    - Support for GPIOF and GPIOG.
    - USB driver examples.
    - Support for external pin interrupts (EXTI).
    - Implement hardware flow control for serial.
    - Support for CRC peripheral.
    - Implement `core::hash::Hasher` for the CRC peripheral.
    - Support for serial framing.
    - Support for Half-Duplex Serial.
    - Support for timers 5 and 6.
    - Bump stm32l4 to `0.11.0`.
    - Support for QSPI.
    - Support for RTC alarms.
    - Support for the Independant Watch Dog Timer.
    - VSCode configurations.
    - Added signature module.


## Changed
    - Reworked clock control with RCC.
    - Rework the DMA API.
    - Rework the FLASH programming API.
    - Rework GPIO output to support setting Speed, Pullups and drain functionality.
    - Switched to Github actions.

### Fixed
    - Re-add support for GPIOD & GPIOE.
    - Fix enable bits for PWM.
    - Fix clearing serial error flag bits.
    - I2C 7bit adressing shift.
    - Fix the systick delay to support delays greater than `1 << 24`
    - Clean up examples, and Deps.

## [v0.5.0] - 2019-09-02

### Added

    - DMA2

### Breaking

    - Serial ports now use a config, instead of just the baudrate.
    - Upgraded embedded-hal, gpio method signitures are now fallible.
    - Bumped cortex-m.


## [v0.4.0] - 2019-05-08

### Added

    - PWM support for select timers
    - More GPIO support

### Fixed

    - More debug and Eq derives where appropriate
    - Updated to stm32-rs v0.7.0 which fixes [#32](https://github.com/stm32-rs/stm32l4xx-hal/issues/32) for stm32l4x5 and stm32l4x6 devices

## [v0.3.6] - 2019-02-11

### Added

    - GPIOE Support
    - MSI Clock support

### Fixed

    - The TSC `aquire` did not reset the channel select register after aquisition
    - The default charge high and charge low time for the TSC were fixed at the max, this now has a sane default and can be configured with the TSC config.
    - HCLK and PCKL rcc prescaling, although setting the right clocks, the value in `Clocks` was wrong, this now correctly calculated.


## [v0.3.5] - 2019-01-07

### Added

    - Rng implementation
    - GPIOE support
    - `fmt::Write` for serial Tx

### Breaking
    - LSI is no longer enabled by default, requires `lsi(true)` when configuring the rcc 

## [v0.3.4] - 2018-12-31

### Fixed
    - Hardcoded stm32 device crate in `i2c`

### Added
    - TSC clear flag API

## [v0.3.3] - 2018-12-12

### Fixed
    - Bumped stm32l4 to v0.5.0
    - Fixed timer start macro

## [v0.3.2] - 2018-12-12

### Added
    - DMA buffers now use as-slice

### Fixed
    - This crate now compiles on stable (1.31)!

## [v0.3.1] - 2018-12-10

### Added
    - I2C support using embedded-hal traits
    - Added GPIO input embedded-hal traits

## [v0.3.0] - 2018-11-21

### Breaking
    - Move device selection (l4x1, l4x2, etc.) behind feature, in line with stm32f4xx-hal.
    - Change crate name accordingly to `stm32l4-hal`.

### Fixed
    - Update crate dependencies.

## [v0.2.7] - 2018-11-21

### Breaking
    - EOL the stm32l432xx-hal crate

## [v0.2.6] - 2018-11-03

## Fixed

    - TSC flags not getting cleared by the `aquire` tsc method.

## [v0.2.5] - YANKED

## [v0.2.4] - 2018-10-32

### Fixed
    - Updated examples and bumped dependancies.

## [v0.2.3] - 2018-10-06

### Fixed
    - RCC configuration for higher clocks, using the wrong multiplyier reg caused issue with time sensative peripherals

### Added
    - New TSC Configuration, to set the prescaler and max count value.

## [v0.2.2] - 2018-08-25
    - Fixed documentation link in readme.

## [v0.2.1] - 2018-08-25

### Added
    - Timer implementations for timer15 & timer 16
    - Two new TSC API's, `read` & `read_unchecked`
        - `read` checks the supplied pin is the pin we are reading
        - `read_unchecked` returns the contents of the count register

### Fixed
    - Channel pins do not require Schmitt trigger hysteresis

## [v0.2.0] - 2018-08-21

### Breaking
    - GPIO type signature changed to allow pin state and alterante function to be encoded in the pin type.

### Added
    - Touch sense controller peripheral support
        - Easy to use blocking API with interrupt support too

## [v0.1.1] - 2018-08-13

### Added
    - Idle line detection for Usart Rx
    - Idle Line Interrupt listening

### Fixed
    - DMA Circular peeking, now correctly resets `consumed_offset`

## v0.1.0 - 2018-08-05

- Initial release

[v0.7.0]: https://github.com/stm32-rs/stm32l4xx-hal/compare/v0.6.0...v0.7.0
[v0.6.0]: https://github.com/stm32-rs/stm32l4xx-hal/compare/v0.5.0...v0.6.0
[v0.5.0]: https://github.com/stm32-rs/stm32l4xx-hal/compare/v0.4.0...v0.5.0
[v0.4.0]: https://github.com/stm32-rs/stm32l4xx-hal/compare/v0.3.6...v0.4.0
[v0.3.6]: https://github.com/stm32-rs/stm32l4xx-hal/compare/v0.3.5...v0.3.6
[v0.3.5]: https://github.com/stm32-rs/stm32l4xx-hal/compare/v0.3.4...v0.3.5
[v0.3.4]: https://github.com/stm32-rs/stm32l4xx-hal/compare/v0.3.3...v0.3.4
[v0.3.3]: https://github.com/stm32-rs/stm32l4xx-hal/compare/v0.3.2...v0.3.3
[v0.3.2]: https://github.com/stm32-rs/stm32l4xx-hal/compare/v0.3.1...v0.3.2
[v0.3.1]: https://github.com/stm32-rs/stm32l4xx-hal/compare/v0.3.0...v0.3.1
[v0.3.0]: https://github.com/stm32-rs/stm32l4xx-hal/compare/v0.2.7...v0.3.0
[v0.2.7]: https://github.com/stm32-rs/stm32l4xx-hal/compare/v0.2.6...v0.2.7
[v0.2.6]: https://github.com/stm32-rs/stm32l4xx-hal/compare/v0.2.5...v0.2.6
[v0.2.5]: https://github.com/stm32-rs/stm32l4xx-hal/compare/v0.2.4...v0.2.5
[v0.2.4]: https://github.com/stm32-rs/stm32l4xx-hal/compare/v0.2.3...v0.2.4
[v0.2.3]: https://github.com/stm32-rs/stm32l4xx-hal/compare/v0.2.2...v0.2.3
[v0.2.2]: https://github.com/stm32-rs/stm32l4xx-hal/compare/v0.2.1...v0.2.2
[v0.2.1]: https://github.com/stm32-rs/stm32l4xx-hal/compare/v0.2.0...v0.2.1
[v0.2.0]: https://github.com/stm32-rs/stm32l4xx-hal/compare/v0.1.1...v0.2.0
[v0.1.1]: https://github.com/stm32-rs/stm32l4xx-hal/compare/v0.1.0...v0.1.1
[v0.1.0]: https://github.com/stm32-rs/stm32l4xx-hal/tree/v0.1.0