add solution and template for uarte_enable

This commit is contained in:
Mirabellensaft 2023-03-13 18:33:02 +01:00
parent ed973e7497
commit b4de9b3ed5
2 changed files with 53 additions and 26 deletions

View file

@ -3,7 +3,8 @@
use cortex_m::asm;
use cortex_m_rt::entry;
use dk_pac::UARTE0;
// ^^^^ import the PAC here
// this imports `down-the-stack/apps/lib.rs` to retrieve our global logger + panicking-behavior
use apps as _;
@ -15,23 +16,8 @@ fn main() -> ! {
// to enable more verbose logs, go to your `Cargo.toml` and set defmt logging levels
// to `defmt-trace` by changing the `default = []` entry in `[features]`
// takes ownership of the nRF52840-DK peripherals
let periph = dk_pac::Peripherals::take().unwrap();
let uarte = periph.UARTE0;
uarte_enabled(&uarte);
// enable the UART0 peripheral the safe way
uarte.enable.write(|w| w.enable().enabled());
uarte_enabled(&uarte);
// disable the UART0 peripheral by writing 0 directly into the register -- the unsafe way
unsafe {
uarte.enable.write(|w| w.bits(0x00 as u32));
}
uarte_enabled(&uarte);
// Your code goes here...
// this program does not `exit`; use Ctrl+C to terminate it
loop {
@ -39,11 +25,4 @@ fn main() -> ! {
}
}
// Reads the bits in the UART0 register and prints `enabled` or `disabled`
fn uarte_enabled(uarte: &UARTE0) {
if uarte.enable.read().bits() != 0 {
defmt::println!("Uarte0 is enabled");
} else {
defmt::println!("Uarte0 is disabled");
}
}
// The helper function goes here...

View file

@ -0,0 +1,48 @@
#![no_main]
#![no_std]
use cortex_m::asm;
use cortex_m_rt::entry;
use dk_pac::UARTE0;
// this imports `down-the-stack/apps/lib.rs` to retrieve our global logger + panicking-behavior
use apps as _;
use defmt;
use defmt_rtt as _; // global logger
#[entry]
fn main() -> ! {
// to enable more verbose logs, go to your `Cargo.toml` and set defmt logging levels
// to `defmt-trace` by changing the `default = []` entry in `[features]`
// takes ownership of the nRF52840-DK peripherals
let periph = dk_pac::Peripherals::take().unwrap();
let uarte = periph.UARTE0;
is_uarte_enabled(&uarte);
// enable the UART0 peripheral the safe way
uarte.enable.write(|w| w.enable().enabled());
is_uarte_enabled(&uarte);
// disable the UART0 peripheral by writing 0 directly into the register -- the unsafe way
unsafe {
uarte.enable.write(|w| w.bits(0x00 as u32));
}
is_uarte_enabled(&uarte);
// this program does not `exit`; use Ctrl+C to terminate it
loop {
asm::nop();
}
}
fn is_uarte_enabled(uarte: &UARTE0) {
if uarte.enable.read().enable().is_enabled() {
defmt::println!("Uarte0 is enabled");
} else {
defmt::println!("Uarte0 is disabled");
}
}