hk32-partial-hal 0.1.1

HK32 partial HAL
pub use hk32c030xx_pac as pac;

embassy_hal_internal::peripherals_definition!(
    PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1,
    PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC13, PC14, PC15,
    PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, SPI1, SPI2
);

embassy_hal_internal::peripherals_struct!(
    PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1,
    PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC13, PC14, PC15,
    PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, SPI1, SPI2
);

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

#[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!((PA7,GPIOA,0,7,EXTI7));
		__foreach_pin_inner!((PA8,GPIOA,0,8,EXTI8));
		__foreach_pin_inner!((PA9,GPIOA,0,9,EXTI9));
		__foreach_pin_inner!((PA10,GPIOA,0,10,EXTI10));
		__foreach_pin_inner!((PA11,GPIOA,0,11,EXTI11));
		__foreach_pin_inner!((PA12,GPIOA,0,12,EXTI12));
		__foreach_pin_inner!((PA13,GPIOA,0,13,EXTI13));
		__foreach_pin_inner!((PA14,GPIOA,0,14,EXTI14));
		__foreach_pin_inner!((PA15,GPIOA,0,15,EXTI15));
		__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!((PB7,GPIOB,1,7,EXTI7));
		__foreach_pin_inner!((PB8,GPIOB,1,8,EXTI8));
		__foreach_pin_inner!((PB9,GPIOB,1,9,EXTI9));
		__foreach_pin_inner!((PB10,GPIOB,1,10,EXTI10));
		__foreach_pin_inner!((PB11,GPIOB,1,11,EXTI11));
		__foreach_pin_inner!((PB12,GPIOB,1,12,EXTI12));
		__foreach_pin_inner!((PB13,GPIOB,1,13,EXTI13));
		__foreach_pin_inner!((PB14,GPIOB,1,14,EXTI14));
		__foreach_pin_inner!((PB15,GPIOB,1,15,EXTI15));
		__foreach_pin_inner!((PC13,GPIOC,2,13,EXTI13));
		__foreach_pin_inner!((PC14,GPIOC,2,14,EXTI14));
		__foreach_pin_inner!((PC15,GPIOC,2,15,EXTI15));
		__foreach_pin_inner!((PF0,GPIOF,4,0,EXTI0));
		__foreach_pin_inner!((PF1,GPIOF,4,1,EXTI1));
		__foreach_pin_inner!((PF2,GPIOF,4,2,EXTI2));
		__foreach_pin_inner!((PF3,GPIOF,4,3,EXTI3));
		__foreach_pin_inner!((PF4,GPIOF,4,4,EXTI4));
		__foreach_pin_inner!((PF5,GPIOF,4,5,EXTI5));
		__foreach_pin_inner!((PF6,GPIOF,4,6,EXTI6));
		__foreach_pin_inner!((PF7,GPIOF,4,7,EXTI7));
		__foreach_pin_inner!((PF8,GPIOF,4,8,EXTI8));
	};
}

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

embassy_hal_internal::interrupt_mod!(
	WWDG,
	PVD,
	RTC,
	FLASH,
	RCC,
	EXTI0_1,
	EXTI2_3,
	EXTI4_15,
	DMA_CH1,
	DMA_CH2_3,
	DMA_CH4_5,
	ADC,
	TIM1_BRK_UP_TRG_COM,
	TIM1_CC,
	TIM2,
	TIM3,
	TIM6,
	TIM14,
	TIM15,
	TIM16,
	TIM17,
	I2C1,
	I2C2,
	SPI1,
	SPI2,
	UART1,
	UART2,
	UART3,
	TSEN,
	DVSQ,
);