hk32-partial-hal 0.1.1

HK32 partial HAL
pub use hk32f0301mxxc_pac as pac;

embassy_hal_internal::peripherals_definition!(
    PA0, PA1, PA2, PA3, PB4, PB5, PC3, PC4, PC5, PC6, PC7, PD1, PD2, PD3, PD4, PD5, PD6, PD7, SPI1,
);

embassy_hal_internal::peripherals_struct!(
    PA0, PA1, PA2, PA3, PB4, PB5, PC3, PC4, PC5, PC6, PC7, PD1, PD2, PD3, PD4, PD5, PD6, PD7, SPI1,
);

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

#[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!((PB4,GPIOB,1,4,EXTI4));
		__foreach_pin_inner!((PB5,GPIOB,1,5,EXTI5));
		__foreach_pin_inner!((PC3,GPIOC,2,3,EXTI3));
		__foreach_pin_inner!((PC4,GPIOC,2,4,EXTI4));
		__foreach_pin_inner!((PC5,GPIOC,2,5,EXTI5));
		__foreach_pin_inner!((PC6,GPIOC,2,6,EXTI6));
		__foreach_pin_inner!((PC7,GPIOC,2,7,EXTI7));
		__foreach_pin_inner!((PD1,GPIOD,3,1,EXTI1));
		__foreach_pin_inner!((PD2,GPIOD,3,2,EXTI2));
		__foreach_pin_inner!((PD3,GPIOD,3,3,EXTI3));
		__foreach_pin_inner!((PD4,GPIOD,3,4,EXTI4));
		__foreach_pin_inner!((PD5,GPIOD,3,5,EXTI5));
		__foreach_pin_inner!((PD6,GPIOD,3,6,EXTI6));
		__foreach_pin_inner!((PD7,GPIOD,3,7,EXTI7));
	};
}

pub fn gpio_block(n: usize) -> crate::pac::gpio::Gpio {
    match n {
        0 => crate::pac::GPIOA,
        1 => crate::pac::GPIOB,
        2 => crate::pac::GPIOC,
        3 => crate::pac::GPIOD,
        _ => panic!("invalid GPIO block number {n}"),
    }
}

embassy_hal_internal::interrupt_mod!(
	WWDG,
	EXTI11,
	FLASH,
	RCC,
	EXTI0,
	EXTI1,
	EXTI2,
	EXTI3,
	EXTI4,
	EXTI5,
	TIM1_BRK,
	ADC1,
	TIM1_UP_TRG_COM,
	TIM1_CC,
	TIM2,
	TIM6,
	EXTI6,
	EXTI7,
	I2C,
	SPI,
	UART1,
	UART2,
);