# 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