hk32-partial-hal 0.3.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 {
    const GPIO_BLOCKS: [crate::pac::gpio::Gpio; 4] = [
        crate::pac::GPIOA,
        crate::pac::GPIOB,
        crate::pac::GPIOC,
        crate::pac::GPIOD,
    ];

    if n < 4 {
        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,
    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,
);