639: stm32: move pin trait impls from macrotables to build.rs r=Dirbaio a=Dirbaio
Continuation of work from #601#638
Co-authored-by: Dario Nieuwenhuis <dirbaio@dirbaio.net>
638: stm32: move dma trait impls from macrotables to build.rs r=Dirbaio a=Dirbaio
Continuation of work from #601
Co-authored-by: Dario Nieuwenhuis <dirbaio@dirbaio.net>
635: Add documentation about the different embassy abstraction layers r=Dirbaio a=lulf
The guide demonstrates the functionality offered by each
layer in Embassy, using code examples.
Co-authored-by: Ulf Lilleengen <ulf.lilleengen@gmail.com>
628: Improve logic for processing button events r=Dirbaio a=ceigel
Allow blinking to be interrupted by button presses in this sample.
Co-authored-by: Cristian Eigel <cristian.eigel@esrlabs.com>
618: time: optimize math by reducing fractions at compile time. r=Dirbaio a=Dirbaio
For example, `as_micros`, `from_micros` now are noops if tick rate is 1MHz.
See: https://godbolt.org/z/fE1bf3ecP
Co-authored-by: Dario Nieuwenhuis <dirbaio@dirbaio.net>
608: stm32f4: add adc + example r=Dirbaio a=ain101
Example tested on stm32f407vg Discovery Board.
minimal adc: no vref, dma, complex sequence
Co-authored-by: Frederik <frederik@frederik.at>
617: Add feature defmt-timestamp-uptime r=Dirbaio a=danielzfranklin
Add the feature defmt-timestamp-uptime. Enabling it adds a timestamp of the number of seconds since startup next to defmt log messages using `Instant::now`.
Co-authored-by: Daniel Franklin <daniel@danielzfranklin.org>
613: Rust stable support r=Dirbaio a=Dirbaio
This PR adds (limited) stable Rust support!
The drawbacks are:
- No `#[embassy::task]`, `#[embassy::main]`. (requires `type_alias_impl_trait`). You have to manually allocate the tasks somewhere they'll live forever. See [example](https://github.com/embassy-rs/embassy/blob/master/examples/nrf/src/bin/raw_spawn.rs)
- No async trait impls (requires GATs). Note that the full API surface of HALs is still available through inherent methods: #552#581
- Some stuff is not constructible in const (requires `const_fn_trait_bound`), although there's an (ugly) workaround for the generic `Mutex`.
So it's not that bad in the end, it's fully usable for shipping production-ready firmwares. We'll still recommend nightly as the default, until GATs and `type_alias_impl_trait` are stable.
Co-authored-by: Dario Nieuwenhuis <dirbaio@dirbaio.net>