Add a Dbgmcu struct capable of enabling all relevant DBGMCU.cr fields.

Includes the addition of a `dbgmcu!(...)` macro table which currently takes
the form of

	(cr, $fn_name:ident)

where `$fn_name` is something like `set_dbgsleep_d1` etc.

The method is unsafe, since it's performing unsafe PAC operations.

Two examples modified to demonstrate its usage.
This commit is contained in:
Bob McWhirter
2021-07-22 14:18:48 -04:00
parent 3655ceff27
commit d68f2617e6
5 changed files with 50 additions and 12 deletions

View File

@ -14,6 +14,7 @@ use embassy::time::Clock;
use embassy::util::Forever;
use embassy_stm32::dma::NoDma;
use embassy_stm32::usart::{Config, Uart};
use embassy_stm32::dbgmcu::Dbgmcu;
use example_common::*;
use embassy_traits::uart::Write as _Write;
@ -72,13 +73,9 @@ fn main() -> ! {
let pp = unsafe { pac::Peripherals::steal() };
pp.DBGMCU.cr.modify(|_, w| {
w.dbgsleep_d1().set_bit();
w.dbgstby_d1().set_bit();
w.dbgstop_d1().set_bit();
w.d1dbgcken().set_bit();
w
});
unsafe {
Dbgmcu::enable_all();
}
pp.RCC.ahb4enr.modify(|_, w| {
w.gpioaen().set_bit();