pub unsafe fn enable_itm(
dcb: &mut cortex_m::peripheral::DCB,
dbgmcu: &stm32h7xx_hal::stm32::DBGMCU,
itm: &mut cortex_m::peripheral::ITM,
c_ck: u32,
swo_frequency: u32,
) {
dcb.enable_trace();
dbgmcu.cr.modify(|_, w| {
w.d3dbgcken()
.set_bit() .d1dbgcken()
.set_bit() .traceclken()
.set_bit() .dbgsleep_d1()
.set_bit() });
*(0x5c00_3fb0 as *mut u32) = 0xC5AC_CE55;
*(0x5c00_4fb0 as *mut u32) = 0xC5AC_CE55;
*(0x5c00_3010 as *mut _) = (c_ck / swo_frequency) - 1;
*(0x5c00_30f0 as *mut _) = 0x2;
*(0x5c00_4000 as *mut u32) |= (0 << 1) | (1 << 0);
itm.lar.write(0xC5AC_CE55);
itm.ter[0].write(1);
itm.tcr.write(
(0b00_0001 << 16) | (1 << 3) | (1 << 0), );
}