hk32-partial-hal 0.3.1

HK32 partial HAL
pub use hk32f005_pac as pac;

embassy_hal_internal::peripherals_definition!(
    PA0, PA1, PA2, PA3, PA4, PA5, PA6, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PC0, PC1, PC2, SPI
);

embassy_hal_internal::peripherals_struct!(
    PA0, PA1, PA2, PA3, PA4, PA5, PA6, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PC0, PC1, PC2, SPI
);

#[allow(unused)]
#[macro_export]
macro_rules! foreach_spi {
	($($pat:tt => $code:tt;)*) => {
		macro_rules! __foreach_spi_inner {
			$(($pat) => $code;)*
			($_:tt) => {}
		}
		__foreach_spi_inner!((SPI));
	};
}

#[allow(unused)]
#[macro_export]
macro_rules! foreach_pin {
	($($pat:tt => $code:tt;)*) => {
		macro_rules! __foreach_pin_inner {
			$(($pat) => $code;)*
			($_:tt) => {}
		}
		__foreach_pin_inner!((PA0,GPIOA,0,0,EXTI0));
		__foreach_pin_inner!((PA1,GPIOA,0,1,EXTI1));
		__foreach_pin_inner!((PA2,GPIOA,0,2,EXTI2));
		__foreach_pin_inner!((PA3,GPIOA,0,3,EXTI3));
		__foreach_pin_inner!((PA4,GPIOA,0,4,EXTI4));
		__foreach_pin_inner!((PA5,GPIOA,0,5,EXTI5));
        __foreach_pin_inner!((PA6,GPIOA,0,6,EXTI6));
		__foreach_pin_inner!((PB0,GPIOB,1,0,EXTI0));
		__foreach_pin_inner!((PB1,GPIOB,1,1,EXTI1));
		__foreach_pin_inner!((PB2,GPIOB,1,2,EXTI2));
		__foreach_pin_inner!((PB3,GPIOB,1,3,EXTI3));
		__foreach_pin_inner!((PB4,GPIOB,1,4,EXTI4));
		__foreach_pin_inner!((PB5,GPIOB,1,5,EXTI5));
        __foreach_pin_inner!((PB6,GPIOB,1,6,EXTI6));
        __foreach_pin_inner!((PC0,GPIOC,2,0,EXTI0));
		__foreach_pin_inner!((PC1,GPIOC,2,1,EXTI1));
		__foreach_pin_inner!((PC2,GPIOC,2,2,EXTI2));
	};
}

pub fn gpio_block(n: usize) -> crate::pac::gpio::Gpio {
    const GPIO_BLOCKS: [crate::pac::gpio::Gpio; 3] =
        [crate::pac::GPIOA, crate::pac::GPIOB, crate::pac::GPIOC];

    if n < 3 {
        GPIO_BLOCKS[n]
    } else {
        #[cfg(feature = "dont-panic")]
        {
            cortex_m::asm::udf();
        }
        #[cfg(not(feature = "dont-panic"))]
        {
            panic!("invalid GPIO block number {n}");
        }
    }
}

embassy_hal_internal::interrupt_mod!(
    WWDG, PVD, CSS_LSE, FLASH, RCC, EXTI0_1, EXTI2_3, EXTI4_6, SPI, ADC_COMP, LPTIM, UART1, TIMC5,
    UART2, TIM6, I2C, TIMC11,
);