cortex-m
Low level access to Cortex-M processors
0.7.9
12M downloads/mo
#2762 most downloaded on crates.io
rust-embedded/cortex-m
What this package is like to depend on
Last release 5 days ago
19 Aug 2026
Ships unpredictably
gaps range from 8 days to 3.6 years
Most releases are documented
notes for 39 of 47 stable releases
11 versions withdrawn
withdrawn after publishing
10 years old
59 releases · first in 2016
2 releases in the last 12 months
see the full history below
Release timeline
59 releases · Sep 2016 to Aug 2026Releases
latest 59-
0.7.919 Aug 2026Release notes
Open source →Fixed
SCB::enable_icacheandSCB::enable_dcachenow build the CCR address withmovw/movtinstead ofldr =, fixing "out of range pc-relative fixup value" errors when the asm block is inlined into a large function.- The
basepri,basepri_maxandfaultmaskregister modules are now available (as stubs) when compiling for non-Cortex-M (host) targets. This was accidentally removed in v0.7.8.
-
0.7.804 Aug 2026Release notes
Open source →Soundness fix (breaking change)
The
singleton!macro now requires the user to supply acritical-sectionimplementation. The previous behavior was to disable interrupts in the current core, which is unsound on multicore chips. By usingcritical-sectionthe user can set the implementation that's sound for their chip.Not supplying an implementation will result in a linker error like
rust-lld: error: undefined symbol: _critical_section_1_0_acquire.To supply one, do either one of:
- For single-core chips running in privileged mode, enable feature
critical-section-single-corein thecortex-mcrate. This implementation disables interrupts in the current core and is equivalent to the behavior in previous versions. - For other chips, enable a suitable implementation that ensures locking across cores. They are typically supplied by HAL crates with a feature named
critical-section-implor similar.
Library crates generally should not enable a critical section implementation, only the end user (who is building the final binary) should.
Deprecated
- The
inline-asmfeature is now a currently a no-op, will be removed in a future major version
Changed
- Updated to edition 2024.
- MSRV is 1.85 to match cortex-m-rt crate
- Add
enter_unprivilegedfunction to switch to unprivileged mode (on the Process Stack, orPSP) - Updated references from 'Cortex-M Team' to 'Arm Team'
- Add ITNS field to NVIC peripheral.
- Expose more bits from within SCR.
- Refactor asm code to remove need for very old nightly toolchain. Everything is now compiled with the default toolchain.
- The code should be clippy clean on all supported configurations now.
- Add embedded-hal 1.0 delays.
- Changed number of cycles performed in
asm::delay()to guarantee that the number of CPU cycles consumed is always at least the number of cycles requested, even on Cortex-M7 platforms with dual issue. For other CPUs the number of cycles is likely to be twice as long as before.
Fixed
SCB::vect_active()now reads ICSR with a volatile access, preventing the load from being narrowed to a byte read that faults on word-only ICSR models.
- For single-core chips running in privileged mode, enable feature
-
0.7.704 Jan 2023Release notes
Open source →What's Changed
- cortex-m v0.7.7: add documentation for critical-section-single-core by @adamgreig in #458
Full Changelog: v0.7.6...v0.7.7
Release notes
Open source →- Add missing documentation for
critical-section-single-corefeature added in v0.7.6.
-
0.7.613 Aug 2022Release notes
Open source →What's Changed
- cortex-m-rt: fix off-by-one in .text in FLASH section assert by @9names in #573
- Fix _stack_end usage and doc by @tlevora in #577
- cortex-m-rt: Add optional MSPLIM initialization, fix vector table size on armv8m by @decaday in #580
- cortex-m-rt: Add alignment check for the
.vector_tableby @korken89 in #582 - Fix stack end placement by @tlevora in #578
- fix(coretex-m-rt-macros): Allow
#[unsafe(link_section = )]for Rust 2024 edition by @yutannihilation in #596 - Mark
pre_initas deprecated by @romancardenas in #598 - Fix __pre_init example by @eulerdisk in #600
cortex-m-rt: Fix build command in docs by @mfil in #611- Add skip-data-copy feature for when the .data LMA isn't initialized after boot. by @BenChung in #615
- Rename Cortex-M Team to Arm Team by @thejpster in #622
- Update remaining crates to edition 2021. by @wt in #621
- doc: add missing ; in _stext example by @ericu07 in #624
- Update msrv by @wt in #628
- Remove deprecated Cargo.toml authors. by @wt in #631
- Add cortex-m-rt/macros to the workspace members. by @wt in #635
- docs(msrv): unify rust-version to 1.85 across workspace by @reubenueben in #669
- Remove cortex-m deps by @thejpster in #667
- Update to checkout action v7 by @thejpster in #668
- Release cortex-m-rt by @jonathanpallant in #675
New Contributors
- @9names made their first contribution in #573
- @tlevora made their first contribution in #577
- @decaday made their first contribution in #580
- @jonathanpallant made their first contribution in #588
- @yutannihilation made their first contribution in #596
- @romancardenas made their first contribution in #598
- @eulerdisk made their first contribution in #600
- @mfil made their first contribution in #611
- @BenChung made their first contribution in #615
- @wt made their first contribution in #621
- @ericu07 made their first contribution in #624
- @jakobjung10 made their first contribution in #664
- @robamu made their first contribution in #657
- @leftger made their first contribution in #647
- @reubenueben made their first contribution in #669
Full Changelog: c-m-rt-v0.7.5...c-m-rt-v0.7.6
Release notes
Open source →v0.7.6 - 2022-08-12
- Added
critical-section-single-corefeature which provides an implementation for thecritical-sectioncrate for single-core systems, based on disabling all interrupts. (#448)
Release notes
Open source →- Added
critical-section-single-corefeature which provides an implementation for thecritical-sectioncrate for single-core systems, based on disabling all interrupts. (#448)
-
0.7.531 May 2022Release notes
Open source →Deprecated
- the
ptr()function on all peripherals register blocks in favor of the associated constantPTR(#386).
Changed
- The
inline-asmfeature no longer requires a nightly Rust compiler, but does require Rust 1.59 or above.
Fixed
- Fixed
singleton!()statics sometimes ending up in.datainstead of.bss(#364, #380). (Backported from upcoming 0.8 release).
- the
-
0.7.402 Jan 2022Release notes
Open source →Added
- Added support for additional DWT counters (#349)
- CPI counter
- Exception overhead counter
- LSU counter
- Folded-instruction counter
- Added
DWT.set_cycle_count(#347). - Added support for the Cortex-M7 TCM and cache access control registers.
There is a feature
cm7to enable access to these (#352). - Add derives for serde, Hash, and PartialOrd to VectActive behind feature gates for host-platform use (#363).
- Support host platforms besides x86_64 (#369).
- Added
delay::Delay::with_source, a constructor that lets you specify the SysTick clock source (#374).
Fixed
- Fix incorrect AIRCR PRIGROUP mask (#338, #339).
- Fix nightly users of inline-asm breaking now that the asm macro is removed from the prelude (#372).
Deprecated
DWT::get_cycle_counthas been deprecated in favor ofDWT::cycle_count. This change was made for consistency with the C-GETTER convention. (#349)
- Added support for additional DWT counters (#349)
-
0.7.303 Jul 2021Release notes
Open source →Fixed
- Fixed compilation for native targets on non-x86 host systems (#336, #337).
Added
- The
Delaystruct now offers directdelay_us()anddelay_ms()methods without having to go through the embedded-hal traits (#344).
-
0.7.207 Mar 2021Release notes
Open source →Fixed
- Fixed a bug where calling
asm::delay()with an argument of 0 or 1 would underflow, leading to a very long delay.
- Fixed a bug where calling
-
0.7.125 Jan 2021Release notes
Open source →Added
- New assembly methods
asm::semihosting_syscall,asm::bootstrap, andasm::bootload.
Deprecated
msp::writehas been deprecated in favor ofasm::bootstrap. It was not possible to usemsp::writewithout causing Undefined Behavior, so all existing users are encouraged to migrate.
Fixed
- Fixed a bug in
asm::delaywhich could lead to incorrect codegen and infinite loops. - Improved timing guarantees of
asm::delayon multiple-issue CPU cores. - Additional compiler fences added to inline assembly where necessary.
- Fixed DWARF debug information in pre-built assembly binaries.
- New assembly methods
-
0.7.010 Nov 2020Release notes
Open source →Added
- New
InterruptNumbertrait is now required on interrupt arguments to the various NVIC functions, replacing the previous use ofNrfrom bare-metal. For backwards compatibility,InterruptNumberis implemented for types which areNr + Copy, but this will be removed in a future version. - Associated const
PTRis introduced to Core Peripherals to eventually replace the existingptr()API. - A delay driver based on SysTick.
- You can now use LTO to inline assembly calls, even on stable Rust.
See the
asm/lib.rsdocumentation for more details. - Initial ARMv8-M MPU support
- ICTR and ACTLR registers added
- Support for the Security Attribution Unit on ARMv8-M
Changed
- Previously, asm calls without the
inline-asmfeature enabled used pre-built objects which were built by a GCC compiler, whileinline-asmenabled the use ofllvm_asm!calls. The asm system has been replaced with a new technique which generates Rust static libs for stable calling, and uses the newasm!macro withinline-asm. See theasm/lib.rsdocumentation for more details. - Cache enabling now uses an assembly sequence to ensure correctness.
ptr()methods are nowconst.
Breaking Changes
SCB::invalidate_dcacheand related methods are now unsafe, see #188Peripheralsstruct is now non-exhaustive, so fields may be added in future non-breaking changes- Removed
aligneddependency - Removed const-fn feature
- Removed previously deprecated APIs
NVIC::clear_pendingNVIC::disableNVIC::enableNVIC::set_pendingSCB::system_reset
- Removed
basepri,basepri_max, andfaultmaskregisters from thumbv8m.base
- New
-
0.6.726 Jan 2021 -
0.6.625 Jan 2021 -
0.6.524 Jan 2021Release notes
Open source →Changed
- This release is forwards-compatible with cortex-m 0.7, and depends on and re-exports many types from that version. Both 0.6.5 and 0.7 may co-exist in a build.
-
0.6.5-alpha18 Jan 2021 pre-releaseNothing published for this version
-
0.6.426 Oct 2020Release notes
Open source →Changed
- MSRV bumped to 1.36.0 due to
aligneddependency.
Fixed
- Drop AT&T syntax from inline asm, which was causing miscompilations with newer versions of the compiler.
- MSRV bumped to 1.36.0 due to
-
0.6.320 Jul 2020Release notes
Open source →Added
- Initial Cortex-M Security Extension support for armv8m
UDFintrinsic- Methods to enable/disable exceptions in SCB
Fixed
- Fix bug in
asm::delaynot updating status clobber flags - Swapped to
llvm_asm!to support inline assembly on new nightlies - Our precompiled assembly routines have additional debug information
- ITM
is_fifo_readyimproved to support armv8 - Cache enabling moved to pre-built assembly routines to prevent possible undefined behaviour
-
0.6.213 Jan 2020Release notes
Open source →Added
- Allow writing to the
CONTROLregister viaregister::control::write - Add
DWT::unlock()for a safe way to unlock the DWT
Deprecation
- Deprecated incorrectly included registers (
BASPRI,BASEPRI_MAX,FAULTMASK) onthumbv8.base
- Allow writing to the
-
0.6.121 Aug 2019Release notes
Open source →Fixed
- Better
Debug,PartialEqandEqfor more types - The
delayfunction is fixed for Cortex-M0 MCUs
Added
- Static version of
system_resetassystem_reset2 - Now uses
links = "cortex-m"to not link multiple versions of the crate - Masking of the NVIC is added
NVIC::{mask,unmask} - Now Rust 2018 edition
{M,P}SPLIMaccess is now possible on ARMv8-M
Deprecation
system_resetis deprecated in favor ofsys_reset
- Better
-
0.6.013 Mar 2019Release notes
Open source →Fixed
- Fix numerous registers which were incorrectly included for thumbv6
SHCRSrenamed toSHCSRinSCB
Added
-
Support for ARMv8-M (
thumbv8.baseandthumbv8.main) -
SCBgained methods to set and clearSLEEPONEXITbit -
NVICgainedSTIRregister and methods to request an interrupt -
DCBgained methods to check if debugger is attached
-
0.5.1101 Feb 2021Nothing published for this version
-
0.5.1029 Apr 2019Nothing published for this version
-
0.5.928 Apr 2019 withdrawnNothing published for this version
-
0.5.827 Oct 2018Release notes
Open source →Added
-
SCBgained methods to set, clear and check the pending state of the PendSV exception. -
SCBgained methods to set, clear and check the pending state of the SysTick exception. -
SCBgained methods to set and get the priority of system handlers like SVCall and SysTick. -
NVICgained static methods,pendandunpend, to set and clear the pending state of interrupts.
Changed
- The
NVIC.{clear,set}_pendingmethods have been deprecated in favor ofNVIC::{unpend,pend}.
-
-
0.5.706 Sep 2018Release notes
Open source →Added
DCB::enable_trace()andDCB::disable_trace()
Changed
iprintln!no longer depends oniprint!.cortex_m::iprintln!will work even ifcortex_m::iprinthas not been imported.
-
0.5.627 Aug 2018Release notes
Open source →Fixed
-
Removed duplicated symbols from binary blobs
-
The check-blobs.sh script
-
-
0.5.527 Aug 2018 withdrawn -
0.5.412 Aug 2018Release notes
Open source →Added
- A method to trigger a system reset. See
SCB.system_reset.
Fixed
-
Made the VTOR register (see peripheral::SCB) available on
thumbv6m-none-eabi. This register is present on Cortex-M0+, but not on Cortex-M0. -
Linking with LLD by marking all external assembly functions as
.thumb_func. See https://bugs.llvm.org/show_bug.cgi?id=38435 for details.
- A method to trigger a system reset. See
-
0.5.302 Aug 2018Release notes
Open source →Fixed
- Don't assemble basepri*.s and faultmask.s for ARMv6-M. This fix the build when using
clangas the assembler.
- Don't assemble basepri*.s and faultmask.s for ARMv6-M. This fix the build when using
-
0.5.218 May 2018Release notes
Open source →Added
-
SCBgained a pair of safe methods to set / clear the DEEPSLEEP bit. -
asm::delay, delay loops whose execution time doesn't depend on the optimization level.
-
-
0.5.113 May 2018Release notes
Open source →Added
- An opt-in
"const-fn"feature that makesMutex.newconstructor into aconst fn. This feature requires a nightly toolchain.
- An opt-in
-
0.5.011 May 2018Release notes
Open source →Added
-
DebugMonitorandSecureFaultvariants to theExceptionenumeration. -
An optional
"inline-asm"feature
Changed
-
[breaking-change] This crate now requires
arm-none-eabi-gccto be installed and available in$PATHwhen built with the"inline-asm"feature disabled (which is disabled by default). -
[breaking-change] The
register::{apsr,lr,pc}modules are now behind the"inline-asm"feature. -
[breaking-change] Some variants of the
Exceptionenumeration are no longer available onthumbv6m-none-eabi. See API docs for details. -
[breaking-change] Several of the variants of the
Exceptionenumeration have been renamed to match the CMSIS specification. -
[breaking-change] fixed typo in
shcrsfield ofscb::RegisterBlock; it was previously namedshpcrs. -
[breaking-change] removed several fields from
scb::RegisterBlockon ARMv6-M. These registers are not available on that sub-architecture. -
[breaking-change] changed the type of
scb::RegisterBlock.shprfromRW<u8>toRW<u32>on ARMv6-M. These registers are word accessible only on that sub-architecture. -
[breaking-change] renamed the
mmarfield ofscb::RegisterBlocktommfarto match the CMSIS name. -
[breaking-change] removed the
iabrfield fromscb::RegisterBlockon ARMv6-M. This register is not available on that sub-architecture. -
[breaking-change] removed several fields from
cpuid::RegisterBlockon ARMv6-M. These registers are not available on that sub-architecture. -
[breaking-change] The
Mutex.newconstructor is not aconst fnby default. To make it aconst fnyou have to opt into the"const-fn"feature, which was added in v0.5.1, and switch to a nightly compiler.
Removed
- [breaking-change] The
exceptionmodule has been removed. A replacement forException::activecan be found inSCB::vect_active. A modified versionexception::Exceptioncan be found in theperipheral::scbmodule.
-
-
0.4.325 Jan 2018Release notes
Open source →Changed
- The initial value of a
singleton!no longer needs to be evaluable in const context; it can now be a value computed at runtime, or even a capture of some other local variable.
- The initial value of a
-
0.4.217 Jan 2018 -
0.4.116 Jan 2018Release notes
Open source →Changed
peripheral::Peripheralsis now re-exported at the root of the crate.
-
0.4.015 Jan 2018Release notes
Open source →Added
-
Formatter and Flush Control register (FFCR) accessor to the TPIU register block.
-
A
singleton!macro that creates mutable reference to a statically allocated variable. -
A Cargo feature,
cm7-r0p1, to work around a silicon erratum that affects writes to BASEPRI on Cortex-M7 r0p1 devices.
Changed
-
[breaking-change] All peripherals are now exposed as scoped singletons and they need to be
taken into scope to become accessible. -
[breaking-change] The signatures of methods exposed by peripheral proxies have changed to better match the new scoped singletons semantics.
-
All the thin wrappers around assembly instructions now panic when executed on non-ARM devices.
Removed
- [breaking-change] APIs specific to ARMv7-M (
peripheral::{cbp, fpb, fpu, itm, tpiu},itm) when compiling forthumb6m-none-eabi.
-
-
0.3.120 Jul 2017Release notes
Open source →Changed
{basepri,basepri_max}::writeare now compiler barriers for the same reason thatinterrupt::{disable,enable}are: they are used to create critical sections.
-
0.3.007 Jul 2017Release notes
Open source →Changed
-
[breaking-change] Renamed
StackedRergisterstoExceptionFrameto better reflect the ARM documentation. -
[breaking-change] Renamed the variants of
Exceptionto better match the ARM documentation. -
[breaking-change] Renamed
Exception::currenttoException::activeand changed the signature to returnNonewhen no exception is being serviced. -
Moved bits non specific to the Cortex-M architecture into the
bare-metalcrate with the goal of sharing code between this crate and crates tailored for other (microcontroller) architectures.
Removed
-
[breaking-change] The
ctxtmodule along with the exception "tokens" in theexceptionmodule. Thecortex-m-rtcrate v0.3.0 provides a more ergonomic mechanism to add state to interrupts / exceptions; replace your uses ofLocalwith that. -
[breaking-change]
default_handler,DEFAULT_HANDLERSandHandlersfrom theexceptionmodule as well asReservedfrom the root of the crate.cortex-m-rtv0.3.0 provides a mechanism to override exceptions and the default exception handler. Change your use of theseHandlersand others to that.
Fixed
interrupt::{enable,disable}are now compiler barriers. The compiler should not reorder code around these function calls for memory safety; that is the case now.
-
-
0.2.1221 Sep 2017Nothing published for this version
-
0.2.1117 Jun 2017Release notes
Open source →Added
- An API to maintain the different caches (DCache, ICache) on Cortex M7 devices.
Fixed
- the definition of the
ehprint!macro. - the implementation of the FPU API.
-
0.2.1005 Jun 2017Release notes
Open source →Added
- Functions for the instructions DMB, ISB and DSB
Changed
- All the functions in the
asmmodule are nowinline(always)
-
0.2.931 May 2017Release notes
Open source →Fixed
- A bug in
itm::write_allwhere it would ignore the length of the buffer and serialize contents that come after the buffer.
- A bug in
-
0.2.830 May 2017 withdrawnRelease notes
Open source →Added
- An
itm::write_alignedfunction to write 4 byte aligned buffers to an ITM port. This function is faster thanitm::write_allfor small buffers but requires the buffer to be aligned.
- An
-
0.2.723 May 2017 -
0.2.608 May 2017Release notes
Open source →Fixed
- [breaking-change]. MEMORY UNSAFETY.
Mutexcould be used as a channel to send interrupt tokens from one interrupt to other thus breaking the contextLocalabstraction. See reproduction case below. This has been fixed by makingMutexSynconly if the protected data isSend.
#![feature(const_fn)] #![feature(used)] #![no_std] use core::cell::RefCell; use cortex_m::ctxt::Local; use cortex_m::interrupt::Mutex; use stm32f30x::interrupt::{self, Exti0, Exti1}; fn main() { // .. // trigger exti0 // then trigger exti0 again } static CHANNEL: Mutex<RefCell<Option<Exti0>>> = Mutex::new(RefCell::new(None)); // Supposedly task *local* data static LOCAL: Local<i32, Exti0> = Local::new(0); extern "C" fn exti0(mut ctxt: Exti0) { static FIRST: Local<bool, Exti0> = Local::new(true); let first = *FIRST.borrow(&ctxt); // toggle if first { *FIRST.borrow_mut(&mut ctxt) = false; } if first { cortex_m::interrupt::free( |cs| { let channel = CHANNEL.borrow(cs); // BAD: transfer interrupt token to another interrupt *channel.borrow_mut() = Some(ctxt); }, ); return; } let _local = LOCAL.borrow_mut(&mut ctxt); // .. // trigger exti1 here // .. // `LOCAL` mutably borrowed up to this point } extern "C" fn exti1(_ctxt: Exti1) { cortex_m::interrupt::free(|cs| { let channel = CHANNEL.borrow(cs); let mut channel = channel.borrow_mut(); if let Some(mut other_task) = channel.take() { // BAD: `exti1` has access to `exti0`'s interrupt token // so it can now mutably access local while `exti0` is also using it let _local = LOCAL.borrow_mut(&mut other_task); } }); } #[allow(dead_code)] #[used] #[link_section = ".rodata.interrupts"] static INTERRUPTS: interrupt::Handlers = interrupt::Handlers { Exti0: exti0, Exti1: exti1, ..interrupt::DEFAULT_HANDLERS }; - [breaking-change]. MEMORY UNSAFETY.
-
0.2.507 May 2017 withdrawnRelease notes
Open source →Added
- Higher level API for the SysTick and FPU peripherals
Fixed
- [breaking-change]. MEMORY UNSAFETY.
interrupt::enablewas safe to call inside aninterrupt::freecritical section thus breaking the preemption protection. Theinterrupt::enablemethod is nowunsafe.
-
0.2.420 Apr 2017 withdrawnRelease notes
Open source →Fixed
- [breaking-change]. MEMORY UNSAFETY.
interrupt::freeleaked the critical section making it possible to access aMutexwhen interrupts are enabled (see below). This has been fixed by changing the signature ofinterrupt::free.
static FOO: Mutex<bool> = Mutex::new(false); fn main() { let cs = cortex_m::interrupt::free(|cs| cs); // interrupts are enabled at this point let foo = FOO.borrow(&cs); } - [breaking-change]. MEMORY UNSAFETY.
-
0.2.312 Apr 2017 withdrawnRelease notes
Open source →Fixed
- [breaking-change]. MEMORY UNSAFETY. Some concurrency models that use "partial"
critical sections (cf. BASEPRI) can be broken by changing the priority of
interrupts or by changing BASEPRI in some scenarios. For this reason
NVIC.set_priorityandregister::basepri::writeare nowunsafe.
- [breaking-change]. MEMORY UNSAFETY. Some concurrency models that use "partial"
critical sections (cf. BASEPRI) can be broken by changing the priority of
interrupts or by changing BASEPRI in some scenarios. For this reason
-
0.2.208 Apr 2017 withdrawnRelease notes
Open source →Fixed
- [breaking-change]. MEMORY UNSAFETY. The
Mutex.borrow_mutmethod has been removed as it can be used to bypass Rust's borrow checker and get, for example, two mutable references to the same data.
static FOO: Mutex<bool> = Mutex::new(false); fn main() { cortex_m::interrupt::free(|mut cs1| { cortex_m::interrupt::free(|mut cs2| { let foo: &mut bool = FOO.borrow_mut(&mut cs1); let and_foo: &mut bool = FOO.borrow_mut(&mut cs2); }); }); } - [breaking-change]. MEMORY UNSAFETY. The
-
0.2.112 Mar 2017 withdrawnRelease notes
Open source →Changed
- The default exception handler now identifies the exception that's being serviced.
-
0.2.012 Mar 2017 withdrawnRelease notes
Open source →Added
-
Semihosting functionality in the
semihostingmodule. -
exception::Handlersstruct that represent the section of the vector table that contains the exception handlers. -
A default exception handler
-
A high level API for the NVIC peripheral.
-
Context local data.
-
borrow/borrow_mutmethods toMutexthat replacelock. -
API and macros to send bytes / (formatted) strings through ITM
Changed
-
[breaking-change]
StackFramehas been renamed toStackedRegistersand moved into theexceptionsmodule. -
[breaking-change] Core peripherals can now be modified via a
&-reference and are no longerSync. -
[breaking-change]
interrupt::free's closure now includes a critical section token,CriticalSection. -
[breaking-change] the core register API has been revamped for type safety.
-
The safety of assembly wrappers like
wfiandinterrupt::freehas been reviewed. In many cases, the functions are no longer unsafe. -
[breaking-change]
bkpt!has been turned into a function. It no longer accepts an immediate value.
Removed
-
vector_tableand its associatedstruct,VectorTable. It's not a good idea to give people a simple way to call the exception handlers. -
Mutex'slockmethod as it's unsound. You could use it to get multiple&mut -references to the wrapped data.
-
-
0.1.817 Aug 2018Nothing published for this version
-
0.1.721 Sep 2017Nothing published for this version
-
0.1.622 Jan 2017Release notes
Open source →Added
Exceptiona enumeration of the kind of exceptions the processor can service. There's also aException::currentconstructor that returns theExceptionthat's currently being serviced.
-
0.1.519 Nov 2016Nothing published for this version
-
0.1.415 Oct 2016Nothing published for this version
-
0.1.304 Oct 2016Nothing published for this version
-
0.1.204 Oct 2016Release notes
Open source →Fixed
- Read/write Operations on registers (lr, cr, msp, etc.) which were reversed.
-
0.1.103 Oct 2016 withdrawnRelease notes
Open source →Changed
- Small, non user visible change to make this crate compile further for $HOST (e.g. x86_64) with the goal of making it possible to test, on the HOST, downstream crates that depend on this one.
-
0.1.028 Sep 2016 withdrawnRelease notes
Open source →Added
- Functions to access core peripherals like NVIC, SCB and SysTick.
- Functions to access core registers like CONTROL, MSP and PSR.
- Functions to enable/disable interrupts
- Functions to get the vector table
- Wrappers over miscellaneous instructions like
bkpt