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,
);