- MSRV increased to Rust 1.66.1 [#473]
v0.15.1 2023-11-03
- Bugfix, usb: On RM0455 and RM0468 parts, PA11/PA12 do not have an alternate function
(AF) for USB. Use
into_analog()
when passing pins toUSB1/2::new
on these parts #464 - [breaking]
usb-device
updated to v0.3.0
v0.15.0 2023-10-09
- Remove unused
bitflags
dependency - Bors bot replaced with GH merge queue
- Update
smoltcp
dependency to0.10.0
(from0.8.0
) #422 [#439] - Update
embedded-sdmmc
to0.5
(from0.4
) #440 - Update
fdcan
to0.2
(from0.1
) #440 - MSRV increased to Rust 1.65.0 #422
- Add
IntoAf
trait to restrictinto_alternate
#346 - Replace casts of &T to &mut T with
UnsafeCell
#451 - pwr: Add VOS0 support for RM0455 parts #429
- sdmmc: Introduce
write_blocks
#453 - sdmmc-fat: Optimize writing speeds #456
- wwdg: Add additional possibility for WWDG1RSTF #434
v0.14.0 2023-03-22
- Breaking flash: Rework API to support all parts and use embedded-storage traits #415
- Breaking sdmmc: Bump
embedded-sdmmc
to 0.4 #421 - gpio: Make
Alternate
variants readable #409 - lptim: Add LPTIM traits #419
- pll: Add bounds check on PLL R/Q dividers #407
- serial: Add support for half-duplex mode #408
- Add missing Defmt impls #418
- Bump
cortex-m
dependency to0.7.7
and addcritical-section-single-core
feature #426 - Update
bitflags
dependency to2.0.0
#426 - MSRV increased to 1.62.0
v0.13.1 2022-11-06
- i2c: Wait for automatic stop condition to occour before returning #402
- MSRV increased to 1.61.0
v0.13.0 2022-10-06
- Breaking Require frequency when initialising adc, use this to set the prescaler #379
- Breaking Remove
POL
andNPOL
generic type parameters fromPwm
types #381 - adc: Fix internal channel allocations for RM0468 parts #379
- adc: Remove unnecessary multiple reads of the CR register #364
- adc: Add DMA TargetAddress implementations #389
- adc: Poll LDORDY bit before ADC calibration #386
- flash: Rewrite
write_sector
to correctly write data in 256 bit chunks #371 - flash: Use Ordering fence to prevent inconsistency errors when writing to flash sector #382
- iwdt: Added HAL implementation. Changed the name of the other implementation to
system_watchdog
#376 - lptim: Fixes for low power times as pwm outputs #385
- pac: Upgrade to stm32-rs v0.15.1 #370
- octospi: Add support for octospi1 on rm0455 parts #370
- sdmmc: Use sdio-host v0.9, add support for eMMC Extended CSD register #378
- serial: Add support for uart9 and usart10 #370
- spi: Remove potential UB in transfer method #390
- rcc: Added a way to read the chip's reset reason #377
v0.12.2 2022-05-06
- gpio: Fix
with_<mode>
methods #359 - sdmmc: Fix back-to-back writes #361
- flash: Expose
start_address
,end_address
andsector_address
methods #357
v0.12.1 2022-04-19
- Expose
PinMode
trait #354
v0.12.0 2022-04-16
- Breaking: Use const-generics for
GPIO
, addDynamicPin
,ErasedPin
, inherent impls forembedded-hal
like methods by-default, default modes #334 - Breaking: Remove generic PullUp/PullDown/Floating parameter from
Input
. Useinternal_resistor()
method instead, add universalinto_mode::<MODE>()
pin mode converter, Renameset_speed()
method tospeed()
AFx
is now alias toAlternate<x>
#347 - Breaking: Use fugit crate
for duration and rate units.
.mhz()
->.MHz()
,.khz()
->.kHz()
,.hz()
->.Hz()
. Methods that previously accepted durations (.ms()
,.us()
) now need explicit conversion with.into_rate()
#321 - MSRV increased to 1.59
- Replace crate::Never with core::convert::Infallible #339
- Added some defmt support #304
- Add support for FDCAN peripheral using the fdcan crate #277
- Add
inner()
andinner_mut()
methods to more peripherals #337 - pwr: Add backup domain voltage regulator control #303
- pwr: More support for VOS0, and support for VOS2 and VOS3 #316 #327
- rcc: Add logging (
debug
level) behindlog
feature gate #318 - systick: Implement
Countdown
for SysTick #310 - adc: Add
slope
method and depreciatemax_sample
#344 - flash: added flash implementation #322
- timer: Implemented tick_timer method for LP Timers #172
- timer:
counter()
method on LP Timers returns u16 #172 - timer: Fix bug in
counter()
TIM1/8/12/13/14 where return value would also include UIF bit #172 - sdmmc: Update sdio-host to the latest version, add eMMC support from sdio-host #341
- serial: Add support for reconfiguring serial port settings #324
- Note: The serial port structs (
Serial
/Rx
) are no longer zero-sized - serial: Add support for swapping Tx/Rx pins #324
- serial: Add
join()
to combineTx
+Rx
back intoSerial
#324 - serial: Add
inverttx
andinvertrx
configuration methods #340 - serial: Add serial Rx and Tx fifo capacity and Fifo interrupt event #350
- sai: Fix error in I2S
send
implementation when using both channels #311 - spi: add DuplexFailed error #328
- spi: Fix arithmetic error in spi divider calculation #328
- qspi/octospi: Add
begin_write_extended
andbegin_read_extended
methods #345 - qei: Include REC in the
free()
method #325
v0.11.0 2021-12-18
- Breaking: Simplified API for reading device signature
values.
VAL::get().read()
becomesVAL::read()
- Breaking: SAI
sai_[ab]_ker_ck
methods now returnHertz
rather thanOption<Hertz>
and if the clock is stopped they panic with a message. - Breaking: Rename the
quadspi
flag toxspi
- Breaking: serial: manual control over data length removed, now set automatically based on parity #297
- Upgrade to cortex-m-rt v0.7.0 #257 #264
- Breaking: If you use RTIC v0.5, you need to depend on it with
default-features = false, features = ["cortex-m-7"]
. See rtic-rs/cortex-m-rtic#509 - Add support for OCTOSPI on supported parts, also using the
xspi
feature flag #230 - Add support for STM32H735 (feature flag
stm32h735
#235 - Rename the PeripheralREC object for BDMA2 on 7B3, 7B0, 7A3 parts from BDMA to BDMA2
- Fixed clippy lints:
- Added safety docs for some DMA functions
- Implemented additional conversion utilities for
time
- Breaking: Changed I2S constructors to take less arguments
- MSRV increased to 1.52.0
- Add "rt" to the default features #287
- adc: Allow parallel execution of multiple ADCs through
start_conversion()
#250 - dma: Add support for MDMA #186
- ethernet:
ethernet::DesRing
andethernet::EthernetDMA
require generic constants to specify how many transmit / receive buffers to include inethernet::DesRing
. To replicate the previous behaviour, useDesRing<4, 4>
#247 - ethernet: Avoid creating intermediate references to packed fields #225
- ethernet: Upgrade smoltcp to v0.8.0 #292
- ethernet: Fix MAC address filtering #249
- gpio: Implement IoPin #256
- gpio: Add InputPin implementation for Alternate Pins #244
- i2c: Fix scldec/sdadel and adjust i2c divider calculations #252
- pac: Upgrade to stm32-rs v0.14.0 #240
- quadspi: Add support for flash memory
- rng: Implement rand_core::RngCore and support all integers in Rng #284
- sdmmc: Implement embedded-sdmmc traits #262
- spi: use the FIFO in Transfer and Write implementations #269
- serial: Improve sync mode support, add additional config options #261 #267
- serial: Fix parity configuration option #242
v0.10.0 2021-07-21
- Breaking: Don't reset peripheral in DMA1/2
StreamsTuple::new()
method #229 - adc: Add
free()
method for ADC12 #213 - dma: Fast double-buffered DMA
next_dbm_transfer_with()
method #226 - ethernet: Fix feature set for smoltcp dependency #221
- pwm: Add advanced PWM functions #175
- rtc: Set LSEBYP before enabling LSE #211
- serial: implement
fmt::Write
forSerial<USART
#214 - spi: Add more hardware CS features #216
- timers: Better calculations for
set_timeout_ticks
#208
v0.9.0 2021-03-12
- Updates
cortex-m
to v0.7.1.cortex-m
v0.6.5+ are forward compatible with v0.7.0+ except for CBP, ITM, MPU, NVIC, SCB. If you have problems, runcargo update
to try to switch tocortex-m
v0.7 in other dependencies. Something likecargo tree
is very useful to track down remaining uses ofcortex-m
v0.6. - Breaking: Add new/new_unchecked methods for USB structures, remove pin types from structure
- Add support for USB1_ULPI #184
- Add support for LTDC #81
- Add support for CRC #199
- Add support for DMA1, DMA2, BDMA #153
- pac: Upgrade to stm32-rs v0.13.0
- spi: Update CS management #159
- spi: Support 32-bit frames #200
- qspi: Sample on falling edges #161
- qspi: Add configuration support #176
- timers: Add
DelayFromCountDownTimer
#170 - ethernet: update smoltcp v0.6 -> v0.7
- usb: add support for external ULPI PHYs #184
- rtc: fix unlisten method
- serial: add clear_idle and is_busy methods #201
v0.8.0 2020-10-26
- Breaking: Ethernet PHY configuration feature flags removed. The user must now instantiate an instance of the PHY type in order to configure the PHY.
- pac: Upgrade to stm32-rs v0.12.0
- devices: Add support for 7B3, 7B0, 7A3
- Add USB support
- Add I2S support
- Add RTC support
- Add LPTIM support
- Add DMA support, but the current API is depreciated and will be replaced
- timer: add tick_timer and set_tick_freq to configure the timer's counter frequency #144
- Add RTC support #143
- pwr: add PowerConfiguration to ensure VoltageScale isn't modified from pwr.freeze() to rcc.freeze() #141
- impl Copy, Clone, PartialEq for enums #139
- ethernet: automatically configure MDC clock based on hclk
- time: add types for microseconds and nanoseconds
- rec: add
low_power
methods for configuring peripherals
v0.7.1 2020-09-04
- Update docs
v0.7.0 2020-09-03
- Breaking: Fix PWM pin types. See #110
- Add QSPI support
- Add SDMMC support
- Add Ethernet support
- Add FMC support
- spi: add new configuration options
- i2c: fix i2c bus clock frequency calculation
- i2c: extend write duration until transaction finishes
- timer: Fix timer first cycle invalid #72
- timer: Add set_timeout method
- adc: add method to initialise ADC1 and ADC2 together, see examples
- Added method to switch to VOS0 (480MHz)
- Allow external HSE clock input (bypass mode)
- Use ACLK (AXI clock) frequency for calculating flash waitstates
- pll: Add fractional strategies
- pll: fix very subtle error in PLL Q,R frequencies
- serial: rename usart method to serial, will be depreciated in future
- examples: Added logging framework
- MSRV increased to 1.43.0
v0.6.0 2020-06-25
- Breaking: Peripheral driver constructors now consume a peripheralREC
singleton. Previously they inconsistently took
&mut
or&
references to the CCDR struct itself. See the examples for the new constructors - Breaking: Erase pins from peripheral driver types.
free()
method return types may have changed. - Expose
new_unchecked
methods for instantiating peripheral drivers without providing pins - Improved top-level docs
- Add DAC peripheral driver
- Added MCO pins
- Add
.free()
method for ADC - MSRV increased to 1.41.0
- rtfm crate was renamed to rtic
- Added alternate flash size definitions to memory.x
- Bump dependency versions: cortex-m, cortex-m-rt, cast, paste, bare-metal
v0.5.0 2020-04-27
- pac: Upgrade to stm32-rs v0.11.0
- pwr: Remove need for unsafe, add documentation describing Run* mode
- rcc: Add a safe interface for the user and other crates to access the RCC
- spi: 16-bit word support
- i2c: Remove reference to I2C1 in macro generic for all I2Cs
- Add HAL for Serial Audio Interface, PDM mode
- Implement default blocking write for serial
v0.4.0 2020-03-20
- pac: Upgrade to stm32-rs v0.10.0
- rcc: Add iterative PLL configuration strategy
- rcc: Improve documentation
- pwr: configure core supply on parts with SMPS (dual core). Prevents lock-up without unsafe for certain hardware configurations
- i2c: wait for end of previous address phase before setting START
- i2c: return immediately when TXIS / RXNE is set
- timers: implement TIM3/4/5/6/7/8/12/13/14/15/16/17
- gpio: fix error in PF7 definition
- add MSRV 1.39.0
v0.3.0 2019-12-27
- timer: add method to clear interrupt flag
- gpio: initialise gpio in the correct typestate
- i2c: flush the TXDR register when a NACK condition occurs
- Fix
clear_interrupt_pending_bit()
- i2c: detect not-acknowledge error, clear errors when detected
- Run CI against stable since Rust 1.37.0
- Upgrade to stm32-rs v0.9.0 (including svd2rust v0.16)
- Started Changelog