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