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