vorago_shared_hal/
sysconfig.rs

1#[cfg(feature = "vor1x")]
2use va108xx as pac;
3#[cfg(feature = "vor4x")]
4use va416xx as pac;
5
6#[inline]
7pub fn enable_peripheral_clock(clock: crate::PeripheralSelect) {
8    let syscfg = unsafe { pac::Sysconfig::steal() };
9    syscfg
10        .peripheral_clk_enable()
11        .modify(|r, w| unsafe { w.bits(r.bits() | (1 << clock as u8)) });
12}
13
14#[inline]
15pub fn disable_peripheral_clock(clock: crate::PeripheralSelect) {
16    let syscfg = unsafe { pac::Sysconfig::steal() };
17    syscfg
18        .peripheral_clk_enable()
19        .modify(|r, w| unsafe { w.bits(r.bits() & !(1 << clock as u8)) });
20}
21
22#[inline]
23pub fn assert_peripheral_reset(periph_sel: crate::PeripheralSelect) {
24    let syscfg = unsafe { pac::Sysconfig::steal() };
25    syscfg
26        .peripheral_reset()
27        .modify(|r, w| unsafe { w.bits(r.bits() & !(1 << periph_sel as u8)) });
28}
29
30#[inline]
31pub fn deassert_peripheral_reset(periph_sel: crate::PeripheralSelect) {
32    let syscfg = unsafe { pac::Sysconfig::steal() };
33    syscfg
34        .peripheral_reset()
35        .modify(|r, w| unsafe { w.bits(r.bits() | (1 << periph_sel as u8)) });
36}
37
38#[inline]
39pub fn reset_peripheral_for_cycles(periph_sel: crate::PeripheralSelect, cycles: usize) {
40    assert_peripheral_reset(periph_sel);
41    cortex_m::asm::delay(cycles as u32);
42    deassert_peripheral_reset(periph_sel);
43}