diff options
291 files changed, 59366 insertions, 2305 deletions
diff --git a/embassy-stm32/gen.py b/embassy-stm32/gen.py index cf04cc158..714ead373 100644 --- a/embassy-stm32/gen.py +++ b/embassy-stm32/gen.py | |||
| @@ -67,6 +67,8 @@ for chip in chips.values(): | |||
| 67 | # We don't want to hardcode the EXTI peripheral addr | 67 | # We don't want to hardcode the EXTI peripheral addr |
| 68 | peripherals.extend((f'EXTI{x}' for x in range(16))) | 68 | peripherals.extend((f'EXTI{x}' for x in range(16))) |
| 69 | 69 | ||
| 70 | exti_base = chip['peripherals']['EXTI']['address'] | ||
| 71 | syscfg_base = chip['peripherals']['SYSCFG']['address'] | ||
| 70 | gpio_base = chip['peripherals']['GPIOA']['address'] | 72 | gpio_base = chip['peripherals']['GPIOA']['address'] |
| 71 | gpio_stride = 0x400 | 73 | gpio_stride = 0x400 |
| 72 | 74 | ||
| @@ -129,6 +131,8 @@ for chip in chips.values(): | |||
| 129 | f.write(f""" | 131 | f.write(f""" |
| 130 | use embassy_extras::peripherals; | 132 | use embassy_extras::peripherals; |
| 131 | peripherals!({','.join(peripherals)}); | 133 | peripherals!({','.join(peripherals)}); |
| 134 | pub const SYSCFG_BASE: usize = 0x{syscfg_base:x}; | ||
| 135 | pub const EXTI_BASE: usize = 0x{exti_base:x}; | ||
| 132 | pub const GPIO_BASE: usize = 0x{gpio_base:x}; | 136 | pub const GPIO_BASE: usize = 0x{gpio_base:x}; |
| 133 | pub const GPIO_STRIDE: usize = 0x{gpio_stride:x}; | 137 | pub const GPIO_STRIDE: usize = 0x{gpio_stride:x}; |
| 134 | 138 | ||
diff --git a/embassy-stm32/src/chip/stm32f401cb.rs b/embassy-stm32/src/chip/stm32f401cb.rs index 654c39bdd..027fef5a2 100644 --- a/embassy-stm32/src/chip/stm32f401cb.rs +++ b/embassy-stm32/src/chip/stm32f401cb.rs | |||
| @@ -1,15 +1,17 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, | 4 | EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, |
| 5 | PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, | 5 | PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, |
| 6 | PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, | 6 | PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, |
| 7 | PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, | 7 | PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, |
| 8 | PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, | 8 | PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, |
| 9 | PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, | 9 | PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, |
| 10 | I2C2, I2C3, IWDG, RCC, RTC, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, TIM4, | 10 | I2C1, I2C2, I2C3, IWDG, RCC, RTC, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, |
| 11 | TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG | 11 | TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG |
| 12 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 14 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 13 | pub const GPIO_BASE: usize = 0x40020000; | 15 | pub const GPIO_BASE: usize = 0x40020000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 15 | 17 | ||
diff --git a/embassy-stm32/src/chip/stm32f401cc.rs b/embassy-stm32/src/chip/stm32f401cc.rs index 654c39bdd..027fef5a2 100644 --- a/embassy-stm32/src/chip/stm32f401cc.rs +++ b/embassy-stm32/src/chip/stm32f401cc.rs | |||
| @@ -1,15 +1,17 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, | 4 | EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, |
| 5 | PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, | 5 | PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, |
| 6 | PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, | 6 | PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, |
| 7 | PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, | 7 | PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, |
| 8 | PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, | 8 | PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, |
| 9 | PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, | 9 | PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, |
| 10 | I2C2, I2C3, IWDG, RCC, RTC, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, TIM4, | 10 | I2C1, I2C2, I2C3, IWDG, RCC, RTC, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, |
| 11 | TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG | 11 | TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG |
| 12 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 14 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 13 | pub const GPIO_BASE: usize = 0x40020000; | 15 | pub const GPIO_BASE: usize = 0x40020000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 15 | 17 | ||
diff --git a/embassy-stm32/src/chip/stm32f401cd.rs b/embassy-stm32/src/chip/stm32f401cd.rs index 654c39bdd..027fef5a2 100644 --- a/embassy-stm32/src/chip/stm32f401cd.rs +++ b/embassy-stm32/src/chip/stm32f401cd.rs | |||
| @@ -1,15 +1,17 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, | 4 | EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, |
| 5 | PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, | 5 | PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, |
| 6 | PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, | 6 | PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, |
| 7 | PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, | 7 | PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, |
| 8 | PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, | 8 | PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, |
| 9 | PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, | 9 | PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, |
| 10 | I2C2, I2C3, IWDG, RCC, RTC, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, TIM4, | 10 | I2C1, I2C2, I2C3, IWDG, RCC, RTC, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, |
| 11 | TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG | 11 | TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG |
| 12 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 14 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 13 | pub const GPIO_BASE: usize = 0x40020000; | 15 | pub const GPIO_BASE: usize = 0x40020000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 15 | 17 | ||
diff --git a/embassy-stm32/src/chip/stm32f401ce.rs b/embassy-stm32/src/chip/stm32f401ce.rs index 654c39bdd..027fef5a2 100644 --- a/embassy-stm32/src/chip/stm32f401ce.rs +++ b/embassy-stm32/src/chip/stm32f401ce.rs | |||
| @@ -1,15 +1,17 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, | 4 | EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, |
| 5 | PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, | 5 | PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, |
| 6 | PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, | 6 | PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, |
| 7 | PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, | 7 | PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, |
| 8 | PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, | 8 | PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, |
| 9 | PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, | 9 | PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, |
| 10 | I2C2, I2C3, IWDG, RCC, RTC, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, TIM4, | 10 | I2C1, I2C2, I2C3, IWDG, RCC, RTC, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, |
| 11 | TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG | 11 | TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG |
| 12 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 14 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 13 | pub const GPIO_BASE: usize = 0x40020000; | 15 | pub const GPIO_BASE: usize = 0x40020000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 15 | 17 | ||
diff --git a/embassy-stm32/src/chip/stm32f401rb.rs b/embassy-stm32/src/chip/stm32f401rb.rs index 5c413734a..163900e93 100644 --- a/embassy-stm32/src/chip/stm32f401rb.rs +++ b/embassy-stm32/src/chip/stm32f401rb.rs | |||
| @@ -1,15 +1,17 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, | 4 | EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, |
| 5 | PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, | 5 | PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, |
| 6 | PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, | 6 | PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, |
| 7 | PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, | 7 | PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, |
| 8 | PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, | 8 | PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, |
| 9 | PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, | 9 | PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, |
| 10 | I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, | 10 | I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, |
| 11 | TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG | 11 | TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG |
| 12 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 14 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 13 | pub const GPIO_BASE: usize = 0x40020000; | 15 | pub const GPIO_BASE: usize = 0x40020000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 15 | 17 | ||
diff --git a/embassy-stm32/src/chip/stm32f401rc.rs b/embassy-stm32/src/chip/stm32f401rc.rs index 5c413734a..163900e93 100644 --- a/embassy-stm32/src/chip/stm32f401rc.rs +++ b/embassy-stm32/src/chip/stm32f401rc.rs | |||
| @@ -1,15 +1,17 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, | 4 | EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, |
| 5 | PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, | 5 | PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, |
| 6 | PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, | 6 | PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, |
| 7 | PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, | 7 | PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, |
| 8 | PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, | 8 | PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, |
| 9 | PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, | 9 | PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, |
| 10 | I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, | 10 | I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, |
| 11 | TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG | 11 | TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG |
| 12 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 14 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 13 | pub const GPIO_BASE: usize = 0x40020000; | 15 | pub const GPIO_BASE: usize = 0x40020000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 15 | 17 | ||
diff --git a/embassy-stm32/src/chip/stm32f401rd.rs b/embassy-stm32/src/chip/stm32f401rd.rs index 5c413734a..163900e93 100644 --- a/embassy-stm32/src/chip/stm32f401rd.rs +++ b/embassy-stm32/src/chip/stm32f401rd.rs | |||
| @@ -1,15 +1,17 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, | 4 | EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, |
| 5 | PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, | 5 | PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, |
| 6 | PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, | 6 | PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, |
| 7 | PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, | 7 | PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, |
| 8 | PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, | 8 | PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, |
| 9 | PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, | 9 | PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, |
| 10 | I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, | 10 | I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, |
| 11 | TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG | 11 | TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG |
| 12 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 14 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 13 | pub const GPIO_BASE: usize = 0x40020000; | 15 | pub const GPIO_BASE: usize = 0x40020000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 15 | 17 | ||
diff --git a/embassy-stm32/src/chip/stm32f401re.rs b/embassy-stm32/src/chip/stm32f401re.rs index 5c413734a..163900e93 100644 --- a/embassy-stm32/src/chip/stm32f401re.rs +++ b/embassy-stm32/src/chip/stm32f401re.rs | |||
| @@ -1,15 +1,17 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, | 4 | EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, |
| 5 | PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, | 5 | PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, |
| 6 | PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, | 6 | PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, |
| 7 | PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, | 7 | PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, |
| 8 | PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, | 8 | PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, |
| 9 | PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, | 9 | PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, |
| 10 | I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, | 10 | I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, |
| 11 | TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG | 11 | TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG |
| 12 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 14 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 13 | pub const GPIO_BASE: usize = 0x40020000; | 15 | pub const GPIO_BASE: usize = 0x40020000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 15 | 17 | ||
diff --git a/embassy-stm32/src/chip/stm32f401vb.rs b/embassy-stm32/src/chip/stm32f401vb.rs index f9911116c..8976fb754 100644 --- a/embassy-stm32/src/chip/stm32f401vb.rs +++ b/embassy-stm32/src/chip/stm32f401vb.rs | |||
| @@ -1,15 +1,17 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, | 4 | EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, |
| 5 | PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, | 5 | PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, |
| 6 | PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, | 6 | PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, |
| 7 | PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, | 7 | PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, |
| 8 | PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, | 8 | PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, |
| 9 | PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, | 9 | PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, |
| 10 | I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM2, | 10 | I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, |
| 11 | TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG | 11 | TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG |
| 12 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 14 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 13 | pub const GPIO_BASE: usize = 0x40020000; | 15 | pub const GPIO_BASE: usize = 0x40020000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 15 | 17 | ||
diff --git a/embassy-stm32/src/chip/stm32f401vc.rs b/embassy-stm32/src/chip/stm32f401vc.rs index f9911116c..8976fb754 100644 --- a/embassy-stm32/src/chip/stm32f401vc.rs +++ b/embassy-stm32/src/chip/stm32f401vc.rs | |||
| @@ -1,15 +1,17 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, | 4 | EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, |
| 5 | PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, | 5 | PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, |
| 6 | PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, | 6 | PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, |
| 7 | PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, | 7 | PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, |
| 8 | PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, | 8 | PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, |
| 9 | PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, | 9 | PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, |
| 10 | I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM2, | 10 | I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, |
| 11 | TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG | 11 | TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG |
| 12 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 14 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 13 | pub const GPIO_BASE: usize = 0x40020000; | 15 | pub const GPIO_BASE: usize = 0x40020000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 15 | 17 | ||
diff --git a/embassy-stm32/src/chip/stm32f401vd.rs b/embassy-stm32/src/chip/stm32f401vd.rs index f9911116c..8976fb754 100644 --- a/embassy-stm32/src/chip/stm32f401vd.rs +++ b/embassy-stm32/src/chip/stm32f401vd.rs | |||
| @@ -1,15 +1,17 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, | 4 | EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, |
| 5 | PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, | 5 | PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, |
| 6 | PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, | 6 | PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, |
| 7 | PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, | 7 | PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, |
| 8 | PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, | 8 | PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, |
| 9 | PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, | 9 | PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, |
| 10 | I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM2, | 10 | I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, |
| 11 | TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG | 11 | TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG |
| 12 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 14 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 13 | pub const GPIO_BASE: usize = 0x40020000; | 15 | pub const GPIO_BASE: usize = 0x40020000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 15 | 17 | ||
diff --git a/embassy-stm32/src/chip/stm32f401ve.rs b/embassy-stm32/src/chip/stm32f401ve.rs index f9911116c..8976fb754 100644 --- a/embassy-stm32/src/chip/stm32f401ve.rs +++ b/embassy-stm32/src/chip/stm32f401ve.rs | |||
| @@ -1,15 +1,17 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, | 4 | EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, |
| 5 | PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, | 5 | PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, |
| 6 | PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, | 6 | PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, |
| 7 | PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, | 7 | PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, |
| 8 | PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, | 8 | PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, |
| 9 | PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, | 9 | PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, |
| 10 | I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM2, | 10 | I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, |
| 11 | TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG | 11 | TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG |
| 12 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 14 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 13 | pub const GPIO_BASE: usize = 0x40020000; | 15 | pub const GPIO_BASE: usize = 0x40020000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 15 | 17 | ||
diff --git a/embassy-stm32/src/chip/stm32f405oe.rs b/embassy-stm32/src/chip/stm32f405oe.rs index dcc229ce4..8cffccd9b 100644 --- a/embassy-stm32/src/chip/stm32f405oe.rs +++ b/embassy-stm32/src/chip/stm32f405oe.rs | |||
| @@ -1,9 +1,9 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, PA0, PA1, PA2, PA3, PA4, PA5, PA6, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, | 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, |
| @@ -14,6 +14,8 @@ peripherals!( | |||
| 14 | TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, | 14 | TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, |
| 15 | USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 15 | USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f405og.rs b/embassy-stm32/src/chip/stm32f405og.rs index dcc229ce4..8cffccd9b 100644 --- a/embassy-stm32/src/chip/stm32f405og.rs +++ b/embassy-stm32/src/chip/stm32f405og.rs | |||
| @@ -1,9 +1,9 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, PA0, PA1, PA2, PA3, PA4, PA5, PA6, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, | 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, |
| @@ -14,6 +14,8 @@ peripherals!( | |||
| 14 | TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, | 14 | TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, |
| 15 | USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 15 | USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f405rg.rs b/embassy-stm32/src/chip/stm32f405rg.rs index dcc229ce4..8cffccd9b 100644 --- a/embassy-stm32/src/chip/stm32f405rg.rs +++ b/embassy-stm32/src/chip/stm32f405rg.rs | |||
| @@ -1,9 +1,9 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, PA0, PA1, PA2, PA3, PA4, PA5, PA6, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, | 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, |
| @@ -14,6 +14,8 @@ peripherals!( | |||
| 14 | TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, | 14 | TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, |
| 15 | USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 15 | USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f405vg.rs b/embassy-stm32/src/chip/stm32f405vg.rs index dcc229ce4..8cffccd9b 100644 --- a/embassy-stm32/src/chip/stm32f405vg.rs +++ b/embassy-stm32/src/chip/stm32f405vg.rs | |||
| @@ -1,9 +1,9 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, PA0, PA1, PA2, PA3, PA4, PA5, PA6, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, | 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, |
| @@ -14,6 +14,8 @@ peripherals!( | |||
| 14 | TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, | 14 | TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, |
| 15 | USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 15 | USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f405zg.rs b/embassy-stm32/src/chip/stm32f405zg.rs index dcc229ce4..8cffccd9b 100644 --- a/embassy-stm32/src/chip/stm32f405zg.rs +++ b/embassy-stm32/src/chip/stm32f405zg.rs | |||
| @@ -1,9 +1,9 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, PA0, PA1, PA2, PA3, PA4, PA5, PA6, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, | 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, |
| @@ -14,6 +14,8 @@ peripherals!( | |||
| 14 | TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, | 14 | TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, |
| 15 | USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 15 | USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f407ie.rs b/embassy-stm32/src/chip/stm32f407ie.rs index ac19c9844..f86038e1e 100644 --- a/embassy-stm32/src/chip/stm32f407ie.rs +++ b/embassy-stm32/src/chip/stm32f407ie.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,6 +14,8 @@ peripherals!( | |||
| 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, | 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, |
| 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f407ig.rs b/embassy-stm32/src/chip/stm32f407ig.rs index ac19c9844..f86038e1e 100644 --- a/embassy-stm32/src/chip/stm32f407ig.rs +++ b/embassy-stm32/src/chip/stm32f407ig.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,6 +14,8 @@ peripherals!( | |||
| 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, | 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, |
| 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f407ve.rs b/embassy-stm32/src/chip/stm32f407ve.rs index ac19c9844..f86038e1e 100644 --- a/embassy-stm32/src/chip/stm32f407ve.rs +++ b/embassy-stm32/src/chip/stm32f407ve.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,6 +14,8 @@ peripherals!( | |||
| 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, | 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, |
| 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f407vg.rs b/embassy-stm32/src/chip/stm32f407vg.rs index ac19c9844..f86038e1e 100644 --- a/embassy-stm32/src/chip/stm32f407vg.rs +++ b/embassy-stm32/src/chip/stm32f407vg.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,6 +14,8 @@ peripherals!( | |||
| 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, | 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, |
| 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f407ze.rs b/embassy-stm32/src/chip/stm32f407ze.rs index ac19c9844..f86038e1e 100644 --- a/embassy-stm32/src/chip/stm32f407ze.rs +++ b/embassy-stm32/src/chip/stm32f407ze.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,6 +14,8 @@ peripherals!( | |||
| 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, | 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, |
| 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f407zg.rs b/embassy-stm32/src/chip/stm32f407zg.rs index ac19c9844..f86038e1e 100644 --- a/embassy-stm32/src/chip/stm32f407zg.rs +++ b/embassy-stm32/src/chip/stm32f407zg.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,6 +14,8 @@ peripherals!( | |||
| 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, | 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, |
| 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f410c8.rs b/embassy-stm32/src/chip/stm32f410c8.rs index 8015e97a7..3b7a40d35 100644 --- a/embassy-stm32/src/chip/stm32f410c8.rs +++ b/embassy-stm32/src/chip/stm32f410c8.rs | |||
| @@ -1,13 +1,15 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, | 4 | EXTI13, EXTI14, EXTI15, ADC1, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, |
| 5 | PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, | 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, |
| 6 | PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, | 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, |
| 7 | PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 7 | PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 8 | PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SPI2, SPI5, SYSCFG, TIM1, | 8 | PH12, PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SPI2, SPI5, SYSCFG, |
| 9 | TIM11, TIM5, TIM6, TIM9, USART1, USART2, USART6, WWDG | 9 | TIM1, TIM11, TIM5, TIM6, TIM9, USART1, USART2, USART6, WWDG |
| 10 | ); | 10 | ); |
| 11 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 12 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 11 | pub const GPIO_BASE: usize = 0x40020000; | 13 | pub const GPIO_BASE: usize = 0x40020000; |
| 12 | pub const GPIO_STRIDE: usize = 0x400; | 14 | pub const GPIO_STRIDE: usize = 0x400; |
| 13 | 15 | ||
diff --git a/embassy-stm32/src/chip/stm32f410cb.rs b/embassy-stm32/src/chip/stm32f410cb.rs index 8015e97a7..3b7a40d35 100644 --- a/embassy-stm32/src/chip/stm32f410cb.rs +++ b/embassy-stm32/src/chip/stm32f410cb.rs | |||
| @@ -1,13 +1,15 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, | 4 | EXTI13, EXTI14, EXTI15, ADC1, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, |
| 5 | PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, | 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, |
| 6 | PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, | 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, |
| 7 | PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 7 | PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 8 | PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SPI2, SPI5, SYSCFG, TIM1, | 8 | PH12, PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SPI2, SPI5, SYSCFG, |
| 9 | TIM11, TIM5, TIM6, TIM9, USART1, USART2, USART6, WWDG | 9 | TIM1, TIM11, TIM5, TIM6, TIM9, USART1, USART2, USART6, WWDG |
| 10 | ); | 10 | ); |
| 11 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 12 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 11 | pub const GPIO_BASE: usize = 0x40020000; | 13 | pub const GPIO_BASE: usize = 0x40020000; |
| 12 | pub const GPIO_STRIDE: usize = 0x400; | 14 | pub const GPIO_STRIDE: usize = 0x400; |
| 13 | 15 | ||
diff --git a/embassy-stm32/src/chip/stm32f410r8.rs b/embassy-stm32/src/chip/stm32f410r8.rs index 8015e97a7..3b7a40d35 100644 --- a/embassy-stm32/src/chip/stm32f410r8.rs +++ b/embassy-stm32/src/chip/stm32f410r8.rs | |||
| @@ -1,13 +1,15 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, | 4 | EXTI13, EXTI14, EXTI15, ADC1, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, |
| 5 | PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, | 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, |
| 6 | PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, | 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, |
| 7 | PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 7 | PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 8 | PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SPI2, SPI5, SYSCFG, TIM1, | 8 | PH12, PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SPI2, SPI5, SYSCFG, |
| 9 | TIM11, TIM5, TIM6, TIM9, USART1, USART2, USART6, WWDG | 9 | TIM1, TIM11, TIM5, TIM6, TIM9, USART1, USART2, USART6, WWDG |
| 10 | ); | 10 | ); |
| 11 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 12 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 11 | pub const GPIO_BASE: usize = 0x40020000; | 13 | pub const GPIO_BASE: usize = 0x40020000; |
| 12 | pub const GPIO_STRIDE: usize = 0x400; | 14 | pub const GPIO_STRIDE: usize = 0x400; |
| 13 | 15 | ||
diff --git a/embassy-stm32/src/chip/stm32f410rb.rs b/embassy-stm32/src/chip/stm32f410rb.rs index 8015e97a7..3b7a40d35 100644 --- a/embassy-stm32/src/chip/stm32f410rb.rs +++ b/embassy-stm32/src/chip/stm32f410rb.rs | |||
| @@ -1,13 +1,15 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, | 4 | EXTI13, EXTI14, EXTI15, ADC1, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, |
| 5 | PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, | 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, |
| 6 | PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, | 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, |
| 7 | PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 7 | PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 8 | PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SPI2, SPI5, SYSCFG, TIM1, | 8 | PH12, PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SPI2, SPI5, SYSCFG, |
| 9 | TIM11, TIM5, TIM6, TIM9, USART1, USART2, USART6, WWDG | 9 | TIM1, TIM11, TIM5, TIM6, TIM9, USART1, USART2, USART6, WWDG |
| 10 | ); | 10 | ); |
| 11 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 12 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 11 | pub const GPIO_BASE: usize = 0x40020000; | 13 | pub const GPIO_BASE: usize = 0x40020000; |
| 12 | pub const GPIO_STRIDE: usize = 0x400; | 14 | pub const GPIO_STRIDE: usize = 0x400; |
| 13 | 15 | ||
diff --git a/embassy-stm32/src/chip/stm32f410t8.rs b/embassy-stm32/src/chip/stm32f410t8.rs index e34973843..e9035f1a3 100644 --- a/embassy-stm32/src/chip/stm32f410t8.rs +++ b/embassy-stm32/src/chip/stm32f410t8.rs | |||
| @@ -1,13 +1,15 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, | 4 | EXTI13, EXTI14, EXTI15, ADC1, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, |
| 5 | PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, | 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, |
| 6 | PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, | 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, |
| 7 | PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 7 | PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 8 | PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SYSCFG, TIM1, TIM11, TIM5, | 8 | PH12, PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SYSCFG, TIM1, TIM11, |
| 9 | TIM6, TIM9, USART1, USART2, WWDG | 9 | TIM5, TIM6, TIM9, USART1, USART2, WWDG |
| 10 | ); | 10 | ); |
| 11 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 12 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 11 | pub const GPIO_BASE: usize = 0x40020000; | 13 | pub const GPIO_BASE: usize = 0x40020000; |
| 12 | pub const GPIO_STRIDE: usize = 0x400; | 14 | pub const GPIO_STRIDE: usize = 0x400; |
| 13 | 15 | ||
diff --git a/embassy-stm32/src/chip/stm32f410tb.rs b/embassy-stm32/src/chip/stm32f410tb.rs index e34973843..e9035f1a3 100644 --- a/embassy-stm32/src/chip/stm32f410tb.rs +++ b/embassy-stm32/src/chip/stm32f410tb.rs | |||
| @@ -1,13 +1,15 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, | 4 | EXTI13, EXTI14, EXTI15, ADC1, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, |
| 5 | PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, | 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, |
| 6 | PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, | 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, |
| 7 | PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 7 | PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 8 | PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SYSCFG, TIM1, TIM11, TIM5, | 8 | PH12, PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SYSCFG, TIM1, TIM11, |
| 9 | TIM6, TIM9, USART1, USART2, WWDG | 9 | TIM5, TIM6, TIM9, USART1, USART2, WWDG |
| 10 | ); | 10 | ); |
| 11 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 12 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 11 | pub const GPIO_BASE: usize = 0x40020000; | 13 | pub const GPIO_BASE: usize = 0x40020000; |
| 12 | pub const GPIO_STRIDE: usize = 0x400; | 14 | pub const GPIO_STRIDE: usize = 0x400; |
| 13 | 15 | ||
diff --git a/embassy-stm32/src/chip/stm32f411cc.rs b/embassy-stm32/src/chip/stm32f411cc.rs index 5f0dbec63..1cad69bae 100644 --- a/embassy-stm32/src/chip/stm32f411cc.rs +++ b/embassy-stm32/src/chip/stm32f411cc.rs | |||
| @@ -1,15 +1,17 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, | 4 | EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, |
| 5 | PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, | 5 | PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, |
| 6 | PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, | 6 | PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, |
| 7 | PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, | 7 | PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, |
| 8 | PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, | 8 | PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, |
| 9 | PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, | 9 | PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, |
| 10 | I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, | 10 | I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, |
| 11 | TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG | 11 | TIM11, TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG |
| 12 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 14 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 13 | pub const GPIO_BASE: usize = 0x40020000; | 15 | pub const GPIO_BASE: usize = 0x40020000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 15 | 17 | ||
diff --git a/embassy-stm32/src/chip/stm32f411ce.rs b/embassy-stm32/src/chip/stm32f411ce.rs index 5f0dbec63..1cad69bae 100644 --- a/embassy-stm32/src/chip/stm32f411ce.rs +++ b/embassy-stm32/src/chip/stm32f411ce.rs | |||
| @@ -1,15 +1,17 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, | 4 | EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, |
| 5 | PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, | 5 | PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, |
| 6 | PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, | 6 | PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, |
| 7 | PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, | 7 | PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, |
| 8 | PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, | 8 | PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, |
| 9 | PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, | 9 | PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, |
| 10 | I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, | 10 | I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, |
| 11 | TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG | 11 | TIM11, TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG |
| 12 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 14 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 13 | pub const GPIO_BASE: usize = 0x40020000; | 15 | pub const GPIO_BASE: usize = 0x40020000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 15 | 17 | ||
diff --git a/embassy-stm32/src/chip/stm32f411rc.rs b/embassy-stm32/src/chip/stm32f411rc.rs index 5f0dbec63..1cad69bae 100644 --- a/embassy-stm32/src/chip/stm32f411rc.rs +++ b/embassy-stm32/src/chip/stm32f411rc.rs | |||
| @@ -1,15 +1,17 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, | 4 | EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, |
| 5 | PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, | 5 | PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, |
| 6 | PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, | 6 | PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, |
| 7 | PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, | 7 | PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, |
| 8 | PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, | 8 | PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, |
| 9 | PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, | 9 | PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, |
| 10 | I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, | 10 | I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, |
| 11 | TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG | 11 | TIM11, TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG |
| 12 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 14 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 13 | pub const GPIO_BASE: usize = 0x40020000; | 15 | pub const GPIO_BASE: usize = 0x40020000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 15 | 17 | ||
diff --git a/embassy-stm32/src/chip/stm32f411re.rs b/embassy-stm32/src/chip/stm32f411re.rs index 5f0dbec63..1cad69bae 100644 --- a/embassy-stm32/src/chip/stm32f411re.rs +++ b/embassy-stm32/src/chip/stm32f411re.rs | |||
| @@ -1,15 +1,17 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, | 4 | EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, |
| 5 | PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, | 5 | PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, |
| 6 | PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, | 6 | PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, |
| 7 | PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, | 7 | PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, |
| 8 | PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, | 8 | PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, |
| 9 | PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, | 9 | PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, |
| 10 | I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, | 10 | I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, |
| 11 | TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG | 11 | TIM11, TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG |
| 12 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 14 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 13 | pub const GPIO_BASE: usize = 0x40020000; | 15 | pub const GPIO_BASE: usize = 0x40020000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 15 | 17 | ||
diff --git a/embassy-stm32/src/chip/stm32f411vc.rs b/embassy-stm32/src/chip/stm32f411vc.rs index 5f0dbec63..1cad69bae 100644 --- a/embassy-stm32/src/chip/stm32f411vc.rs +++ b/embassy-stm32/src/chip/stm32f411vc.rs | |||
| @@ -1,15 +1,17 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, | 4 | EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, |
| 5 | PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, | 5 | PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, |
| 6 | PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, | 6 | PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, |
| 7 | PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, | 7 | PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, |
| 8 | PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, | 8 | PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, |
| 9 | PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, | 9 | PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, |
| 10 | I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, | 10 | I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, |
| 11 | TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG | 11 | TIM11, TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG |
| 12 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 14 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 13 | pub const GPIO_BASE: usize = 0x40020000; | 15 | pub const GPIO_BASE: usize = 0x40020000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 15 | 17 | ||
diff --git a/embassy-stm32/src/chip/stm32f411ve.rs b/embassy-stm32/src/chip/stm32f411ve.rs index 5f0dbec63..1cad69bae 100644 --- a/embassy-stm32/src/chip/stm32f411ve.rs +++ b/embassy-stm32/src/chip/stm32f411ve.rs | |||
| @@ -1,15 +1,17 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, | 4 | EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, |
| 5 | PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, | 5 | PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, |
| 6 | PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, | 6 | PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, |
| 7 | PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, | 7 | PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, |
| 8 | PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, | 8 | PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, |
| 9 | PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, | 9 | PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, |
| 10 | I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, | 10 | I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, |
| 11 | TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG | 11 | TIM11, TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG |
| 12 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 14 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 13 | pub const GPIO_BASE: usize = 0x40020000; | 15 | pub const GPIO_BASE: usize = 0x40020000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 15 | 17 | ||
diff --git a/embassy-stm32/src/chip/stm32f412ce.rs b/embassy-stm32/src/chip/stm32f412ce.rs index f6749d135..5943ee391 100644 --- a/embassy-stm32/src/chip/stm32f412ce.rs +++ b/embassy-stm32/src/chip/stm32f412ce.rs | |||
| @@ -1,14 +1,16 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, |
| 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, |
| 8 | PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, | 8 | PH11, PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, |
| 9 | SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, | 9 | SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, |
| 10 | TIM8, TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG | 10 | TIM7, TIM8, TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG |
| 11 | ); | 11 | ); |
| 12 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 13 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 12 | pub const GPIO_BASE: usize = 0x40020000; | 14 | pub const GPIO_BASE: usize = 0x40020000; |
| 13 | pub const GPIO_STRIDE: usize = 0x400; | 15 | pub const GPIO_STRIDE: usize = 0x400; |
| 14 | 16 | ||
diff --git a/embassy-stm32/src/chip/stm32f412cg.rs b/embassy-stm32/src/chip/stm32f412cg.rs index f6749d135..5943ee391 100644 --- a/embassy-stm32/src/chip/stm32f412cg.rs +++ b/embassy-stm32/src/chip/stm32f412cg.rs | |||
| @@ -1,14 +1,16 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, |
| 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, |
| 8 | PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, | 8 | PH11, PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, |
| 9 | SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, | 9 | SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, |
| 10 | TIM8, TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG | 10 | TIM7, TIM8, TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG |
| 11 | ); | 11 | ); |
| 12 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 13 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 12 | pub const GPIO_BASE: usize = 0x40020000; | 14 | pub const GPIO_BASE: usize = 0x40020000; |
| 13 | pub const GPIO_STRIDE: usize = 0x400; | 15 | pub const GPIO_STRIDE: usize = 0x400; |
| 14 | 16 | ||
diff --git a/embassy-stm32/src/chip/stm32f412re.rs b/embassy-stm32/src/chip/stm32f412re.rs index 4fda48d4a..b668b84e8 100644 --- a/embassy-stm32/src/chip/stm32f412re.rs +++ b/embassy-stm32/src/chip/stm32f412re.rs | |||
| @@ -1,15 +1,17 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, |
| 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 8 | PD11, PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 9 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, | 9 | PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, |
| 10 | SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, | 10 | SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, |
| 11 | TIM8, TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG | 11 | TIM7, TIM8, TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG |
| 12 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 14 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 13 | pub const GPIO_BASE: usize = 0x40020000; | 15 | pub const GPIO_BASE: usize = 0x40020000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 15 | 17 | ||
diff --git a/embassy-stm32/src/chip/stm32f412rg.rs b/embassy-stm32/src/chip/stm32f412rg.rs index 4fda48d4a..b668b84e8 100644 --- a/embassy-stm32/src/chip/stm32f412rg.rs +++ b/embassy-stm32/src/chip/stm32f412rg.rs | |||
| @@ -1,15 +1,17 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, |
| 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 8 | PD11, PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 9 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, | 9 | PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, |
| 10 | SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, | 10 | SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, |
| 11 | TIM8, TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG | 11 | TIM7, TIM8, TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG |
| 12 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 14 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 13 | pub const GPIO_BASE: usize = 0x40020000; | 15 | pub const GPIO_BASE: usize = 0x40020000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 15 | 17 | ||
diff --git a/embassy-stm32/src/chip/stm32f412ve.rs b/embassy-stm32/src/chip/stm32f412ve.rs index 798ca7f41..2c3dda1c8 100644 --- a/embassy-stm32/src/chip/stm32f412ve.rs +++ b/embassy-stm32/src/chip/stm32f412ve.rs | |||
| @@ -1,18 +1,20 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, |
| 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, | 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, |
| 10 | PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, | 10 | PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, |
| 11 | PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, | 11 | PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, |
| 12 | I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, | 12 | PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, |
| 13 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, | 13 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 14 | USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG | 14 | TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 17 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 16 | pub const GPIO_BASE: usize = 0x40020000; | 18 | pub const GPIO_BASE: usize = 0x40020000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | 20 | ||
diff --git a/embassy-stm32/src/chip/stm32f412vg.rs b/embassy-stm32/src/chip/stm32f412vg.rs index 798ca7f41..2c3dda1c8 100644 --- a/embassy-stm32/src/chip/stm32f412vg.rs +++ b/embassy-stm32/src/chip/stm32f412vg.rs | |||
| @@ -1,18 +1,20 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, |
| 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, | 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, |
| 10 | PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, | 10 | PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, |
| 11 | PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, | 11 | PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, |
| 12 | I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, | 12 | PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, |
| 13 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, | 13 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 14 | USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG | 14 | TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 17 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 16 | pub const GPIO_BASE: usize = 0x40020000; | 18 | pub const GPIO_BASE: usize = 0x40020000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | 20 | ||
diff --git a/embassy-stm32/src/chip/stm32f412ze.rs b/embassy-stm32/src/chip/stm32f412ze.rs index 798ca7f41..2c3dda1c8 100644 --- a/embassy-stm32/src/chip/stm32f412ze.rs +++ b/embassy-stm32/src/chip/stm32f412ze.rs | |||
| @@ -1,18 +1,20 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, |
| 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, | 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, |
| 10 | PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, | 10 | PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, |
| 11 | PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, | 11 | PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, |
| 12 | I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, | 12 | PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, |
| 13 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, | 13 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 14 | USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG | 14 | TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 17 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 16 | pub const GPIO_BASE: usize = 0x40020000; | 18 | pub const GPIO_BASE: usize = 0x40020000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | 20 | ||
diff --git a/embassy-stm32/src/chip/stm32f412zg.rs b/embassy-stm32/src/chip/stm32f412zg.rs index 798ca7f41..2c3dda1c8 100644 --- a/embassy-stm32/src/chip/stm32f412zg.rs +++ b/embassy-stm32/src/chip/stm32f412zg.rs | |||
| @@ -1,18 +1,20 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, |
| 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, | 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, |
| 10 | PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, | 10 | PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, |
| 11 | PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, | 11 | PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, |
| 12 | I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, | 12 | PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, |
| 13 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, | 13 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 14 | USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG | 14 | TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 17 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 16 | pub const GPIO_BASE: usize = 0x40020000; | 18 | pub const GPIO_BASE: usize = 0x40020000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | 20 | ||
diff --git a/embassy-stm32/src/chip/stm32f413cg.rs b/embassy-stm32/src/chip/stm32f413cg.rs index 485fce7b9..f15f2ed3c 100644 --- a/embassy-stm32/src/chip/stm32f413cg.rs +++ b/embassy-stm32/src/chip/stm32f413cg.rs | |||
| @@ -1,18 +1,20 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, |
| 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, | 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, |
| 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| 11 | PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, | 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, |
| 12 | PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, | 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, |
| 13 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 13 | SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, |
| 14 | TIM9, UART4, UART5, UART7, USART1, USART2, USART6, USB_OTG_FS, WWDG | 14 | TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART6, USB_OTG_FS, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 17 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 16 | pub const GPIO_BASE: usize = 0x40020000; | 18 | pub const GPIO_BASE: usize = 0x40020000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | 20 | ||
diff --git a/embassy-stm32/src/chip/stm32f413ch.rs b/embassy-stm32/src/chip/stm32f413ch.rs index 485fce7b9..f15f2ed3c 100644 --- a/embassy-stm32/src/chip/stm32f413ch.rs +++ b/embassy-stm32/src/chip/stm32f413ch.rs | |||
| @@ -1,18 +1,20 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, |
| 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, | 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, |
| 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| 11 | PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, | 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, |
| 12 | PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, | 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, |
| 13 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 13 | SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, |
| 14 | TIM9, UART4, UART5, UART7, USART1, USART2, USART6, USB_OTG_FS, WWDG | 14 | TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART6, USB_OTG_FS, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 17 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 16 | pub const GPIO_BASE: usize = 0x40020000; | 18 | pub const GPIO_BASE: usize = 0x40020000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | 20 | ||
diff --git a/embassy-stm32/src/chip/stm32f413mg.rs b/embassy-stm32/src/chip/stm32f413mg.rs index d0a83492e..7ea6dd58f 100644 --- a/embassy-stm32/src/chip/stm32f413mg.rs +++ b/embassy-stm32/src/chip/stm32f413mg.rs | |||
| @@ -1,18 +1,20 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, |
| 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, | 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, |
| 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| 11 | PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, | 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, |
| 12 | PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, | 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, |
| 13 | SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, | 13 | SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, |
| 14 | TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG | 14 | TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 17 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 16 | pub const GPIO_BASE: usize = 0x40020000; | 18 | pub const GPIO_BASE: usize = 0x40020000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | 20 | ||
diff --git a/embassy-stm32/src/chip/stm32f413mh.rs b/embassy-stm32/src/chip/stm32f413mh.rs index d0a83492e..7ea6dd58f 100644 --- a/embassy-stm32/src/chip/stm32f413mh.rs +++ b/embassy-stm32/src/chip/stm32f413mh.rs | |||
| @@ -1,18 +1,20 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, |
| 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, | 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, |
| 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| 11 | PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, | 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, |
| 12 | PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, | 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, |
| 13 | SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, | 13 | SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, |
| 14 | TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG | 14 | TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 17 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 16 | pub const GPIO_BASE: usize = 0x40020000; | 18 | pub const GPIO_BASE: usize = 0x40020000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | 20 | ||
diff --git a/embassy-stm32/src/chip/stm32f413rg.rs b/embassy-stm32/src/chip/stm32f413rg.rs index d0a83492e..7ea6dd58f 100644 --- a/embassy-stm32/src/chip/stm32f413rg.rs +++ b/embassy-stm32/src/chip/stm32f413rg.rs | |||
| @@ -1,18 +1,20 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, |
| 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, | 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, |
| 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| 11 | PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, | 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, |
| 12 | PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, | 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, |
| 13 | SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, | 13 | SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, |
| 14 | TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG | 14 | TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 17 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 16 | pub const GPIO_BASE: usize = 0x40020000; | 18 | pub const GPIO_BASE: usize = 0x40020000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | 20 | ||
diff --git a/embassy-stm32/src/chip/stm32f413rh.rs b/embassy-stm32/src/chip/stm32f413rh.rs index d0a83492e..7ea6dd58f 100644 --- a/embassy-stm32/src/chip/stm32f413rh.rs +++ b/embassy-stm32/src/chip/stm32f413rh.rs | |||
| @@ -1,18 +1,20 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, |
| 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, | 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, |
| 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| 11 | PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, | 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, |
| 12 | PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, | 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, |
| 13 | SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, | 13 | SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, |
| 14 | TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG | 14 | TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 17 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 16 | pub const GPIO_BASE: usize = 0x40020000; | 18 | pub const GPIO_BASE: usize = 0x40020000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | 20 | ||
diff --git a/embassy-stm32/src/chip/stm32f413vg.rs b/embassy-stm32/src/chip/stm32f413vg.rs index e2d6a981b..1894feacb 100644 --- a/embassy-stm32/src/chip/stm32f413vg.rs +++ b/embassy-stm32/src/chip/stm32f413vg.rs | |||
| @@ -1,19 +1,21 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, |
| 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, | 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, |
| 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| 11 | PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, | 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, |
| 12 | PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, | 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, |
| 13 | SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, | 13 | SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, |
| 14 | TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, USART6, | 14 | TIM6, TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, |
| 15 | USB_OTG_FS, WWDG | 15 | USART6, USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f413vh.rs b/embassy-stm32/src/chip/stm32f413vh.rs index e2d6a981b..1894feacb 100644 --- a/embassy-stm32/src/chip/stm32f413vh.rs +++ b/embassy-stm32/src/chip/stm32f413vh.rs | |||
| @@ -1,19 +1,21 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, |
| 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, | 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, |
| 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| 11 | PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, | 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, |
| 12 | PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, | 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, |
| 13 | SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, | 13 | SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, |
| 14 | TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, USART6, | 14 | TIM6, TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, |
| 15 | USB_OTG_FS, WWDG | 15 | USART6, USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f413zg.rs b/embassy-stm32/src/chip/stm32f413zg.rs index e2d6a981b..1894feacb 100644 --- a/embassy-stm32/src/chip/stm32f413zg.rs +++ b/embassy-stm32/src/chip/stm32f413zg.rs | |||
| @@ -1,19 +1,21 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, |
| 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, | 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, |
| 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| 11 | PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, | 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, |
| 12 | PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, | 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, |
| 13 | SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, | 13 | SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, |
| 14 | TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, USART6, | 14 | TIM6, TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, |
| 15 | USB_OTG_FS, WWDG | 15 | USART6, USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f413zh.rs b/embassy-stm32/src/chip/stm32f413zh.rs index e2d6a981b..1894feacb 100644 --- a/embassy-stm32/src/chip/stm32f413zh.rs +++ b/embassy-stm32/src/chip/stm32f413zh.rs | |||
| @@ -1,19 +1,21 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, |
| 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, | 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, |
| 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| 11 | PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, | 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, |
| 12 | PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, | 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, |
| 13 | SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, | 13 | SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, |
| 14 | TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, USART6, | 14 | TIM6, TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, |
| 15 | USB_OTG_FS, WWDG | 15 | USART6, USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f415og.rs b/embassy-stm32/src/chip/stm32f415og.rs index cd801d6cd..1c3243ed1 100644 --- a/embassy-stm32/src/chip/stm32f415og.rs +++ b/embassy-stm32/src/chip/stm32f415og.rs | |||
| @@ -1,19 +1,21 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, PA0, PA1, PA2, PA3, PA4, PA5, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, |
| 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, | 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, |
| 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| 11 | PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, | 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, |
| 12 | PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, | 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, |
| 13 | HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, | 13 | PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, |
| 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, | 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, |
| 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f415rg.rs b/embassy-stm32/src/chip/stm32f415rg.rs index cd801d6cd..1c3243ed1 100644 --- a/embassy-stm32/src/chip/stm32f415rg.rs +++ b/embassy-stm32/src/chip/stm32f415rg.rs | |||
| @@ -1,19 +1,21 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, PA0, PA1, PA2, PA3, PA4, PA5, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, |
| 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, | 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, |
| 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| 11 | PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, | 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, |
| 12 | PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, | 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, |
| 13 | HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, | 13 | PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, |
| 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, | 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, |
| 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f415vg.rs b/embassy-stm32/src/chip/stm32f415vg.rs index cd801d6cd..1c3243ed1 100644 --- a/embassy-stm32/src/chip/stm32f415vg.rs +++ b/embassy-stm32/src/chip/stm32f415vg.rs | |||
| @@ -1,19 +1,21 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, PA0, PA1, PA2, PA3, PA4, PA5, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, |
| 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, | 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, |
| 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| 11 | PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, | 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, |
| 12 | PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, | 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, |
| 13 | HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, | 13 | PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, |
| 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, | 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, |
| 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f415zg.rs b/embassy-stm32/src/chip/stm32f415zg.rs index cd801d6cd..1c3243ed1 100644 --- a/embassy-stm32/src/chip/stm32f415zg.rs +++ b/embassy-stm32/src/chip/stm32f415zg.rs | |||
| @@ -1,19 +1,21 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, PA0, PA1, PA2, PA3, PA4, PA5, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, |
| 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, | 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, |
| 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| 11 | PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, | 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, |
| 12 | PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, | 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, |
| 13 | HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, | 13 | PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, |
| 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, | 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, |
| 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f417ie.rs b/embassy-stm32/src/chip/stm32f417ie.rs index 034543078..f99ca7b1b 100644 --- a/embassy-stm32/src/chip/stm32f417ie.rs +++ b/embassy-stm32/src/chip/stm32f417ie.rs | |||
| @@ -1,19 +1,21 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, EXTI, PA0, PA1, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, | 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, |
| 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, | 14 | TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, |
| 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 15 | UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f417ig.rs b/embassy-stm32/src/chip/stm32f417ig.rs index 034543078..f99ca7b1b 100644 --- a/embassy-stm32/src/chip/stm32f417ig.rs +++ b/embassy-stm32/src/chip/stm32f417ig.rs | |||
| @@ -1,19 +1,21 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, EXTI, PA0, PA1, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, | 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, |
| 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, | 14 | TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, |
| 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 15 | UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f417ve.rs b/embassy-stm32/src/chip/stm32f417ve.rs index 034543078..f99ca7b1b 100644 --- a/embassy-stm32/src/chip/stm32f417ve.rs +++ b/embassy-stm32/src/chip/stm32f417ve.rs | |||
| @@ -1,19 +1,21 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, EXTI, PA0, PA1, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, | 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, |
| 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, | 14 | TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, |
| 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 15 | UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f417vg.rs b/embassy-stm32/src/chip/stm32f417vg.rs index 034543078..f99ca7b1b 100644 --- a/embassy-stm32/src/chip/stm32f417vg.rs +++ b/embassy-stm32/src/chip/stm32f417vg.rs | |||
| @@ -1,19 +1,21 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, EXTI, PA0, PA1, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, | 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, |
| 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, | 14 | TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, |
| 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 15 | UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f417ze.rs b/embassy-stm32/src/chip/stm32f417ze.rs index 034543078..f99ca7b1b 100644 --- a/embassy-stm32/src/chip/stm32f417ze.rs +++ b/embassy-stm32/src/chip/stm32f417ze.rs | |||
| @@ -1,19 +1,21 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, EXTI, PA0, PA1, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, | 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, |
| 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, | 14 | TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, |
| 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 15 | UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f417zg.rs b/embassy-stm32/src/chip/stm32f417zg.rs index 034543078..f99ca7b1b 100644 --- a/embassy-stm32/src/chip/stm32f417zg.rs +++ b/embassy-stm32/src/chip/stm32f417zg.rs | |||
| @@ -1,19 +1,21 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, EXTI, PA0, PA1, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, | 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, |
| 14 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, | 14 | TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, |
| 15 | USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 15 | UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f423ch.rs b/embassy-stm32/src/chip/stm32f423ch.rs index ddb9ee0f5..54d5dbae6 100644 --- a/embassy-stm32/src/chip/stm32f423ch.rs +++ b/embassy-stm32/src/chip/stm32f423ch.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -13,6 +13,8 @@ peripherals!( | |||
| 13 | SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, | 13 | SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, |
| 14 | TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART6, USB_OTG_FS, WWDG | 14 | TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART6, USB_OTG_FS, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 17 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 16 | pub const GPIO_BASE: usize = 0x40020000; | 18 | pub const GPIO_BASE: usize = 0x40020000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | 20 | ||
diff --git a/embassy-stm32/src/chip/stm32f423mh.rs b/embassy-stm32/src/chip/stm32f423mh.rs index adedcbc23..a033c03ba 100644 --- a/embassy-stm32/src/chip/stm32f423mh.rs +++ b/embassy-stm32/src/chip/stm32f423mh.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -13,6 +13,8 @@ peripherals!( | |||
| 13 | SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, | 13 | SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, |
| 14 | TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG | 14 | TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 17 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 16 | pub const GPIO_BASE: usize = 0x40020000; | 18 | pub const GPIO_BASE: usize = 0x40020000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | 20 | ||
diff --git a/embassy-stm32/src/chip/stm32f423rh.rs b/embassy-stm32/src/chip/stm32f423rh.rs index adedcbc23..a033c03ba 100644 --- a/embassy-stm32/src/chip/stm32f423rh.rs +++ b/embassy-stm32/src/chip/stm32f423rh.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -13,6 +13,8 @@ peripherals!( | |||
| 13 | SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, | 13 | SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, |
| 14 | TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG | 14 | TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 17 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 16 | pub const GPIO_BASE: usize = 0x40020000; | 18 | pub const GPIO_BASE: usize = 0x40020000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | 20 | ||
diff --git a/embassy-stm32/src/chip/stm32f423vh.rs b/embassy-stm32/src/chip/stm32f423vh.rs index 6c531d7f2..6f0c5bd6e 100644 --- a/embassy-stm32/src/chip/stm32f423vh.rs +++ b/embassy-stm32/src/chip/stm32f423vh.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,6 +14,8 @@ peripherals!( | |||
| 14 | TIM6, TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, | 14 | TIM6, TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, |
| 15 | USART6, USB_OTG_FS, WWDG | 15 | USART6, USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f423zh.rs b/embassy-stm32/src/chip/stm32f423zh.rs index 6c531d7f2..6f0c5bd6e 100644 --- a/embassy-stm32/src/chip/stm32f423zh.rs +++ b/embassy-stm32/src/chip/stm32f423zh.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,6 +14,8 @@ peripherals!( | |||
| 14 | TIM6, TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, | 14 | TIM6, TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, |
| 15 | USART6, USB_OTG_FS, WWDG | 15 | USART6, USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 17 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 19 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f427ag.rs b/embassy-stm32/src/chip/stm32f427ag.rs index 0251a0bca..9d2e19b80 100644 --- a/embassy-stm32/src/chip/stm32f427ag.rs +++ b/embassy-stm32/src/chip/stm32f427ag.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, | 16 | TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, |
| 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f427ai.rs b/embassy-stm32/src/chip/stm32f427ai.rs index 0251a0bca..9d2e19b80 100644 --- a/embassy-stm32/src/chip/stm32f427ai.rs +++ b/embassy-stm32/src/chip/stm32f427ai.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, | 16 | TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, |
| 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f427ig.rs b/embassy-stm32/src/chip/stm32f427ig.rs index 9111a78cc..2e18827e7 100644 --- a/embassy-stm32/src/chip/stm32f427ig.rs +++ b/embassy-stm32/src/chip/stm32f427ig.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, | 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, |
| 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f427ii.rs b/embassy-stm32/src/chip/stm32f427ii.rs index 9111a78cc..2e18827e7 100644 --- a/embassy-stm32/src/chip/stm32f427ii.rs +++ b/embassy-stm32/src/chip/stm32f427ii.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, | 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, |
| 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f427vg.rs b/embassy-stm32/src/chip/stm32f427vg.rs index fdebb3b98..67ee554a0 100644 --- a/embassy-stm32/src/chip/stm32f427vg.rs +++ b/embassy-stm32/src/chip/stm32f427vg.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, | 16 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, |
| 17 | UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f427vi.rs b/embassy-stm32/src/chip/stm32f427vi.rs index fdebb3b98..67ee554a0 100644 --- a/embassy-stm32/src/chip/stm32f427vi.rs +++ b/embassy-stm32/src/chip/stm32f427vi.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, | 16 | TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, |
| 17 | UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f427zg.rs b/embassy-stm32/src/chip/stm32f427zg.rs index 9111a78cc..2e18827e7 100644 --- a/embassy-stm32/src/chip/stm32f427zg.rs +++ b/embassy-stm32/src/chip/stm32f427zg.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, | 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, |
| 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f427zi.rs b/embassy-stm32/src/chip/stm32f427zi.rs index 9111a78cc..2e18827e7 100644 --- a/embassy-stm32/src/chip/stm32f427zi.rs +++ b/embassy-stm32/src/chip/stm32f427zi.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, | 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, |
| 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f429ag.rs b/embassy-stm32/src/chip/stm32f429ag.rs index 408655851..8ae247ad1 100644 --- a/embassy-stm32/src/chip/stm32f429ag.rs +++ b/embassy-stm32/src/chip/stm32f429ag.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, | 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, |
| 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f429ai.rs b/embassy-stm32/src/chip/stm32f429ai.rs index 408655851..8ae247ad1 100644 --- a/embassy-stm32/src/chip/stm32f429ai.rs +++ b/embassy-stm32/src/chip/stm32f429ai.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, | 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, |
| 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f429be.rs b/embassy-stm32/src/chip/stm32f429be.rs index 1a285e03a..a1c7ae71b 100644 --- a/embassy-stm32/src/chip/stm32f429be.rs +++ b/embassy-stm32/src/chip/stm32f429be.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f429bg.rs b/embassy-stm32/src/chip/stm32f429bg.rs index 1a285e03a..a1c7ae71b 100644 --- a/embassy-stm32/src/chip/stm32f429bg.rs +++ b/embassy-stm32/src/chip/stm32f429bg.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f429bi.rs b/embassy-stm32/src/chip/stm32f429bi.rs index 1a285e03a..a1c7ae71b 100644 --- a/embassy-stm32/src/chip/stm32f429bi.rs +++ b/embassy-stm32/src/chip/stm32f429bi.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f429ie.rs b/embassy-stm32/src/chip/stm32f429ie.rs index 1a285e03a..a1c7ae71b 100644 --- a/embassy-stm32/src/chip/stm32f429ie.rs +++ b/embassy-stm32/src/chip/stm32f429ie.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f429ig.rs b/embassy-stm32/src/chip/stm32f429ig.rs index 1a285e03a..a1c7ae71b 100644 --- a/embassy-stm32/src/chip/stm32f429ig.rs +++ b/embassy-stm32/src/chip/stm32f429ig.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f429ii.rs b/embassy-stm32/src/chip/stm32f429ii.rs index 1a285e03a..a1c7ae71b 100644 --- a/embassy-stm32/src/chip/stm32f429ii.rs +++ b/embassy-stm32/src/chip/stm32f429ii.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f429ne.rs b/embassy-stm32/src/chip/stm32f429ne.rs index 1a285e03a..a1c7ae71b 100644 --- a/embassy-stm32/src/chip/stm32f429ne.rs +++ b/embassy-stm32/src/chip/stm32f429ne.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f429ng.rs b/embassy-stm32/src/chip/stm32f429ng.rs index 1a285e03a..a1c7ae71b 100644 --- a/embassy-stm32/src/chip/stm32f429ng.rs +++ b/embassy-stm32/src/chip/stm32f429ng.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f429ni.rs b/embassy-stm32/src/chip/stm32f429ni.rs index 1a285e03a..a1c7ae71b 100644 --- a/embassy-stm32/src/chip/stm32f429ni.rs +++ b/embassy-stm32/src/chip/stm32f429ni.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f429ve.rs b/embassy-stm32/src/chip/stm32f429ve.rs index f9532b2d1..4b609740f 100644 --- a/embassy-stm32/src/chip/stm32f429ve.rs +++ b/embassy-stm32/src/chip/stm32f429ve.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, | 16 | TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, |
| 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f429vg.rs b/embassy-stm32/src/chip/stm32f429vg.rs index f9532b2d1..4b609740f 100644 --- a/embassy-stm32/src/chip/stm32f429vg.rs +++ b/embassy-stm32/src/chip/stm32f429vg.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, | 16 | TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, |
| 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f429vi.rs b/embassy-stm32/src/chip/stm32f429vi.rs index f9532b2d1..4b609740f 100644 --- a/embassy-stm32/src/chip/stm32f429vi.rs +++ b/embassy-stm32/src/chip/stm32f429vi.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, | 16 | TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, |
| 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f429ze.rs b/embassy-stm32/src/chip/stm32f429ze.rs index 1a285e03a..a1c7ae71b 100644 --- a/embassy-stm32/src/chip/stm32f429ze.rs +++ b/embassy-stm32/src/chip/stm32f429ze.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f429zg.rs b/embassy-stm32/src/chip/stm32f429zg.rs index 1a285e03a..a1c7ae71b 100644 --- a/embassy-stm32/src/chip/stm32f429zg.rs +++ b/embassy-stm32/src/chip/stm32f429zg.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f429zi.rs b/embassy-stm32/src/chip/stm32f429zi.rs index 1a285e03a..a1c7ae71b 100644 --- a/embassy-stm32/src/chip/stm32f429zi.rs +++ b/embassy-stm32/src/chip/stm32f429zi.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f437ai.rs b/embassy-stm32/src/chip/stm32f437ai.rs index 14d3863ed..8b1eb9e33 100644 --- a/embassy-stm32/src/chip/stm32f437ai.rs +++ b/embassy-stm32/src/chip/stm32f437ai.rs | |||
| @@ -1,21 +1,23 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, |
| 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f437ig.rs b/embassy-stm32/src/chip/stm32f437ig.rs index e7eec4f5b..198585d78 100644 --- a/embassy-stm32/src/chip/stm32f437ig.rs +++ b/embassy-stm32/src/chip/stm32f437ig.rs | |||
| @@ -1,21 +1,24 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, |
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, |
| 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, |
| 18 | WWDG | ||
| 18 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f437ii.rs b/embassy-stm32/src/chip/stm32f437ii.rs index e7eec4f5b..198585d78 100644 --- a/embassy-stm32/src/chip/stm32f437ii.rs +++ b/embassy-stm32/src/chip/stm32f437ii.rs | |||
| @@ -1,21 +1,24 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, |
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, |
| 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, |
| 18 | WWDG | ||
| 18 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f437vg.rs b/embassy-stm32/src/chip/stm32f437vg.rs index a570e9608..b1d2e290f 100644 --- a/embassy-stm32/src/chip/stm32f437vg.rs +++ b/embassy-stm32/src/chip/stm32f437vg.rs | |||
| @@ -1,21 +1,23 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, |
| 16 | TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, | 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, |
| 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f437vi.rs b/embassy-stm32/src/chip/stm32f437vi.rs index a570e9608..b1d2e290f 100644 --- a/embassy-stm32/src/chip/stm32f437vi.rs +++ b/embassy-stm32/src/chip/stm32f437vi.rs | |||
| @@ -1,21 +1,23 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, |
| 16 | TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, | 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, |
| 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f437zg.rs b/embassy-stm32/src/chip/stm32f437zg.rs index e7eec4f5b..198585d78 100644 --- a/embassy-stm32/src/chip/stm32f437zg.rs +++ b/embassy-stm32/src/chip/stm32f437zg.rs | |||
| @@ -1,21 +1,24 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, |
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, |
| 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, |
| 18 | WWDG | ||
| 18 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f437zi.rs b/embassy-stm32/src/chip/stm32f437zi.rs index e7eec4f5b..198585d78 100644 --- a/embassy-stm32/src/chip/stm32f437zi.rs +++ b/embassy-stm32/src/chip/stm32f437zi.rs | |||
| @@ -1,21 +1,24 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, |
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, |
| 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, |
| 18 | WWDG | ||
| 18 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f439ai.rs b/embassy-stm32/src/chip/stm32f439ai.rs index 6475617fe..b0ff8fa35 100644 --- a/embassy-stm32/src/chip/stm32f439ai.rs +++ b/embassy-stm32/src/chip/stm32f439ai.rs | |||
| @@ -1,21 +1,24 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, |
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, |
| 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, |
| 18 | WWDG | ||
| 18 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f439bg.rs b/embassy-stm32/src/chip/stm32f439bg.rs index 11fbc8adc..eec3a3f65 100644 --- a/embassy-stm32/src/chip/stm32f439bg.rs +++ b/embassy-stm32/src/chip/stm32f439bg.rs | |||
| @@ -1,22 +1,24 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, |
| 16 | SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, | 16 | SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, |
| 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, | 17 | TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, |
| 18 | WWDG | 18 | USB_OTG_HS, WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f439bi.rs b/embassy-stm32/src/chip/stm32f439bi.rs index 11fbc8adc..eec3a3f65 100644 --- a/embassy-stm32/src/chip/stm32f439bi.rs +++ b/embassy-stm32/src/chip/stm32f439bi.rs | |||
| @@ -1,22 +1,24 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, |
| 16 | SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, | 16 | SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, |
| 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, | 17 | TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, |
| 18 | WWDG | 18 | USB_OTG_HS, WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f439ig.rs b/embassy-stm32/src/chip/stm32f439ig.rs index 11fbc8adc..eec3a3f65 100644 --- a/embassy-stm32/src/chip/stm32f439ig.rs +++ b/embassy-stm32/src/chip/stm32f439ig.rs | |||
| @@ -1,22 +1,24 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, |
| 16 | SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, | 16 | SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, |
| 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, | 17 | TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, |
| 18 | WWDG | 18 | USB_OTG_HS, WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f439ii.rs b/embassy-stm32/src/chip/stm32f439ii.rs index 11fbc8adc..eec3a3f65 100644 --- a/embassy-stm32/src/chip/stm32f439ii.rs +++ b/embassy-stm32/src/chip/stm32f439ii.rs | |||
| @@ -1,22 +1,24 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, |
| 16 | SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, | 16 | SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, |
| 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, | 17 | TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, |
| 18 | WWDG | 18 | USB_OTG_HS, WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f439ng.rs b/embassy-stm32/src/chip/stm32f439ng.rs index 11fbc8adc..eec3a3f65 100644 --- a/embassy-stm32/src/chip/stm32f439ng.rs +++ b/embassy-stm32/src/chip/stm32f439ng.rs | |||
| @@ -1,22 +1,24 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, |
| 16 | SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, | 16 | SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, |
| 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, | 17 | TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, |
| 18 | WWDG | 18 | USB_OTG_HS, WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f439ni.rs b/embassy-stm32/src/chip/stm32f439ni.rs index 11fbc8adc..eec3a3f65 100644 --- a/embassy-stm32/src/chip/stm32f439ni.rs +++ b/embassy-stm32/src/chip/stm32f439ni.rs | |||
| @@ -1,22 +1,24 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, |
| 16 | SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, | 16 | SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, |
| 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, | 17 | TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, |
| 18 | WWDG | 18 | USB_OTG_HS, WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f439vg.rs b/embassy-stm32/src/chip/stm32f439vg.rs index b195f3ac6..8dfb7bdbc 100644 --- a/embassy-stm32/src/chip/stm32f439vg.rs +++ b/embassy-stm32/src/chip/stm32f439vg.rs | |||
| @@ -1,21 +1,23 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, |
| 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f439vi.rs b/embassy-stm32/src/chip/stm32f439vi.rs index b195f3ac6..8dfb7bdbc 100644 --- a/embassy-stm32/src/chip/stm32f439vi.rs +++ b/embassy-stm32/src/chip/stm32f439vi.rs | |||
| @@ -1,21 +1,23 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, |
| 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f439zg.rs b/embassy-stm32/src/chip/stm32f439zg.rs index 11fbc8adc..eec3a3f65 100644 --- a/embassy-stm32/src/chip/stm32f439zg.rs +++ b/embassy-stm32/src/chip/stm32f439zg.rs | |||
| @@ -1,22 +1,24 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, |
| 16 | SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, | 16 | SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, |
| 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, | 17 | TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, |
| 18 | WWDG | 18 | USB_OTG_HS, WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f439zi.rs b/embassy-stm32/src/chip/stm32f439zi.rs index 11fbc8adc..eec3a3f65 100644 --- a/embassy-stm32/src/chip/stm32f439zi.rs +++ b/embassy-stm32/src/chip/stm32f439zi.rs | |||
| @@ -1,22 +1,24 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, |
| 16 | SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, | 16 | SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, |
| 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, | 17 | TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, |
| 18 | WWDG | 18 | USB_OTG_HS, WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f446mc.rs b/embassy-stm32/src/chip/stm32f446mc.rs index acf4a3968..b4f048cab 100644 --- a/embassy-stm32/src/chip/stm32f446mc.rs +++ b/embassy-stm32/src/chip/stm32f446mc.rs | |||
| @@ -1,18 +1,21 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, FMPI2C1, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, SPI2, | 12 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, |
| 13 | SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, | 13 | SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, |
| 14 | TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 14 | TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, |
| 15 | WWDG | ||
| 15 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 16 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f446me.rs b/embassy-stm32/src/chip/stm32f446me.rs index acf4a3968..b4f048cab 100644 --- a/embassy-stm32/src/chip/stm32f446me.rs +++ b/embassy-stm32/src/chip/stm32f446me.rs | |||
| @@ -1,18 +1,21 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, FMPI2C1, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, SPI2, | 12 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, |
| 13 | SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, | 13 | SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, |
| 14 | TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 14 | TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, |
| 15 | WWDG | ||
| 15 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 16 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f446rc.rs b/embassy-stm32/src/chip/stm32f446rc.rs index 6392b7681..222dcfb80 100644 --- a/embassy-stm32/src/chip/stm32f446rc.rs +++ b/embassy-stm32/src/chip/stm32f446rc.rs | |||
| @@ -1,18 +1,20 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, FMPI2C1, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SDIO, SPDIFRX, SPI1, SPI2, SPI3, | 12 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SDIO, SPDIFRX, SPI1, SPI2, |
| 13 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 13 | SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, |
| 14 | TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 14 | TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 17 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 16 | pub const GPIO_BASE: usize = 0x40020000; | 18 | pub const GPIO_BASE: usize = 0x40020000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | 20 | ||
diff --git a/embassy-stm32/src/chip/stm32f446re.rs b/embassy-stm32/src/chip/stm32f446re.rs index 6392b7681..222dcfb80 100644 --- a/embassy-stm32/src/chip/stm32f446re.rs +++ b/embassy-stm32/src/chip/stm32f446re.rs | |||
| @@ -1,18 +1,20 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, FMPI2C1, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SDIO, SPDIFRX, SPI1, SPI2, SPI3, | 12 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SDIO, SPDIFRX, SPI1, SPI2, |
| 13 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 13 | SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, |
| 14 | TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 14 | TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 17 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 16 | pub const GPIO_BASE: usize = 0x40020000; | 18 | pub const GPIO_BASE: usize = 0x40020000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | 20 | ||
diff --git a/embassy-stm32/src/chip/stm32f446vc.rs b/embassy-stm32/src/chip/stm32f446vc.rs index acf4a3968..b4f048cab 100644 --- a/embassy-stm32/src/chip/stm32f446vc.rs +++ b/embassy-stm32/src/chip/stm32f446vc.rs | |||
| @@ -1,18 +1,21 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, FMPI2C1, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, SPI2, | 12 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, |
| 13 | SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, | 13 | SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, |
| 14 | TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 14 | TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, |
| 15 | WWDG | ||
| 15 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 16 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f446ve.rs b/embassy-stm32/src/chip/stm32f446ve.rs index acf4a3968..b4f048cab 100644 --- a/embassy-stm32/src/chip/stm32f446ve.rs +++ b/embassy-stm32/src/chip/stm32f446ve.rs | |||
| @@ -1,18 +1,21 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, FMPI2C1, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, SPI2, | 12 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, |
| 13 | SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, | 13 | SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, |
| 14 | TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 14 | TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, |
| 15 | WWDG | ||
| 15 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 16 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f446zc.rs b/embassy-stm32/src/chip/stm32f446zc.rs index acf4a3968..b4f048cab 100644 --- a/embassy-stm32/src/chip/stm32f446zc.rs +++ b/embassy-stm32/src/chip/stm32f446zc.rs | |||
| @@ -1,18 +1,21 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, FMPI2C1, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, SPI2, | 12 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, |
| 13 | SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, | 13 | SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, |
| 14 | TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 14 | TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, |
| 15 | WWDG | ||
| 15 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 16 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f446ze.rs b/embassy-stm32/src/chip/stm32f446ze.rs index acf4a3968..b4f048cab 100644 --- a/embassy-stm32/src/chip/stm32f446ze.rs +++ b/embassy-stm32/src/chip/stm32f446ze.rs | |||
| @@ -1,18 +1,21 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, FMPI2C1, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, SPI2, | 12 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, |
| 13 | SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, | 13 | SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, |
| 14 | TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 14 | TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, |
| 15 | WWDG | ||
| 15 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 18 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 16 | pub const GPIO_BASE: usize = 0x40020000; | 19 | pub const GPIO_BASE: usize = 0x40020000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | 21 | ||
diff --git a/embassy-stm32/src/chip/stm32f469ae.rs b/embassy-stm32/src/chip/stm32f469ae.rs index a9503f67d..94e2689fc 100644 --- a/embassy-stm32/src/chip/stm32f469ae.rs +++ b/embassy-stm32/src/chip/stm32f469ae.rs | |||
| @@ -1,21 +1,23 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, | 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, |
| 14 | PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, I2C1, | 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, |
| 15 | I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI6, | 15 | I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI6, |
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f469ag.rs b/embassy-stm32/src/chip/stm32f469ag.rs index a9503f67d..94e2689fc 100644 --- a/embassy-stm32/src/chip/stm32f469ag.rs +++ b/embassy-stm32/src/chip/stm32f469ag.rs | |||
| @@ -1,21 +1,23 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, | 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, |
| 14 | PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, I2C1, | 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, |
| 15 | I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI6, | 15 | I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI6, |
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f469ai.rs b/embassy-stm32/src/chip/stm32f469ai.rs index a9503f67d..94e2689fc 100644 --- a/embassy-stm32/src/chip/stm32f469ai.rs +++ b/embassy-stm32/src/chip/stm32f469ai.rs | |||
| @@ -1,21 +1,23 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, | 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, |
| 14 | PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, I2C1, | 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, |
| 15 | I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI6, | 15 | I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI6, |
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f469be.rs b/embassy-stm32/src/chip/stm32f469be.rs index 53bd9fd98..ccfe25ded 100644 --- a/embassy-stm32/src/chip/stm32f469be.rs +++ b/embassy-stm32/src/chip/stm32f469be.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -17,6 +17,8 @@ peripherals!( | |||
| 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, | 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, |
| 18 | WWDG | 18 | WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f469bg.rs b/embassy-stm32/src/chip/stm32f469bg.rs index 53bd9fd98..ccfe25ded 100644 --- a/embassy-stm32/src/chip/stm32f469bg.rs +++ b/embassy-stm32/src/chip/stm32f469bg.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -17,6 +17,8 @@ peripherals!( | |||
| 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, | 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, |
| 18 | WWDG | 18 | WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f469bi.rs b/embassy-stm32/src/chip/stm32f469bi.rs index 53bd9fd98..ccfe25ded 100644 --- a/embassy-stm32/src/chip/stm32f469bi.rs +++ b/embassy-stm32/src/chip/stm32f469bi.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -17,6 +17,8 @@ peripherals!( | |||
| 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, | 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, |
| 18 | WWDG | 18 | WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f469ie.rs b/embassy-stm32/src/chip/stm32f469ie.rs index 53bd9fd98..ccfe25ded 100644 --- a/embassy-stm32/src/chip/stm32f469ie.rs +++ b/embassy-stm32/src/chip/stm32f469ie.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -17,6 +17,8 @@ peripherals!( | |||
| 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, | 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, |
| 18 | WWDG | 18 | WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f469ig.rs b/embassy-stm32/src/chip/stm32f469ig.rs index 53bd9fd98..ccfe25ded 100644 --- a/embassy-stm32/src/chip/stm32f469ig.rs +++ b/embassy-stm32/src/chip/stm32f469ig.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -17,6 +17,8 @@ peripherals!( | |||
| 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, | 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, |
| 18 | WWDG | 18 | WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f469ii.rs b/embassy-stm32/src/chip/stm32f469ii.rs index 53bd9fd98..ccfe25ded 100644 --- a/embassy-stm32/src/chip/stm32f469ii.rs +++ b/embassy-stm32/src/chip/stm32f469ii.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -17,6 +17,8 @@ peripherals!( | |||
| 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, | 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, |
| 18 | WWDG | 18 | WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f469ne.rs b/embassy-stm32/src/chip/stm32f469ne.rs index 53bd9fd98..ccfe25ded 100644 --- a/embassy-stm32/src/chip/stm32f469ne.rs +++ b/embassy-stm32/src/chip/stm32f469ne.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -17,6 +17,8 @@ peripherals!( | |||
| 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, | 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, |
| 18 | WWDG | 18 | WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f469ng.rs b/embassy-stm32/src/chip/stm32f469ng.rs index 53bd9fd98..ccfe25ded 100644 --- a/embassy-stm32/src/chip/stm32f469ng.rs +++ b/embassy-stm32/src/chip/stm32f469ng.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -17,6 +17,8 @@ peripherals!( | |||
| 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, | 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, |
| 18 | WWDG | 18 | WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f469ni.rs b/embassy-stm32/src/chip/stm32f469ni.rs index 53bd9fd98..ccfe25ded 100644 --- a/embassy-stm32/src/chip/stm32f469ni.rs +++ b/embassy-stm32/src/chip/stm32f469ni.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -17,6 +17,8 @@ peripherals!( | |||
| 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, | 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, |
| 18 | WWDG | 18 | WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f469ve.rs b/embassy-stm32/src/chip/stm32f469ve.rs index 0d2dc9c93..ef61f2bde 100644 --- a/embassy-stm32/src/chip/stm32f469ve.rs +++ b/embassy-stm32/src/chip/stm32f469ve.rs | |||
| @@ -1,21 +1,23 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, | 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, |
| 14 | PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, I2C1, | 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, |
| 15 | I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, | 15 | I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, |
| 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f469vg.rs b/embassy-stm32/src/chip/stm32f469vg.rs index 0d2dc9c93..ef61f2bde 100644 --- a/embassy-stm32/src/chip/stm32f469vg.rs +++ b/embassy-stm32/src/chip/stm32f469vg.rs | |||
| @@ -1,21 +1,23 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, | 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, |
| 14 | PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, I2C1, | 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, |
| 15 | I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, | 15 | I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, |
| 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f469vi.rs b/embassy-stm32/src/chip/stm32f469vi.rs index 0d2dc9c93..ef61f2bde 100644 --- a/embassy-stm32/src/chip/stm32f469vi.rs +++ b/embassy-stm32/src/chip/stm32f469vi.rs | |||
| @@ -1,21 +1,23 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, | 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, |
| 14 | PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, I2C1, | 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, |
| 15 | I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, | 15 | I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, |
| 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f469ze.rs b/embassy-stm32/src/chip/stm32f469ze.rs index aaeefbeb9..569912a38 100644 --- a/embassy-stm32/src/chip/stm32f469ze.rs +++ b/embassy-stm32/src/chip/stm32f469ze.rs | |||
| @@ -1,21 +1,23 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, | 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, |
| 14 | PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, I2C1, | 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, |
| 15 | I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, | 15 | I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, |
| 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f469zg.rs b/embassy-stm32/src/chip/stm32f469zg.rs index aaeefbeb9..569912a38 100644 --- a/embassy-stm32/src/chip/stm32f469zg.rs +++ b/embassy-stm32/src/chip/stm32f469zg.rs | |||
| @@ -1,21 +1,23 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, | 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, |
| 14 | PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, I2C1, | 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, |
| 15 | I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, | 15 | I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, |
| 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f469zi.rs b/embassy-stm32/src/chip/stm32f469zi.rs index aaeefbeb9..569912a38 100644 --- a/embassy-stm32/src/chip/stm32f469zi.rs +++ b/embassy-stm32/src/chip/stm32f469zi.rs | |||
| @@ -1,21 +1,23 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, | 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, |
| 14 | PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, I2C1, | 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, |
| 15 | I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, | 15 | I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, |
| 16 | TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f479ag.rs b/embassy-stm32/src/chip/stm32f479ag.rs index 110026c82..6cea1e1df 100644 --- a/embassy-stm32/src/chip/stm32f479ag.rs +++ b/embassy-stm32/src/chip/stm32f479ag.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -17,6 +17,8 @@ peripherals!( | |||
| 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, | 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, |
| 18 | WWDG | 18 | WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f479ai.rs b/embassy-stm32/src/chip/stm32f479ai.rs index 110026c82..6cea1e1df 100644 --- a/embassy-stm32/src/chip/stm32f479ai.rs +++ b/embassy-stm32/src/chip/stm32f479ai.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -17,6 +17,8 @@ peripherals!( | |||
| 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, | 17 | TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, |
| 18 | WWDG | 18 | WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f479bg.rs b/embassy-stm32/src/chip/stm32f479bg.rs index d5133d313..40a58618b 100644 --- a/embassy-stm32/src/chip/stm32f479bg.rs +++ b/embassy-stm32/src/chip/stm32f479bg.rs | |||
| @@ -1,22 +1,24 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, |
| 16 | SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, | 16 | SPI4, SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, |
| 17 | TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, | 17 | TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, |
| 18 | USB_OTG_HS, WWDG | 18 | USB_OTG_HS, WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f479bi.rs b/embassy-stm32/src/chip/stm32f479bi.rs index d5133d313..40a58618b 100644 --- a/embassy-stm32/src/chip/stm32f479bi.rs +++ b/embassy-stm32/src/chip/stm32f479bi.rs | |||
| @@ -1,22 +1,24 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, |
| 16 | SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, | 16 | SPI4, SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, |
| 17 | TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, | 17 | TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, |
| 18 | USB_OTG_HS, WWDG | 18 | USB_OTG_HS, WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f479ig.rs b/embassy-stm32/src/chip/stm32f479ig.rs index d5133d313..40a58618b 100644 --- a/embassy-stm32/src/chip/stm32f479ig.rs +++ b/embassy-stm32/src/chip/stm32f479ig.rs | |||
| @@ -1,22 +1,24 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, |
| 16 | SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, | 16 | SPI4, SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, |
| 17 | TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, | 17 | TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, |
| 18 | USB_OTG_HS, WWDG | 18 | USB_OTG_HS, WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f479ii.rs b/embassy-stm32/src/chip/stm32f479ii.rs index d5133d313..40a58618b 100644 --- a/embassy-stm32/src/chip/stm32f479ii.rs +++ b/embassy-stm32/src/chip/stm32f479ii.rs | |||
| @@ -1,22 +1,24 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, |
| 16 | SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, | 16 | SPI4, SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, |
| 17 | TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, | 17 | TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, |
| 18 | USB_OTG_HS, WWDG | 18 | USB_OTG_HS, WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f479ng.rs b/embassy-stm32/src/chip/stm32f479ng.rs index d5133d313..40a58618b 100644 --- a/embassy-stm32/src/chip/stm32f479ng.rs +++ b/embassy-stm32/src/chip/stm32f479ng.rs | |||
| @@ -1,22 +1,24 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, |
| 16 | SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, | 16 | SPI4, SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, |
| 17 | TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, | 17 | TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, |
| 18 | USB_OTG_HS, WWDG | 18 | USB_OTG_HS, WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f479ni.rs b/embassy-stm32/src/chip/stm32f479ni.rs index d5133d313..40a58618b 100644 --- a/embassy-stm32/src/chip/stm32f479ni.rs +++ b/embassy-stm32/src/chip/stm32f479ni.rs | |||
| @@ -1,22 +1,24 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, | 13 | PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, |
| 14 | PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, | 14 | PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, |
| 15 | HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, | 15 | PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, |
| 16 | SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, | 16 | SPI4, SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, |
| 17 | TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, | 17 | TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, |
| 18 | USB_OTG_HS, WWDG | 18 | USB_OTG_HS, WWDG |
| 19 | ); | 19 | ); |
| 20 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 21 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 20 | pub const GPIO_BASE: usize = 0x40020000; | 22 | pub const GPIO_BASE: usize = 0x40020000; |
| 21 | pub const GPIO_STRIDE: usize = 0x400; | 23 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | 24 | ||
diff --git a/embassy-stm32/src/chip/stm32f479vg.rs b/embassy-stm32/src/chip/stm32f479vg.rs index d5f37360a..25c960a4a 100644 --- a/embassy-stm32/src/chip/stm32f479vg.rs +++ b/embassy-stm32/src/chip/stm32f479vg.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f479vi.rs b/embassy-stm32/src/chip/stm32f479vi.rs index d5f37360a..25c960a4a 100644 --- a/embassy-stm32/src/chip/stm32f479vi.rs +++ b/embassy-stm32/src/chip/stm32f479vi.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f479zg.rs b/embassy-stm32/src/chip/stm32f479zg.rs index 76134afa5..7e5ee3245 100644 --- a/embassy-stm32/src/chip/stm32f479zg.rs +++ b/embassy-stm32/src/chip/stm32f479zg.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32f479zi.rs b/embassy-stm32/src/chip/stm32f479zi.rs index 76134afa5..7e5ee3245 100644 --- a/embassy-stm32/src/chip/stm32f479zi.rs +++ b/embassy-stm32/src/chip/stm32f479zi.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -16,6 +16,8 @@ peripherals!( | |||
| 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, | 16 | SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, |
| 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG | 17 | TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG |
| 18 | ); | 18 | ); |
| 19 | pub const SYSCFG_BASE: usize = 0x40013800; | ||
| 20 | pub const EXTI_BASE: usize = 0x40013c00; | ||
| 19 | pub const GPIO_BASE: usize = 0x40020000; | 21 | pub const GPIO_BASE: usize = 0x40020000; |
| 20 | pub const GPIO_STRIDE: usize = 0x400; | 22 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | 23 | ||
diff --git a/embassy-stm32/src/chip/stm32l412c8.rs b/embassy-stm32/src/chip/stm32l412c8.rs index c20a8a60a..e319e06a7 100644 --- a/embassy-stm32/src/chip/stm32l412c8.rs +++ b/embassy-stm32/src/chip/stm32l412c8.rs | |||
| @@ -1,16 +1,340 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, |
| 5 | PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, | 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, |
| 6 | PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, | 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, |
| 7 | PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, | 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, |
| 8 | PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 8 | PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 9 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, | 9 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, |
| 10 | SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, WWDG | 10 | RTC, SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, |
| 11 | WWDG | ||
| 11 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 14 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 12 | pub const GPIO_BASE: usize = 0x48000000; | 15 | pub const GPIO_BASE: usize = 0x48000000; |
| 13 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 17 | |||
| 18 | pub mod interrupt { | ||
| 19 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 20 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 21 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 22 | |||
| 23 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 24 | #[allow(non_camel_case_types)] | ||
| 25 | enum InterruptEnum { | ||
| 26 | ADC1_2 = 18, | ||
| 27 | COMP = 64, | ||
| 28 | CRS = 82, | ||
| 29 | DMA1_Channel1 = 11, | ||
| 30 | DMA1_Channel2 = 12, | ||
| 31 | DMA1_Channel3 = 13, | ||
| 32 | DMA1_Channel4 = 14, | ||
| 33 | DMA1_Channel5 = 15, | ||
| 34 | DMA1_Channel6 = 16, | ||
| 35 | DMA1_Channel7 = 17, | ||
| 36 | DMA2_Channel1 = 56, | ||
| 37 | DMA2_Channel2 = 57, | ||
| 38 | DMA2_Channel3 = 58, | ||
| 39 | DMA2_Channel4 = 59, | ||
| 40 | DMA2_Channel5 = 60, | ||
| 41 | DMA2_Channel6 = 68, | ||
| 42 | DMA2_Channel7 = 69, | ||
| 43 | EXTI0 = 6, | ||
| 44 | EXTI1 = 7, | ||
| 45 | EXTI15_10 = 40, | ||
| 46 | EXTI2 = 8, | ||
| 47 | EXTI3 = 9, | ||
| 48 | EXTI4 = 10, | ||
| 49 | EXTI9_5 = 23, | ||
| 50 | FLASH = 4, | ||
| 51 | FPU = 81, | ||
| 52 | I2C1_ER = 32, | ||
| 53 | I2C1_EV = 31, | ||
| 54 | I2C2_ER = 34, | ||
| 55 | I2C2_EV = 33, | ||
| 56 | I2C3_ER = 73, | ||
| 57 | I2C3_EV = 72, | ||
| 58 | LPTIM1 = 65, | ||
| 59 | LPTIM2 = 66, | ||
| 60 | LPUART1 = 70, | ||
| 61 | PVD_PVM = 1, | ||
| 62 | QUADSPI = 71, | ||
| 63 | RCC = 5, | ||
| 64 | RNG = 80, | ||
| 65 | RTC_Alarm = 41, | ||
| 66 | RTC_WKUP = 3, | ||
| 67 | SPI1 = 35, | ||
| 68 | SPI2 = 36, | ||
| 69 | TAMP_STAMP = 2, | ||
| 70 | TIM1_BRK_TIM15 = 24, | ||
| 71 | TIM1_CC = 27, | ||
| 72 | TIM1_TRG_COM = 26, | ||
| 73 | TIM1_UP_TIM16 = 25, | ||
| 74 | TIM2 = 28, | ||
| 75 | TIM6 = 54, | ||
| 76 | TSC = 77, | ||
| 77 | USART1 = 37, | ||
| 78 | USART2 = 38, | ||
| 79 | USART3 = 39, | ||
| 80 | USB = 67, | ||
| 81 | WWDG = 0, | ||
| 82 | } | ||
| 83 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 84 | #[inline(always)] | ||
| 85 | fn number(self) -> u16 { | ||
| 86 | self as u16 | ||
| 87 | } | ||
| 88 | } | ||
| 89 | |||
| 90 | declare!(ADC1_2); | ||
| 91 | declare!(COMP); | ||
| 92 | declare!(CRS); | ||
| 93 | declare!(DMA1_Channel1); | ||
| 94 | declare!(DMA1_Channel2); | ||
| 95 | declare!(DMA1_Channel3); | ||
| 96 | declare!(DMA1_Channel4); | ||
| 97 | declare!(DMA1_Channel5); | ||
| 98 | declare!(DMA1_Channel6); | ||
| 99 | declare!(DMA1_Channel7); | ||
| 100 | declare!(DMA2_Channel1); | ||
| 101 | declare!(DMA2_Channel2); | ||
| 102 | declare!(DMA2_Channel3); | ||
| 103 | declare!(DMA2_Channel4); | ||
| 104 | declare!(DMA2_Channel5); | ||
| 105 | declare!(DMA2_Channel6); | ||
| 106 | declare!(DMA2_Channel7); | ||
| 107 | declare!(EXTI0); | ||
| 108 | declare!(EXTI1); | ||
| 109 | declare!(EXTI15_10); | ||
| 110 | declare!(EXTI2); | ||
| 111 | declare!(EXTI3); | ||
| 112 | declare!(EXTI4); | ||
| 113 | declare!(EXTI9_5); | ||
| 114 | declare!(FLASH); | ||
| 115 | declare!(FPU); | ||
| 116 | declare!(I2C1_ER); | ||
| 117 | declare!(I2C1_EV); | ||
| 118 | declare!(I2C2_ER); | ||
| 119 | declare!(I2C2_EV); | ||
| 120 | declare!(I2C3_ER); | ||
| 121 | declare!(I2C3_EV); | ||
| 122 | declare!(LPTIM1); | ||
| 123 | declare!(LPTIM2); | ||
| 124 | declare!(LPUART1); | ||
| 125 | declare!(PVD_PVM); | ||
| 126 | declare!(QUADSPI); | ||
| 127 | declare!(RCC); | ||
| 128 | declare!(RNG); | ||
| 129 | declare!(RTC_Alarm); | ||
| 130 | declare!(RTC_WKUP); | ||
| 131 | declare!(SPI1); | ||
| 132 | declare!(SPI2); | ||
| 133 | declare!(TAMP_STAMP); | ||
| 134 | declare!(TIM1_BRK_TIM15); | ||
| 135 | declare!(TIM1_CC); | ||
| 136 | declare!(TIM1_TRG_COM); | ||
| 137 | declare!(TIM1_UP_TIM16); | ||
| 138 | declare!(TIM2); | ||
| 139 | declare!(TIM6); | ||
| 140 | declare!(TSC); | ||
| 141 | declare!(USART1); | ||
| 142 | declare!(USART2); | ||
| 143 | declare!(USART3); | ||
| 144 | declare!(USB); | ||
| 145 | declare!(WWDG); | ||
| 146 | } | ||
| 147 | mod interrupt_vector { | ||
| 148 | extern "C" { | ||
| 149 | fn ADC1_2(); | ||
| 150 | fn COMP(); | ||
| 151 | fn CRS(); | ||
| 152 | fn DMA1_Channel1(); | ||
| 153 | fn DMA1_Channel2(); | ||
| 154 | fn DMA1_Channel3(); | ||
| 155 | fn DMA1_Channel4(); | ||
| 156 | fn DMA1_Channel5(); | ||
| 157 | fn DMA1_Channel6(); | ||
| 158 | fn DMA1_Channel7(); | ||
| 159 | fn DMA2_Channel1(); | ||
| 160 | fn DMA2_Channel2(); | ||
| 161 | fn DMA2_Channel3(); | ||
| 162 | fn DMA2_Channel4(); | ||
| 163 | fn DMA2_Channel5(); | ||
| 164 | fn DMA2_Channel6(); | ||
| 165 | fn DMA2_Channel7(); | ||
| 166 | fn EXTI0(); | ||
| 167 | fn EXTI1(); | ||
| 168 | fn EXTI15_10(); | ||
| 169 | fn EXTI2(); | ||
| 170 | fn EXTI3(); | ||
| 171 | fn EXTI4(); | ||
| 172 | fn EXTI9_5(); | ||
| 173 | fn FLASH(); | ||
| 174 | fn FPU(); | ||
| 175 | fn I2C1_ER(); | ||
| 176 | fn I2C1_EV(); | ||
| 177 | fn I2C2_ER(); | ||
| 178 | fn I2C2_EV(); | ||
| 179 | fn I2C3_ER(); | ||
| 180 | fn I2C3_EV(); | ||
| 181 | fn LPTIM1(); | ||
| 182 | fn LPTIM2(); | ||
| 183 | fn LPUART1(); | ||
| 184 | fn PVD_PVM(); | ||
| 185 | fn QUADSPI(); | ||
| 186 | fn RCC(); | ||
| 187 | fn RNG(); | ||
| 188 | fn RTC_Alarm(); | ||
| 189 | fn RTC_WKUP(); | ||
| 190 | fn SPI1(); | ||
| 191 | fn SPI2(); | ||
| 192 | fn TAMP_STAMP(); | ||
| 193 | fn TIM1_BRK_TIM15(); | ||
| 194 | fn TIM1_CC(); | ||
| 195 | fn TIM1_TRG_COM(); | ||
| 196 | fn TIM1_UP_TIM16(); | ||
| 197 | fn TIM2(); | ||
| 198 | fn TIM6(); | ||
| 199 | fn TSC(); | ||
| 200 | fn USART1(); | ||
| 201 | fn USART2(); | ||
| 202 | fn USART3(); | ||
| 203 | fn USB(); | ||
| 204 | fn WWDG(); | ||
| 205 | } | ||
| 206 | pub union Vector { | ||
| 207 | _handler: unsafe extern "C" fn(), | ||
| 208 | _reserved: u32, | ||
| 209 | } | ||
| 210 | #[link_section = ".vector_table.interrupts"] | ||
| 211 | #[no_mangle] | ||
| 212 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 213 | Vector { _handler: WWDG }, | ||
| 214 | Vector { _handler: PVD_PVM }, | ||
| 215 | Vector { | ||
| 216 | _handler: TAMP_STAMP, | ||
| 217 | }, | ||
| 218 | Vector { _handler: RTC_WKUP }, | ||
| 219 | Vector { _handler: FLASH }, | ||
| 220 | Vector { _handler: RCC }, | ||
| 221 | Vector { _handler: EXTI0 }, | ||
| 222 | Vector { _handler: EXTI1 }, | ||
| 223 | Vector { _handler: EXTI2 }, | ||
| 224 | Vector { _handler: EXTI3 }, | ||
| 225 | Vector { _handler: EXTI4 }, | ||
| 226 | Vector { | ||
| 227 | _handler: DMA1_Channel1, | ||
| 228 | }, | ||
| 229 | Vector { | ||
| 230 | _handler: DMA1_Channel2, | ||
| 231 | }, | ||
| 232 | Vector { | ||
| 233 | _handler: DMA1_Channel3, | ||
| 234 | }, | ||
| 235 | Vector { | ||
| 236 | _handler: DMA1_Channel4, | ||
| 237 | }, | ||
| 238 | Vector { | ||
| 239 | _handler: DMA1_Channel5, | ||
| 240 | }, | ||
| 241 | Vector { | ||
| 242 | _handler: DMA1_Channel6, | ||
| 243 | }, | ||
| 244 | Vector { | ||
| 245 | _handler: DMA1_Channel7, | ||
| 246 | }, | ||
| 247 | Vector { _handler: ADC1_2 }, | ||
| 248 | Vector { _reserved: 0 }, | ||
| 249 | Vector { _reserved: 0 }, | ||
| 250 | Vector { _reserved: 0 }, | ||
| 251 | Vector { _reserved: 0 }, | ||
| 252 | Vector { _handler: EXTI9_5 }, | ||
| 253 | Vector { | ||
| 254 | _handler: TIM1_BRK_TIM15, | ||
| 255 | }, | ||
| 256 | Vector { | ||
| 257 | _handler: TIM1_UP_TIM16, | ||
| 258 | }, | ||
| 259 | Vector { | ||
| 260 | _handler: TIM1_TRG_COM, | ||
| 261 | }, | ||
| 262 | Vector { _handler: TIM1_CC }, | ||
| 263 | Vector { _handler: TIM2 }, | ||
| 264 | Vector { _reserved: 0 }, | ||
| 265 | Vector { _reserved: 0 }, | ||
| 266 | Vector { _handler: I2C1_EV }, | ||
| 267 | Vector { _handler: I2C1_ER }, | ||
| 268 | Vector { _handler: I2C2_EV }, | ||
| 269 | Vector { _handler: I2C2_ER }, | ||
| 270 | Vector { _handler: SPI1 }, | ||
| 271 | Vector { _handler: SPI2 }, | ||
| 272 | Vector { _handler: USART1 }, | ||
| 273 | Vector { _handler: USART2 }, | ||
| 274 | Vector { _handler: USART3 }, | ||
| 275 | Vector { | ||
| 276 | _handler: EXTI15_10, | ||
| 277 | }, | ||
| 278 | Vector { | ||
| 279 | _handler: RTC_Alarm, | ||
| 280 | }, | ||
| 281 | Vector { _reserved: 0 }, | ||
| 282 | Vector { _reserved: 0 }, | ||
| 283 | Vector { _reserved: 0 }, | ||
| 284 | Vector { _reserved: 0 }, | ||
| 285 | Vector { _reserved: 0 }, | ||
| 286 | Vector { _reserved: 0 }, | ||
| 287 | Vector { _reserved: 0 }, | ||
| 288 | Vector { _reserved: 0 }, | ||
| 289 | Vector { _reserved: 0 }, | ||
| 290 | Vector { _reserved: 0 }, | ||
| 291 | Vector { _reserved: 0 }, | ||
| 292 | Vector { _reserved: 0 }, | ||
| 293 | Vector { _handler: TIM6 }, | ||
| 294 | Vector { _reserved: 0 }, | ||
| 295 | Vector { | ||
| 296 | _handler: DMA2_Channel1, | ||
| 297 | }, | ||
| 298 | Vector { | ||
| 299 | _handler: DMA2_Channel2, | ||
| 300 | }, | ||
| 301 | Vector { | ||
| 302 | _handler: DMA2_Channel3, | ||
| 303 | }, | ||
| 304 | Vector { | ||
| 305 | _handler: DMA2_Channel4, | ||
| 306 | }, | ||
| 307 | Vector { | ||
| 308 | _handler: DMA2_Channel5, | ||
| 309 | }, | ||
| 310 | Vector { _reserved: 0 }, | ||
| 311 | Vector { _reserved: 0 }, | ||
| 312 | Vector { _reserved: 0 }, | ||
| 313 | Vector { _handler: COMP }, | ||
| 314 | Vector { _handler: LPTIM1 }, | ||
| 315 | Vector { _handler: LPTIM2 }, | ||
| 316 | Vector { _handler: USB }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA2_Channel6, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA2_Channel7, | ||
| 322 | }, | ||
| 323 | Vector { _handler: LPUART1 }, | ||
| 324 | Vector { _handler: QUADSPI }, | ||
| 325 | Vector { _handler: I2C3_EV }, | ||
| 326 | Vector { _handler: I2C3_ER }, | ||
| 327 | Vector { _reserved: 0 }, | ||
| 328 | Vector { _reserved: 0 }, | ||
| 329 | Vector { _reserved: 0 }, | ||
| 330 | Vector { _handler: TSC }, | ||
| 331 | Vector { _reserved: 0 }, | ||
| 332 | Vector { _reserved: 0 }, | ||
| 333 | Vector { _handler: RNG }, | ||
| 334 | Vector { _handler: FPU }, | ||
| 335 | Vector { _handler: CRS }, | ||
| 336 | ]; | ||
| 337 | } | ||
| 14 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 338 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 15 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 339 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 16 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 340 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l412cb.rs b/embassy-stm32/src/chip/stm32l412cb.rs index c20a8a60a..e319e06a7 100644 --- a/embassy-stm32/src/chip/stm32l412cb.rs +++ b/embassy-stm32/src/chip/stm32l412cb.rs | |||
| @@ -1,16 +1,340 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, |
| 5 | PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, | 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, |
| 6 | PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, | 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, |
| 7 | PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, | 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, |
| 8 | PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 8 | PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 9 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, | 9 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, |
| 10 | SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, WWDG | 10 | RTC, SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, |
| 11 | WWDG | ||
| 11 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 14 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 12 | pub const GPIO_BASE: usize = 0x48000000; | 15 | pub const GPIO_BASE: usize = 0x48000000; |
| 13 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 17 | |||
| 18 | pub mod interrupt { | ||
| 19 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 20 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 21 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 22 | |||
| 23 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 24 | #[allow(non_camel_case_types)] | ||
| 25 | enum InterruptEnum { | ||
| 26 | ADC1_2 = 18, | ||
| 27 | COMP = 64, | ||
| 28 | CRS = 82, | ||
| 29 | DMA1_Channel1 = 11, | ||
| 30 | DMA1_Channel2 = 12, | ||
| 31 | DMA1_Channel3 = 13, | ||
| 32 | DMA1_Channel4 = 14, | ||
| 33 | DMA1_Channel5 = 15, | ||
| 34 | DMA1_Channel6 = 16, | ||
| 35 | DMA1_Channel7 = 17, | ||
| 36 | DMA2_Channel1 = 56, | ||
| 37 | DMA2_Channel2 = 57, | ||
| 38 | DMA2_Channel3 = 58, | ||
| 39 | DMA2_Channel4 = 59, | ||
| 40 | DMA2_Channel5 = 60, | ||
| 41 | DMA2_Channel6 = 68, | ||
| 42 | DMA2_Channel7 = 69, | ||
| 43 | EXTI0 = 6, | ||
| 44 | EXTI1 = 7, | ||
| 45 | EXTI15_10 = 40, | ||
| 46 | EXTI2 = 8, | ||
| 47 | EXTI3 = 9, | ||
| 48 | EXTI4 = 10, | ||
| 49 | EXTI9_5 = 23, | ||
| 50 | FLASH = 4, | ||
| 51 | FPU = 81, | ||
| 52 | I2C1_ER = 32, | ||
| 53 | I2C1_EV = 31, | ||
| 54 | I2C2_ER = 34, | ||
| 55 | I2C2_EV = 33, | ||
| 56 | I2C3_ER = 73, | ||
| 57 | I2C3_EV = 72, | ||
| 58 | LPTIM1 = 65, | ||
| 59 | LPTIM2 = 66, | ||
| 60 | LPUART1 = 70, | ||
| 61 | PVD_PVM = 1, | ||
| 62 | QUADSPI = 71, | ||
| 63 | RCC = 5, | ||
| 64 | RNG = 80, | ||
| 65 | RTC_Alarm = 41, | ||
| 66 | RTC_WKUP = 3, | ||
| 67 | SPI1 = 35, | ||
| 68 | SPI2 = 36, | ||
| 69 | TAMP_STAMP = 2, | ||
| 70 | TIM1_BRK_TIM15 = 24, | ||
| 71 | TIM1_CC = 27, | ||
| 72 | TIM1_TRG_COM = 26, | ||
| 73 | TIM1_UP_TIM16 = 25, | ||
| 74 | TIM2 = 28, | ||
| 75 | TIM6 = 54, | ||
| 76 | TSC = 77, | ||
| 77 | USART1 = 37, | ||
| 78 | USART2 = 38, | ||
| 79 | USART3 = 39, | ||
| 80 | USB = 67, | ||
| 81 | WWDG = 0, | ||
| 82 | } | ||
| 83 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 84 | #[inline(always)] | ||
| 85 | fn number(self) -> u16 { | ||
| 86 | self as u16 | ||
| 87 | } | ||
| 88 | } | ||
| 89 | |||
| 90 | declare!(ADC1_2); | ||
| 91 | declare!(COMP); | ||
| 92 | declare!(CRS); | ||
| 93 | declare!(DMA1_Channel1); | ||
| 94 | declare!(DMA1_Channel2); | ||
| 95 | declare!(DMA1_Channel3); | ||
| 96 | declare!(DMA1_Channel4); | ||
| 97 | declare!(DMA1_Channel5); | ||
| 98 | declare!(DMA1_Channel6); | ||
| 99 | declare!(DMA1_Channel7); | ||
| 100 | declare!(DMA2_Channel1); | ||
| 101 | declare!(DMA2_Channel2); | ||
| 102 | declare!(DMA2_Channel3); | ||
| 103 | declare!(DMA2_Channel4); | ||
| 104 | declare!(DMA2_Channel5); | ||
| 105 | declare!(DMA2_Channel6); | ||
| 106 | declare!(DMA2_Channel7); | ||
| 107 | declare!(EXTI0); | ||
| 108 | declare!(EXTI1); | ||
| 109 | declare!(EXTI15_10); | ||
| 110 | declare!(EXTI2); | ||
| 111 | declare!(EXTI3); | ||
| 112 | declare!(EXTI4); | ||
| 113 | declare!(EXTI9_5); | ||
| 114 | declare!(FLASH); | ||
| 115 | declare!(FPU); | ||
| 116 | declare!(I2C1_ER); | ||
| 117 | declare!(I2C1_EV); | ||
| 118 | declare!(I2C2_ER); | ||
| 119 | declare!(I2C2_EV); | ||
| 120 | declare!(I2C3_ER); | ||
| 121 | declare!(I2C3_EV); | ||
| 122 | declare!(LPTIM1); | ||
| 123 | declare!(LPTIM2); | ||
| 124 | declare!(LPUART1); | ||
| 125 | declare!(PVD_PVM); | ||
| 126 | declare!(QUADSPI); | ||
| 127 | declare!(RCC); | ||
| 128 | declare!(RNG); | ||
| 129 | declare!(RTC_Alarm); | ||
| 130 | declare!(RTC_WKUP); | ||
| 131 | declare!(SPI1); | ||
| 132 | declare!(SPI2); | ||
| 133 | declare!(TAMP_STAMP); | ||
| 134 | declare!(TIM1_BRK_TIM15); | ||
| 135 | declare!(TIM1_CC); | ||
| 136 | declare!(TIM1_TRG_COM); | ||
| 137 | declare!(TIM1_UP_TIM16); | ||
| 138 | declare!(TIM2); | ||
| 139 | declare!(TIM6); | ||
| 140 | declare!(TSC); | ||
| 141 | declare!(USART1); | ||
| 142 | declare!(USART2); | ||
| 143 | declare!(USART3); | ||
| 144 | declare!(USB); | ||
| 145 | declare!(WWDG); | ||
| 146 | } | ||
| 147 | mod interrupt_vector { | ||
| 148 | extern "C" { | ||
| 149 | fn ADC1_2(); | ||
| 150 | fn COMP(); | ||
| 151 | fn CRS(); | ||
| 152 | fn DMA1_Channel1(); | ||
| 153 | fn DMA1_Channel2(); | ||
| 154 | fn DMA1_Channel3(); | ||
| 155 | fn DMA1_Channel4(); | ||
| 156 | fn DMA1_Channel5(); | ||
| 157 | fn DMA1_Channel6(); | ||
| 158 | fn DMA1_Channel7(); | ||
| 159 | fn DMA2_Channel1(); | ||
| 160 | fn DMA2_Channel2(); | ||
| 161 | fn DMA2_Channel3(); | ||
| 162 | fn DMA2_Channel4(); | ||
| 163 | fn DMA2_Channel5(); | ||
| 164 | fn DMA2_Channel6(); | ||
| 165 | fn DMA2_Channel7(); | ||
| 166 | fn EXTI0(); | ||
| 167 | fn EXTI1(); | ||
| 168 | fn EXTI15_10(); | ||
| 169 | fn EXTI2(); | ||
| 170 | fn EXTI3(); | ||
| 171 | fn EXTI4(); | ||
| 172 | fn EXTI9_5(); | ||
| 173 | fn FLASH(); | ||
| 174 | fn FPU(); | ||
| 175 | fn I2C1_ER(); | ||
| 176 | fn I2C1_EV(); | ||
| 177 | fn I2C2_ER(); | ||
| 178 | fn I2C2_EV(); | ||
| 179 | fn I2C3_ER(); | ||
| 180 | fn I2C3_EV(); | ||
| 181 | fn LPTIM1(); | ||
| 182 | fn LPTIM2(); | ||
| 183 | fn LPUART1(); | ||
| 184 | fn PVD_PVM(); | ||
| 185 | fn QUADSPI(); | ||
| 186 | fn RCC(); | ||
| 187 | fn RNG(); | ||
| 188 | fn RTC_Alarm(); | ||
| 189 | fn RTC_WKUP(); | ||
| 190 | fn SPI1(); | ||
| 191 | fn SPI2(); | ||
| 192 | fn TAMP_STAMP(); | ||
| 193 | fn TIM1_BRK_TIM15(); | ||
| 194 | fn TIM1_CC(); | ||
| 195 | fn TIM1_TRG_COM(); | ||
| 196 | fn TIM1_UP_TIM16(); | ||
| 197 | fn TIM2(); | ||
| 198 | fn TIM6(); | ||
| 199 | fn TSC(); | ||
| 200 | fn USART1(); | ||
| 201 | fn USART2(); | ||
| 202 | fn USART3(); | ||
| 203 | fn USB(); | ||
| 204 | fn WWDG(); | ||
| 205 | } | ||
| 206 | pub union Vector { | ||
| 207 | _handler: unsafe extern "C" fn(), | ||
| 208 | _reserved: u32, | ||
| 209 | } | ||
| 210 | #[link_section = ".vector_table.interrupts"] | ||
| 211 | #[no_mangle] | ||
| 212 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 213 | Vector { _handler: WWDG }, | ||
| 214 | Vector { _handler: PVD_PVM }, | ||
| 215 | Vector { | ||
| 216 | _handler: TAMP_STAMP, | ||
| 217 | }, | ||
| 218 | Vector { _handler: RTC_WKUP }, | ||
| 219 | Vector { _handler: FLASH }, | ||
| 220 | Vector { _handler: RCC }, | ||
| 221 | Vector { _handler: EXTI0 }, | ||
| 222 | Vector { _handler: EXTI1 }, | ||
| 223 | Vector { _handler: EXTI2 }, | ||
| 224 | Vector { _handler: EXTI3 }, | ||
| 225 | Vector { _handler: EXTI4 }, | ||
| 226 | Vector { | ||
| 227 | _handler: DMA1_Channel1, | ||
| 228 | }, | ||
| 229 | Vector { | ||
| 230 | _handler: DMA1_Channel2, | ||
| 231 | }, | ||
| 232 | Vector { | ||
| 233 | _handler: DMA1_Channel3, | ||
| 234 | }, | ||
| 235 | Vector { | ||
| 236 | _handler: DMA1_Channel4, | ||
| 237 | }, | ||
| 238 | Vector { | ||
| 239 | _handler: DMA1_Channel5, | ||
| 240 | }, | ||
| 241 | Vector { | ||
| 242 | _handler: DMA1_Channel6, | ||
| 243 | }, | ||
| 244 | Vector { | ||
| 245 | _handler: DMA1_Channel7, | ||
| 246 | }, | ||
| 247 | Vector { _handler: ADC1_2 }, | ||
| 248 | Vector { _reserved: 0 }, | ||
| 249 | Vector { _reserved: 0 }, | ||
| 250 | Vector { _reserved: 0 }, | ||
| 251 | Vector { _reserved: 0 }, | ||
| 252 | Vector { _handler: EXTI9_5 }, | ||
| 253 | Vector { | ||
| 254 | _handler: TIM1_BRK_TIM15, | ||
| 255 | }, | ||
| 256 | Vector { | ||
| 257 | _handler: TIM1_UP_TIM16, | ||
| 258 | }, | ||
| 259 | Vector { | ||
| 260 | _handler: TIM1_TRG_COM, | ||
| 261 | }, | ||
| 262 | Vector { _handler: TIM1_CC }, | ||
| 263 | Vector { _handler: TIM2 }, | ||
| 264 | Vector { _reserved: 0 }, | ||
| 265 | Vector { _reserved: 0 }, | ||
| 266 | Vector { _handler: I2C1_EV }, | ||
| 267 | Vector { _handler: I2C1_ER }, | ||
| 268 | Vector { _handler: I2C2_EV }, | ||
| 269 | Vector { _handler: I2C2_ER }, | ||
| 270 | Vector { _handler: SPI1 }, | ||
| 271 | Vector { _handler: SPI2 }, | ||
| 272 | Vector { _handler: USART1 }, | ||
| 273 | Vector { _handler: USART2 }, | ||
| 274 | Vector { _handler: USART3 }, | ||
| 275 | Vector { | ||
| 276 | _handler: EXTI15_10, | ||
| 277 | }, | ||
| 278 | Vector { | ||
| 279 | _handler: RTC_Alarm, | ||
| 280 | }, | ||
| 281 | Vector { _reserved: 0 }, | ||
| 282 | Vector { _reserved: 0 }, | ||
| 283 | Vector { _reserved: 0 }, | ||
| 284 | Vector { _reserved: 0 }, | ||
| 285 | Vector { _reserved: 0 }, | ||
| 286 | Vector { _reserved: 0 }, | ||
| 287 | Vector { _reserved: 0 }, | ||
| 288 | Vector { _reserved: 0 }, | ||
| 289 | Vector { _reserved: 0 }, | ||
| 290 | Vector { _reserved: 0 }, | ||
| 291 | Vector { _reserved: 0 }, | ||
| 292 | Vector { _reserved: 0 }, | ||
| 293 | Vector { _handler: TIM6 }, | ||
| 294 | Vector { _reserved: 0 }, | ||
| 295 | Vector { | ||
| 296 | _handler: DMA2_Channel1, | ||
| 297 | }, | ||
| 298 | Vector { | ||
| 299 | _handler: DMA2_Channel2, | ||
| 300 | }, | ||
| 301 | Vector { | ||
| 302 | _handler: DMA2_Channel3, | ||
| 303 | }, | ||
| 304 | Vector { | ||
| 305 | _handler: DMA2_Channel4, | ||
| 306 | }, | ||
| 307 | Vector { | ||
| 308 | _handler: DMA2_Channel5, | ||
| 309 | }, | ||
| 310 | Vector { _reserved: 0 }, | ||
| 311 | Vector { _reserved: 0 }, | ||
| 312 | Vector { _reserved: 0 }, | ||
| 313 | Vector { _handler: COMP }, | ||
| 314 | Vector { _handler: LPTIM1 }, | ||
| 315 | Vector { _handler: LPTIM2 }, | ||
| 316 | Vector { _handler: USB }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA2_Channel6, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA2_Channel7, | ||
| 322 | }, | ||
| 323 | Vector { _handler: LPUART1 }, | ||
| 324 | Vector { _handler: QUADSPI }, | ||
| 325 | Vector { _handler: I2C3_EV }, | ||
| 326 | Vector { _handler: I2C3_ER }, | ||
| 327 | Vector { _reserved: 0 }, | ||
| 328 | Vector { _reserved: 0 }, | ||
| 329 | Vector { _reserved: 0 }, | ||
| 330 | Vector { _handler: TSC }, | ||
| 331 | Vector { _reserved: 0 }, | ||
| 332 | Vector { _reserved: 0 }, | ||
| 333 | Vector { _handler: RNG }, | ||
| 334 | Vector { _handler: FPU }, | ||
| 335 | Vector { _handler: CRS }, | ||
| 336 | ]; | ||
| 337 | } | ||
| 14 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 338 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 15 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 339 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 16 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 340 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l412k8.rs b/embassy-stm32/src/chip/stm32l412k8.rs index c12d91a6a..88cc20b04 100644 --- a/embassy-stm32/src/chip/stm32l412k8.rs +++ b/embassy-stm32/src/chip/stm32l412k8.rs | |||
| @@ -1,16 +1,339 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, |
| 5 | PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, | 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, |
| 6 | PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, | 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, |
| 7 | PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, | 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, |
| 8 | PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 8 | PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 9 | PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, SPI1, | 9 | PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, |
| 10 | SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG | 10 | SPI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG |
| 11 | ); | 11 | ); |
| 12 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 13 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 12 | pub const GPIO_BASE: usize = 0x48000000; | 14 | pub const GPIO_BASE: usize = 0x48000000; |
| 13 | pub const GPIO_STRIDE: usize = 0x400; | 15 | pub const GPIO_STRIDE: usize = 0x400; |
| 16 | |||
| 17 | pub mod interrupt { | ||
| 18 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 19 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 20 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 21 | |||
| 22 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 23 | #[allow(non_camel_case_types)] | ||
| 24 | enum InterruptEnum { | ||
| 25 | ADC1_2 = 18, | ||
| 26 | COMP = 64, | ||
| 27 | CRS = 82, | ||
| 28 | DMA1_Channel1 = 11, | ||
| 29 | DMA1_Channel2 = 12, | ||
| 30 | DMA1_Channel3 = 13, | ||
| 31 | DMA1_Channel4 = 14, | ||
| 32 | DMA1_Channel5 = 15, | ||
| 33 | DMA1_Channel6 = 16, | ||
| 34 | DMA1_Channel7 = 17, | ||
| 35 | DMA2_Channel1 = 56, | ||
| 36 | DMA2_Channel2 = 57, | ||
| 37 | DMA2_Channel3 = 58, | ||
| 38 | DMA2_Channel4 = 59, | ||
| 39 | DMA2_Channel5 = 60, | ||
| 40 | DMA2_Channel6 = 68, | ||
| 41 | DMA2_Channel7 = 69, | ||
| 42 | EXTI0 = 6, | ||
| 43 | EXTI1 = 7, | ||
| 44 | EXTI15_10 = 40, | ||
| 45 | EXTI2 = 8, | ||
| 46 | EXTI3 = 9, | ||
| 47 | EXTI4 = 10, | ||
| 48 | EXTI9_5 = 23, | ||
| 49 | FLASH = 4, | ||
| 50 | FPU = 81, | ||
| 51 | I2C1_ER = 32, | ||
| 52 | I2C1_EV = 31, | ||
| 53 | I2C2_ER = 34, | ||
| 54 | I2C2_EV = 33, | ||
| 55 | I2C3_ER = 73, | ||
| 56 | I2C3_EV = 72, | ||
| 57 | LPTIM1 = 65, | ||
| 58 | LPTIM2 = 66, | ||
| 59 | LPUART1 = 70, | ||
| 60 | PVD_PVM = 1, | ||
| 61 | QUADSPI = 71, | ||
| 62 | RCC = 5, | ||
| 63 | RNG = 80, | ||
| 64 | RTC_Alarm = 41, | ||
| 65 | RTC_WKUP = 3, | ||
| 66 | SPI1 = 35, | ||
| 67 | SPI2 = 36, | ||
| 68 | TAMP_STAMP = 2, | ||
| 69 | TIM1_BRK_TIM15 = 24, | ||
| 70 | TIM1_CC = 27, | ||
| 71 | TIM1_TRG_COM = 26, | ||
| 72 | TIM1_UP_TIM16 = 25, | ||
| 73 | TIM2 = 28, | ||
| 74 | TIM6 = 54, | ||
| 75 | TSC = 77, | ||
| 76 | USART1 = 37, | ||
| 77 | USART2 = 38, | ||
| 78 | USART3 = 39, | ||
| 79 | USB = 67, | ||
| 80 | WWDG = 0, | ||
| 81 | } | ||
| 82 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 83 | #[inline(always)] | ||
| 84 | fn number(self) -> u16 { | ||
| 85 | self as u16 | ||
| 86 | } | ||
| 87 | } | ||
| 88 | |||
| 89 | declare!(ADC1_2); | ||
| 90 | declare!(COMP); | ||
| 91 | declare!(CRS); | ||
| 92 | declare!(DMA1_Channel1); | ||
| 93 | declare!(DMA1_Channel2); | ||
| 94 | declare!(DMA1_Channel3); | ||
| 95 | declare!(DMA1_Channel4); | ||
| 96 | declare!(DMA1_Channel5); | ||
| 97 | declare!(DMA1_Channel6); | ||
| 98 | declare!(DMA1_Channel7); | ||
| 99 | declare!(DMA2_Channel1); | ||
| 100 | declare!(DMA2_Channel2); | ||
| 101 | declare!(DMA2_Channel3); | ||
| 102 | declare!(DMA2_Channel4); | ||
| 103 | declare!(DMA2_Channel5); | ||
| 104 | declare!(DMA2_Channel6); | ||
| 105 | declare!(DMA2_Channel7); | ||
| 106 | declare!(EXTI0); | ||
| 107 | declare!(EXTI1); | ||
| 108 | declare!(EXTI15_10); | ||
| 109 | declare!(EXTI2); | ||
| 110 | declare!(EXTI3); | ||
| 111 | declare!(EXTI4); | ||
| 112 | declare!(EXTI9_5); | ||
| 113 | declare!(FLASH); | ||
| 114 | declare!(FPU); | ||
| 115 | declare!(I2C1_ER); | ||
| 116 | declare!(I2C1_EV); | ||
| 117 | declare!(I2C2_ER); | ||
| 118 | declare!(I2C2_EV); | ||
| 119 | declare!(I2C3_ER); | ||
| 120 | declare!(I2C3_EV); | ||
| 121 | declare!(LPTIM1); | ||
| 122 | declare!(LPTIM2); | ||
| 123 | declare!(LPUART1); | ||
| 124 | declare!(PVD_PVM); | ||
| 125 | declare!(QUADSPI); | ||
| 126 | declare!(RCC); | ||
| 127 | declare!(RNG); | ||
| 128 | declare!(RTC_Alarm); | ||
| 129 | declare!(RTC_WKUP); | ||
| 130 | declare!(SPI1); | ||
| 131 | declare!(SPI2); | ||
| 132 | declare!(TAMP_STAMP); | ||
| 133 | declare!(TIM1_BRK_TIM15); | ||
| 134 | declare!(TIM1_CC); | ||
| 135 | declare!(TIM1_TRG_COM); | ||
| 136 | declare!(TIM1_UP_TIM16); | ||
| 137 | declare!(TIM2); | ||
| 138 | declare!(TIM6); | ||
| 139 | declare!(TSC); | ||
| 140 | declare!(USART1); | ||
| 141 | declare!(USART2); | ||
| 142 | declare!(USART3); | ||
| 143 | declare!(USB); | ||
| 144 | declare!(WWDG); | ||
| 145 | } | ||
| 146 | mod interrupt_vector { | ||
| 147 | extern "C" { | ||
| 148 | fn ADC1_2(); | ||
| 149 | fn COMP(); | ||
| 150 | fn CRS(); | ||
| 151 | fn DMA1_Channel1(); | ||
| 152 | fn DMA1_Channel2(); | ||
| 153 | fn DMA1_Channel3(); | ||
| 154 | fn DMA1_Channel4(); | ||
| 155 | fn DMA1_Channel5(); | ||
| 156 | fn DMA1_Channel6(); | ||
| 157 | fn DMA1_Channel7(); | ||
| 158 | fn DMA2_Channel1(); | ||
| 159 | fn DMA2_Channel2(); | ||
| 160 | fn DMA2_Channel3(); | ||
| 161 | fn DMA2_Channel4(); | ||
| 162 | fn DMA2_Channel5(); | ||
| 163 | fn DMA2_Channel6(); | ||
| 164 | fn DMA2_Channel7(); | ||
| 165 | fn EXTI0(); | ||
| 166 | fn EXTI1(); | ||
| 167 | fn EXTI15_10(); | ||
| 168 | fn EXTI2(); | ||
| 169 | fn EXTI3(); | ||
| 170 | fn EXTI4(); | ||
| 171 | fn EXTI9_5(); | ||
| 172 | fn FLASH(); | ||
| 173 | fn FPU(); | ||
| 174 | fn I2C1_ER(); | ||
| 175 | fn I2C1_EV(); | ||
| 176 | fn I2C2_ER(); | ||
| 177 | fn I2C2_EV(); | ||
| 178 | fn I2C3_ER(); | ||
| 179 | fn I2C3_EV(); | ||
| 180 | fn LPTIM1(); | ||
| 181 | fn LPTIM2(); | ||
| 182 | fn LPUART1(); | ||
| 183 | fn PVD_PVM(); | ||
| 184 | fn QUADSPI(); | ||
| 185 | fn RCC(); | ||
| 186 | fn RNG(); | ||
| 187 | fn RTC_Alarm(); | ||
| 188 | fn RTC_WKUP(); | ||
| 189 | fn SPI1(); | ||
| 190 | fn SPI2(); | ||
| 191 | fn TAMP_STAMP(); | ||
| 192 | fn TIM1_BRK_TIM15(); | ||
| 193 | fn TIM1_CC(); | ||
| 194 | fn TIM1_TRG_COM(); | ||
| 195 | fn TIM1_UP_TIM16(); | ||
| 196 | fn TIM2(); | ||
| 197 | fn TIM6(); | ||
| 198 | fn TSC(); | ||
| 199 | fn USART1(); | ||
| 200 | fn USART2(); | ||
| 201 | fn USART3(); | ||
| 202 | fn USB(); | ||
| 203 | fn WWDG(); | ||
| 204 | } | ||
| 205 | pub union Vector { | ||
| 206 | _handler: unsafe extern "C" fn(), | ||
| 207 | _reserved: u32, | ||
| 208 | } | ||
| 209 | #[link_section = ".vector_table.interrupts"] | ||
| 210 | #[no_mangle] | ||
| 211 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 212 | Vector { _handler: WWDG }, | ||
| 213 | Vector { _handler: PVD_PVM }, | ||
| 214 | Vector { | ||
| 215 | _handler: TAMP_STAMP, | ||
| 216 | }, | ||
| 217 | Vector { _handler: RTC_WKUP }, | ||
| 218 | Vector { _handler: FLASH }, | ||
| 219 | Vector { _handler: RCC }, | ||
| 220 | Vector { _handler: EXTI0 }, | ||
| 221 | Vector { _handler: EXTI1 }, | ||
| 222 | Vector { _handler: EXTI2 }, | ||
| 223 | Vector { _handler: EXTI3 }, | ||
| 224 | Vector { _handler: EXTI4 }, | ||
| 225 | Vector { | ||
| 226 | _handler: DMA1_Channel1, | ||
| 227 | }, | ||
| 228 | Vector { | ||
| 229 | _handler: DMA1_Channel2, | ||
| 230 | }, | ||
| 231 | Vector { | ||
| 232 | _handler: DMA1_Channel3, | ||
| 233 | }, | ||
| 234 | Vector { | ||
| 235 | _handler: DMA1_Channel4, | ||
| 236 | }, | ||
| 237 | Vector { | ||
| 238 | _handler: DMA1_Channel5, | ||
| 239 | }, | ||
| 240 | Vector { | ||
| 241 | _handler: DMA1_Channel6, | ||
| 242 | }, | ||
| 243 | Vector { | ||
| 244 | _handler: DMA1_Channel7, | ||
| 245 | }, | ||
| 246 | Vector { _handler: ADC1_2 }, | ||
| 247 | Vector { _reserved: 0 }, | ||
| 248 | Vector { _reserved: 0 }, | ||
| 249 | Vector { _reserved: 0 }, | ||
| 250 | Vector { _reserved: 0 }, | ||
| 251 | Vector { _handler: EXTI9_5 }, | ||
| 252 | Vector { | ||
| 253 | _handler: TIM1_BRK_TIM15, | ||
| 254 | }, | ||
| 255 | Vector { | ||
| 256 | _handler: TIM1_UP_TIM16, | ||
| 257 | }, | ||
| 258 | Vector { | ||
| 259 | _handler: TIM1_TRG_COM, | ||
| 260 | }, | ||
| 261 | Vector { _handler: TIM1_CC }, | ||
| 262 | Vector { _handler: TIM2 }, | ||
| 263 | Vector { _reserved: 0 }, | ||
| 264 | Vector { _reserved: 0 }, | ||
| 265 | Vector { _handler: I2C1_EV }, | ||
| 266 | Vector { _handler: I2C1_ER }, | ||
| 267 | Vector { _handler: I2C2_EV }, | ||
| 268 | Vector { _handler: I2C2_ER }, | ||
| 269 | Vector { _handler: SPI1 }, | ||
| 270 | Vector { _handler: SPI2 }, | ||
| 271 | Vector { _handler: USART1 }, | ||
| 272 | Vector { _handler: USART2 }, | ||
| 273 | Vector { _handler: USART3 }, | ||
| 274 | Vector { | ||
| 275 | _handler: EXTI15_10, | ||
| 276 | }, | ||
| 277 | Vector { | ||
| 278 | _handler: RTC_Alarm, | ||
| 279 | }, | ||
| 280 | Vector { _reserved: 0 }, | ||
| 281 | Vector { _reserved: 0 }, | ||
| 282 | Vector { _reserved: 0 }, | ||
| 283 | Vector { _reserved: 0 }, | ||
| 284 | Vector { _reserved: 0 }, | ||
| 285 | Vector { _reserved: 0 }, | ||
| 286 | Vector { _reserved: 0 }, | ||
| 287 | Vector { _reserved: 0 }, | ||
| 288 | Vector { _reserved: 0 }, | ||
| 289 | Vector { _reserved: 0 }, | ||
| 290 | Vector { _reserved: 0 }, | ||
| 291 | Vector { _reserved: 0 }, | ||
| 292 | Vector { _handler: TIM6 }, | ||
| 293 | Vector { _reserved: 0 }, | ||
| 294 | Vector { | ||
| 295 | _handler: DMA2_Channel1, | ||
| 296 | }, | ||
| 297 | Vector { | ||
| 298 | _handler: DMA2_Channel2, | ||
| 299 | }, | ||
| 300 | Vector { | ||
| 301 | _handler: DMA2_Channel3, | ||
| 302 | }, | ||
| 303 | Vector { | ||
| 304 | _handler: DMA2_Channel4, | ||
| 305 | }, | ||
| 306 | Vector { | ||
| 307 | _handler: DMA2_Channel5, | ||
| 308 | }, | ||
| 309 | Vector { _reserved: 0 }, | ||
| 310 | Vector { _reserved: 0 }, | ||
| 311 | Vector { _reserved: 0 }, | ||
| 312 | Vector { _handler: COMP }, | ||
| 313 | Vector { _handler: LPTIM1 }, | ||
| 314 | Vector { _handler: LPTIM2 }, | ||
| 315 | Vector { _handler: USB }, | ||
| 316 | Vector { | ||
| 317 | _handler: DMA2_Channel6, | ||
| 318 | }, | ||
| 319 | Vector { | ||
| 320 | _handler: DMA2_Channel7, | ||
| 321 | }, | ||
| 322 | Vector { _handler: LPUART1 }, | ||
| 323 | Vector { _handler: QUADSPI }, | ||
| 324 | Vector { _handler: I2C3_EV }, | ||
| 325 | Vector { _handler: I2C3_ER }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _reserved: 0 }, | ||
| 328 | Vector { _reserved: 0 }, | ||
| 329 | Vector { _handler: TSC }, | ||
| 330 | Vector { _reserved: 0 }, | ||
| 331 | Vector { _reserved: 0 }, | ||
| 332 | Vector { _handler: RNG }, | ||
| 333 | Vector { _handler: FPU }, | ||
| 334 | Vector { _handler: CRS }, | ||
| 335 | ]; | ||
| 336 | } | ||
| 14 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 337 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 15 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 338 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 16 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 339 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l412kb.rs b/embassy-stm32/src/chip/stm32l412kb.rs index c12d91a6a..88cc20b04 100644 --- a/embassy-stm32/src/chip/stm32l412kb.rs +++ b/embassy-stm32/src/chip/stm32l412kb.rs | |||
| @@ -1,16 +1,339 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, |
| 5 | PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, | 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, |
| 6 | PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, | 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, |
| 7 | PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, | 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, |
| 8 | PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 8 | PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 9 | PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, SPI1, | 9 | PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, |
| 10 | SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG | 10 | SPI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG |
| 11 | ); | 11 | ); |
| 12 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 13 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 12 | pub const GPIO_BASE: usize = 0x48000000; | 14 | pub const GPIO_BASE: usize = 0x48000000; |
| 13 | pub const GPIO_STRIDE: usize = 0x400; | 15 | pub const GPIO_STRIDE: usize = 0x400; |
| 16 | |||
| 17 | pub mod interrupt { | ||
| 18 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 19 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 20 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 21 | |||
| 22 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 23 | #[allow(non_camel_case_types)] | ||
| 24 | enum InterruptEnum { | ||
| 25 | ADC1_2 = 18, | ||
| 26 | COMP = 64, | ||
| 27 | CRS = 82, | ||
| 28 | DMA1_Channel1 = 11, | ||
| 29 | DMA1_Channel2 = 12, | ||
| 30 | DMA1_Channel3 = 13, | ||
| 31 | DMA1_Channel4 = 14, | ||
| 32 | DMA1_Channel5 = 15, | ||
| 33 | DMA1_Channel6 = 16, | ||
| 34 | DMA1_Channel7 = 17, | ||
| 35 | DMA2_Channel1 = 56, | ||
| 36 | DMA2_Channel2 = 57, | ||
| 37 | DMA2_Channel3 = 58, | ||
| 38 | DMA2_Channel4 = 59, | ||
| 39 | DMA2_Channel5 = 60, | ||
| 40 | DMA2_Channel6 = 68, | ||
| 41 | DMA2_Channel7 = 69, | ||
| 42 | EXTI0 = 6, | ||
| 43 | EXTI1 = 7, | ||
| 44 | EXTI15_10 = 40, | ||
| 45 | EXTI2 = 8, | ||
| 46 | EXTI3 = 9, | ||
| 47 | EXTI4 = 10, | ||
| 48 | EXTI9_5 = 23, | ||
| 49 | FLASH = 4, | ||
| 50 | FPU = 81, | ||
| 51 | I2C1_ER = 32, | ||
| 52 | I2C1_EV = 31, | ||
| 53 | I2C2_ER = 34, | ||
| 54 | I2C2_EV = 33, | ||
| 55 | I2C3_ER = 73, | ||
| 56 | I2C3_EV = 72, | ||
| 57 | LPTIM1 = 65, | ||
| 58 | LPTIM2 = 66, | ||
| 59 | LPUART1 = 70, | ||
| 60 | PVD_PVM = 1, | ||
| 61 | QUADSPI = 71, | ||
| 62 | RCC = 5, | ||
| 63 | RNG = 80, | ||
| 64 | RTC_Alarm = 41, | ||
| 65 | RTC_WKUP = 3, | ||
| 66 | SPI1 = 35, | ||
| 67 | SPI2 = 36, | ||
| 68 | TAMP_STAMP = 2, | ||
| 69 | TIM1_BRK_TIM15 = 24, | ||
| 70 | TIM1_CC = 27, | ||
| 71 | TIM1_TRG_COM = 26, | ||
| 72 | TIM1_UP_TIM16 = 25, | ||
| 73 | TIM2 = 28, | ||
| 74 | TIM6 = 54, | ||
| 75 | TSC = 77, | ||
| 76 | USART1 = 37, | ||
| 77 | USART2 = 38, | ||
| 78 | USART3 = 39, | ||
| 79 | USB = 67, | ||
| 80 | WWDG = 0, | ||
| 81 | } | ||
| 82 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 83 | #[inline(always)] | ||
| 84 | fn number(self) -> u16 { | ||
| 85 | self as u16 | ||
| 86 | } | ||
| 87 | } | ||
| 88 | |||
| 89 | declare!(ADC1_2); | ||
| 90 | declare!(COMP); | ||
| 91 | declare!(CRS); | ||
| 92 | declare!(DMA1_Channel1); | ||
| 93 | declare!(DMA1_Channel2); | ||
| 94 | declare!(DMA1_Channel3); | ||
| 95 | declare!(DMA1_Channel4); | ||
| 96 | declare!(DMA1_Channel5); | ||
| 97 | declare!(DMA1_Channel6); | ||
| 98 | declare!(DMA1_Channel7); | ||
| 99 | declare!(DMA2_Channel1); | ||
| 100 | declare!(DMA2_Channel2); | ||
| 101 | declare!(DMA2_Channel3); | ||
| 102 | declare!(DMA2_Channel4); | ||
| 103 | declare!(DMA2_Channel5); | ||
| 104 | declare!(DMA2_Channel6); | ||
| 105 | declare!(DMA2_Channel7); | ||
| 106 | declare!(EXTI0); | ||
| 107 | declare!(EXTI1); | ||
| 108 | declare!(EXTI15_10); | ||
| 109 | declare!(EXTI2); | ||
| 110 | declare!(EXTI3); | ||
| 111 | declare!(EXTI4); | ||
| 112 | declare!(EXTI9_5); | ||
| 113 | declare!(FLASH); | ||
| 114 | declare!(FPU); | ||
| 115 | declare!(I2C1_ER); | ||
| 116 | declare!(I2C1_EV); | ||
| 117 | declare!(I2C2_ER); | ||
| 118 | declare!(I2C2_EV); | ||
| 119 | declare!(I2C3_ER); | ||
| 120 | declare!(I2C3_EV); | ||
| 121 | declare!(LPTIM1); | ||
| 122 | declare!(LPTIM2); | ||
| 123 | declare!(LPUART1); | ||
| 124 | declare!(PVD_PVM); | ||
| 125 | declare!(QUADSPI); | ||
| 126 | declare!(RCC); | ||
| 127 | declare!(RNG); | ||
| 128 | declare!(RTC_Alarm); | ||
| 129 | declare!(RTC_WKUP); | ||
| 130 | declare!(SPI1); | ||
| 131 | declare!(SPI2); | ||
| 132 | declare!(TAMP_STAMP); | ||
| 133 | declare!(TIM1_BRK_TIM15); | ||
| 134 | declare!(TIM1_CC); | ||
| 135 | declare!(TIM1_TRG_COM); | ||
| 136 | declare!(TIM1_UP_TIM16); | ||
| 137 | declare!(TIM2); | ||
| 138 | declare!(TIM6); | ||
| 139 | declare!(TSC); | ||
| 140 | declare!(USART1); | ||
| 141 | declare!(USART2); | ||
| 142 | declare!(USART3); | ||
| 143 | declare!(USB); | ||
| 144 | declare!(WWDG); | ||
| 145 | } | ||
| 146 | mod interrupt_vector { | ||
| 147 | extern "C" { | ||
| 148 | fn ADC1_2(); | ||
| 149 | fn COMP(); | ||
| 150 | fn CRS(); | ||
| 151 | fn DMA1_Channel1(); | ||
| 152 | fn DMA1_Channel2(); | ||
| 153 | fn DMA1_Channel3(); | ||
| 154 | fn DMA1_Channel4(); | ||
| 155 | fn DMA1_Channel5(); | ||
| 156 | fn DMA1_Channel6(); | ||
| 157 | fn DMA1_Channel7(); | ||
| 158 | fn DMA2_Channel1(); | ||
| 159 | fn DMA2_Channel2(); | ||
| 160 | fn DMA2_Channel3(); | ||
| 161 | fn DMA2_Channel4(); | ||
| 162 | fn DMA2_Channel5(); | ||
| 163 | fn DMA2_Channel6(); | ||
| 164 | fn DMA2_Channel7(); | ||
| 165 | fn EXTI0(); | ||
| 166 | fn EXTI1(); | ||
| 167 | fn EXTI15_10(); | ||
| 168 | fn EXTI2(); | ||
| 169 | fn EXTI3(); | ||
| 170 | fn EXTI4(); | ||
| 171 | fn EXTI9_5(); | ||
| 172 | fn FLASH(); | ||
| 173 | fn FPU(); | ||
| 174 | fn I2C1_ER(); | ||
| 175 | fn I2C1_EV(); | ||
| 176 | fn I2C2_ER(); | ||
| 177 | fn I2C2_EV(); | ||
| 178 | fn I2C3_ER(); | ||
| 179 | fn I2C3_EV(); | ||
| 180 | fn LPTIM1(); | ||
| 181 | fn LPTIM2(); | ||
| 182 | fn LPUART1(); | ||
| 183 | fn PVD_PVM(); | ||
| 184 | fn QUADSPI(); | ||
| 185 | fn RCC(); | ||
| 186 | fn RNG(); | ||
| 187 | fn RTC_Alarm(); | ||
| 188 | fn RTC_WKUP(); | ||
| 189 | fn SPI1(); | ||
| 190 | fn SPI2(); | ||
| 191 | fn TAMP_STAMP(); | ||
| 192 | fn TIM1_BRK_TIM15(); | ||
| 193 | fn TIM1_CC(); | ||
| 194 | fn TIM1_TRG_COM(); | ||
| 195 | fn TIM1_UP_TIM16(); | ||
| 196 | fn TIM2(); | ||
| 197 | fn TIM6(); | ||
| 198 | fn TSC(); | ||
| 199 | fn USART1(); | ||
| 200 | fn USART2(); | ||
| 201 | fn USART3(); | ||
| 202 | fn USB(); | ||
| 203 | fn WWDG(); | ||
| 204 | } | ||
| 205 | pub union Vector { | ||
| 206 | _handler: unsafe extern "C" fn(), | ||
| 207 | _reserved: u32, | ||
| 208 | } | ||
| 209 | #[link_section = ".vector_table.interrupts"] | ||
| 210 | #[no_mangle] | ||
| 211 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 212 | Vector { _handler: WWDG }, | ||
| 213 | Vector { _handler: PVD_PVM }, | ||
| 214 | Vector { | ||
| 215 | _handler: TAMP_STAMP, | ||
| 216 | }, | ||
| 217 | Vector { _handler: RTC_WKUP }, | ||
| 218 | Vector { _handler: FLASH }, | ||
| 219 | Vector { _handler: RCC }, | ||
| 220 | Vector { _handler: EXTI0 }, | ||
| 221 | Vector { _handler: EXTI1 }, | ||
| 222 | Vector { _handler: EXTI2 }, | ||
| 223 | Vector { _handler: EXTI3 }, | ||
| 224 | Vector { _handler: EXTI4 }, | ||
| 225 | Vector { | ||
| 226 | _handler: DMA1_Channel1, | ||
| 227 | }, | ||
| 228 | Vector { | ||
| 229 | _handler: DMA1_Channel2, | ||
| 230 | }, | ||
| 231 | Vector { | ||
| 232 | _handler: DMA1_Channel3, | ||
| 233 | }, | ||
| 234 | Vector { | ||
| 235 | _handler: DMA1_Channel4, | ||
| 236 | }, | ||
| 237 | Vector { | ||
| 238 | _handler: DMA1_Channel5, | ||
| 239 | }, | ||
| 240 | Vector { | ||
| 241 | _handler: DMA1_Channel6, | ||
| 242 | }, | ||
| 243 | Vector { | ||
| 244 | _handler: DMA1_Channel7, | ||
| 245 | }, | ||
| 246 | Vector { _handler: ADC1_2 }, | ||
| 247 | Vector { _reserved: 0 }, | ||
| 248 | Vector { _reserved: 0 }, | ||
| 249 | Vector { _reserved: 0 }, | ||
| 250 | Vector { _reserved: 0 }, | ||
| 251 | Vector { _handler: EXTI9_5 }, | ||
| 252 | Vector { | ||
| 253 | _handler: TIM1_BRK_TIM15, | ||
| 254 | }, | ||
| 255 | Vector { | ||
| 256 | _handler: TIM1_UP_TIM16, | ||
| 257 | }, | ||
| 258 | Vector { | ||
| 259 | _handler: TIM1_TRG_COM, | ||
| 260 | }, | ||
| 261 | Vector { _handler: TIM1_CC }, | ||
| 262 | Vector { _handler: TIM2 }, | ||
| 263 | Vector { _reserved: 0 }, | ||
| 264 | Vector { _reserved: 0 }, | ||
| 265 | Vector { _handler: I2C1_EV }, | ||
| 266 | Vector { _handler: I2C1_ER }, | ||
| 267 | Vector { _handler: I2C2_EV }, | ||
| 268 | Vector { _handler: I2C2_ER }, | ||
| 269 | Vector { _handler: SPI1 }, | ||
| 270 | Vector { _handler: SPI2 }, | ||
| 271 | Vector { _handler: USART1 }, | ||
| 272 | Vector { _handler: USART2 }, | ||
| 273 | Vector { _handler: USART3 }, | ||
| 274 | Vector { | ||
| 275 | _handler: EXTI15_10, | ||
| 276 | }, | ||
| 277 | Vector { | ||
| 278 | _handler: RTC_Alarm, | ||
| 279 | }, | ||
| 280 | Vector { _reserved: 0 }, | ||
| 281 | Vector { _reserved: 0 }, | ||
| 282 | Vector { _reserved: 0 }, | ||
| 283 | Vector { _reserved: 0 }, | ||
| 284 | Vector { _reserved: 0 }, | ||
| 285 | Vector { _reserved: 0 }, | ||
| 286 | Vector { _reserved: 0 }, | ||
| 287 | Vector { _reserved: 0 }, | ||
| 288 | Vector { _reserved: 0 }, | ||
| 289 | Vector { _reserved: 0 }, | ||
| 290 | Vector { _reserved: 0 }, | ||
| 291 | Vector { _reserved: 0 }, | ||
| 292 | Vector { _handler: TIM6 }, | ||
| 293 | Vector { _reserved: 0 }, | ||
| 294 | Vector { | ||
| 295 | _handler: DMA2_Channel1, | ||
| 296 | }, | ||
| 297 | Vector { | ||
| 298 | _handler: DMA2_Channel2, | ||
| 299 | }, | ||
| 300 | Vector { | ||
| 301 | _handler: DMA2_Channel3, | ||
| 302 | }, | ||
| 303 | Vector { | ||
| 304 | _handler: DMA2_Channel4, | ||
| 305 | }, | ||
| 306 | Vector { | ||
| 307 | _handler: DMA2_Channel5, | ||
| 308 | }, | ||
| 309 | Vector { _reserved: 0 }, | ||
| 310 | Vector { _reserved: 0 }, | ||
| 311 | Vector { _reserved: 0 }, | ||
| 312 | Vector { _handler: COMP }, | ||
| 313 | Vector { _handler: LPTIM1 }, | ||
| 314 | Vector { _handler: LPTIM2 }, | ||
| 315 | Vector { _handler: USB }, | ||
| 316 | Vector { | ||
| 317 | _handler: DMA2_Channel6, | ||
| 318 | }, | ||
| 319 | Vector { | ||
| 320 | _handler: DMA2_Channel7, | ||
| 321 | }, | ||
| 322 | Vector { _handler: LPUART1 }, | ||
| 323 | Vector { _handler: QUADSPI }, | ||
| 324 | Vector { _handler: I2C3_EV }, | ||
| 325 | Vector { _handler: I2C3_ER }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _reserved: 0 }, | ||
| 328 | Vector { _reserved: 0 }, | ||
| 329 | Vector { _handler: TSC }, | ||
| 330 | Vector { _reserved: 0 }, | ||
| 331 | Vector { _reserved: 0 }, | ||
| 332 | Vector { _handler: RNG }, | ||
| 333 | Vector { _handler: FPU }, | ||
| 334 | Vector { _handler: CRS }, | ||
| 335 | ]; | ||
| 336 | } | ||
| 14 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 337 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 15 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 338 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 16 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 339 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l412r8.rs b/embassy-stm32/src/chip/stm32l412r8.rs index c20a8a60a..e319e06a7 100644 --- a/embassy-stm32/src/chip/stm32l412r8.rs +++ b/embassy-stm32/src/chip/stm32l412r8.rs | |||
| @@ -1,16 +1,340 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, |
| 5 | PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, | 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, |
| 6 | PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, | 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, |
| 7 | PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, | 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, |
| 8 | PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 8 | PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 9 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, | 9 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, |
| 10 | SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, WWDG | 10 | RTC, SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, |
| 11 | WWDG | ||
| 11 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 14 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 12 | pub const GPIO_BASE: usize = 0x48000000; | 15 | pub const GPIO_BASE: usize = 0x48000000; |
| 13 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 17 | |||
| 18 | pub mod interrupt { | ||
| 19 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 20 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 21 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 22 | |||
| 23 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 24 | #[allow(non_camel_case_types)] | ||
| 25 | enum InterruptEnum { | ||
| 26 | ADC1_2 = 18, | ||
| 27 | COMP = 64, | ||
| 28 | CRS = 82, | ||
| 29 | DMA1_Channel1 = 11, | ||
| 30 | DMA1_Channel2 = 12, | ||
| 31 | DMA1_Channel3 = 13, | ||
| 32 | DMA1_Channel4 = 14, | ||
| 33 | DMA1_Channel5 = 15, | ||
| 34 | DMA1_Channel6 = 16, | ||
| 35 | DMA1_Channel7 = 17, | ||
| 36 | DMA2_Channel1 = 56, | ||
| 37 | DMA2_Channel2 = 57, | ||
| 38 | DMA2_Channel3 = 58, | ||
| 39 | DMA2_Channel4 = 59, | ||
| 40 | DMA2_Channel5 = 60, | ||
| 41 | DMA2_Channel6 = 68, | ||
| 42 | DMA2_Channel7 = 69, | ||
| 43 | EXTI0 = 6, | ||
| 44 | EXTI1 = 7, | ||
| 45 | EXTI15_10 = 40, | ||
| 46 | EXTI2 = 8, | ||
| 47 | EXTI3 = 9, | ||
| 48 | EXTI4 = 10, | ||
| 49 | EXTI9_5 = 23, | ||
| 50 | FLASH = 4, | ||
| 51 | FPU = 81, | ||
| 52 | I2C1_ER = 32, | ||
| 53 | I2C1_EV = 31, | ||
| 54 | I2C2_ER = 34, | ||
| 55 | I2C2_EV = 33, | ||
| 56 | I2C3_ER = 73, | ||
| 57 | I2C3_EV = 72, | ||
| 58 | LPTIM1 = 65, | ||
| 59 | LPTIM2 = 66, | ||
| 60 | LPUART1 = 70, | ||
| 61 | PVD_PVM = 1, | ||
| 62 | QUADSPI = 71, | ||
| 63 | RCC = 5, | ||
| 64 | RNG = 80, | ||
| 65 | RTC_Alarm = 41, | ||
| 66 | RTC_WKUP = 3, | ||
| 67 | SPI1 = 35, | ||
| 68 | SPI2 = 36, | ||
| 69 | TAMP_STAMP = 2, | ||
| 70 | TIM1_BRK_TIM15 = 24, | ||
| 71 | TIM1_CC = 27, | ||
| 72 | TIM1_TRG_COM = 26, | ||
| 73 | TIM1_UP_TIM16 = 25, | ||
| 74 | TIM2 = 28, | ||
| 75 | TIM6 = 54, | ||
| 76 | TSC = 77, | ||
| 77 | USART1 = 37, | ||
| 78 | USART2 = 38, | ||
| 79 | USART3 = 39, | ||
| 80 | USB = 67, | ||
| 81 | WWDG = 0, | ||
| 82 | } | ||
| 83 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 84 | #[inline(always)] | ||
| 85 | fn number(self) -> u16 { | ||
| 86 | self as u16 | ||
| 87 | } | ||
| 88 | } | ||
| 89 | |||
| 90 | declare!(ADC1_2); | ||
| 91 | declare!(COMP); | ||
| 92 | declare!(CRS); | ||
| 93 | declare!(DMA1_Channel1); | ||
| 94 | declare!(DMA1_Channel2); | ||
| 95 | declare!(DMA1_Channel3); | ||
| 96 | declare!(DMA1_Channel4); | ||
| 97 | declare!(DMA1_Channel5); | ||
| 98 | declare!(DMA1_Channel6); | ||
| 99 | declare!(DMA1_Channel7); | ||
| 100 | declare!(DMA2_Channel1); | ||
| 101 | declare!(DMA2_Channel2); | ||
| 102 | declare!(DMA2_Channel3); | ||
| 103 | declare!(DMA2_Channel4); | ||
| 104 | declare!(DMA2_Channel5); | ||
| 105 | declare!(DMA2_Channel6); | ||
| 106 | declare!(DMA2_Channel7); | ||
| 107 | declare!(EXTI0); | ||
| 108 | declare!(EXTI1); | ||
| 109 | declare!(EXTI15_10); | ||
| 110 | declare!(EXTI2); | ||
| 111 | declare!(EXTI3); | ||
| 112 | declare!(EXTI4); | ||
| 113 | declare!(EXTI9_5); | ||
| 114 | declare!(FLASH); | ||
| 115 | declare!(FPU); | ||
| 116 | declare!(I2C1_ER); | ||
| 117 | declare!(I2C1_EV); | ||
| 118 | declare!(I2C2_ER); | ||
| 119 | declare!(I2C2_EV); | ||
| 120 | declare!(I2C3_ER); | ||
| 121 | declare!(I2C3_EV); | ||
| 122 | declare!(LPTIM1); | ||
| 123 | declare!(LPTIM2); | ||
| 124 | declare!(LPUART1); | ||
| 125 | declare!(PVD_PVM); | ||
| 126 | declare!(QUADSPI); | ||
| 127 | declare!(RCC); | ||
| 128 | declare!(RNG); | ||
| 129 | declare!(RTC_Alarm); | ||
| 130 | declare!(RTC_WKUP); | ||
| 131 | declare!(SPI1); | ||
| 132 | declare!(SPI2); | ||
| 133 | declare!(TAMP_STAMP); | ||
| 134 | declare!(TIM1_BRK_TIM15); | ||
| 135 | declare!(TIM1_CC); | ||
| 136 | declare!(TIM1_TRG_COM); | ||
| 137 | declare!(TIM1_UP_TIM16); | ||
| 138 | declare!(TIM2); | ||
| 139 | declare!(TIM6); | ||
| 140 | declare!(TSC); | ||
| 141 | declare!(USART1); | ||
| 142 | declare!(USART2); | ||
| 143 | declare!(USART3); | ||
| 144 | declare!(USB); | ||
| 145 | declare!(WWDG); | ||
| 146 | } | ||
| 147 | mod interrupt_vector { | ||
| 148 | extern "C" { | ||
| 149 | fn ADC1_2(); | ||
| 150 | fn COMP(); | ||
| 151 | fn CRS(); | ||
| 152 | fn DMA1_Channel1(); | ||
| 153 | fn DMA1_Channel2(); | ||
| 154 | fn DMA1_Channel3(); | ||
| 155 | fn DMA1_Channel4(); | ||
| 156 | fn DMA1_Channel5(); | ||
| 157 | fn DMA1_Channel6(); | ||
| 158 | fn DMA1_Channel7(); | ||
| 159 | fn DMA2_Channel1(); | ||
| 160 | fn DMA2_Channel2(); | ||
| 161 | fn DMA2_Channel3(); | ||
| 162 | fn DMA2_Channel4(); | ||
| 163 | fn DMA2_Channel5(); | ||
| 164 | fn DMA2_Channel6(); | ||
| 165 | fn DMA2_Channel7(); | ||
| 166 | fn EXTI0(); | ||
| 167 | fn EXTI1(); | ||
| 168 | fn EXTI15_10(); | ||
| 169 | fn EXTI2(); | ||
| 170 | fn EXTI3(); | ||
| 171 | fn EXTI4(); | ||
| 172 | fn EXTI9_5(); | ||
| 173 | fn FLASH(); | ||
| 174 | fn FPU(); | ||
| 175 | fn I2C1_ER(); | ||
| 176 | fn I2C1_EV(); | ||
| 177 | fn I2C2_ER(); | ||
| 178 | fn I2C2_EV(); | ||
| 179 | fn I2C3_ER(); | ||
| 180 | fn I2C3_EV(); | ||
| 181 | fn LPTIM1(); | ||
| 182 | fn LPTIM2(); | ||
| 183 | fn LPUART1(); | ||
| 184 | fn PVD_PVM(); | ||
| 185 | fn QUADSPI(); | ||
| 186 | fn RCC(); | ||
| 187 | fn RNG(); | ||
| 188 | fn RTC_Alarm(); | ||
| 189 | fn RTC_WKUP(); | ||
| 190 | fn SPI1(); | ||
| 191 | fn SPI2(); | ||
| 192 | fn TAMP_STAMP(); | ||
| 193 | fn TIM1_BRK_TIM15(); | ||
| 194 | fn TIM1_CC(); | ||
| 195 | fn TIM1_TRG_COM(); | ||
| 196 | fn TIM1_UP_TIM16(); | ||
| 197 | fn TIM2(); | ||
| 198 | fn TIM6(); | ||
| 199 | fn TSC(); | ||
| 200 | fn USART1(); | ||
| 201 | fn USART2(); | ||
| 202 | fn USART3(); | ||
| 203 | fn USB(); | ||
| 204 | fn WWDG(); | ||
| 205 | } | ||
| 206 | pub union Vector { | ||
| 207 | _handler: unsafe extern "C" fn(), | ||
| 208 | _reserved: u32, | ||
| 209 | } | ||
| 210 | #[link_section = ".vector_table.interrupts"] | ||
| 211 | #[no_mangle] | ||
| 212 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 213 | Vector { _handler: WWDG }, | ||
| 214 | Vector { _handler: PVD_PVM }, | ||
| 215 | Vector { | ||
| 216 | _handler: TAMP_STAMP, | ||
| 217 | }, | ||
| 218 | Vector { _handler: RTC_WKUP }, | ||
| 219 | Vector { _handler: FLASH }, | ||
| 220 | Vector { _handler: RCC }, | ||
| 221 | Vector { _handler: EXTI0 }, | ||
| 222 | Vector { _handler: EXTI1 }, | ||
| 223 | Vector { _handler: EXTI2 }, | ||
| 224 | Vector { _handler: EXTI3 }, | ||
| 225 | Vector { _handler: EXTI4 }, | ||
| 226 | Vector { | ||
| 227 | _handler: DMA1_Channel1, | ||
| 228 | }, | ||
| 229 | Vector { | ||
| 230 | _handler: DMA1_Channel2, | ||
| 231 | }, | ||
| 232 | Vector { | ||
| 233 | _handler: DMA1_Channel3, | ||
| 234 | }, | ||
| 235 | Vector { | ||
| 236 | _handler: DMA1_Channel4, | ||
| 237 | }, | ||
| 238 | Vector { | ||
| 239 | _handler: DMA1_Channel5, | ||
| 240 | }, | ||
| 241 | Vector { | ||
| 242 | _handler: DMA1_Channel6, | ||
| 243 | }, | ||
| 244 | Vector { | ||
| 245 | _handler: DMA1_Channel7, | ||
| 246 | }, | ||
| 247 | Vector { _handler: ADC1_2 }, | ||
| 248 | Vector { _reserved: 0 }, | ||
| 249 | Vector { _reserved: 0 }, | ||
| 250 | Vector { _reserved: 0 }, | ||
| 251 | Vector { _reserved: 0 }, | ||
| 252 | Vector { _handler: EXTI9_5 }, | ||
| 253 | Vector { | ||
| 254 | _handler: TIM1_BRK_TIM15, | ||
| 255 | }, | ||
| 256 | Vector { | ||
| 257 | _handler: TIM1_UP_TIM16, | ||
| 258 | }, | ||
| 259 | Vector { | ||
| 260 | _handler: TIM1_TRG_COM, | ||
| 261 | }, | ||
| 262 | Vector { _handler: TIM1_CC }, | ||
| 263 | Vector { _handler: TIM2 }, | ||
| 264 | Vector { _reserved: 0 }, | ||
| 265 | Vector { _reserved: 0 }, | ||
| 266 | Vector { _handler: I2C1_EV }, | ||
| 267 | Vector { _handler: I2C1_ER }, | ||
| 268 | Vector { _handler: I2C2_EV }, | ||
| 269 | Vector { _handler: I2C2_ER }, | ||
| 270 | Vector { _handler: SPI1 }, | ||
| 271 | Vector { _handler: SPI2 }, | ||
| 272 | Vector { _handler: USART1 }, | ||
| 273 | Vector { _handler: USART2 }, | ||
| 274 | Vector { _handler: USART3 }, | ||
| 275 | Vector { | ||
| 276 | _handler: EXTI15_10, | ||
| 277 | }, | ||
| 278 | Vector { | ||
| 279 | _handler: RTC_Alarm, | ||
| 280 | }, | ||
| 281 | Vector { _reserved: 0 }, | ||
| 282 | Vector { _reserved: 0 }, | ||
| 283 | Vector { _reserved: 0 }, | ||
| 284 | Vector { _reserved: 0 }, | ||
| 285 | Vector { _reserved: 0 }, | ||
| 286 | Vector { _reserved: 0 }, | ||
| 287 | Vector { _reserved: 0 }, | ||
| 288 | Vector { _reserved: 0 }, | ||
| 289 | Vector { _reserved: 0 }, | ||
| 290 | Vector { _reserved: 0 }, | ||
| 291 | Vector { _reserved: 0 }, | ||
| 292 | Vector { _reserved: 0 }, | ||
| 293 | Vector { _handler: TIM6 }, | ||
| 294 | Vector { _reserved: 0 }, | ||
| 295 | Vector { | ||
| 296 | _handler: DMA2_Channel1, | ||
| 297 | }, | ||
| 298 | Vector { | ||
| 299 | _handler: DMA2_Channel2, | ||
| 300 | }, | ||
| 301 | Vector { | ||
| 302 | _handler: DMA2_Channel3, | ||
| 303 | }, | ||
| 304 | Vector { | ||
| 305 | _handler: DMA2_Channel4, | ||
| 306 | }, | ||
| 307 | Vector { | ||
| 308 | _handler: DMA2_Channel5, | ||
| 309 | }, | ||
| 310 | Vector { _reserved: 0 }, | ||
| 311 | Vector { _reserved: 0 }, | ||
| 312 | Vector { _reserved: 0 }, | ||
| 313 | Vector { _handler: COMP }, | ||
| 314 | Vector { _handler: LPTIM1 }, | ||
| 315 | Vector { _handler: LPTIM2 }, | ||
| 316 | Vector { _handler: USB }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA2_Channel6, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA2_Channel7, | ||
| 322 | }, | ||
| 323 | Vector { _handler: LPUART1 }, | ||
| 324 | Vector { _handler: QUADSPI }, | ||
| 325 | Vector { _handler: I2C3_EV }, | ||
| 326 | Vector { _handler: I2C3_ER }, | ||
| 327 | Vector { _reserved: 0 }, | ||
| 328 | Vector { _reserved: 0 }, | ||
| 329 | Vector { _reserved: 0 }, | ||
| 330 | Vector { _handler: TSC }, | ||
| 331 | Vector { _reserved: 0 }, | ||
| 332 | Vector { _reserved: 0 }, | ||
| 333 | Vector { _handler: RNG }, | ||
| 334 | Vector { _handler: FPU }, | ||
| 335 | Vector { _handler: CRS }, | ||
| 336 | ]; | ||
| 337 | } | ||
| 14 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 338 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 15 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 339 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 16 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 340 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l412rb.rs b/embassy-stm32/src/chip/stm32l412rb.rs index c20a8a60a..e319e06a7 100644 --- a/embassy-stm32/src/chip/stm32l412rb.rs +++ b/embassy-stm32/src/chip/stm32l412rb.rs | |||
| @@ -1,16 +1,340 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, |
| 5 | PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, | 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, |
| 6 | PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, | 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, |
| 7 | PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, | 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, |
| 8 | PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 8 | PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 9 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, | 9 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, |
| 10 | SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, WWDG | 10 | RTC, SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, |
| 11 | WWDG | ||
| 11 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 14 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 12 | pub const GPIO_BASE: usize = 0x48000000; | 15 | pub const GPIO_BASE: usize = 0x48000000; |
| 13 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 17 | |||
| 18 | pub mod interrupt { | ||
| 19 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 20 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 21 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 22 | |||
| 23 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 24 | #[allow(non_camel_case_types)] | ||
| 25 | enum InterruptEnum { | ||
| 26 | ADC1_2 = 18, | ||
| 27 | COMP = 64, | ||
| 28 | CRS = 82, | ||
| 29 | DMA1_Channel1 = 11, | ||
| 30 | DMA1_Channel2 = 12, | ||
| 31 | DMA1_Channel3 = 13, | ||
| 32 | DMA1_Channel4 = 14, | ||
| 33 | DMA1_Channel5 = 15, | ||
| 34 | DMA1_Channel6 = 16, | ||
| 35 | DMA1_Channel7 = 17, | ||
| 36 | DMA2_Channel1 = 56, | ||
| 37 | DMA2_Channel2 = 57, | ||
| 38 | DMA2_Channel3 = 58, | ||
| 39 | DMA2_Channel4 = 59, | ||
| 40 | DMA2_Channel5 = 60, | ||
| 41 | DMA2_Channel6 = 68, | ||
| 42 | DMA2_Channel7 = 69, | ||
| 43 | EXTI0 = 6, | ||
| 44 | EXTI1 = 7, | ||
| 45 | EXTI15_10 = 40, | ||
| 46 | EXTI2 = 8, | ||
| 47 | EXTI3 = 9, | ||
| 48 | EXTI4 = 10, | ||
| 49 | EXTI9_5 = 23, | ||
| 50 | FLASH = 4, | ||
| 51 | FPU = 81, | ||
| 52 | I2C1_ER = 32, | ||
| 53 | I2C1_EV = 31, | ||
| 54 | I2C2_ER = 34, | ||
| 55 | I2C2_EV = 33, | ||
| 56 | I2C3_ER = 73, | ||
| 57 | I2C3_EV = 72, | ||
| 58 | LPTIM1 = 65, | ||
| 59 | LPTIM2 = 66, | ||
| 60 | LPUART1 = 70, | ||
| 61 | PVD_PVM = 1, | ||
| 62 | QUADSPI = 71, | ||
| 63 | RCC = 5, | ||
| 64 | RNG = 80, | ||
| 65 | RTC_Alarm = 41, | ||
| 66 | RTC_WKUP = 3, | ||
| 67 | SPI1 = 35, | ||
| 68 | SPI2 = 36, | ||
| 69 | TAMP_STAMP = 2, | ||
| 70 | TIM1_BRK_TIM15 = 24, | ||
| 71 | TIM1_CC = 27, | ||
| 72 | TIM1_TRG_COM = 26, | ||
| 73 | TIM1_UP_TIM16 = 25, | ||
| 74 | TIM2 = 28, | ||
| 75 | TIM6 = 54, | ||
| 76 | TSC = 77, | ||
| 77 | USART1 = 37, | ||
| 78 | USART2 = 38, | ||
| 79 | USART3 = 39, | ||
| 80 | USB = 67, | ||
| 81 | WWDG = 0, | ||
| 82 | } | ||
| 83 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 84 | #[inline(always)] | ||
| 85 | fn number(self) -> u16 { | ||
| 86 | self as u16 | ||
| 87 | } | ||
| 88 | } | ||
| 89 | |||
| 90 | declare!(ADC1_2); | ||
| 91 | declare!(COMP); | ||
| 92 | declare!(CRS); | ||
| 93 | declare!(DMA1_Channel1); | ||
| 94 | declare!(DMA1_Channel2); | ||
| 95 | declare!(DMA1_Channel3); | ||
| 96 | declare!(DMA1_Channel4); | ||
| 97 | declare!(DMA1_Channel5); | ||
| 98 | declare!(DMA1_Channel6); | ||
| 99 | declare!(DMA1_Channel7); | ||
| 100 | declare!(DMA2_Channel1); | ||
| 101 | declare!(DMA2_Channel2); | ||
| 102 | declare!(DMA2_Channel3); | ||
| 103 | declare!(DMA2_Channel4); | ||
| 104 | declare!(DMA2_Channel5); | ||
| 105 | declare!(DMA2_Channel6); | ||
| 106 | declare!(DMA2_Channel7); | ||
| 107 | declare!(EXTI0); | ||
| 108 | declare!(EXTI1); | ||
| 109 | declare!(EXTI15_10); | ||
| 110 | declare!(EXTI2); | ||
| 111 | declare!(EXTI3); | ||
| 112 | declare!(EXTI4); | ||
| 113 | declare!(EXTI9_5); | ||
| 114 | declare!(FLASH); | ||
| 115 | declare!(FPU); | ||
| 116 | declare!(I2C1_ER); | ||
| 117 | declare!(I2C1_EV); | ||
| 118 | declare!(I2C2_ER); | ||
| 119 | declare!(I2C2_EV); | ||
| 120 | declare!(I2C3_ER); | ||
| 121 | declare!(I2C3_EV); | ||
| 122 | declare!(LPTIM1); | ||
| 123 | declare!(LPTIM2); | ||
| 124 | declare!(LPUART1); | ||
| 125 | declare!(PVD_PVM); | ||
| 126 | declare!(QUADSPI); | ||
| 127 | declare!(RCC); | ||
| 128 | declare!(RNG); | ||
| 129 | declare!(RTC_Alarm); | ||
| 130 | declare!(RTC_WKUP); | ||
| 131 | declare!(SPI1); | ||
| 132 | declare!(SPI2); | ||
| 133 | declare!(TAMP_STAMP); | ||
| 134 | declare!(TIM1_BRK_TIM15); | ||
| 135 | declare!(TIM1_CC); | ||
| 136 | declare!(TIM1_TRG_COM); | ||
| 137 | declare!(TIM1_UP_TIM16); | ||
| 138 | declare!(TIM2); | ||
| 139 | declare!(TIM6); | ||
| 140 | declare!(TSC); | ||
| 141 | declare!(USART1); | ||
| 142 | declare!(USART2); | ||
| 143 | declare!(USART3); | ||
| 144 | declare!(USB); | ||
| 145 | declare!(WWDG); | ||
| 146 | } | ||
| 147 | mod interrupt_vector { | ||
| 148 | extern "C" { | ||
| 149 | fn ADC1_2(); | ||
| 150 | fn COMP(); | ||
| 151 | fn CRS(); | ||
| 152 | fn DMA1_Channel1(); | ||
| 153 | fn DMA1_Channel2(); | ||
| 154 | fn DMA1_Channel3(); | ||
| 155 | fn DMA1_Channel4(); | ||
| 156 | fn DMA1_Channel5(); | ||
| 157 | fn DMA1_Channel6(); | ||
| 158 | fn DMA1_Channel7(); | ||
| 159 | fn DMA2_Channel1(); | ||
| 160 | fn DMA2_Channel2(); | ||
| 161 | fn DMA2_Channel3(); | ||
| 162 | fn DMA2_Channel4(); | ||
| 163 | fn DMA2_Channel5(); | ||
| 164 | fn DMA2_Channel6(); | ||
| 165 | fn DMA2_Channel7(); | ||
| 166 | fn EXTI0(); | ||
| 167 | fn EXTI1(); | ||
| 168 | fn EXTI15_10(); | ||
| 169 | fn EXTI2(); | ||
| 170 | fn EXTI3(); | ||
| 171 | fn EXTI4(); | ||
| 172 | fn EXTI9_5(); | ||
| 173 | fn FLASH(); | ||
| 174 | fn FPU(); | ||
| 175 | fn I2C1_ER(); | ||
| 176 | fn I2C1_EV(); | ||
| 177 | fn I2C2_ER(); | ||
| 178 | fn I2C2_EV(); | ||
| 179 | fn I2C3_ER(); | ||
| 180 | fn I2C3_EV(); | ||
| 181 | fn LPTIM1(); | ||
| 182 | fn LPTIM2(); | ||
| 183 | fn LPUART1(); | ||
| 184 | fn PVD_PVM(); | ||
| 185 | fn QUADSPI(); | ||
| 186 | fn RCC(); | ||
| 187 | fn RNG(); | ||
| 188 | fn RTC_Alarm(); | ||
| 189 | fn RTC_WKUP(); | ||
| 190 | fn SPI1(); | ||
| 191 | fn SPI2(); | ||
| 192 | fn TAMP_STAMP(); | ||
| 193 | fn TIM1_BRK_TIM15(); | ||
| 194 | fn TIM1_CC(); | ||
| 195 | fn TIM1_TRG_COM(); | ||
| 196 | fn TIM1_UP_TIM16(); | ||
| 197 | fn TIM2(); | ||
| 198 | fn TIM6(); | ||
| 199 | fn TSC(); | ||
| 200 | fn USART1(); | ||
| 201 | fn USART2(); | ||
| 202 | fn USART3(); | ||
| 203 | fn USB(); | ||
| 204 | fn WWDG(); | ||
| 205 | } | ||
| 206 | pub union Vector { | ||
| 207 | _handler: unsafe extern "C" fn(), | ||
| 208 | _reserved: u32, | ||
| 209 | } | ||
| 210 | #[link_section = ".vector_table.interrupts"] | ||
| 211 | #[no_mangle] | ||
| 212 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 213 | Vector { _handler: WWDG }, | ||
| 214 | Vector { _handler: PVD_PVM }, | ||
| 215 | Vector { | ||
| 216 | _handler: TAMP_STAMP, | ||
| 217 | }, | ||
| 218 | Vector { _handler: RTC_WKUP }, | ||
| 219 | Vector { _handler: FLASH }, | ||
| 220 | Vector { _handler: RCC }, | ||
| 221 | Vector { _handler: EXTI0 }, | ||
| 222 | Vector { _handler: EXTI1 }, | ||
| 223 | Vector { _handler: EXTI2 }, | ||
| 224 | Vector { _handler: EXTI3 }, | ||
| 225 | Vector { _handler: EXTI4 }, | ||
| 226 | Vector { | ||
| 227 | _handler: DMA1_Channel1, | ||
| 228 | }, | ||
| 229 | Vector { | ||
| 230 | _handler: DMA1_Channel2, | ||
| 231 | }, | ||
| 232 | Vector { | ||
| 233 | _handler: DMA1_Channel3, | ||
| 234 | }, | ||
| 235 | Vector { | ||
| 236 | _handler: DMA1_Channel4, | ||
| 237 | }, | ||
| 238 | Vector { | ||
| 239 | _handler: DMA1_Channel5, | ||
| 240 | }, | ||
| 241 | Vector { | ||
| 242 | _handler: DMA1_Channel6, | ||
| 243 | }, | ||
| 244 | Vector { | ||
| 245 | _handler: DMA1_Channel7, | ||
| 246 | }, | ||
| 247 | Vector { _handler: ADC1_2 }, | ||
| 248 | Vector { _reserved: 0 }, | ||
| 249 | Vector { _reserved: 0 }, | ||
| 250 | Vector { _reserved: 0 }, | ||
| 251 | Vector { _reserved: 0 }, | ||
| 252 | Vector { _handler: EXTI9_5 }, | ||
| 253 | Vector { | ||
| 254 | _handler: TIM1_BRK_TIM15, | ||
| 255 | }, | ||
| 256 | Vector { | ||
| 257 | _handler: TIM1_UP_TIM16, | ||
| 258 | }, | ||
| 259 | Vector { | ||
| 260 | _handler: TIM1_TRG_COM, | ||
| 261 | }, | ||
| 262 | Vector { _handler: TIM1_CC }, | ||
| 263 | Vector { _handler: TIM2 }, | ||
| 264 | Vector { _reserved: 0 }, | ||
| 265 | Vector { _reserved: 0 }, | ||
| 266 | Vector { _handler: I2C1_EV }, | ||
| 267 | Vector { _handler: I2C1_ER }, | ||
| 268 | Vector { _handler: I2C2_EV }, | ||
| 269 | Vector { _handler: I2C2_ER }, | ||
| 270 | Vector { _handler: SPI1 }, | ||
| 271 | Vector { _handler: SPI2 }, | ||
| 272 | Vector { _handler: USART1 }, | ||
| 273 | Vector { _handler: USART2 }, | ||
| 274 | Vector { _handler: USART3 }, | ||
| 275 | Vector { | ||
| 276 | _handler: EXTI15_10, | ||
| 277 | }, | ||
| 278 | Vector { | ||
| 279 | _handler: RTC_Alarm, | ||
| 280 | }, | ||
| 281 | Vector { _reserved: 0 }, | ||
| 282 | Vector { _reserved: 0 }, | ||
| 283 | Vector { _reserved: 0 }, | ||
| 284 | Vector { _reserved: 0 }, | ||
| 285 | Vector { _reserved: 0 }, | ||
| 286 | Vector { _reserved: 0 }, | ||
| 287 | Vector { _reserved: 0 }, | ||
| 288 | Vector { _reserved: 0 }, | ||
| 289 | Vector { _reserved: 0 }, | ||
| 290 | Vector { _reserved: 0 }, | ||
| 291 | Vector { _reserved: 0 }, | ||
| 292 | Vector { _reserved: 0 }, | ||
| 293 | Vector { _handler: TIM6 }, | ||
| 294 | Vector { _reserved: 0 }, | ||
| 295 | Vector { | ||
| 296 | _handler: DMA2_Channel1, | ||
| 297 | }, | ||
| 298 | Vector { | ||
| 299 | _handler: DMA2_Channel2, | ||
| 300 | }, | ||
| 301 | Vector { | ||
| 302 | _handler: DMA2_Channel3, | ||
| 303 | }, | ||
| 304 | Vector { | ||
| 305 | _handler: DMA2_Channel4, | ||
| 306 | }, | ||
| 307 | Vector { | ||
| 308 | _handler: DMA2_Channel5, | ||
| 309 | }, | ||
| 310 | Vector { _reserved: 0 }, | ||
| 311 | Vector { _reserved: 0 }, | ||
| 312 | Vector { _reserved: 0 }, | ||
| 313 | Vector { _handler: COMP }, | ||
| 314 | Vector { _handler: LPTIM1 }, | ||
| 315 | Vector { _handler: LPTIM2 }, | ||
| 316 | Vector { _handler: USB }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA2_Channel6, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA2_Channel7, | ||
| 322 | }, | ||
| 323 | Vector { _handler: LPUART1 }, | ||
| 324 | Vector { _handler: QUADSPI }, | ||
| 325 | Vector { _handler: I2C3_EV }, | ||
| 326 | Vector { _handler: I2C3_ER }, | ||
| 327 | Vector { _reserved: 0 }, | ||
| 328 | Vector { _reserved: 0 }, | ||
| 329 | Vector { _reserved: 0 }, | ||
| 330 | Vector { _handler: TSC }, | ||
| 331 | Vector { _reserved: 0 }, | ||
| 332 | Vector { _reserved: 0 }, | ||
| 333 | Vector { _handler: RNG }, | ||
| 334 | Vector { _handler: FPU }, | ||
| 335 | Vector { _handler: CRS }, | ||
| 336 | ]; | ||
| 337 | } | ||
| 14 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 338 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 15 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 339 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 16 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 340 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l412t8.rs b/embassy-stm32/src/chip/stm32l412t8.rs index c12d91a6a..88cc20b04 100644 --- a/embassy-stm32/src/chip/stm32l412t8.rs +++ b/embassy-stm32/src/chip/stm32l412t8.rs | |||
| @@ -1,16 +1,339 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, |
| 5 | PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, | 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, |
| 6 | PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, | 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, |
| 7 | PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, | 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, |
| 8 | PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 8 | PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 9 | PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, SPI1, | 9 | PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, |
| 10 | SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG | 10 | SPI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG |
| 11 | ); | 11 | ); |
| 12 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 13 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 12 | pub const GPIO_BASE: usize = 0x48000000; | 14 | pub const GPIO_BASE: usize = 0x48000000; |
| 13 | pub const GPIO_STRIDE: usize = 0x400; | 15 | pub const GPIO_STRIDE: usize = 0x400; |
| 16 | |||
| 17 | pub mod interrupt { | ||
| 18 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 19 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 20 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 21 | |||
| 22 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 23 | #[allow(non_camel_case_types)] | ||
| 24 | enum InterruptEnum { | ||
| 25 | ADC1_2 = 18, | ||
| 26 | COMP = 64, | ||
| 27 | CRS = 82, | ||
| 28 | DMA1_Channel1 = 11, | ||
| 29 | DMA1_Channel2 = 12, | ||
| 30 | DMA1_Channel3 = 13, | ||
| 31 | DMA1_Channel4 = 14, | ||
| 32 | DMA1_Channel5 = 15, | ||
| 33 | DMA1_Channel6 = 16, | ||
| 34 | DMA1_Channel7 = 17, | ||
| 35 | DMA2_Channel1 = 56, | ||
| 36 | DMA2_Channel2 = 57, | ||
| 37 | DMA2_Channel3 = 58, | ||
| 38 | DMA2_Channel4 = 59, | ||
| 39 | DMA2_Channel5 = 60, | ||
| 40 | DMA2_Channel6 = 68, | ||
| 41 | DMA2_Channel7 = 69, | ||
| 42 | EXTI0 = 6, | ||
| 43 | EXTI1 = 7, | ||
| 44 | EXTI15_10 = 40, | ||
| 45 | EXTI2 = 8, | ||
| 46 | EXTI3 = 9, | ||
| 47 | EXTI4 = 10, | ||
| 48 | EXTI9_5 = 23, | ||
| 49 | FLASH = 4, | ||
| 50 | FPU = 81, | ||
| 51 | I2C1_ER = 32, | ||
| 52 | I2C1_EV = 31, | ||
| 53 | I2C2_ER = 34, | ||
| 54 | I2C2_EV = 33, | ||
| 55 | I2C3_ER = 73, | ||
| 56 | I2C3_EV = 72, | ||
| 57 | LPTIM1 = 65, | ||
| 58 | LPTIM2 = 66, | ||
| 59 | LPUART1 = 70, | ||
| 60 | PVD_PVM = 1, | ||
| 61 | QUADSPI = 71, | ||
| 62 | RCC = 5, | ||
| 63 | RNG = 80, | ||
| 64 | RTC_Alarm = 41, | ||
| 65 | RTC_WKUP = 3, | ||
| 66 | SPI1 = 35, | ||
| 67 | SPI2 = 36, | ||
| 68 | TAMP_STAMP = 2, | ||
| 69 | TIM1_BRK_TIM15 = 24, | ||
| 70 | TIM1_CC = 27, | ||
| 71 | TIM1_TRG_COM = 26, | ||
| 72 | TIM1_UP_TIM16 = 25, | ||
| 73 | TIM2 = 28, | ||
| 74 | TIM6 = 54, | ||
| 75 | TSC = 77, | ||
| 76 | USART1 = 37, | ||
| 77 | USART2 = 38, | ||
| 78 | USART3 = 39, | ||
| 79 | USB = 67, | ||
| 80 | WWDG = 0, | ||
| 81 | } | ||
| 82 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 83 | #[inline(always)] | ||
| 84 | fn number(self) -> u16 { | ||
| 85 | self as u16 | ||
| 86 | } | ||
| 87 | } | ||
| 88 | |||
| 89 | declare!(ADC1_2); | ||
| 90 | declare!(COMP); | ||
| 91 | declare!(CRS); | ||
| 92 | declare!(DMA1_Channel1); | ||
| 93 | declare!(DMA1_Channel2); | ||
| 94 | declare!(DMA1_Channel3); | ||
| 95 | declare!(DMA1_Channel4); | ||
| 96 | declare!(DMA1_Channel5); | ||
| 97 | declare!(DMA1_Channel6); | ||
| 98 | declare!(DMA1_Channel7); | ||
| 99 | declare!(DMA2_Channel1); | ||
| 100 | declare!(DMA2_Channel2); | ||
| 101 | declare!(DMA2_Channel3); | ||
| 102 | declare!(DMA2_Channel4); | ||
| 103 | declare!(DMA2_Channel5); | ||
| 104 | declare!(DMA2_Channel6); | ||
| 105 | declare!(DMA2_Channel7); | ||
| 106 | declare!(EXTI0); | ||
| 107 | declare!(EXTI1); | ||
| 108 | declare!(EXTI15_10); | ||
| 109 | declare!(EXTI2); | ||
| 110 | declare!(EXTI3); | ||
| 111 | declare!(EXTI4); | ||
| 112 | declare!(EXTI9_5); | ||
| 113 | declare!(FLASH); | ||
| 114 | declare!(FPU); | ||
| 115 | declare!(I2C1_ER); | ||
| 116 | declare!(I2C1_EV); | ||
| 117 | declare!(I2C2_ER); | ||
| 118 | declare!(I2C2_EV); | ||
| 119 | declare!(I2C3_ER); | ||
| 120 | declare!(I2C3_EV); | ||
| 121 | declare!(LPTIM1); | ||
| 122 | declare!(LPTIM2); | ||
| 123 | declare!(LPUART1); | ||
| 124 | declare!(PVD_PVM); | ||
| 125 | declare!(QUADSPI); | ||
| 126 | declare!(RCC); | ||
| 127 | declare!(RNG); | ||
| 128 | declare!(RTC_Alarm); | ||
| 129 | declare!(RTC_WKUP); | ||
| 130 | declare!(SPI1); | ||
| 131 | declare!(SPI2); | ||
| 132 | declare!(TAMP_STAMP); | ||
| 133 | declare!(TIM1_BRK_TIM15); | ||
| 134 | declare!(TIM1_CC); | ||
| 135 | declare!(TIM1_TRG_COM); | ||
| 136 | declare!(TIM1_UP_TIM16); | ||
| 137 | declare!(TIM2); | ||
| 138 | declare!(TIM6); | ||
| 139 | declare!(TSC); | ||
| 140 | declare!(USART1); | ||
| 141 | declare!(USART2); | ||
| 142 | declare!(USART3); | ||
| 143 | declare!(USB); | ||
| 144 | declare!(WWDG); | ||
| 145 | } | ||
| 146 | mod interrupt_vector { | ||
| 147 | extern "C" { | ||
| 148 | fn ADC1_2(); | ||
| 149 | fn COMP(); | ||
| 150 | fn CRS(); | ||
| 151 | fn DMA1_Channel1(); | ||
| 152 | fn DMA1_Channel2(); | ||
| 153 | fn DMA1_Channel3(); | ||
| 154 | fn DMA1_Channel4(); | ||
| 155 | fn DMA1_Channel5(); | ||
| 156 | fn DMA1_Channel6(); | ||
| 157 | fn DMA1_Channel7(); | ||
| 158 | fn DMA2_Channel1(); | ||
| 159 | fn DMA2_Channel2(); | ||
| 160 | fn DMA2_Channel3(); | ||
| 161 | fn DMA2_Channel4(); | ||
| 162 | fn DMA2_Channel5(); | ||
| 163 | fn DMA2_Channel6(); | ||
| 164 | fn DMA2_Channel7(); | ||
| 165 | fn EXTI0(); | ||
| 166 | fn EXTI1(); | ||
| 167 | fn EXTI15_10(); | ||
| 168 | fn EXTI2(); | ||
| 169 | fn EXTI3(); | ||
| 170 | fn EXTI4(); | ||
| 171 | fn EXTI9_5(); | ||
| 172 | fn FLASH(); | ||
| 173 | fn FPU(); | ||
| 174 | fn I2C1_ER(); | ||
| 175 | fn I2C1_EV(); | ||
| 176 | fn I2C2_ER(); | ||
| 177 | fn I2C2_EV(); | ||
| 178 | fn I2C3_ER(); | ||
| 179 | fn I2C3_EV(); | ||
| 180 | fn LPTIM1(); | ||
| 181 | fn LPTIM2(); | ||
| 182 | fn LPUART1(); | ||
| 183 | fn PVD_PVM(); | ||
| 184 | fn QUADSPI(); | ||
| 185 | fn RCC(); | ||
| 186 | fn RNG(); | ||
| 187 | fn RTC_Alarm(); | ||
| 188 | fn RTC_WKUP(); | ||
| 189 | fn SPI1(); | ||
| 190 | fn SPI2(); | ||
| 191 | fn TAMP_STAMP(); | ||
| 192 | fn TIM1_BRK_TIM15(); | ||
| 193 | fn TIM1_CC(); | ||
| 194 | fn TIM1_TRG_COM(); | ||
| 195 | fn TIM1_UP_TIM16(); | ||
| 196 | fn TIM2(); | ||
| 197 | fn TIM6(); | ||
| 198 | fn TSC(); | ||
| 199 | fn USART1(); | ||
| 200 | fn USART2(); | ||
| 201 | fn USART3(); | ||
| 202 | fn USB(); | ||
| 203 | fn WWDG(); | ||
| 204 | } | ||
| 205 | pub union Vector { | ||
| 206 | _handler: unsafe extern "C" fn(), | ||
| 207 | _reserved: u32, | ||
| 208 | } | ||
| 209 | #[link_section = ".vector_table.interrupts"] | ||
| 210 | #[no_mangle] | ||
| 211 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 212 | Vector { _handler: WWDG }, | ||
| 213 | Vector { _handler: PVD_PVM }, | ||
| 214 | Vector { | ||
| 215 | _handler: TAMP_STAMP, | ||
| 216 | }, | ||
| 217 | Vector { _handler: RTC_WKUP }, | ||
| 218 | Vector { _handler: FLASH }, | ||
| 219 | Vector { _handler: RCC }, | ||
| 220 | Vector { _handler: EXTI0 }, | ||
| 221 | Vector { _handler: EXTI1 }, | ||
| 222 | Vector { _handler: EXTI2 }, | ||
| 223 | Vector { _handler: EXTI3 }, | ||
| 224 | Vector { _handler: EXTI4 }, | ||
| 225 | Vector { | ||
| 226 | _handler: DMA1_Channel1, | ||
| 227 | }, | ||
| 228 | Vector { | ||
| 229 | _handler: DMA1_Channel2, | ||
| 230 | }, | ||
| 231 | Vector { | ||
| 232 | _handler: DMA1_Channel3, | ||
| 233 | }, | ||
| 234 | Vector { | ||
| 235 | _handler: DMA1_Channel4, | ||
| 236 | }, | ||
| 237 | Vector { | ||
| 238 | _handler: DMA1_Channel5, | ||
| 239 | }, | ||
| 240 | Vector { | ||
| 241 | _handler: DMA1_Channel6, | ||
| 242 | }, | ||
| 243 | Vector { | ||
| 244 | _handler: DMA1_Channel7, | ||
| 245 | }, | ||
| 246 | Vector { _handler: ADC1_2 }, | ||
| 247 | Vector { _reserved: 0 }, | ||
| 248 | Vector { _reserved: 0 }, | ||
| 249 | Vector { _reserved: 0 }, | ||
| 250 | Vector { _reserved: 0 }, | ||
| 251 | Vector { _handler: EXTI9_5 }, | ||
| 252 | Vector { | ||
| 253 | _handler: TIM1_BRK_TIM15, | ||
| 254 | }, | ||
| 255 | Vector { | ||
| 256 | _handler: TIM1_UP_TIM16, | ||
| 257 | }, | ||
| 258 | Vector { | ||
| 259 | _handler: TIM1_TRG_COM, | ||
| 260 | }, | ||
| 261 | Vector { _handler: TIM1_CC }, | ||
| 262 | Vector { _handler: TIM2 }, | ||
| 263 | Vector { _reserved: 0 }, | ||
| 264 | Vector { _reserved: 0 }, | ||
| 265 | Vector { _handler: I2C1_EV }, | ||
| 266 | Vector { _handler: I2C1_ER }, | ||
| 267 | Vector { _handler: I2C2_EV }, | ||
| 268 | Vector { _handler: I2C2_ER }, | ||
| 269 | Vector { _handler: SPI1 }, | ||
| 270 | Vector { _handler: SPI2 }, | ||
| 271 | Vector { _handler: USART1 }, | ||
| 272 | Vector { _handler: USART2 }, | ||
| 273 | Vector { _handler: USART3 }, | ||
| 274 | Vector { | ||
| 275 | _handler: EXTI15_10, | ||
| 276 | }, | ||
| 277 | Vector { | ||
| 278 | _handler: RTC_Alarm, | ||
| 279 | }, | ||
| 280 | Vector { _reserved: 0 }, | ||
| 281 | Vector { _reserved: 0 }, | ||
| 282 | Vector { _reserved: 0 }, | ||
| 283 | Vector { _reserved: 0 }, | ||
| 284 | Vector { _reserved: 0 }, | ||
| 285 | Vector { _reserved: 0 }, | ||
| 286 | Vector { _reserved: 0 }, | ||
| 287 | Vector { _reserved: 0 }, | ||
| 288 | Vector { _reserved: 0 }, | ||
| 289 | Vector { _reserved: 0 }, | ||
| 290 | Vector { _reserved: 0 }, | ||
| 291 | Vector { _reserved: 0 }, | ||
| 292 | Vector { _handler: TIM6 }, | ||
| 293 | Vector { _reserved: 0 }, | ||
| 294 | Vector { | ||
| 295 | _handler: DMA2_Channel1, | ||
| 296 | }, | ||
| 297 | Vector { | ||
| 298 | _handler: DMA2_Channel2, | ||
| 299 | }, | ||
| 300 | Vector { | ||
| 301 | _handler: DMA2_Channel3, | ||
| 302 | }, | ||
| 303 | Vector { | ||
| 304 | _handler: DMA2_Channel4, | ||
| 305 | }, | ||
| 306 | Vector { | ||
| 307 | _handler: DMA2_Channel5, | ||
| 308 | }, | ||
| 309 | Vector { _reserved: 0 }, | ||
| 310 | Vector { _reserved: 0 }, | ||
| 311 | Vector { _reserved: 0 }, | ||
| 312 | Vector { _handler: COMP }, | ||
| 313 | Vector { _handler: LPTIM1 }, | ||
| 314 | Vector { _handler: LPTIM2 }, | ||
| 315 | Vector { _handler: USB }, | ||
| 316 | Vector { | ||
| 317 | _handler: DMA2_Channel6, | ||
| 318 | }, | ||
| 319 | Vector { | ||
| 320 | _handler: DMA2_Channel7, | ||
| 321 | }, | ||
| 322 | Vector { _handler: LPUART1 }, | ||
| 323 | Vector { _handler: QUADSPI }, | ||
| 324 | Vector { _handler: I2C3_EV }, | ||
| 325 | Vector { _handler: I2C3_ER }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _reserved: 0 }, | ||
| 328 | Vector { _reserved: 0 }, | ||
| 329 | Vector { _handler: TSC }, | ||
| 330 | Vector { _reserved: 0 }, | ||
| 331 | Vector { _reserved: 0 }, | ||
| 332 | Vector { _handler: RNG }, | ||
| 333 | Vector { _handler: FPU }, | ||
| 334 | Vector { _handler: CRS }, | ||
| 335 | ]; | ||
| 336 | } | ||
| 14 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 337 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 15 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 338 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 16 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 339 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l412tb.rs b/embassy-stm32/src/chip/stm32l412tb.rs index c12d91a6a..88cc20b04 100644 --- a/embassy-stm32/src/chip/stm32l412tb.rs +++ b/embassy-stm32/src/chip/stm32l412tb.rs | |||
| @@ -1,16 +1,339 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, |
| 5 | PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, | 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, |
| 6 | PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, | 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, |
| 7 | PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, | 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, |
| 8 | PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 8 | PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 9 | PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, SPI1, | 9 | PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, |
| 10 | SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG | 10 | SPI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG |
| 11 | ); | 11 | ); |
| 12 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 13 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 12 | pub const GPIO_BASE: usize = 0x48000000; | 14 | pub const GPIO_BASE: usize = 0x48000000; |
| 13 | pub const GPIO_STRIDE: usize = 0x400; | 15 | pub const GPIO_STRIDE: usize = 0x400; |
| 16 | |||
| 17 | pub mod interrupt { | ||
| 18 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 19 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 20 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 21 | |||
| 22 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 23 | #[allow(non_camel_case_types)] | ||
| 24 | enum InterruptEnum { | ||
| 25 | ADC1_2 = 18, | ||
| 26 | COMP = 64, | ||
| 27 | CRS = 82, | ||
| 28 | DMA1_Channel1 = 11, | ||
| 29 | DMA1_Channel2 = 12, | ||
| 30 | DMA1_Channel3 = 13, | ||
| 31 | DMA1_Channel4 = 14, | ||
| 32 | DMA1_Channel5 = 15, | ||
| 33 | DMA1_Channel6 = 16, | ||
| 34 | DMA1_Channel7 = 17, | ||
| 35 | DMA2_Channel1 = 56, | ||
| 36 | DMA2_Channel2 = 57, | ||
| 37 | DMA2_Channel3 = 58, | ||
| 38 | DMA2_Channel4 = 59, | ||
| 39 | DMA2_Channel5 = 60, | ||
| 40 | DMA2_Channel6 = 68, | ||
| 41 | DMA2_Channel7 = 69, | ||
| 42 | EXTI0 = 6, | ||
| 43 | EXTI1 = 7, | ||
| 44 | EXTI15_10 = 40, | ||
| 45 | EXTI2 = 8, | ||
| 46 | EXTI3 = 9, | ||
| 47 | EXTI4 = 10, | ||
| 48 | EXTI9_5 = 23, | ||
| 49 | FLASH = 4, | ||
| 50 | FPU = 81, | ||
| 51 | I2C1_ER = 32, | ||
| 52 | I2C1_EV = 31, | ||
| 53 | I2C2_ER = 34, | ||
| 54 | I2C2_EV = 33, | ||
| 55 | I2C3_ER = 73, | ||
| 56 | I2C3_EV = 72, | ||
| 57 | LPTIM1 = 65, | ||
| 58 | LPTIM2 = 66, | ||
| 59 | LPUART1 = 70, | ||
| 60 | PVD_PVM = 1, | ||
| 61 | QUADSPI = 71, | ||
| 62 | RCC = 5, | ||
| 63 | RNG = 80, | ||
| 64 | RTC_Alarm = 41, | ||
| 65 | RTC_WKUP = 3, | ||
| 66 | SPI1 = 35, | ||
| 67 | SPI2 = 36, | ||
| 68 | TAMP_STAMP = 2, | ||
| 69 | TIM1_BRK_TIM15 = 24, | ||
| 70 | TIM1_CC = 27, | ||
| 71 | TIM1_TRG_COM = 26, | ||
| 72 | TIM1_UP_TIM16 = 25, | ||
| 73 | TIM2 = 28, | ||
| 74 | TIM6 = 54, | ||
| 75 | TSC = 77, | ||
| 76 | USART1 = 37, | ||
| 77 | USART2 = 38, | ||
| 78 | USART3 = 39, | ||
| 79 | USB = 67, | ||
| 80 | WWDG = 0, | ||
| 81 | } | ||
| 82 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 83 | #[inline(always)] | ||
| 84 | fn number(self) -> u16 { | ||
| 85 | self as u16 | ||
| 86 | } | ||
| 87 | } | ||
| 88 | |||
| 89 | declare!(ADC1_2); | ||
| 90 | declare!(COMP); | ||
| 91 | declare!(CRS); | ||
| 92 | declare!(DMA1_Channel1); | ||
| 93 | declare!(DMA1_Channel2); | ||
| 94 | declare!(DMA1_Channel3); | ||
| 95 | declare!(DMA1_Channel4); | ||
| 96 | declare!(DMA1_Channel5); | ||
| 97 | declare!(DMA1_Channel6); | ||
| 98 | declare!(DMA1_Channel7); | ||
| 99 | declare!(DMA2_Channel1); | ||
| 100 | declare!(DMA2_Channel2); | ||
| 101 | declare!(DMA2_Channel3); | ||
| 102 | declare!(DMA2_Channel4); | ||
| 103 | declare!(DMA2_Channel5); | ||
| 104 | declare!(DMA2_Channel6); | ||
| 105 | declare!(DMA2_Channel7); | ||
| 106 | declare!(EXTI0); | ||
| 107 | declare!(EXTI1); | ||
| 108 | declare!(EXTI15_10); | ||
| 109 | declare!(EXTI2); | ||
| 110 | declare!(EXTI3); | ||
| 111 | declare!(EXTI4); | ||
| 112 | declare!(EXTI9_5); | ||
| 113 | declare!(FLASH); | ||
| 114 | declare!(FPU); | ||
| 115 | declare!(I2C1_ER); | ||
| 116 | declare!(I2C1_EV); | ||
| 117 | declare!(I2C2_ER); | ||
| 118 | declare!(I2C2_EV); | ||
| 119 | declare!(I2C3_ER); | ||
| 120 | declare!(I2C3_EV); | ||
| 121 | declare!(LPTIM1); | ||
| 122 | declare!(LPTIM2); | ||
| 123 | declare!(LPUART1); | ||
| 124 | declare!(PVD_PVM); | ||
| 125 | declare!(QUADSPI); | ||
| 126 | declare!(RCC); | ||
| 127 | declare!(RNG); | ||
| 128 | declare!(RTC_Alarm); | ||
| 129 | declare!(RTC_WKUP); | ||
| 130 | declare!(SPI1); | ||
| 131 | declare!(SPI2); | ||
| 132 | declare!(TAMP_STAMP); | ||
| 133 | declare!(TIM1_BRK_TIM15); | ||
| 134 | declare!(TIM1_CC); | ||
| 135 | declare!(TIM1_TRG_COM); | ||
| 136 | declare!(TIM1_UP_TIM16); | ||
| 137 | declare!(TIM2); | ||
| 138 | declare!(TIM6); | ||
| 139 | declare!(TSC); | ||
| 140 | declare!(USART1); | ||
| 141 | declare!(USART2); | ||
| 142 | declare!(USART3); | ||
| 143 | declare!(USB); | ||
| 144 | declare!(WWDG); | ||
| 145 | } | ||
| 146 | mod interrupt_vector { | ||
| 147 | extern "C" { | ||
| 148 | fn ADC1_2(); | ||
| 149 | fn COMP(); | ||
| 150 | fn CRS(); | ||
| 151 | fn DMA1_Channel1(); | ||
| 152 | fn DMA1_Channel2(); | ||
| 153 | fn DMA1_Channel3(); | ||
| 154 | fn DMA1_Channel4(); | ||
| 155 | fn DMA1_Channel5(); | ||
| 156 | fn DMA1_Channel6(); | ||
| 157 | fn DMA1_Channel7(); | ||
| 158 | fn DMA2_Channel1(); | ||
| 159 | fn DMA2_Channel2(); | ||
| 160 | fn DMA2_Channel3(); | ||
| 161 | fn DMA2_Channel4(); | ||
| 162 | fn DMA2_Channel5(); | ||
| 163 | fn DMA2_Channel6(); | ||
| 164 | fn DMA2_Channel7(); | ||
| 165 | fn EXTI0(); | ||
| 166 | fn EXTI1(); | ||
| 167 | fn EXTI15_10(); | ||
| 168 | fn EXTI2(); | ||
| 169 | fn EXTI3(); | ||
| 170 | fn EXTI4(); | ||
| 171 | fn EXTI9_5(); | ||
| 172 | fn FLASH(); | ||
| 173 | fn FPU(); | ||
| 174 | fn I2C1_ER(); | ||
| 175 | fn I2C1_EV(); | ||
| 176 | fn I2C2_ER(); | ||
| 177 | fn I2C2_EV(); | ||
| 178 | fn I2C3_ER(); | ||
| 179 | fn I2C3_EV(); | ||
| 180 | fn LPTIM1(); | ||
| 181 | fn LPTIM2(); | ||
| 182 | fn LPUART1(); | ||
| 183 | fn PVD_PVM(); | ||
| 184 | fn QUADSPI(); | ||
| 185 | fn RCC(); | ||
| 186 | fn RNG(); | ||
| 187 | fn RTC_Alarm(); | ||
| 188 | fn RTC_WKUP(); | ||
| 189 | fn SPI1(); | ||
| 190 | fn SPI2(); | ||
| 191 | fn TAMP_STAMP(); | ||
| 192 | fn TIM1_BRK_TIM15(); | ||
| 193 | fn TIM1_CC(); | ||
| 194 | fn TIM1_TRG_COM(); | ||
| 195 | fn TIM1_UP_TIM16(); | ||
| 196 | fn TIM2(); | ||
| 197 | fn TIM6(); | ||
| 198 | fn TSC(); | ||
| 199 | fn USART1(); | ||
| 200 | fn USART2(); | ||
| 201 | fn USART3(); | ||
| 202 | fn USB(); | ||
| 203 | fn WWDG(); | ||
| 204 | } | ||
| 205 | pub union Vector { | ||
| 206 | _handler: unsafe extern "C" fn(), | ||
| 207 | _reserved: u32, | ||
| 208 | } | ||
| 209 | #[link_section = ".vector_table.interrupts"] | ||
| 210 | #[no_mangle] | ||
| 211 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 212 | Vector { _handler: WWDG }, | ||
| 213 | Vector { _handler: PVD_PVM }, | ||
| 214 | Vector { | ||
| 215 | _handler: TAMP_STAMP, | ||
| 216 | }, | ||
| 217 | Vector { _handler: RTC_WKUP }, | ||
| 218 | Vector { _handler: FLASH }, | ||
| 219 | Vector { _handler: RCC }, | ||
| 220 | Vector { _handler: EXTI0 }, | ||
| 221 | Vector { _handler: EXTI1 }, | ||
| 222 | Vector { _handler: EXTI2 }, | ||
| 223 | Vector { _handler: EXTI3 }, | ||
| 224 | Vector { _handler: EXTI4 }, | ||
| 225 | Vector { | ||
| 226 | _handler: DMA1_Channel1, | ||
| 227 | }, | ||
| 228 | Vector { | ||
| 229 | _handler: DMA1_Channel2, | ||
| 230 | }, | ||
| 231 | Vector { | ||
| 232 | _handler: DMA1_Channel3, | ||
| 233 | }, | ||
| 234 | Vector { | ||
| 235 | _handler: DMA1_Channel4, | ||
| 236 | }, | ||
| 237 | Vector { | ||
| 238 | _handler: DMA1_Channel5, | ||
| 239 | }, | ||
| 240 | Vector { | ||
| 241 | _handler: DMA1_Channel6, | ||
| 242 | }, | ||
| 243 | Vector { | ||
| 244 | _handler: DMA1_Channel7, | ||
| 245 | }, | ||
| 246 | Vector { _handler: ADC1_2 }, | ||
| 247 | Vector { _reserved: 0 }, | ||
| 248 | Vector { _reserved: 0 }, | ||
| 249 | Vector { _reserved: 0 }, | ||
| 250 | Vector { _reserved: 0 }, | ||
| 251 | Vector { _handler: EXTI9_5 }, | ||
| 252 | Vector { | ||
| 253 | _handler: TIM1_BRK_TIM15, | ||
| 254 | }, | ||
| 255 | Vector { | ||
| 256 | _handler: TIM1_UP_TIM16, | ||
| 257 | }, | ||
| 258 | Vector { | ||
| 259 | _handler: TIM1_TRG_COM, | ||
| 260 | }, | ||
| 261 | Vector { _handler: TIM1_CC }, | ||
| 262 | Vector { _handler: TIM2 }, | ||
| 263 | Vector { _reserved: 0 }, | ||
| 264 | Vector { _reserved: 0 }, | ||
| 265 | Vector { _handler: I2C1_EV }, | ||
| 266 | Vector { _handler: I2C1_ER }, | ||
| 267 | Vector { _handler: I2C2_EV }, | ||
| 268 | Vector { _handler: I2C2_ER }, | ||
| 269 | Vector { _handler: SPI1 }, | ||
| 270 | Vector { _handler: SPI2 }, | ||
| 271 | Vector { _handler: USART1 }, | ||
| 272 | Vector { _handler: USART2 }, | ||
| 273 | Vector { _handler: USART3 }, | ||
| 274 | Vector { | ||
| 275 | _handler: EXTI15_10, | ||
| 276 | }, | ||
| 277 | Vector { | ||
| 278 | _handler: RTC_Alarm, | ||
| 279 | }, | ||
| 280 | Vector { _reserved: 0 }, | ||
| 281 | Vector { _reserved: 0 }, | ||
| 282 | Vector { _reserved: 0 }, | ||
| 283 | Vector { _reserved: 0 }, | ||
| 284 | Vector { _reserved: 0 }, | ||
| 285 | Vector { _reserved: 0 }, | ||
| 286 | Vector { _reserved: 0 }, | ||
| 287 | Vector { _reserved: 0 }, | ||
| 288 | Vector { _reserved: 0 }, | ||
| 289 | Vector { _reserved: 0 }, | ||
| 290 | Vector { _reserved: 0 }, | ||
| 291 | Vector { _reserved: 0 }, | ||
| 292 | Vector { _handler: TIM6 }, | ||
| 293 | Vector { _reserved: 0 }, | ||
| 294 | Vector { | ||
| 295 | _handler: DMA2_Channel1, | ||
| 296 | }, | ||
| 297 | Vector { | ||
| 298 | _handler: DMA2_Channel2, | ||
| 299 | }, | ||
| 300 | Vector { | ||
| 301 | _handler: DMA2_Channel3, | ||
| 302 | }, | ||
| 303 | Vector { | ||
| 304 | _handler: DMA2_Channel4, | ||
| 305 | }, | ||
| 306 | Vector { | ||
| 307 | _handler: DMA2_Channel5, | ||
| 308 | }, | ||
| 309 | Vector { _reserved: 0 }, | ||
| 310 | Vector { _reserved: 0 }, | ||
| 311 | Vector { _reserved: 0 }, | ||
| 312 | Vector { _handler: COMP }, | ||
| 313 | Vector { _handler: LPTIM1 }, | ||
| 314 | Vector { _handler: LPTIM2 }, | ||
| 315 | Vector { _handler: USB }, | ||
| 316 | Vector { | ||
| 317 | _handler: DMA2_Channel6, | ||
| 318 | }, | ||
| 319 | Vector { | ||
| 320 | _handler: DMA2_Channel7, | ||
| 321 | }, | ||
| 322 | Vector { _handler: LPUART1 }, | ||
| 323 | Vector { _handler: QUADSPI }, | ||
| 324 | Vector { _handler: I2C3_EV }, | ||
| 325 | Vector { _handler: I2C3_ER }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _reserved: 0 }, | ||
| 328 | Vector { _reserved: 0 }, | ||
| 329 | Vector { _handler: TSC }, | ||
| 330 | Vector { _reserved: 0 }, | ||
| 331 | Vector { _reserved: 0 }, | ||
| 332 | Vector { _handler: RNG }, | ||
| 333 | Vector { _handler: FPU }, | ||
| 334 | Vector { _handler: CRS }, | ||
| 335 | ]; | ||
| 336 | } | ||
| 14 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 337 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 15 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 338 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 16 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 339 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l422cb.rs b/embassy-stm32/src/chip/stm32l422cb.rs index f3734f940..015b11be3 100644 --- a/embassy-stm32/src/chip/stm32l422cb.rs +++ b/embassy-stm32/src/chip/stm32l422cb.rs | |||
| @@ -1,8 +1,8 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, |
| 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, |
| 8 | PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 8 | PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -10,8 +10,334 @@ peripherals!( | |||
| 10 | RTC, SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, | 10 | RTC, SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, |
| 11 | WWDG | 11 | WWDG |
| 12 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 14 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 13 | pub const GPIO_BASE: usize = 0x48000000; | 15 | pub const GPIO_BASE: usize = 0x48000000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 17 | |||
| 18 | pub mod interrupt { | ||
| 19 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 20 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 21 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 22 | |||
| 23 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 24 | #[allow(non_camel_case_types)] | ||
| 25 | enum InterruptEnum { | ||
| 26 | ADC1_2 = 18, | ||
| 27 | AES = 79, | ||
| 28 | COMP = 64, | ||
| 29 | CRS = 82, | ||
| 30 | DMA1_Channel1 = 11, | ||
| 31 | DMA1_Channel2 = 12, | ||
| 32 | DMA1_Channel3 = 13, | ||
| 33 | DMA1_Channel4 = 14, | ||
| 34 | DMA1_Channel5 = 15, | ||
| 35 | DMA1_Channel6 = 16, | ||
| 36 | DMA1_Channel7 = 17, | ||
| 37 | DMA2_Channel1 = 56, | ||
| 38 | DMA2_Channel2 = 57, | ||
| 39 | DMA2_Channel3 = 58, | ||
| 40 | DMA2_Channel4 = 59, | ||
| 41 | DMA2_Channel5 = 60, | ||
| 42 | DMA2_Channel6 = 68, | ||
| 43 | DMA2_Channel7 = 69, | ||
| 44 | EXTI0 = 6, | ||
| 45 | EXTI1 = 7, | ||
| 46 | EXTI15_10 = 40, | ||
| 47 | EXTI2 = 8, | ||
| 48 | EXTI3 = 9, | ||
| 49 | EXTI4 = 10, | ||
| 50 | EXTI9_5 = 23, | ||
| 51 | FLASH = 4, | ||
| 52 | FPU = 81, | ||
| 53 | I2C1_ER = 32, | ||
| 54 | I2C1_EV = 31, | ||
| 55 | I2C2_ER = 34, | ||
| 56 | I2C2_EV = 33, | ||
| 57 | I2C3_ER = 73, | ||
| 58 | I2C3_EV = 72, | ||
| 59 | LPTIM1 = 65, | ||
| 60 | LPTIM2 = 66, | ||
| 61 | LPUART1 = 70, | ||
| 62 | PVD_PVM = 1, | ||
| 63 | QUADSPI = 71, | ||
| 64 | RCC = 5, | ||
| 65 | RNG = 80, | ||
| 66 | RTC_Alarm = 41, | ||
| 67 | RTC_WKUP = 3, | ||
| 68 | SPI1 = 35, | ||
| 69 | SPI2 = 36, | ||
| 70 | TAMP_STAMP = 2, | ||
| 71 | TIM1_BRK_TIM15 = 24, | ||
| 72 | TIM1_CC = 27, | ||
| 73 | TIM1_TRG_COM = 26, | ||
| 74 | TIM1_UP_TIM16 = 25, | ||
| 75 | TIM2 = 28, | ||
| 76 | TIM6 = 54, | ||
| 77 | TSC = 77, | ||
| 78 | USART1 = 37, | ||
| 79 | USART2 = 38, | ||
| 80 | USART3 = 39, | ||
| 81 | USB = 67, | ||
| 82 | WWDG = 0, | ||
| 83 | } | ||
| 84 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 85 | #[inline(always)] | ||
| 86 | fn number(self) -> u16 { | ||
| 87 | self as u16 | ||
| 88 | } | ||
| 89 | } | ||
| 90 | |||
| 91 | declare!(ADC1_2); | ||
| 92 | declare!(AES); | ||
| 93 | declare!(COMP); | ||
| 94 | declare!(CRS); | ||
| 95 | declare!(DMA1_Channel1); | ||
| 96 | declare!(DMA1_Channel2); | ||
| 97 | declare!(DMA1_Channel3); | ||
| 98 | declare!(DMA1_Channel4); | ||
| 99 | declare!(DMA1_Channel5); | ||
| 100 | declare!(DMA1_Channel6); | ||
| 101 | declare!(DMA1_Channel7); | ||
| 102 | declare!(DMA2_Channel1); | ||
| 103 | declare!(DMA2_Channel2); | ||
| 104 | declare!(DMA2_Channel3); | ||
| 105 | declare!(DMA2_Channel4); | ||
| 106 | declare!(DMA2_Channel5); | ||
| 107 | declare!(DMA2_Channel6); | ||
| 108 | declare!(DMA2_Channel7); | ||
| 109 | declare!(EXTI0); | ||
| 110 | declare!(EXTI1); | ||
| 111 | declare!(EXTI15_10); | ||
| 112 | declare!(EXTI2); | ||
| 113 | declare!(EXTI3); | ||
| 114 | declare!(EXTI4); | ||
| 115 | declare!(EXTI9_5); | ||
| 116 | declare!(FLASH); | ||
| 117 | declare!(FPU); | ||
| 118 | declare!(I2C1_ER); | ||
| 119 | declare!(I2C1_EV); | ||
| 120 | declare!(I2C2_ER); | ||
| 121 | declare!(I2C2_EV); | ||
| 122 | declare!(I2C3_ER); | ||
| 123 | declare!(I2C3_EV); | ||
| 124 | declare!(LPTIM1); | ||
| 125 | declare!(LPTIM2); | ||
| 126 | declare!(LPUART1); | ||
| 127 | declare!(PVD_PVM); | ||
| 128 | declare!(QUADSPI); | ||
| 129 | declare!(RCC); | ||
| 130 | declare!(RNG); | ||
| 131 | declare!(RTC_Alarm); | ||
| 132 | declare!(RTC_WKUP); | ||
| 133 | declare!(SPI1); | ||
| 134 | declare!(SPI2); | ||
| 135 | declare!(TAMP_STAMP); | ||
| 136 | declare!(TIM1_BRK_TIM15); | ||
| 137 | declare!(TIM1_CC); | ||
| 138 | declare!(TIM1_TRG_COM); | ||
| 139 | declare!(TIM1_UP_TIM16); | ||
| 140 | declare!(TIM2); | ||
| 141 | declare!(TIM6); | ||
| 142 | declare!(TSC); | ||
| 143 | declare!(USART1); | ||
| 144 | declare!(USART2); | ||
| 145 | declare!(USART3); | ||
| 146 | declare!(USB); | ||
| 147 | declare!(WWDG); | ||
| 148 | } | ||
| 149 | mod interrupt_vector { | ||
| 150 | extern "C" { | ||
| 151 | fn ADC1_2(); | ||
| 152 | fn AES(); | ||
| 153 | fn COMP(); | ||
| 154 | fn CRS(); | ||
| 155 | fn DMA1_Channel1(); | ||
| 156 | fn DMA1_Channel2(); | ||
| 157 | fn DMA1_Channel3(); | ||
| 158 | fn DMA1_Channel4(); | ||
| 159 | fn DMA1_Channel5(); | ||
| 160 | fn DMA1_Channel6(); | ||
| 161 | fn DMA1_Channel7(); | ||
| 162 | fn DMA2_Channel1(); | ||
| 163 | fn DMA2_Channel2(); | ||
| 164 | fn DMA2_Channel3(); | ||
| 165 | fn DMA2_Channel4(); | ||
| 166 | fn DMA2_Channel5(); | ||
| 167 | fn DMA2_Channel6(); | ||
| 168 | fn DMA2_Channel7(); | ||
| 169 | fn EXTI0(); | ||
| 170 | fn EXTI1(); | ||
| 171 | fn EXTI15_10(); | ||
| 172 | fn EXTI2(); | ||
| 173 | fn EXTI3(); | ||
| 174 | fn EXTI4(); | ||
| 175 | fn EXTI9_5(); | ||
| 176 | fn FLASH(); | ||
| 177 | fn FPU(); | ||
| 178 | fn I2C1_ER(); | ||
| 179 | fn I2C1_EV(); | ||
| 180 | fn I2C2_ER(); | ||
| 181 | fn I2C2_EV(); | ||
| 182 | fn I2C3_ER(); | ||
| 183 | fn I2C3_EV(); | ||
| 184 | fn LPTIM1(); | ||
| 185 | fn LPTIM2(); | ||
| 186 | fn LPUART1(); | ||
| 187 | fn PVD_PVM(); | ||
| 188 | fn QUADSPI(); | ||
| 189 | fn RCC(); | ||
| 190 | fn RNG(); | ||
| 191 | fn RTC_Alarm(); | ||
| 192 | fn RTC_WKUP(); | ||
| 193 | fn SPI1(); | ||
| 194 | fn SPI2(); | ||
| 195 | fn TAMP_STAMP(); | ||
| 196 | fn TIM1_BRK_TIM15(); | ||
| 197 | fn TIM1_CC(); | ||
| 198 | fn TIM1_TRG_COM(); | ||
| 199 | fn TIM1_UP_TIM16(); | ||
| 200 | fn TIM2(); | ||
| 201 | fn TIM6(); | ||
| 202 | fn TSC(); | ||
| 203 | fn USART1(); | ||
| 204 | fn USART2(); | ||
| 205 | fn USART3(); | ||
| 206 | fn USB(); | ||
| 207 | fn WWDG(); | ||
| 208 | } | ||
| 209 | pub union Vector { | ||
| 210 | _handler: unsafe extern "C" fn(), | ||
| 211 | _reserved: u32, | ||
| 212 | } | ||
| 213 | #[link_section = ".vector_table.interrupts"] | ||
| 214 | #[no_mangle] | ||
| 215 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 216 | Vector { _handler: WWDG }, | ||
| 217 | Vector { _handler: PVD_PVM }, | ||
| 218 | Vector { | ||
| 219 | _handler: TAMP_STAMP, | ||
| 220 | }, | ||
| 221 | Vector { _handler: RTC_WKUP }, | ||
| 222 | Vector { _handler: FLASH }, | ||
| 223 | Vector { _handler: RCC }, | ||
| 224 | Vector { _handler: EXTI0 }, | ||
| 225 | Vector { _handler: EXTI1 }, | ||
| 226 | Vector { _handler: EXTI2 }, | ||
| 227 | Vector { _handler: EXTI3 }, | ||
| 228 | Vector { _handler: EXTI4 }, | ||
| 229 | Vector { | ||
| 230 | _handler: DMA1_Channel1, | ||
| 231 | }, | ||
| 232 | Vector { | ||
| 233 | _handler: DMA1_Channel2, | ||
| 234 | }, | ||
| 235 | Vector { | ||
| 236 | _handler: DMA1_Channel3, | ||
| 237 | }, | ||
| 238 | Vector { | ||
| 239 | _handler: DMA1_Channel4, | ||
| 240 | }, | ||
| 241 | Vector { | ||
| 242 | _handler: DMA1_Channel5, | ||
| 243 | }, | ||
| 244 | Vector { | ||
| 245 | _handler: DMA1_Channel6, | ||
| 246 | }, | ||
| 247 | Vector { | ||
| 248 | _handler: DMA1_Channel7, | ||
| 249 | }, | ||
| 250 | Vector { _handler: ADC1_2 }, | ||
| 251 | Vector { _reserved: 0 }, | ||
| 252 | Vector { _reserved: 0 }, | ||
| 253 | Vector { _reserved: 0 }, | ||
| 254 | Vector { _reserved: 0 }, | ||
| 255 | Vector { _handler: EXTI9_5 }, | ||
| 256 | Vector { | ||
| 257 | _handler: TIM1_BRK_TIM15, | ||
| 258 | }, | ||
| 259 | Vector { | ||
| 260 | _handler: TIM1_UP_TIM16, | ||
| 261 | }, | ||
| 262 | Vector { | ||
| 263 | _handler: TIM1_TRG_COM, | ||
| 264 | }, | ||
| 265 | Vector { _handler: TIM1_CC }, | ||
| 266 | Vector { _handler: TIM2 }, | ||
| 267 | Vector { _reserved: 0 }, | ||
| 268 | Vector { _reserved: 0 }, | ||
| 269 | Vector { _handler: I2C1_EV }, | ||
| 270 | Vector { _handler: I2C1_ER }, | ||
| 271 | Vector { _handler: I2C2_EV }, | ||
| 272 | Vector { _handler: I2C2_ER }, | ||
| 273 | Vector { _handler: SPI1 }, | ||
| 274 | Vector { _handler: SPI2 }, | ||
| 275 | Vector { _handler: USART1 }, | ||
| 276 | Vector { _handler: USART2 }, | ||
| 277 | Vector { _handler: USART3 }, | ||
| 278 | Vector { | ||
| 279 | _handler: EXTI15_10, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: RTC_Alarm, | ||
| 283 | }, | ||
| 284 | Vector { _reserved: 0 }, | ||
| 285 | Vector { _reserved: 0 }, | ||
| 286 | Vector { _reserved: 0 }, | ||
| 287 | Vector { _reserved: 0 }, | ||
| 288 | Vector { _reserved: 0 }, | ||
| 289 | Vector { _reserved: 0 }, | ||
| 290 | Vector { _reserved: 0 }, | ||
| 291 | Vector { _reserved: 0 }, | ||
| 292 | Vector { _reserved: 0 }, | ||
| 293 | Vector { _reserved: 0 }, | ||
| 294 | Vector { _reserved: 0 }, | ||
| 295 | Vector { _reserved: 0 }, | ||
| 296 | Vector { _handler: TIM6 }, | ||
| 297 | Vector { _reserved: 0 }, | ||
| 298 | Vector { | ||
| 299 | _handler: DMA2_Channel1, | ||
| 300 | }, | ||
| 301 | Vector { | ||
| 302 | _handler: DMA2_Channel2, | ||
| 303 | }, | ||
| 304 | Vector { | ||
| 305 | _handler: DMA2_Channel3, | ||
| 306 | }, | ||
| 307 | Vector { | ||
| 308 | _handler: DMA2_Channel4, | ||
| 309 | }, | ||
| 310 | Vector { | ||
| 311 | _handler: DMA2_Channel5, | ||
| 312 | }, | ||
| 313 | Vector { _reserved: 0 }, | ||
| 314 | Vector { _reserved: 0 }, | ||
| 315 | Vector { _reserved: 0 }, | ||
| 316 | Vector { _handler: COMP }, | ||
| 317 | Vector { _handler: LPTIM1 }, | ||
| 318 | Vector { _handler: LPTIM2 }, | ||
| 319 | Vector { _handler: USB }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA2_Channel6, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA2_Channel7, | ||
| 325 | }, | ||
| 326 | Vector { _handler: LPUART1 }, | ||
| 327 | Vector { _handler: QUADSPI }, | ||
| 328 | Vector { _handler: I2C3_EV }, | ||
| 329 | Vector { _handler: I2C3_ER }, | ||
| 330 | Vector { _reserved: 0 }, | ||
| 331 | Vector { _reserved: 0 }, | ||
| 332 | Vector { _reserved: 0 }, | ||
| 333 | Vector { _handler: TSC }, | ||
| 334 | Vector { _reserved: 0 }, | ||
| 335 | Vector { _handler: AES }, | ||
| 336 | Vector { _handler: RNG }, | ||
| 337 | Vector { _handler: FPU }, | ||
| 338 | Vector { _handler: CRS }, | ||
| 339 | ]; | ||
| 340 | } | ||
| 15 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 341 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 16 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 342 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 17 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 343 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l422kb.rs b/embassy-stm32/src/chip/stm32l422kb.rs index 634db7aaf..26decd09b 100644 --- a/embassy-stm32/src/chip/stm32l422kb.rs +++ b/embassy-stm32/src/chip/stm32l422kb.rs | |||
| @@ -1,16 +1,342 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, |
| 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, |
| 8 | PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 8 | PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 9 | PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, | 9 | PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, |
| 10 | SPI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG | 10 | SPI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG |
| 11 | ); | 11 | ); |
| 12 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 13 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 12 | pub const GPIO_BASE: usize = 0x48000000; | 14 | pub const GPIO_BASE: usize = 0x48000000; |
| 13 | pub const GPIO_STRIDE: usize = 0x400; | 15 | pub const GPIO_STRIDE: usize = 0x400; |
| 16 | |||
| 17 | pub mod interrupt { | ||
| 18 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 19 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 20 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 21 | |||
| 22 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 23 | #[allow(non_camel_case_types)] | ||
| 24 | enum InterruptEnum { | ||
| 25 | ADC1_2 = 18, | ||
| 26 | AES = 79, | ||
| 27 | COMP = 64, | ||
| 28 | CRS = 82, | ||
| 29 | DMA1_Channel1 = 11, | ||
| 30 | DMA1_Channel2 = 12, | ||
| 31 | DMA1_Channel3 = 13, | ||
| 32 | DMA1_Channel4 = 14, | ||
| 33 | DMA1_Channel5 = 15, | ||
| 34 | DMA1_Channel6 = 16, | ||
| 35 | DMA1_Channel7 = 17, | ||
| 36 | DMA2_Channel1 = 56, | ||
| 37 | DMA2_Channel2 = 57, | ||
| 38 | DMA2_Channel3 = 58, | ||
| 39 | DMA2_Channel4 = 59, | ||
| 40 | DMA2_Channel5 = 60, | ||
| 41 | DMA2_Channel6 = 68, | ||
| 42 | DMA2_Channel7 = 69, | ||
| 43 | EXTI0 = 6, | ||
| 44 | EXTI1 = 7, | ||
| 45 | EXTI15_10 = 40, | ||
| 46 | EXTI2 = 8, | ||
| 47 | EXTI3 = 9, | ||
| 48 | EXTI4 = 10, | ||
| 49 | EXTI9_5 = 23, | ||
| 50 | FLASH = 4, | ||
| 51 | FPU = 81, | ||
| 52 | I2C1_ER = 32, | ||
| 53 | I2C1_EV = 31, | ||
| 54 | I2C2_ER = 34, | ||
| 55 | I2C2_EV = 33, | ||
| 56 | I2C3_ER = 73, | ||
| 57 | I2C3_EV = 72, | ||
| 58 | LPTIM1 = 65, | ||
| 59 | LPTIM2 = 66, | ||
| 60 | LPUART1 = 70, | ||
| 61 | PVD_PVM = 1, | ||
| 62 | QUADSPI = 71, | ||
| 63 | RCC = 5, | ||
| 64 | RNG = 80, | ||
| 65 | RTC_Alarm = 41, | ||
| 66 | RTC_WKUP = 3, | ||
| 67 | SPI1 = 35, | ||
| 68 | SPI2 = 36, | ||
| 69 | TAMP_STAMP = 2, | ||
| 70 | TIM1_BRK_TIM15 = 24, | ||
| 71 | TIM1_CC = 27, | ||
| 72 | TIM1_TRG_COM = 26, | ||
| 73 | TIM1_UP_TIM16 = 25, | ||
| 74 | TIM2 = 28, | ||
| 75 | TIM6 = 54, | ||
| 76 | TSC = 77, | ||
| 77 | USART1 = 37, | ||
| 78 | USART2 = 38, | ||
| 79 | USART3 = 39, | ||
| 80 | USB = 67, | ||
| 81 | WWDG = 0, | ||
| 82 | } | ||
| 83 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 84 | #[inline(always)] | ||
| 85 | fn number(self) -> u16 { | ||
| 86 | self as u16 | ||
| 87 | } | ||
| 88 | } | ||
| 89 | |||
| 90 | declare!(ADC1_2); | ||
| 91 | declare!(AES); | ||
| 92 | declare!(COMP); | ||
| 93 | declare!(CRS); | ||
| 94 | declare!(DMA1_Channel1); | ||
| 95 | declare!(DMA1_Channel2); | ||
| 96 | declare!(DMA1_Channel3); | ||
| 97 | declare!(DMA1_Channel4); | ||
| 98 | declare!(DMA1_Channel5); | ||
| 99 | declare!(DMA1_Channel6); | ||
| 100 | declare!(DMA1_Channel7); | ||
| 101 | declare!(DMA2_Channel1); | ||
| 102 | declare!(DMA2_Channel2); | ||
| 103 | declare!(DMA2_Channel3); | ||
| 104 | declare!(DMA2_Channel4); | ||
| 105 | declare!(DMA2_Channel5); | ||
| 106 | declare!(DMA2_Channel6); | ||
| 107 | declare!(DMA2_Channel7); | ||
| 108 | declare!(EXTI0); | ||
| 109 | declare!(EXTI1); | ||
| 110 | declare!(EXTI15_10); | ||
| 111 | declare!(EXTI2); | ||
| 112 | declare!(EXTI3); | ||
| 113 | declare!(EXTI4); | ||
| 114 | declare!(EXTI9_5); | ||
| 115 | declare!(FLASH); | ||
| 116 | declare!(FPU); | ||
| 117 | declare!(I2C1_ER); | ||
| 118 | declare!(I2C1_EV); | ||
| 119 | declare!(I2C2_ER); | ||
| 120 | declare!(I2C2_EV); | ||
| 121 | declare!(I2C3_ER); | ||
| 122 | declare!(I2C3_EV); | ||
| 123 | declare!(LPTIM1); | ||
| 124 | declare!(LPTIM2); | ||
| 125 | declare!(LPUART1); | ||
| 126 | declare!(PVD_PVM); | ||
| 127 | declare!(QUADSPI); | ||
| 128 | declare!(RCC); | ||
| 129 | declare!(RNG); | ||
| 130 | declare!(RTC_Alarm); | ||
| 131 | declare!(RTC_WKUP); | ||
| 132 | declare!(SPI1); | ||
| 133 | declare!(SPI2); | ||
| 134 | declare!(TAMP_STAMP); | ||
| 135 | declare!(TIM1_BRK_TIM15); | ||
| 136 | declare!(TIM1_CC); | ||
| 137 | declare!(TIM1_TRG_COM); | ||
| 138 | declare!(TIM1_UP_TIM16); | ||
| 139 | declare!(TIM2); | ||
| 140 | declare!(TIM6); | ||
| 141 | declare!(TSC); | ||
| 142 | declare!(USART1); | ||
| 143 | declare!(USART2); | ||
| 144 | declare!(USART3); | ||
| 145 | declare!(USB); | ||
| 146 | declare!(WWDG); | ||
| 147 | } | ||
| 148 | mod interrupt_vector { | ||
| 149 | extern "C" { | ||
| 150 | fn ADC1_2(); | ||
| 151 | fn AES(); | ||
| 152 | fn COMP(); | ||
| 153 | fn CRS(); | ||
| 154 | fn DMA1_Channel1(); | ||
| 155 | fn DMA1_Channel2(); | ||
| 156 | fn DMA1_Channel3(); | ||
| 157 | fn DMA1_Channel4(); | ||
| 158 | fn DMA1_Channel5(); | ||
| 159 | fn DMA1_Channel6(); | ||
| 160 | fn DMA1_Channel7(); | ||
| 161 | fn DMA2_Channel1(); | ||
| 162 | fn DMA2_Channel2(); | ||
| 163 | fn DMA2_Channel3(); | ||
| 164 | fn DMA2_Channel4(); | ||
| 165 | fn DMA2_Channel5(); | ||
| 166 | fn DMA2_Channel6(); | ||
| 167 | fn DMA2_Channel7(); | ||
| 168 | fn EXTI0(); | ||
| 169 | fn EXTI1(); | ||
| 170 | fn EXTI15_10(); | ||
| 171 | fn EXTI2(); | ||
| 172 | fn EXTI3(); | ||
| 173 | fn EXTI4(); | ||
| 174 | fn EXTI9_5(); | ||
| 175 | fn FLASH(); | ||
| 176 | fn FPU(); | ||
| 177 | fn I2C1_ER(); | ||
| 178 | fn I2C1_EV(); | ||
| 179 | fn I2C2_ER(); | ||
| 180 | fn I2C2_EV(); | ||
| 181 | fn I2C3_ER(); | ||
| 182 | fn I2C3_EV(); | ||
| 183 | fn LPTIM1(); | ||
| 184 | fn LPTIM2(); | ||
| 185 | fn LPUART1(); | ||
| 186 | fn PVD_PVM(); | ||
| 187 | fn QUADSPI(); | ||
| 188 | fn RCC(); | ||
| 189 | fn RNG(); | ||
| 190 | fn RTC_Alarm(); | ||
| 191 | fn RTC_WKUP(); | ||
| 192 | fn SPI1(); | ||
| 193 | fn SPI2(); | ||
| 194 | fn TAMP_STAMP(); | ||
| 195 | fn TIM1_BRK_TIM15(); | ||
| 196 | fn TIM1_CC(); | ||
| 197 | fn TIM1_TRG_COM(); | ||
| 198 | fn TIM1_UP_TIM16(); | ||
| 199 | fn TIM2(); | ||
| 200 | fn TIM6(); | ||
| 201 | fn TSC(); | ||
| 202 | fn USART1(); | ||
| 203 | fn USART2(); | ||
| 204 | fn USART3(); | ||
| 205 | fn USB(); | ||
| 206 | fn WWDG(); | ||
| 207 | } | ||
| 208 | pub union Vector { | ||
| 209 | _handler: unsafe extern "C" fn(), | ||
| 210 | _reserved: u32, | ||
| 211 | } | ||
| 212 | #[link_section = ".vector_table.interrupts"] | ||
| 213 | #[no_mangle] | ||
| 214 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 215 | Vector { _handler: WWDG }, | ||
| 216 | Vector { _handler: PVD_PVM }, | ||
| 217 | Vector { | ||
| 218 | _handler: TAMP_STAMP, | ||
| 219 | }, | ||
| 220 | Vector { _handler: RTC_WKUP }, | ||
| 221 | Vector { _handler: FLASH }, | ||
| 222 | Vector { _handler: RCC }, | ||
| 223 | Vector { _handler: EXTI0 }, | ||
| 224 | Vector { _handler: EXTI1 }, | ||
| 225 | Vector { _handler: EXTI2 }, | ||
| 226 | Vector { _handler: EXTI3 }, | ||
| 227 | Vector { _handler: EXTI4 }, | ||
| 228 | Vector { | ||
| 229 | _handler: DMA1_Channel1, | ||
| 230 | }, | ||
| 231 | Vector { | ||
| 232 | _handler: DMA1_Channel2, | ||
| 233 | }, | ||
| 234 | Vector { | ||
| 235 | _handler: DMA1_Channel3, | ||
| 236 | }, | ||
| 237 | Vector { | ||
| 238 | _handler: DMA1_Channel4, | ||
| 239 | }, | ||
| 240 | Vector { | ||
| 241 | _handler: DMA1_Channel5, | ||
| 242 | }, | ||
| 243 | Vector { | ||
| 244 | _handler: DMA1_Channel6, | ||
| 245 | }, | ||
| 246 | Vector { | ||
| 247 | _handler: DMA1_Channel7, | ||
| 248 | }, | ||
| 249 | Vector { _handler: ADC1_2 }, | ||
| 250 | Vector { _reserved: 0 }, | ||
| 251 | Vector { _reserved: 0 }, | ||
| 252 | Vector { _reserved: 0 }, | ||
| 253 | Vector { _reserved: 0 }, | ||
| 254 | Vector { _handler: EXTI9_5 }, | ||
| 255 | Vector { | ||
| 256 | _handler: TIM1_BRK_TIM15, | ||
| 257 | }, | ||
| 258 | Vector { | ||
| 259 | _handler: TIM1_UP_TIM16, | ||
| 260 | }, | ||
| 261 | Vector { | ||
| 262 | _handler: TIM1_TRG_COM, | ||
| 263 | }, | ||
| 264 | Vector { _handler: TIM1_CC }, | ||
| 265 | Vector { _handler: TIM2 }, | ||
| 266 | Vector { _reserved: 0 }, | ||
| 267 | Vector { _reserved: 0 }, | ||
| 268 | Vector { _handler: I2C1_EV }, | ||
| 269 | Vector { _handler: I2C1_ER }, | ||
| 270 | Vector { _handler: I2C2_EV }, | ||
| 271 | Vector { _handler: I2C2_ER }, | ||
| 272 | Vector { _handler: SPI1 }, | ||
| 273 | Vector { _handler: SPI2 }, | ||
| 274 | Vector { _handler: USART1 }, | ||
| 275 | Vector { _handler: USART2 }, | ||
| 276 | Vector { _handler: USART3 }, | ||
| 277 | Vector { | ||
| 278 | _handler: EXTI15_10, | ||
| 279 | }, | ||
| 280 | Vector { | ||
| 281 | _handler: RTC_Alarm, | ||
| 282 | }, | ||
| 283 | Vector { _reserved: 0 }, | ||
| 284 | Vector { _reserved: 0 }, | ||
| 285 | Vector { _reserved: 0 }, | ||
| 286 | Vector { _reserved: 0 }, | ||
| 287 | Vector { _reserved: 0 }, | ||
| 288 | Vector { _reserved: 0 }, | ||
| 289 | Vector { _reserved: 0 }, | ||
| 290 | Vector { _reserved: 0 }, | ||
| 291 | Vector { _reserved: 0 }, | ||
| 292 | Vector { _reserved: 0 }, | ||
| 293 | Vector { _reserved: 0 }, | ||
| 294 | Vector { _reserved: 0 }, | ||
| 295 | Vector { _handler: TIM6 }, | ||
| 296 | Vector { _reserved: 0 }, | ||
| 297 | Vector { | ||
| 298 | _handler: DMA2_Channel1, | ||
| 299 | }, | ||
| 300 | Vector { | ||
| 301 | _handler: DMA2_Channel2, | ||
| 302 | }, | ||
| 303 | Vector { | ||
| 304 | _handler: DMA2_Channel3, | ||
| 305 | }, | ||
| 306 | Vector { | ||
| 307 | _handler: DMA2_Channel4, | ||
| 308 | }, | ||
| 309 | Vector { | ||
| 310 | _handler: DMA2_Channel5, | ||
| 311 | }, | ||
| 312 | Vector { _reserved: 0 }, | ||
| 313 | Vector { _reserved: 0 }, | ||
| 314 | Vector { _reserved: 0 }, | ||
| 315 | Vector { _handler: COMP }, | ||
| 316 | Vector { _handler: LPTIM1 }, | ||
| 317 | Vector { _handler: LPTIM2 }, | ||
| 318 | Vector { _handler: USB }, | ||
| 319 | Vector { | ||
| 320 | _handler: DMA2_Channel6, | ||
| 321 | }, | ||
| 322 | Vector { | ||
| 323 | _handler: DMA2_Channel7, | ||
| 324 | }, | ||
| 325 | Vector { _handler: LPUART1 }, | ||
| 326 | Vector { _handler: QUADSPI }, | ||
| 327 | Vector { _handler: I2C3_EV }, | ||
| 328 | Vector { _handler: I2C3_ER }, | ||
| 329 | Vector { _reserved: 0 }, | ||
| 330 | Vector { _reserved: 0 }, | ||
| 331 | Vector { _reserved: 0 }, | ||
| 332 | Vector { _handler: TSC }, | ||
| 333 | Vector { _reserved: 0 }, | ||
| 334 | Vector { _handler: AES }, | ||
| 335 | Vector { _handler: RNG }, | ||
| 336 | Vector { _handler: FPU }, | ||
| 337 | Vector { _handler: CRS }, | ||
| 338 | ]; | ||
| 339 | } | ||
| 14 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 340 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 15 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 341 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 16 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 342 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l422rb.rs b/embassy-stm32/src/chip/stm32l422rb.rs index f3734f940..015b11be3 100644 --- a/embassy-stm32/src/chip/stm32l422rb.rs +++ b/embassy-stm32/src/chip/stm32l422rb.rs | |||
| @@ -1,8 +1,8 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, |
| 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, |
| 8 | PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 8 | PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -10,8 +10,334 @@ peripherals!( | |||
| 10 | RTC, SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, | 10 | RTC, SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, |
| 11 | WWDG | 11 | WWDG |
| 12 | ); | 12 | ); |
| 13 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 14 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 13 | pub const GPIO_BASE: usize = 0x48000000; | 15 | pub const GPIO_BASE: usize = 0x48000000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 16 | pub const GPIO_STRIDE: usize = 0x400; |
| 17 | |||
| 18 | pub mod interrupt { | ||
| 19 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 20 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 21 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 22 | |||
| 23 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 24 | #[allow(non_camel_case_types)] | ||
| 25 | enum InterruptEnum { | ||
| 26 | ADC1_2 = 18, | ||
| 27 | AES = 79, | ||
| 28 | COMP = 64, | ||
| 29 | CRS = 82, | ||
| 30 | DMA1_Channel1 = 11, | ||
| 31 | DMA1_Channel2 = 12, | ||
| 32 | DMA1_Channel3 = 13, | ||
| 33 | DMA1_Channel4 = 14, | ||
| 34 | DMA1_Channel5 = 15, | ||
| 35 | DMA1_Channel6 = 16, | ||
| 36 | DMA1_Channel7 = 17, | ||
| 37 | DMA2_Channel1 = 56, | ||
| 38 | DMA2_Channel2 = 57, | ||
| 39 | DMA2_Channel3 = 58, | ||
| 40 | DMA2_Channel4 = 59, | ||
| 41 | DMA2_Channel5 = 60, | ||
| 42 | DMA2_Channel6 = 68, | ||
| 43 | DMA2_Channel7 = 69, | ||
| 44 | EXTI0 = 6, | ||
| 45 | EXTI1 = 7, | ||
| 46 | EXTI15_10 = 40, | ||
| 47 | EXTI2 = 8, | ||
| 48 | EXTI3 = 9, | ||
| 49 | EXTI4 = 10, | ||
| 50 | EXTI9_5 = 23, | ||
| 51 | FLASH = 4, | ||
| 52 | FPU = 81, | ||
| 53 | I2C1_ER = 32, | ||
| 54 | I2C1_EV = 31, | ||
| 55 | I2C2_ER = 34, | ||
| 56 | I2C2_EV = 33, | ||
| 57 | I2C3_ER = 73, | ||
| 58 | I2C3_EV = 72, | ||
| 59 | LPTIM1 = 65, | ||
| 60 | LPTIM2 = 66, | ||
| 61 | LPUART1 = 70, | ||
| 62 | PVD_PVM = 1, | ||
| 63 | QUADSPI = 71, | ||
| 64 | RCC = 5, | ||
| 65 | RNG = 80, | ||
| 66 | RTC_Alarm = 41, | ||
| 67 | RTC_WKUP = 3, | ||
| 68 | SPI1 = 35, | ||
| 69 | SPI2 = 36, | ||
| 70 | TAMP_STAMP = 2, | ||
| 71 | TIM1_BRK_TIM15 = 24, | ||
| 72 | TIM1_CC = 27, | ||
| 73 | TIM1_TRG_COM = 26, | ||
| 74 | TIM1_UP_TIM16 = 25, | ||
| 75 | TIM2 = 28, | ||
| 76 | TIM6 = 54, | ||
| 77 | TSC = 77, | ||
| 78 | USART1 = 37, | ||
| 79 | USART2 = 38, | ||
| 80 | USART3 = 39, | ||
| 81 | USB = 67, | ||
| 82 | WWDG = 0, | ||
| 83 | } | ||
| 84 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 85 | #[inline(always)] | ||
| 86 | fn number(self) -> u16 { | ||
| 87 | self as u16 | ||
| 88 | } | ||
| 89 | } | ||
| 90 | |||
| 91 | declare!(ADC1_2); | ||
| 92 | declare!(AES); | ||
| 93 | declare!(COMP); | ||
| 94 | declare!(CRS); | ||
| 95 | declare!(DMA1_Channel1); | ||
| 96 | declare!(DMA1_Channel2); | ||
| 97 | declare!(DMA1_Channel3); | ||
| 98 | declare!(DMA1_Channel4); | ||
| 99 | declare!(DMA1_Channel5); | ||
| 100 | declare!(DMA1_Channel6); | ||
| 101 | declare!(DMA1_Channel7); | ||
| 102 | declare!(DMA2_Channel1); | ||
| 103 | declare!(DMA2_Channel2); | ||
| 104 | declare!(DMA2_Channel3); | ||
| 105 | declare!(DMA2_Channel4); | ||
| 106 | declare!(DMA2_Channel5); | ||
| 107 | declare!(DMA2_Channel6); | ||
| 108 | declare!(DMA2_Channel7); | ||
| 109 | declare!(EXTI0); | ||
| 110 | declare!(EXTI1); | ||
| 111 | declare!(EXTI15_10); | ||
| 112 | declare!(EXTI2); | ||
| 113 | declare!(EXTI3); | ||
| 114 | declare!(EXTI4); | ||
| 115 | declare!(EXTI9_5); | ||
| 116 | declare!(FLASH); | ||
| 117 | declare!(FPU); | ||
| 118 | declare!(I2C1_ER); | ||
| 119 | declare!(I2C1_EV); | ||
| 120 | declare!(I2C2_ER); | ||
| 121 | declare!(I2C2_EV); | ||
| 122 | declare!(I2C3_ER); | ||
| 123 | declare!(I2C3_EV); | ||
| 124 | declare!(LPTIM1); | ||
| 125 | declare!(LPTIM2); | ||
| 126 | declare!(LPUART1); | ||
| 127 | declare!(PVD_PVM); | ||
| 128 | declare!(QUADSPI); | ||
| 129 | declare!(RCC); | ||
| 130 | declare!(RNG); | ||
| 131 | declare!(RTC_Alarm); | ||
| 132 | declare!(RTC_WKUP); | ||
| 133 | declare!(SPI1); | ||
| 134 | declare!(SPI2); | ||
| 135 | declare!(TAMP_STAMP); | ||
| 136 | declare!(TIM1_BRK_TIM15); | ||
| 137 | declare!(TIM1_CC); | ||
| 138 | declare!(TIM1_TRG_COM); | ||
| 139 | declare!(TIM1_UP_TIM16); | ||
| 140 | declare!(TIM2); | ||
| 141 | declare!(TIM6); | ||
| 142 | declare!(TSC); | ||
| 143 | declare!(USART1); | ||
| 144 | declare!(USART2); | ||
| 145 | declare!(USART3); | ||
| 146 | declare!(USB); | ||
| 147 | declare!(WWDG); | ||
| 148 | } | ||
| 149 | mod interrupt_vector { | ||
| 150 | extern "C" { | ||
| 151 | fn ADC1_2(); | ||
| 152 | fn AES(); | ||
| 153 | fn COMP(); | ||
| 154 | fn CRS(); | ||
| 155 | fn DMA1_Channel1(); | ||
| 156 | fn DMA1_Channel2(); | ||
| 157 | fn DMA1_Channel3(); | ||
| 158 | fn DMA1_Channel4(); | ||
| 159 | fn DMA1_Channel5(); | ||
| 160 | fn DMA1_Channel6(); | ||
| 161 | fn DMA1_Channel7(); | ||
| 162 | fn DMA2_Channel1(); | ||
| 163 | fn DMA2_Channel2(); | ||
| 164 | fn DMA2_Channel3(); | ||
| 165 | fn DMA2_Channel4(); | ||
| 166 | fn DMA2_Channel5(); | ||
| 167 | fn DMA2_Channel6(); | ||
| 168 | fn DMA2_Channel7(); | ||
| 169 | fn EXTI0(); | ||
| 170 | fn EXTI1(); | ||
| 171 | fn EXTI15_10(); | ||
| 172 | fn EXTI2(); | ||
| 173 | fn EXTI3(); | ||
| 174 | fn EXTI4(); | ||
| 175 | fn EXTI9_5(); | ||
| 176 | fn FLASH(); | ||
| 177 | fn FPU(); | ||
| 178 | fn I2C1_ER(); | ||
| 179 | fn I2C1_EV(); | ||
| 180 | fn I2C2_ER(); | ||
| 181 | fn I2C2_EV(); | ||
| 182 | fn I2C3_ER(); | ||
| 183 | fn I2C3_EV(); | ||
| 184 | fn LPTIM1(); | ||
| 185 | fn LPTIM2(); | ||
| 186 | fn LPUART1(); | ||
| 187 | fn PVD_PVM(); | ||
| 188 | fn QUADSPI(); | ||
| 189 | fn RCC(); | ||
| 190 | fn RNG(); | ||
| 191 | fn RTC_Alarm(); | ||
| 192 | fn RTC_WKUP(); | ||
| 193 | fn SPI1(); | ||
| 194 | fn SPI2(); | ||
| 195 | fn TAMP_STAMP(); | ||
| 196 | fn TIM1_BRK_TIM15(); | ||
| 197 | fn TIM1_CC(); | ||
| 198 | fn TIM1_TRG_COM(); | ||
| 199 | fn TIM1_UP_TIM16(); | ||
| 200 | fn TIM2(); | ||
| 201 | fn TIM6(); | ||
| 202 | fn TSC(); | ||
| 203 | fn USART1(); | ||
| 204 | fn USART2(); | ||
| 205 | fn USART3(); | ||
| 206 | fn USB(); | ||
| 207 | fn WWDG(); | ||
| 208 | } | ||
| 209 | pub union Vector { | ||
| 210 | _handler: unsafe extern "C" fn(), | ||
| 211 | _reserved: u32, | ||
| 212 | } | ||
| 213 | #[link_section = ".vector_table.interrupts"] | ||
| 214 | #[no_mangle] | ||
| 215 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 216 | Vector { _handler: WWDG }, | ||
| 217 | Vector { _handler: PVD_PVM }, | ||
| 218 | Vector { | ||
| 219 | _handler: TAMP_STAMP, | ||
| 220 | }, | ||
| 221 | Vector { _handler: RTC_WKUP }, | ||
| 222 | Vector { _handler: FLASH }, | ||
| 223 | Vector { _handler: RCC }, | ||
| 224 | Vector { _handler: EXTI0 }, | ||
| 225 | Vector { _handler: EXTI1 }, | ||
| 226 | Vector { _handler: EXTI2 }, | ||
| 227 | Vector { _handler: EXTI3 }, | ||
| 228 | Vector { _handler: EXTI4 }, | ||
| 229 | Vector { | ||
| 230 | _handler: DMA1_Channel1, | ||
| 231 | }, | ||
| 232 | Vector { | ||
| 233 | _handler: DMA1_Channel2, | ||
| 234 | }, | ||
| 235 | Vector { | ||
| 236 | _handler: DMA1_Channel3, | ||
| 237 | }, | ||
| 238 | Vector { | ||
| 239 | _handler: DMA1_Channel4, | ||
| 240 | }, | ||
| 241 | Vector { | ||
| 242 | _handler: DMA1_Channel5, | ||
| 243 | }, | ||
| 244 | Vector { | ||
| 245 | _handler: DMA1_Channel6, | ||
| 246 | }, | ||
| 247 | Vector { | ||
| 248 | _handler: DMA1_Channel7, | ||
| 249 | }, | ||
| 250 | Vector { _handler: ADC1_2 }, | ||
| 251 | Vector { _reserved: 0 }, | ||
| 252 | Vector { _reserved: 0 }, | ||
| 253 | Vector { _reserved: 0 }, | ||
| 254 | Vector { _reserved: 0 }, | ||
| 255 | Vector { _handler: EXTI9_5 }, | ||
| 256 | Vector { | ||
| 257 | _handler: TIM1_BRK_TIM15, | ||
| 258 | }, | ||
| 259 | Vector { | ||
| 260 | _handler: TIM1_UP_TIM16, | ||
| 261 | }, | ||
| 262 | Vector { | ||
| 263 | _handler: TIM1_TRG_COM, | ||
| 264 | }, | ||
| 265 | Vector { _handler: TIM1_CC }, | ||
| 266 | Vector { _handler: TIM2 }, | ||
| 267 | Vector { _reserved: 0 }, | ||
| 268 | Vector { _reserved: 0 }, | ||
| 269 | Vector { _handler: I2C1_EV }, | ||
| 270 | Vector { _handler: I2C1_ER }, | ||
| 271 | Vector { _handler: I2C2_EV }, | ||
| 272 | Vector { _handler: I2C2_ER }, | ||
| 273 | Vector { _handler: SPI1 }, | ||
| 274 | Vector { _handler: SPI2 }, | ||
| 275 | Vector { _handler: USART1 }, | ||
| 276 | Vector { _handler: USART2 }, | ||
| 277 | Vector { _handler: USART3 }, | ||
| 278 | Vector { | ||
| 279 | _handler: EXTI15_10, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: RTC_Alarm, | ||
| 283 | }, | ||
| 284 | Vector { _reserved: 0 }, | ||
| 285 | Vector { _reserved: 0 }, | ||
| 286 | Vector { _reserved: 0 }, | ||
| 287 | Vector { _reserved: 0 }, | ||
| 288 | Vector { _reserved: 0 }, | ||
| 289 | Vector { _reserved: 0 }, | ||
| 290 | Vector { _reserved: 0 }, | ||
| 291 | Vector { _reserved: 0 }, | ||
| 292 | Vector { _reserved: 0 }, | ||
| 293 | Vector { _reserved: 0 }, | ||
| 294 | Vector { _reserved: 0 }, | ||
| 295 | Vector { _reserved: 0 }, | ||
| 296 | Vector { _handler: TIM6 }, | ||
| 297 | Vector { _reserved: 0 }, | ||
| 298 | Vector { | ||
| 299 | _handler: DMA2_Channel1, | ||
| 300 | }, | ||
| 301 | Vector { | ||
| 302 | _handler: DMA2_Channel2, | ||
| 303 | }, | ||
| 304 | Vector { | ||
| 305 | _handler: DMA2_Channel3, | ||
| 306 | }, | ||
| 307 | Vector { | ||
| 308 | _handler: DMA2_Channel4, | ||
| 309 | }, | ||
| 310 | Vector { | ||
| 311 | _handler: DMA2_Channel5, | ||
| 312 | }, | ||
| 313 | Vector { _reserved: 0 }, | ||
| 314 | Vector { _reserved: 0 }, | ||
| 315 | Vector { _reserved: 0 }, | ||
| 316 | Vector { _handler: COMP }, | ||
| 317 | Vector { _handler: LPTIM1 }, | ||
| 318 | Vector { _handler: LPTIM2 }, | ||
| 319 | Vector { _handler: USB }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA2_Channel6, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA2_Channel7, | ||
| 325 | }, | ||
| 326 | Vector { _handler: LPUART1 }, | ||
| 327 | Vector { _handler: QUADSPI }, | ||
| 328 | Vector { _handler: I2C3_EV }, | ||
| 329 | Vector { _handler: I2C3_ER }, | ||
| 330 | Vector { _reserved: 0 }, | ||
| 331 | Vector { _reserved: 0 }, | ||
| 332 | Vector { _reserved: 0 }, | ||
| 333 | Vector { _handler: TSC }, | ||
| 334 | Vector { _reserved: 0 }, | ||
| 335 | Vector { _handler: AES }, | ||
| 336 | Vector { _handler: RNG }, | ||
| 337 | Vector { _handler: FPU }, | ||
| 338 | Vector { _handler: CRS }, | ||
| 339 | ]; | ||
| 340 | } | ||
| 15 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 341 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 16 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 342 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 17 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 343 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l422tb.rs b/embassy-stm32/src/chip/stm32l422tb.rs index 634db7aaf..26decd09b 100644 --- a/embassy-stm32/src/chip/stm32l422tb.rs +++ b/embassy-stm32/src/chip/stm32l422tb.rs | |||
| @@ -1,16 +1,342 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, |
| 5 | PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, |
| 8 | PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 8 | PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 9 | PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, | 9 | PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, |
| 10 | SPI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG | 10 | SPI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG |
| 11 | ); | 11 | ); |
| 12 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 13 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 12 | pub const GPIO_BASE: usize = 0x48000000; | 14 | pub const GPIO_BASE: usize = 0x48000000; |
| 13 | pub const GPIO_STRIDE: usize = 0x400; | 15 | pub const GPIO_STRIDE: usize = 0x400; |
| 16 | |||
| 17 | pub mod interrupt { | ||
| 18 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 19 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 20 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 21 | |||
| 22 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 23 | #[allow(non_camel_case_types)] | ||
| 24 | enum InterruptEnum { | ||
| 25 | ADC1_2 = 18, | ||
| 26 | AES = 79, | ||
| 27 | COMP = 64, | ||
| 28 | CRS = 82, | ||
| 29 | DMA1_Channel1 = 11, | ||
| 30 | DMA1_Channel2 = 12, | ||
| 31 | DMA1_Channel3 = 13, | ||
| 32 | DMA1_Channel4 = 14, | ||
| 33 | DMA1_Channel5 = 15, | ||
| 34 | DMA1_Channel6 = 16, | ||
| 35 | DMA1_Channel7 = 17, | ||
| 36 | DMA2_Channel1 = 56, | ||
| 37 | DMA2_Channel2 = 57, | ||
| 38 | DMA2_Channel3 = 58, | ||
| 39 | DMA2_Channel4 = 59, | ||
| 40 | DMA2_Channel5 = 60, | ||
| 41 | DMA2_Channel6 = 68, | ||
| 42 | DMA2_Channel7 = 69, | ||
| 43 | EXTI0 = 6, | ||
| 44 | EXTI1 = 7, | ||
| 45 | EXTI15_10 = 40, | ||
| 46 | EXTI2 = 8, | ||
| 47 | EXTI3 = 9, | ||
| 48 | EXTI4 = 10, | ||
| 49 | EXTI9_5 = 23, | ||
| 50 | FLASH = 4, | ||
| 51 | FPU = 81, | ||
| 52 | I2C1_ER = 32, | ||
| 53 | I2C1_EV = 31, | ||
| 54 | I2C2_ER = 34, | ||
| 55 | I2C2_EV = 33, | ||
| 56 | I2C3_ER = 73, | ||
| 57 | I2C3_EV = 72, | ||
| 58 | LPTIM1 = 65, | ||
| 59 | LPTIM2 = 66, | ||
| 60 | LPUART1 = 70, | ||
| 61 | PVD_PVM = 1, | ||
| 62 | QUADSPI = 71, | ||
| 63 | RCC = 5, | ||
| 64 | RNG = 80, | ||
| 65 | RTC_Alarm = 41, | ||
| 66 | RTC_WKUP = 3, | ||
| 67 | SPI1 = 35, | ||
| 68 | SPI2 = 36, | ||
| 69 | TAMP_STAMP = 2, | ||
| 70 | TIM1_BRK_TIM15 = 24, | ||
| 71 | TIM1_CC = 27, | ||
| 72 | TIM1_TRG_COM = 26, | ||
| 73 | TIM1_UP_TIM16 = 25, | ||
| 74 | TIM2 = 28, | ||
| 75 | TIM6 = 54, | ||
| 76 | TSC = 77, | ||
| 77 | USART1 = 37, | ||
| 78 | USART2 = 38, | ||
| 79 | USART3 = 39, | ||
| 80 | USB = 67, | ||
| 81 | WWDG = 0, | ||
| 82 | } | ||
| 83 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 84 | #[inline(always)] | ||
| 85 | fn number(self) -> u16 { | ||
| 86 | self as u16 | ||
| 87 | } | ||
| 88 | } | ||
| 89 | |||
| 90 | declare!(ADC1_2); | ||
| 91 | declare!(AES); | ||
| 92 | declare!(COMP); | ||
| 93 | declare!(CRS); | ||
| 94 | declare!(DMA1_Channel1); | ||
| 95 | declare!(DMA1_Channel2); | ||
| 96 | declare!(DMA1_Channel3); | ||
| 97 | declare!(DMA1_Channel4); | ||
| 98 | declare!(DMA1_Channel5); | ||
| 99 | declare!(DMA1_Channel6); | ||
| 100 | declare!(DMA1_Channel7); | ||
| 101 | declare!(DMA2_Channel1); | ||
| 102 | declare!(DMA2_Channel2); | ||
| 103 | declare!(DMA2_Channel3); | ||
| 104 | declare!(DMA2_Channel4); | ||
| 105 | declare!(DMA2_Channel5); | ||
| 106 | declare!(DMA2_Channel6); | ||
| 107 | declare!(DMA2_Channel7); | ||
| 108 | declare!(EXTI0); | ||
| 109 | declare!(EXTI1); | ||
| 110 | declare!(EXTI15_10); | ||
| 111 | declare!(EXTI2); | ||
| 112 | declare!(EXTI3); | ||
| 113 | declare!(EXTI4); | ||
| 114 | declare!(EXTI9_5); | ||
| 115 | declare!(FLASH); | ||
| 116 | declare!(FPU); | ||
| 117 | declare!(I2C1_ER); | ||
| 118 | declare!(I2C1_EV); | ||
| 119 | declare!(I2C2_ER); | ||
| 120 | declare!(I2C2_EV); | ||
| 121 | declare!(I2C3_ER); | ||
| 122 | declare!(I2C3_EV); | ||
| 123 | declare!(LPTIM1); | ||
| 124 | declare!(LPTIM2); | ||
| 125 | declare!(LPUART1); | ||
| 126 | declare!(PVD_PVM); | ||
| 127 | declare!(QUADSPI); | ||
| 128 | declare!(RCC); | ||
| 129 | declare!(RNG); | ||
| 130 | declare!(RTC_Alarm); | ||
| 131 | declare!(RTC_WKUP); | ||
| 132 | declare!(SPI1); | ||
| 133 | declare!(SPI2); | ||
| 134 | declare!(TAMP_STAMP); | ||
| 135 | declare!(TIM1_BRK_TIM15); | ||
| 136 | declare!(TIM1_CC); | ||
| 137 | declare!(TIM1_TRG_COM); | ||
| 138 | declare!(TIM1_UP_TIM16); | ||
| 139 | declare!(TIM2); | ||
| 140 | declare!(TIM6); | ||
| 141 | declare!(TSC); | ||
| 142 | declare!(USART1); | ||
| 143 | declare!(USART2); | ||
| 144 | declare!(USART3); | ||
| 145 | declare!(USB); | ||
| 146 | declare!(WWDG); | ||
| 147 | } | ||
| 148 | mod interrupt_vector { | ||
| 149 | extern "C" { | ||
| 150 | fn ADC1_2(); | ||
| 151 | fn AES(); | ||
| 152 | fn COMP(); | ||
| 153 | fn CRS(); | ||
| 154 | fn DMA1_Channel1(); | ||
| 155 | fn DMA1_Channel2(); | ||
| 156 | fn DMA1_Channel3(); | ||
| 157 | fn DMA1_Channel4(); | ||
| 158 | fn DMA1_Channel5(); | ||
| 159 | fn DMA1_Channel6(); | ||
| 160 | fn DMA1_Channel7(); | ||
| 161 | fn DMA2_Channel1(); | ||
| 162 | fn DMA2_Channel2(); | ||
| 163 | fn DMA2_Channel3(); | ||
| 164 | fn DMA2_Channel4(); | ||
| 165 | fn DMA2_Channel5(); | ||
| 166 | fn DMA2_Channel6(); | ||
| 167 | fn DMA2_Channel7(); | ||
| 168 | fn EXTI0(); | ||
| 169 | fn EXTI1(); | ||
| 170 | fn EXTI15_10(); | ||
| 171 | fn EXTI2(); | ||
| 172 | fn EXTI3(); | ||
| 173 | fn EXTI4(); | ||
| 174 | fn EXTI9_5(); | ||
| 175 | fn FLASH(); | ||
| 176 | fn FPU(); | ||
| 177 | fn I2C1_ER(); | ||
| 178 | fn I2C1_EV(); | ||
| 179 | fn I2C2_ER(); | ||
| 180 | fn I2C2_EV(); | ||
| 181 | fn I2C3_ER(); | ||
| 182 | fn I2C3_EV(); | ||
| 183 | fn LPTIM1(); | ||
| 184 | fn LPTIM2(); | ||
| 185 | fn LPUART1(); | ||
| 186 | fn PVD_PVM(); | ||
| 187 | fn QUADSPI(); | ||
| 188 | fn RCC(); | ||
| 189 | fn RNG(); | ||
| 190 | fn RTC_Alarm(); | ||
| 191 | fn RTC_WKUP(); | ||
| 192 | fn SPI1(); | ||
| 193 | fn SPI2(); | ||
| 194 | fn TAMP_STAMP(); | ||
| 195 | fn TIM1_BRK_TIM15(); | ||
| 196 | fn TIM1_CC(); | ||
| 197 | fn TIM1_TRG_COM(); | ||
| 198 | fn TIM1_UP_TIM16(); | ||
| 199 | fn TIM2(); | ||
| 200 | fn TIM6(); | ||
| 201 | fn TSC(); | ||
| 202 | fn USART1(); | ||
| 203 | fn USART2(); | ||
| 204 | fn USART3(); | ||
| 205 | fn USB(); | ||
| 206 | fn WWDG(); | ||
| 207 | } | ||
| 208 | pub union Vector { | ||
| 209 | _handler: unsafe extern "C" fn(), | ||
| 210 | _reserved: u32, | ||
| 211 | } | ||
| 212 | #[link_section = ".vector_table.interrupts"] | ||
| 213 | #[no_mangle] | ||
| 214 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 215 | Vector { _handler: WWDG }, | ||
| 216 | Vector { _handler: PVD_PVM }, | ||
| 217 | Vector { | ||
| 218 | _handler: TAMP_STAMP, | ||
| 219 | }, | ||
| 220 | Vector { _handler: RTC_WKUP }, | ||
| 221 | Vector { _handler: FLASH }, | ||
| 222 | Vector { _handler: RCC }, | ||
| 223 | Vector { _handler: EXTI0 }, | ||
| 224 | Vector { _handler: EXTI1 }, | ||
| 225 | Vector { _handler: EXTI2 }, | ||
| 226 | Vector { _handler: EXTI3 }, | ||
| 227 | Vector { _handler: EXTI4 }, | ||
| 228 | Vector { | ||
| 229 | _handler: DMA1_Channel1, | ||
| 230 | }, | ||
| 231 | Vector { | ||
| 232 | _handler: DMA1_Channel2, | ||
| 233 | }, | ||
| 234 | Vector { | ||
| 235 | _handler: DMA1_Channel3, | ||
| 236 | }, | ||
| 237 | Vector { | ||
| 238 | _handler: DMA1_Channel4, | ||
| 239 | }, | ||
| 240 | Vector { | ||
| 241 | _handler: DMA1_Channel5, | ||
| 242 | }, | ||
| 243 | Vector { | ||
| 244 | _handler: DMA1_Channel6, | ||
| 245 | }, | ||
| 246 | Vector { | ||
| 247 | _handler: DMA1_Channel7, | ||
| 248 | }, | ||
| 249 | Vector { _handler: ADC1_2 }, | ||
| 250 | Vector { _reserved: 0 }, | ||
| 251 | Vector { _reserved: 0 }, | ||
| 252 | Vector { _reserved: 0 }, | ||
| 253 | Vector { _reserved: 0 }, | ||
| 254 | Vector { _handler: EXTI9_5 }, | ||
| 255 | Vector { | ||
| 256 | _handler: TIM1_BRK_TIM15, | ||
| 257 | }, | ||
| 258 | Vector { | ||
| 259 | _handler: TIM1_UP_TIM16, | ||
| 260 | }, | ||
| 261 | Vector { | ||
| 262 | _handler: TIM1_TRG_COM, | ||
| 263 | }, | ||
| 264 | Vector { _handler: TIM1_CC }, | ||
| 265 | Vector { _handler: TIM2 }, | ||
| 266 | Vector { _reserved: 0 }, | ||
| 267 | Vector { _reserved: 0 }, | ||
| 268 | Vector { _handler: I2C1_EV }, | ||
| 269 | Vector { _handler: I2C1_ER }, | ||
| 270 | Vector { _handler: I2C2_EV }, | ||
| 271 | Vector { _handler: I2C2_ER }, | ||
| 272 | Vector { _handler: SPI1 }, | ||
| 273 | Vector { _handler: SPI2 }, | ||
| 274 | Vector { _handler: USART1 }, | ||
| 275 | Vector { _handler: USART2 }, | ||
| 276 | Vector { _handler: USART3 }, | ||
| 277 | Vector { | ||
| 278 | _handler: EXTI15_10, | ||
| 279 | }, | ||
| 280 | Vector { | ||
| 281 | _handler: RTC_Alarm, | ||
| 282 | }, | ||
| 283 | Vector { _reserved: 0 }, | ||
| 284 | Vector { _reserved: 0 }, | ||
| 285 | Vector { _reserved: 0 }, | ||
| 286 | Vector { _reserved: 0 }, | ||
| 287 | Vector { _reserved: 0 }, | ||
| 288 | Vector { _reserved: 0 }, | ||
| 289 | Vector { _reserved: 0 }, | ||
| 290 | Vector { _reserved: 0 }, | ||
| 291 | Vector { _reserved: 0 }, | ||
| 292 | Vector { _reserved: 0 }, | ||
| 293 | Vector { _reserved: 0 }, | ||
| 294 | Vector { _reserved: 0 }, | ||
| 295 | Vector { _handler: TIM6 }, | ||
| 296 | Vector { _reserved: 0 }, | ||
| 297 | Vector { | ||
| 298 | _handler: DMA2_Channel1, | ||
| 299 | }, | ||
| 300 | Vector { | ||
| 301 | _handler: DMA2_Channel2, | ||
| 302 | }, | ||
| 303 | Vector { | ||
| 304 | _handler: DMA2_Channel3, | ||
| 305 | }, | ||
| 306 | Vector { | ||
| 307 | _handler: DMA2_Channel4, | ||
| 308 | }, | ||
| 309 | Vector { | ||
| 310 | _handler: DMA2_Channel5, | ||
| 311 | }, | ||
| 312 | Vector { _reserved: 0 }, | ||
| 313 | Vector { _reserved: 0 }, | ||
| 314 | Vector { _reserved: 0 }, | ||
| 315 | Vector { _handler: COMP }, | ||
| 316 | Vector { _handler: LPTIM1 }, | ||
| 317 | Vector { _handler: LPTIM2 }, | ||
| 318 | Vector { _handler: USB }, | ||
| 319 | Vector { | ||
| 320 | _handler: DMA2_Channel6, | ||
| 321 | }, | ||
| 322 | Vector { | ||
| 323 | _handler: DMA2_Channel7, | ||
| 324 | }, | ||
| 325 | Vector { _handler: LPUART1 }, | ||
| 326 | Vector { _handler: QUADSPI }, | ||
| 327 | Vector { _handler: I2C3_EV }, | ||
| 328 | Vector { _handler: I2C3_ER }, | ||
| 329 | Vector { _reserved: 0 }, | ||
| 330 | Vector { _reserved: 0 }, | ||
| 331 | Vector { _reserved: 0 }, | ||
| 332 | Vector { _handler: TSC }, | ||
| 333 | Vector { _reserved: 0 }, | ||
| 334 | Vector { _handler: AES }, | ||
| 335 | Vector { _handler: RNG }, | ||
| 336 | Vector { _handler: FPU }, | ||
| 337 | Vector { _handler: CRS }, | ||
| 338 | ]; | ||
| 339 | } | ||
| 14 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 340 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 15 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 341 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 16 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 342 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l431cb.rs b/embassy-stm32/src/chip/stm32l431cb.rs index fb418c2ab..c4f33502f 100644 --- a/embassy-stm32/src/chip/stm32l431cb.rs +++ b/embassy-stm32/src/chip/stm32l431cb.rs | |||
| @@ -1,18 +1,365 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, | 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, |
| 11 | SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, | 11 | RTC, SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, |
| 12 | USART2, USART3, WWDG | 12 | USART2, USART3, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DMA1_Channel1 = 11, | ||
| 35 | DMA1_Channel2 = 12, | ||
| 36 | DMA1_Channel3 = 13, | ||
| 37 | DMA1_Channel4 = 14, | ||
| 38 | DMA1_Channel5 = 15, | ||
| 39 | DMA1_Channel6 = 16, | ||
| 40 | DMA1_Channel7 = 17, | ||
| 41 | DMA2_Channel1 = 56, | ||
| 42 | DMA2_Channel2 = 57, | ||
| 43 | DMA2_Channel3 = 58, | ||
| 44 | DMA2_Channel4 = 59, | ||
| 45 | DMA2_Channel5 = 60, | ||
| 46 | DMA2_Channel6 = 68, | ||
| 47 | DMA2_Channel7 = 69, | ||
| 48 | EXTI0 = 6, | ||
| 49 | EXTI1 = 7, | ||
| 50 | EXTI15_10 = 40, | ||
| 51 | EXTI2 = 8, | ||
| 52 | EXTI3 = 9, | ||
| 53 | EXTI4 = 10, | ||
| 54 | EXTI9_5 = 23, | ||
| 55 | FLASH = 4, | ||
| 56 | FPU = 81, | ||
| 57 | I2C1_ER = 32, | ||
| 58 | I2C1_EV = 31, | ||
| 59 | I2C2_ER = 34, | ||
| 60 | I2C2_EV = 33, | ||
| 61 | I2C3_ER = 73, | ||
| 62 | I2C3_EV = 72, | ||
| 63 | LPTIM1 = 65, | ||
| 64 | LPTIM2 = 66, | ||
| 65 | LPUART1 = 70, | ||
| 66 | PVD_PVM = 1, | ||
| 67 | QUADSPI = 71, | ||
| 68 | RCC = 5, | ||
| 69 | RNG = 80, | ||
| 70 | RTC_Alarm = 41, | ||
| 71 | RTC_WKUP = 3, | ||
| 72 | SAI1 = 74, | ||
| 73 | SDMMC1 = 49, | ||
| 74 | SPI1 = 35, | ||
| 75 | SPI2 = 36, | ||
| 76 | SPI3 = 51, | ||
| 77 | SWPMI1 = 76, | ||
| 78 | TAMP_STAMP = 2, | ||
| 79 | TIM1_BRK_TIM15 = 24, | ||
| 80 | TIM1_CC = 27, | ||
| 81 | TIM1_TRG_COM = 26, | ||
| 82 | TIM1_UP_TIM16 = 25, | ||
| 83 | TIM2 = 28, | ||
| 84 | TIM6_DAC = 54, | ||
| 85 | TIM7 = 55, | ||
| 86 | TSC = 77, | ||
| 87 | USART1 = 37, | ||
| 88 | USART2 = 38, | ||
| 89 | USART3 = 39, | ||
| 90 | WWDG = 0, | ||
| 91 | } | ||
| 92 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 93 | #[inline(always)] | ||
| 94 | fn number(self) -> u16 { | ||
| 95 | self as u16 | ||
| 96 | } | ||
| 97 | } | ||
| 98 | |||
| 99 | declare!(ADC1); | ||
| 100 | declare!(CAN1_RX0); | ||
| 101 | declare!(CAN1_RX1); | ||
| 102 | declare!(CAN1_SCE); | ||
| 103 | declare!(CAN1_TX); | ||
| 104 | declare!(COMP); | ||
| 105 | declare!(CRS); | ||
| 106 | declare!(DMA1_Channel1); | ||
| 107 | declare!(DMA1_Channel2); | ||
| 108 | declare!(DMA1_Channel3); | ||
| 109 | declare!(DMA1_Channel4); | ||
| 110 | declare!(DMA1_Channel5); | ||
| 111 | declare!(DMA1_Channel6); | ||
| 112 | declare!(DMA1_Channel7); | ||
| 113 | declare!(DMA2_Channel1); | ||
| 114 | declare!(DMA2_Channel2); | ||
| 115 | declare!(DMA2_Channel3); | ||
| 116 | declare!(DMA2_Channel4); | ||
| 117 | declare!(DMA2_Channel5); | ||
| 118 | declare!(DMA2_Channel6); | ||
| 119 | declare!(DMA2_Channel7); | ||
| 120 | declare!(EXTI0); | ||
| 121 | declare!(EXTI1); | ||
| 122 | declare!(EXTI15_10); | ||
| 123 | declare!(EXTI2); | ||
| 124 | declare!(EXTI3); | ||
| 125 | declare!(EXTI4); | ||
| 126 | declare!(EXTI9_5); | ||
| 127 | declare!(FLASH); | ||
| 128 | declare!(FPU); | ||
| 129 | declare!(I2C1_ER); | ||
| 130 | declare!(I2C1_EV); | ||
| 131 | declare!(I2C2_ER); | ||
| 132 | declare!(I2C2_EV); | ||
| 133 | declare!(I2C3_ER); | ||
| 134 | declare!(I2C3_EV); | ||
| 135 | declare!(LPTIM1); | ||
| 136 | declare!(LPTIM2); | ||
| 137 | declare!(LPUART1); | ||
| 138 | declare!(PVD_PVM); | ||
| 139 | declare!(QUADSPI); | ||
| 140 | declare!(RCC); | ||
| 141 | declare!(RNG); | ||
| 142 | declare!(RTC_Alarm); | ||
| 143 | declare!(RTC_WKUP); | ||
| 144 | declare!(SAI1); | ||
| 145 | declare!(SDMMC1); | ||
| 146 | declare!(SPI1); | ||
| 147 | declare!(SPI2); | ||
| 148 | declare!(SPI3); | ||
| 149 | declare!(SWPMI1); | ||
| 150 | declare!(TAMP_STAMP); | ||
| 151 | declare!(TIM1_BRK_TIM15); | ||
| 152 | declare!(TIM1_CC); | ||
| 153 | declare!(TIM1_TRG_COM); | ||
| 154 | declare!(TIM1_UP_TIM16); | ||
| 155 | declare!(TIM2); | ||
| 156 | declare!(TIM6_DAC); | ||
| 157 | declare!(TIM7); | ||
| 158 | declare!(TSC); | ||
| 159 | declare!(USART1); | ||
| 160 | declare!(USART2); | ||
| 161 | declare!(USART3); | ||
| 162 | declare!(WWDG); | ||
| 163 | } | ||
| 164 | mod interrupt_vector { | ||
| 165 | extern "C" { | ||
| 166 | fn ADC1(); | ||
| 167 | fn CAN1_RX0(); | ||
| 168 | fn CAN1_RX1(); | ||
| 169 | fn CAN1_SCE(); | ||
| 170 | fn CAN1_TX(); | ||
| 171 | fn COMP(); | ||
| 172 | fn CRS(); | ||
| 173 | fn DMA1_Channel1(); | ||
| 174 | fn DMA1_Channel2(); | ||
| 175 | fn DMA1_Channel3(); | ||
| 176 | fn DMA1_Channel4(); | ||
| 177 | fn DMA1_Channel5(); | ||
| 178 | fn DMA1_Channel6(); | ||
| 179 | fn DMA1_Channel7(); | ||
| 180 | fn DMA2_Channel1(); | ||
| 181 | fn DMA2_Channel2(); | ||
| 182 | fn DMA2_Channel3(); | ||
| 183 | fn DMA2_Channel4(); | ||
| 184 | fn DMA2_Channel5(); | ||
| 185 | fn DMA2_Channel6(); | ||
| 186 | fn DMA2_Channel7(); | ||
| 187 | fn EXTI0(); | ||
| 188 | fn EXTI1(); | ||
| 189 | fn EXTI15_10(); | ||
| 190 | fn EXTI2(); | ||
| 191 | fn EXTI3(); | ||
| 192 | fn EXTI4(); | ||
| 193 | fn EXTI9_5(); | ||
| 194 | fn FLASH(); | ||
| 195 | fn FPU(); | ||
| 196 | fn I2C1_ER(); | ||
| 197 | fn I2C1_EV(); | ||
| 198 | fn I2C2_ER(); | ||
| 199 | fn I2C2_EV(); | ||
| 200 | fn I2C3_ER(); | ||
| 201 | fn I2C3_EV(); | ||
| 202 | fn LPTIM1(); | ||
| 203 | fn LPTIM2(); | ||
| 204 | fn LPUART1(); | ||
| 205 | fn PVD_PVM(); | ||
| 206 | fn QUADSPI(); | ||
| 207 | fn RCC(); | ||
| 208 | fn RNG(); | ||
| 209 | fn RTC_Alarm(); | ||
| 210 | fn RTC_WKUP(); | ||
| 211 | fn SAI1(); | ||
| 212 | fn SDMMC1(); | ||
| 213 | fn SPI1(); | ||
| 214 | fn SPI2(); | ||
| 215 | fn SPI3(); | ||
| 216 | fn SWPMI1(); | ||
| 217 | fn TAMP_STAMP(); | ||
| 218 | fn TIM1_BRK_TIM15(); | ||
| 219 | fn TIM1_CC(); | ||
| 220 | fn TIM1_TRG_COM(); | ||
| 221 | fn TIM1_UP_TIM16(); | ||
| 222 | fn TIM2(); | ||
| 223 | fn TIM6_DAC(); | ||
| 224 | fn TIM7(); | ||
| 225 | fn TSC(); | ||
| 226 | fn USART1(); | ||
| 227 | fn USART2(); | ||
| 228 | fn USART3(); | ||
| 229 | fn WWDG(); | ||
| 230 | } | ||
| 231 | pub union Vector { | ||
| 232 | _handler: unsafe extern "C" fn(), | ||
| 233 | _reserved: u32, | ||
| 234 | } | ||
| 235 | #[link_section = ".vector_table.interrupts"] | ||
| 236 | #[no_mangle] | ||
| 237 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 238 | Vector { _handler: WWDG }, | ||
| 239 | Vector { _handler: PVD_PVM }, | ||
| 240 | Vector { | ||
| 241 | _handler: TAMP_STAMP, | ||
| 242 | }, | ||
| 243 | Vector { _handler: RTC_WKUP }, | ||
| 244 | Vector { _handler: FLASH }, | ||
| 245 | Vector { _handler: RCC }, | ||
| 246 | Vector { _handler: EXTI0 }, | ||
| 247 | Vector { _handler: EXTI1 }, | ||
| 248 | Vector { _handler: EXTI2 }, | ||
| 249 | Vector { _handler: EXTI3 }, | ||
| 250 | Vector { _handler: EXTI4 }, | ||
| 251 | Vector { | ||
| 252 | _handler: DMA1_Channel1, | ||
| 253 | }, | ||
| 254 | Vector { | ||
| 255 | _handler: DMA1_Channel2, | ||
| 256 | }, | ||
| 257 | Vector { | ||
| 258 | _handler: DMA1_Channel3, | ||
| 259 | }, | ||
| 260 | Vector { | ||
| 261 | _handler: DMA1_Channel4, | ||
| 262 | }, | ||
| 263 | Vector { | ||
| 264 | _handler: DMA1_Channel5, | ||
| 265 | }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel6, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel7, | ||
| 271 | }, | ||
| 272 | Vector { _handler: ADC1 }, | ||
| 273 | Vector { _handler: CAN1_TX }, | ||
| 274 | Vector { _handler: CAN1_RX0 }, | ||
| 275 | Vector { _handler: CAN1_RX1 }, | ||
| 276 | Vector { _handler: CAN1_SCE }, | ||
| 277 | Vector { _handler: EXTI9_5 }, | ||
| 278 | Vector { | ||
| 279 | _handler: TIM1_BRK_TIM15, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: TIM1_UP_TIM16, | ||
| 283 | }, | ||
| 284 | Vector { | ||
| 285 | _handler: TIM1_TRG_COM, | ||
| 286 | }, | ||
| 287 | Vector { _handler: TIM1_CC }, | ||
| 288 | Vector { _handler: TIM2 }, | ||
| 289 | Vector { _reserved: 0 }, | ||
| 290 | Vector { _reserved: 0 }, | ||
| 291 | Vector { _handler: I2C1_EV }, | ||
| 292 | Vector { _handler: I2C1_ER }, | ||
| 293 | Vector { _handler: I2C2_EV }, | ||
| 294 | Vector { _handler: I2C2_ER }, | ||
| 295 | Vector { _handler: SPI1 }, | ||
| 296 | Vector { _handler: SPI2 }, | ||
| 297 | Vector { _handler: USART1 }, | ||
| 298 | Vector { _handler: USART2 }, | ||
| 299 | Vector { _handler: USART3 }, | ||
| 300 | Vector { | ||
| 301 | _handler: EXTI15_10, | ||
| 302 | }, | ||
| 303 | Vector { | ||
| 304 | _handler: RTC_Alarm, | ||
| 305 | }, | ||
| 306 | Vector { _reserved: 0 }, | ||
| 307 | Vector { _reserved: 0 }, | ||
| 308 | Vector { _reserved: 0 }, | ||
| 309 | Vector { _reserved: 0 }, | ||
| 310 | Vector { _reserved: 0 }, | ||
| 311 | Vector { _reserved: 0 }, | ||
| 312 | Vector { _reserved: 0 }, | ||
| 313 | Vector { _handler: SDMMC1 }, | ||
| 314 | Vector { _reserved: 0 }, | ||
| 315 | Vector { _handler: SPI3 }, | ||
| 316 | Vector { _reserved: 0 }, | ||
| 317 | Vector { _reserved: 0 }, | ||
| 318 | Vector { _handler: TIM6_DAC }, | ||
| 319 | Vector { _handler: TIM7 }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA2_Channel1, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA2_Channel2, | ||
| 325 | }, | ||
| 326 | Vector { | ||
| 327 | _handler: DMA2_Channel3, | ||
| 328 | }, | ||
| 329 | Vector { | ||
| 330 | _handler: DMA2_Channel4, | ||
| 331 | }, | ||
| 332 | Vector { | ||
| 333 | _handler: DMA2_Channel5, | ||
| 334 | }, | ||
| 335 | Vector { _reserved: 0 }, | ||
| 336 | Vector { _reserved: 0 }, | ||
| 337 | Vector { _reserved: 0 }, | ||
| 338 | Vector { _handler: COMP }, | ||
| 339 | Vector { _handler: LPTIM1 }, | ||
| 340 | Vector { _handler: LPTIM2 }, | ||
| 341 | Vector { _reserved: 0 }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA2_Channel6, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA2_Channel7, | ||
| 347 | }, | ||
| 348 | Vector { _handler: LPUART1 }, | ||
| 349 | Vector { _handler: QUADSPI }, | ||
| 350 | Vector { _handler: I2C3_EV }, | ||
| 351 | Vector { _handler: I2C3_ER }, | ||
| 352 | Vector { _handler: SAI1 }, | ||
| 353 | Vector { _reserved: 0 }, | ||
| 354 | Vector { _handler: SWPMI1 }, | ||
| 355 | Vector { _handler: TSC }, | ||
| 356 | Vector { _reserved: 0 }, | ||
| 357 | Vector { _reserved: 0 }, | ||
| 358 | Vector { _handler: RNG }, | ||
| 359 | Vector { _handler: FPU }, | ||
| 360 | Vector { _handler: CRS }, | ||
| 361 | ]; | ||
| 362 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 363 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 364 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 365 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l431cc.rs b/embassy-stm32/src/chip/stm32l431cc.rs index fb418c2ab..c4f33502f 100644 --- a/embassy-stm32/src/chip/stm32l431cc.rs +++ b/embassy-stm32/src/chip/stm32l431cc.rs | |||
| @@ -1,18 +1,365 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, | 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, |
| 11 | SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, | 11 | RTC, SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, |
| 12 | USART2, USART3, WWDG | 12 | USART2, USART3, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DMA1_Channel1 = 11, | ||
| 35 | DMA1_Channel2 = 12, | ||
| 36 | DMA1_Channel3 = 13, | ||
| 37 | DMA1_Channel4 = 14, | ||
| 38 | DMA1_Channel5 = 15, | ||
| 39 | DMA1_Channel6 = 16, | ||
| 40 | DMA1_Channel7 = 17, | ||
| 41 | DMA2_Channel1 = 56, | ||
| 42 | DMA2_Channel2 = 57, | ||
| 43 | DMA2_Channel3 = 58, | ||
| 44 | DMA2_Channel4 = 59, | ||
| 45 | DMA2_Channel5 = 60, | ||
| 46 | DMA2_Channel6 = 68, | ||
| 47 | DMA2_Channel7 = 69, | ||
| 48 | EXTI0 = 6, | ||
| 49 | EXTI1 = 7, | ||
| 50 | EXTI15_10 = 40, | ||
| 51 | EXTI2 = 8, | ||
| 52 | EXTI3 = 9, | ||
| 53 | EXTI4 = 10, | ||
| 54 | EXTI9_5 = 23, | ||
| 55 | FLASH = 4, | ||
| 56 | FPU = 81, | ||
| 57 | I2C1_ER = 32, | ||
| 58 | I2C1_EV = 31, | ||
| 59 | I2C2_ER = 34, | ||
| 60 | I2C2_EV = 33, | ||
| 61 | I2C3_ER = 73, | ||
| 62 | I2C3_EV = 72, | ||
| 63 | LPTIM1 = 65, | ||
| 64 | LPTIM2 = 66, | ||
| 65 | LPUART1 = 70, | ||
| 66 | PVD_PVM = 1, | ||
| 67 | QUADSPI = 71, | ||
| 68 | RCC = 5, | ||
| 69 | RNG = 80, | ||
| 70 | RTC_Alarm = 41, | ||
| 71 | RTC_WKUP = 3, | ||
| 72 | SAI1 = 74, | ||
| 73 | SDMMC1 = 49, | ||
| 74 | SPI1 = 35, | ||
| 75 | SPI2 = 36, | ||
| 76 | SPI3 = 51, | ||
| 77 | SWPMI1 = 76, | ||
| 78 | TAMP_STAMP = 2, | ||
| 79 | TIM1_BRK_TIM15 = 24, | ||
| 80 | TIM1_CC = 27, | ||
| 81 | TIM1_TRG_COM = 26, | ||
| 82 | TIM1_UP_TIM16 = 25, | ||
| 83 | TIM2 = 28, | ||
| 84 | TIM6_DAC = 54, | ||
| 85 | TIM7 = 55, | ||
| 86 | TSC = 77, | ||
| 87 | USART1 = 37, | ||
| 88 | USART2 = 38, | ||
| 89 | USART3 = 39, | ||
| 90 | WWDG = 0, | ||
| 91 | } | ||
| 92 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 93 | #[inline(always)] | ||
| 94 | fn number(self) -> u16 { | ||
| 95 | self as u16 | ||
| 96 | } | ||
| 97 | } | ||
| 98 | |||
| 99 | declare!(ADC1); | ||
| 100 | declare!(CAN1_RX0); | ||
| 101 | declare!(CAN1_RX1); | ||
| 102 | declare!(CAN1_SCE); | ||
| 103 | declare!(CAN1_TX); | ||
| 104 | declare!(COMP); | ||
| 105 | declare!(CRS); | ||
| 106 | declare!(DMA1_Channel1); | ||
| 107 | declare!(DMA1_Channel2); | ||
| 108 | declare!(DMA1_Channel3); | ||
| 109 | declare!(DMA1_Channel4); | ||
| 110 | declare!(DMA1_Channel5); | ||
| 111 | declare!(DMA1_Channel6); | ||
| 112 | declare!(DMA1_Channel7); | ||
| 113 | declare!(DMA2_Channel1); | ||
| 114 | declare!(DMA2_Channel2); | ||
| 115 | declare!(DMA2_Channel3); | ||
| 116 | declare!(DMA2_Channel4); | ||
| 117 | declare!(DMA2_Channel5); | ||
| 118 | declare!(DMA2_Channel6); | ||
| 119 | declare!(DMA2_Channel7); | ||
| 120 | declare!(EXTI0); | ||
| 121 | declare!(EXTI1); | ||
| 122 | declare!(EXTI15_10); | ||
| 123 | declare!(EXTI2); | ||
| 124 | declare!(EXTI3); | ||
| 125 | declare!(EXTI4); | ||
| 126 | declare!(EXTI9_5); | ||
| 127 | declare!(FLASH); | ||
| 128 | declare!(FPU); | ||
| 129 | declare!(I2C1_ER); | ||
| 130 | declare!(I2C1_EV); | ||
| 131 | declare!(I2C2_ER); | ||
| 132 | declare!(I2C2_EV); | ||
| 133 | declare!(I2C3_ER); | ||
| 134 | declare!(I2C3_EV); | ||
| 135 | declare!(LPTIM1); | ||
| 136 | declare!(LPTIM2); | ||
| 137 | declare!(LPUART1); | ||
| 138 | declare!(PVD_PVM); | ||
| 139 | declare!(QUADSPI); | ||
| 140 | declare!(RCC); | ||
| 141 | declare!(RNG); | ||
| 142 | declare!(RTC_Alarm); | ||
| 143 | declare!(RTC_WKUP); | ||
| 144 | declare!(SAI1); | ||
| 145 | declare!(SDMMC1); | ||
| 146 | declare!(SPI1); | ||
| 147 | declare!(SPI2); | ||
| 148 | declare!(SPI3); | ||
| 149 | declare!(SWPMI1); | ||
| 150 | declare!(TAMP_STAMP); | ||
| 151 | declare!(TIM1_BRK_TIM15); | ||
| 152 | declare!(TIM1_CC); | ||
| 153 | declare!(TIM1_TRG_COM); | ||
| 154 | declare!(TIM1_UP_TIM16); | ||
| 155 | declare!(TIM2); | ||
| 156 | declare!(TIM6_DAC); | ||
| 157 | declare!(TIM7); | ||
| 158 | declare!(TSC); | ||
| 159 | declare!(USART1); | ||
| 160 | declare!(USART2); | ||
| 161 | declare!(USART3); | ||
| 162 | declare!(WWDG); | ||
| 163 | } | ||
| 164 | mod interrupt_vector { | ||
| 165 | extern "C" { | ||
| 166 | fn ADC1(); | ||
| 167 | fn CAN1_RX0(); | ||
| 168 | fn CAN1_RX1(); | ||
| 169 | fn CAN1_SCE(); | ||
| 170 | fn CAN1_TX(); | ||
| 171 | fn COMP(); | ||
| 172 | fn CRS(); | ||
| 173 | fn DMA1_Channel1(); | ||
| 174 | fn DMA1_Channel2(); | ||
| 175 | fn DMA1_Channel3(); | ||
| 176 | fn DMA1_Channel4(); | ||
| 177 | fn DMA1_Channel5(); | ||
| 178 | fn DMA1_Channel6(); | ||
| 179 | fn DMA1_Channel7(); | ||
| 180 | fn DMA2_Channel1(); | ||
| 181 | fn DMA2_Channel2(); | ||
| 182 | fn DMA2_Channel3(); | ||
| 183 | fn DMA2_Channel4(); | ||
| 184 | fn DMA2_Channel5(); | ||
| 185 | fn DMA2_Channel6(); | ||
| 186 | fn DMA2_Channel7(); | ||
| 187 | fn EXTI0(); | ||
| 188 | fn EXTI1(); | ||
| 189 | fn EXTI15_10(); | ||
| 190 | fn EXTI2(); | ||
| 191 | fn EXTI3(); | ||
| 192 | fn EXTI4(); | ||
| 193 | fn EXTI9_5(); | ||
| 194 | fn FLASH(); | ||
| 195 | fn FPU(); | ||
| 196 | fn I2C1_ER(); | ||
| 197 | fn I2C1_EV(); | ||
| 198 | fn I2C2_ER(); | ||
| 199 | fn I2C2_EV(); | ||
| 200 | fn I2C3_ER(); | ||
| 201 | fn I2C3_EV(); | ||
| 202 | fn LPTIM1(); | ||
| 203 | fn LPTIM2(); | ||
| 204 | fn LPUART1(); | ||
| 205 | fn PVD_PVM(); | ||
| 206 | fn QUADSPI(); | ||
| 207 | fn RCC(); | ||
| 208 | fn RNG(); | ||
| 209 | fn RTC_Alarm(); | ||
| 210 | fn RTC_WKUP(); | ||
| 211 | fn SAI1(); | ||
| 212 | fn SDMMC1(); | ||
| 213 | fn SPI1(); | ||
| 214 | fn SPI2(); | ||
| 215 | fn SPI3(); | ||
| 216 | fn SWPMI1(); | ||
| 217 | fn TAMP_STAMP(); | ||
| 218 | fn TIM1_BRK_TIM15(); | ||
| 219 | fn TIM1_CC(); | ||
| 220 | fn TIM1_TRG_COM(); | ||
| 221 | fn TIM1_UP_TIM16(); | ||
| 222 | fn TIM2(); | ||
| 223 | fn TIM6_DAC(); | ||
| 224 | fn TIM7(); | ||
| 225 | fn TSC(); | ||
| 226 | fn USART1(); | ||
| 227 | fn USART2(); | ||
| 228 | fn USART3(); | ||
| 229 | fn WWDG(); | ||
| 230 | } | ||
| 231 | pub union Vector { | ||
| 232 | _handler: unsafe extern "C" fn(), | ||
| 233 | _reserved: u32, | ||
| 234 | } | ||
| 235 | #[link_section = ".vector_table.interrupts"] | ||
| 236 | #[no_mangle] | ||
| 237 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 238 | Vector { _handler: WWDG }, | ||
| 239 | Vector { _handler: PVD_PVM }, | ||
| 240 | Vector { | ||
| 241 | _handler: TAMP_STAMP, | ||
| 242 | }, | ||
| 243 | Vector { _handler: RTC_WKUP }, | ||
| 244 | Vector { _handler: FLASH }, | ||
| 245 | Vector { _handler: RCC }, | ||
| 246 | Vector { _handler: EXTI0 }, | ||
| 247 | Vector { _handler: EXTI1 }, | ||
| 248 | Vector { _handler: EXTI2 }, | ||
| 249 | Vector { _handler: EXTI3 }, | ||
| 250 | Vector { _handler: EXTI4 }, | ||
| 251 | Vector { | ||
| 252 | _handler: DMA1_Channel1, | ||
| 253 | }, | ||
| 254 | Vector { | ||
| 255 | _handler: DMA1_Channel2, | ||
| 256 | }, | ||
| 257 | Vector { | ||
| 258 | _handler: DMA1_Channel3, | ||
| 259 | }, | ||
| 260 | Vector { | ||
| 261 | _handler: DMA1_Channel4, | ||
| 262 | }, | ||
| 263 | Vector { | ||
| 264 | _handler: DMA1_Channel5, | ||
| 265 | }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel6, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel7, | ||
| 271 | }, | ||
| 272 | Vector { _handler: ADC1 }, | ||
| 273 | Vector { _handler: CAN1_TX }, | ||
| 274 | Vector { _handler: CAN1_RX0 }, | ||
| 275 | Vector { _handler: CAN1_RX1 }, | ||
| 276 | Vector { _handler: CAN1_SCE }, | ||
| 277 | Vector { _handler: EXTI9_5 }, | ||
| 278 | Vector { | ||
| 279 | _handler: TIM1_BRK_TIM15, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: TIM1_UP_TIM16, | ||
| 283 | }, | ||
| 284 | Vector { | ||
| 285 | _handler: TIM1_TRG_COM, | ||
| 286 | }, | ||
| 287 | Vector { _handler: TIM1_CC }, | ||
| 288 | Vector { _handler: TIM2 }, | ||
| 289 | Vector { _reserved: 0 }, | ||
| 290 | Vector { _reserved: 0 }, | ||
| 291 | Vector { _handler: I2C1_EV }, | ||
| 292 | Vector { _handler: I2C1_ER }, | ||
| 293 | Vector { _handler: I2C2_EV }, | ||
| 294 | Vector { _handler: I2C2_ER }, | ||
| 295 | Vector { _handler: SPI1 }, | ||
| 296 | Vector { _handler: SPI2 }, | ||
| 297 | Vector { _handler: USART1 }, | ||
| 298 | Vector { _handler: USART2 }, | ||
| 299 | Vector { _handler: USART3 }, | ||
| 300 | Vector { | ||
| 301 | _handler: EXTI15_10, | ||
| 302 | }, | ||
| 303 | Vector { | ||
| 304 | _handler: RTC_Alarm, | ||
| 305 | }, | ||
| 306 | Vector { _reserved: 0 }, | ||
| 307 | Vector { _reserved: 0 }, | ||
| 308 | Vector { _reserved: 0 }, | ||
| 309 | Vector { _reserved: 0 }, | ||
| 310 | Vector { _reserved: 0 }, | ||
| 311 | Vector { _reserved: 0 }, | ||
| 312 | Vector { _reserved: 0 }, | ||
| 313 | Vector { _handler: SDMMC1 }, | ||
| 314 | Vector { _reserved: 0 }, | ||
| 315 | Vector { _handler: SPI3 }, | ||
| 316 | Vector { _reserved: 0 }, | ||
| 317 | Vector { _reserved: 0 }, | ||
| 318 | Vector { _handler: TIM6_DAC }, | ||
| 319 | Vector { _handler: TIM7 }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA2_Channel1, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA2_Channel2, | ||
| 325 | }, | ||
| 326 | Vector { | ||
| 327 | _handler: DMA2_Channel3, | ||
| 328 | }, | ||
| 329 | Vector { | ||
| 330 | _handler: DMA2_Channel4, | ||
| 331 | }, | ||
| 332 | Vector { | ||
| 333 | _handler: DMA2_Channel5, | ||
| 334 | }, | ||
| 335 | Vector { _reserved: 0 }, | ||
| 336 | Vector { _reserved: 0 }, | ||
| 337 | Vector { _reserved: 0 }, | ||
| 338 | Vector { _handler: COMP }, | ||
| 339 | Vector { _handler: LPTIM1 }, | ||
| 340 | Vector { _handler: LPTIM2 }, | ||
| 341 | Vector { _reserved: 0 }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA2_Channel6, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA2_Channel7, | ||
| 347 | }, | ||
| 348 | Vector { _handler: LPUART1 }, | ||
| 349 | Vector { _handler: QUADSPI }, | ||
| 350 | Vector { _handler: I2C3_EV }, | ||
| 351 | Vector { _handler: I2C3_ER }, | ||
| 352 | Vector { _handler: SAI1 }, | ||
| 353 | Vector { _reserved: 0 }, | ||
| 354 | Vector { _handler: SWPMI1 }, | ||
| 355 | Vector { _handler: TSC }, | ||
| 356 | Vector { _reserved: 0 }, | ||
| 357 | Vector { _reserved: 0 }, | ||
| 358 | Vector { _handler: RNG }, | ||
| 359 | Vector { _handler: FPU }, | ||
| 360 | Vector { _handler: CRS }, | ||
| 361 | ]; | ||
| 362 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 363 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 364 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 365 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l431kb.rs b/embassy-stm32/src/chip/stm32l431kb.rs index 3959d4989..a55b3860f 100644 --- a/embassy-stm32/src/chip/stm32l431kb.rs +++ b/embassy-stm32/src/chip/stm32l431kb.rs | |||
| @@ -1,17 +1,365 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, SAI1, | 10 | PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, |
| 11 | SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, USART2, WWDG | 11 | SAI1, SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, USART2, |
| 12 | WWDG | ||
| 12 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 13 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DMA1_Channel1 = 11, | ||
| 35 | DMA1_Channel2 = 12, | ||
| 36 | DMA1_Channel3 = 13, | ||
| 37 | DMA1_Channel4 = 14, | ||
| 38 | DMA1_Channel5 = 15, | ||
| 39 | DMA1_Channel6 = 16, | ||
| 40 | DMA1_Channel7 = 17, | ||
| 41 | DMA2_Channel1 = 56, | ||
| 42 | DMA2_Channel2 = 57, | ||
| 43 | DMA2_Channel3 = 58, | ||
| 44 | DMA2_Channel4 = 59, | ||
| 45 | DMA2_Channel5 = 60, | ||
| 46 | DMA2_Channel6 = 68, | ||
| 47 | DMA2_Channel7 = 69, | ||
| 48 | EXTI0 = 6, | ||
| 49 | EXTI1 = 7, | ||
| 50 | EXTI15_10 = 40, | ||
| 51 | EXTI2 = 8, | ||
| 52 | EXTI3 = 9, | ||
| 53 | EXTI4 = 10, | ||
| 54 | EXTI9_5 = 23, | ||
| 55 | FLASH = 4, | ||
| 56 | FPU = 81, | ||
| 57 | I2C1_ER = 32, | ||
| 58 | I2C1_EV = 31, | ||
| 59 | I2C2_ER = 34, | ||
| 60 | I2C2_EV = 33, | ||
| 61 | I2C3_ER = 73, | ||
| 62 | I2C3_EV = 72, | ||
| 63 | LPTIM1 = 65, | ||
| 64 | LPTIM2 = 66, | ||
| 65 | LPUART1 = 70, | ||
| 66 | PVD_PVM = 1, | ||
| 67 | QUADSPI = 71, | ||
| 68 | RCC = 5, | ||
| 69 | RNG = 80, | ||
| 70 | RTC_Alarm = 41, | ||
| 71 | RTC_WKUP = 3, | ||
| 72 | SAI1 = 74, | ||
| 73 | SDMMC1 = 49, | ||
| 74 | SPI1 = 35, | ||
| 75 | SPI2 = 36, | ||
| 76 | SPI3 = 51, | ||
| 77 | SWPMI1 = 76, | ||
| 78 | TAMP_STAMP = 2, | ||
| 79 | TIM1_BRK_TIM15 = 24, | ||
| 80 | TIM1_CC = 27, | ||
| 81 | TIM1_TRG_COM = 26, | ||
| 82 | TIM1_UP_TIM16 = 25, | ||
| 83 | TIM2 = 28, | ||
| 84 | TIM6_DAC = 54, | ||
| 85 | TIM7 = 55, | ||
| 86 | TSC = 77, | ||
| 87 | USART1 = 37, | ||
| 88 | USART2 = 38, | ||
| 89 | USART3 = 39, | ||
| 90 | WWDG = 0, | ||
| 91 | } | ||
| 92 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 93 | #[inline(always)] | ||
| 94 | fn number(self) -> u16 { | ||
| 95 | self as u16 | ||
| 96 | } | ||
| 97 | } | ||
| 98 | |||
| 99 | declare!(ADC1); | ||
| 100 | declare!(CAN1_RX0); | ||
| 101 | declare!(CAN1_RX1); | ||
| 102 | declare!(CAN1_SCE); | ||
| 103 | declare!(CAN1_TX); | ||
| 104 | declare!(COMP); | ||
| 105 | declare!(CRS); | ||
| 106 | declare!(DMA1_Channel1); | ||
| 107 | declare!(DMA1_Channel2); | ||
| 108 | declare!(DMA1_Channel3); | ||
| 109 | declare!(DMA1_Channel4); | ||
| 110 | declare!(DMA1_Channel5); | ||
| 111 | declare!(DMA1_Channel6); | ||
| 112 | declare!(DMA1_Channel7); | ||
| 113 | declare!(DMA2_Channel1); | ||
| 114 | declare!(DMA2_Channel2); | ||
| 115 | declare!(DMA2_Channel3); | ||
| 116 | declare!(DMA2_Channel4); | ||
| 117 | declare!(DMA2_Channel5); | ||
| 118 | declare!(DMA2_Channel6); | ||
| 119 | declare!(DMA2_Channel7); | ||
| 120 | declare!(EXTI0); | ||
| 121 | declare!(EXTI1); | ||
| 122 | declare!(EXTI15_10); | ||
| 123 | declare!(EXTI2); | ||
| 124 | declare!(EXTI3); | ||
| 125 | declare!(EXTI4); | ||
| 126 | declare!(EXTI9_5); | ||
| 127 | declare!(FLASH); | ||
| 128 | declare!(FPU); | ||
| 129 | declare!(I2C1_ER); | ||
| 130 | declare!(I2C1_EV); | ||
| 131 | declare!(I2C2_ER); | ||
| 132 | declare!(I2C2_EV); | ||
| 133 | declare!(I2C3_ER); | ||
| 134 | declare!(I2C3_EV); | ||
| 135 | declare!(LPTIM1); | ||
| 136 | declare!(LPTIM2); | ||
| 137 | declare!(LPUART1); | ||
| 138 | declare!(PVD_PVM); | ||
| 139 | declare!(QUADSPI); | ||
| 140 | declare!(RCC); | ||
| 141 | declare!(RNG); | ||
| 142 | declare!(RTC_Alarm); | ||
| 143 | declare!(RTC_WKUP); | ||
| 144 | declare!(SAI1); | ||
| 145 | declare!(SDMMC1); | ||
| 146 | declare!(SPI1); | ||
| 147 | declare!(SPI2); | ||
| 148 | declare!(SPI3); | ||
| 149 | declare!(SWPMI1); | ||
| 150 | declare!(TAMP_STAMP); | ||
| 151 | declare!(TIM1_BRK_TIM15); | ||
| 152 | declare!(TIM1_CC); | ||
| 153 | declare!(TIM1_TRG_COM); | ||
| 154 | declare!(TIM1_UP_TIM16); | ||
| 155 | declare!(TIM2); | ||
| 156 | declare!(TIM6_DAC); | ||
| 157 | declare!(TIM7); | ||
| 158 | declare!(TSC); | ||
| 159 | declare!(USART1); | ||
| 160 | declare!(USART2); | ||
| 161 | declare!(USART3); | ||
| 162 | declare!(WWDG); | ||
| 163 | } | ||
| 164 | mod interrupt_vector { | ||
| 165 | extern "C" { | ||
| 166 | fn ADC1(); | ||
| 167 | fn CAN1_RX0(); | ||
| 168 | fn CAN1_RX1(); | ||
| 169 | fn CAN1_SCE(); | ||
| 170 | fn CAN1_TX(); | ||
| 171 | fn COMP(); | ||
| 172 | fn CRS(); | ||
| 173 | fn DMA1_Channel1(); | ||
| 174 | fn DMA1_Channel2(); | ||
| 175 | fn DMA1_Channel3(); | ||
| 176 | fn DMA1_Channel4(); | ||
| 177 | fn DMA1_Channel5(); | ||
| 178 | fn DMA1_Channel6(); | ||
| 179 | fn DMA1_Channel7(); | ||
| 180 | fn DMA2_Channel1(); | ||
| 181 | fn DMA2_Channel2(); | ||
| 182 | fn DMA2_Channel3(); | ||
| 183 | fn DMA2_Channel4(); | ||
| 184 | fn DMA2_Channel5(); | ||
| 185 | fn DMA2_Channel6(); | ||
| 186 | fn DMA2_Channel7(); | ||
| 187 | fn EXTI0(); | ||
| 188 | fn EXTI1(); | ||
| 189 | fn EXTI15_10(); | ||
| 190 | fn EXTI2(); | ||
| 191 | fn EXTI3(); | ||
| 192 | fn EXTI4(); | ||
| 193 | fn EXTI9_5(); | ||
| 194 | fn FLASH(); | ||
| 195 | fn FPU(); | ||
| 196 | fn I2C1_ER(); | ||
| 197 | fn I2C1_EV(); | ||
| 198 | fn I2C2_ER(); | ||
| 199 | fn I2C2_EV(); | ||
| 200 | fn I2C3_ER(); | ||
| 201 | fn I2C3_EV(); | ||
| 202 | fn LPTIM1(); | ||
| 203 | fn LPTIM2(); | ||
| 204 | fn LPUART1(); | ||
| 205 | fn PVD_PVM(); | ||
| 206 | fn QUADSPI(); | ||
| 207 | fn RCC(); | ||
| 208 | fn RNG(); | ||
| 209 | fn RTC_Alarm(); | ||
| 210 | fn RTC_WKUP(); | ||
| 211 | fn SAI1(); | ||
| 212 | fn SDMMC1(); | ||
| 213 | fn SPI1(); | ||
| 214 | fn SPI2(); | ||
| 215 | fn SPI3(); | ||
| 216 | fn SWPMI1(); | ||
| 217 | fn TAMP_STAMP(); | ||
| 218 | fn TIM1_BRK_TIM15(); | ||
| 219 | fn TIM1_CC(); | ||
| 220 | fn TIM1_TRG_COM(); | ||
| 221 | fn TIM1_UP_TIM16(); | ||
| 222 | fn TIM2(); | ||
| 223 | fn TIM6_DAC(); | ||
| 224 | fn TIM7(); | ||
| 225 | fn TSC(); | ||
| 226 | fn USART1(); | ||
| 227 | fn USART2(); | ||
| 228 | fn USART3(); | ||
| 229 | fn WWDG(); | ||
| 230 | } | ||
| 231 | pub union Vector { | ||
| 232 | _handler: unsafe extern "C" fn(), | ||
| 233 | _reserved: u32, | ||
| 234 | } | ||
| 235 | #[link_section = ".vector_table.interrupts"] | ||
| 236 | #[no_mangle] | ||
| 237 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 238 | Vector { _handler: WWDG }, | ||
| 239 | Vector { _handler: PVD_PVM }, | ||
| 240 | Vector { | ||
| 241 | _handler: TAMP_STAMP, | ||
| 242 | }, | ||
| 243 | Vector { _handler: RTC_WKUP }, | ||
| 244 | Vector { _handler: FLASH }, | ||
| 245 | Vector { _handler: RCC }, | ||
| 246 | Vector { _handler: EXTI0 }, | ||
| 247 | Vector { _handler: EXTI1 }, | ||
| 248 | Vector { _handler: EXTI2 }, | ||
| 249 | Vector { _handler: EXTI3 }, | ||
| 250 | Vector { _handler: EXTI4 }, | ||
| 251 | Vector { | ||
| 252 | _handler: DMA1_Channel1, | ||
| 253 | }, | ||
| 254 | Vector { | ||
| 255 | _handler: DMA1_Channel2, | ||
| 256 | }, | ||
| 257 | Vector { | ||
| 258 | _handler: DMA1_Channel3, | ||
| 259 | }, | ||
| 260 | Vector { | ||
| 261 | _handler: DMA1_Channel4, | ||
| 262 | }, | ||
| 263 | Vector { | ||
| 264 | _handler: DMA1_Channel5, | ||
| 265 | }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel6, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel7, | ||
| 271 | }, | ||
| 272 | Vector { _handler: ADC1 }, | ||
| 273 | Vector { _handler: CAN1_TX }, | ||
| 274 | Vector { _handler: CAN1_RX0 }, | ||
| 275 | Vector { _handler: CAN1_RX1 }, | ||
| 276 | Vector { _handler: CAN1_SCE }, | ||
| 277 | Vector { _handler: EXTI9_5 }, | ||
| 278 | Vector { | ||
| 279 | _handler: TIM1_BRK_TIM15, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: TIM1_UP_TIM16, | ||
| 283 | }, | ||
| 284 | Vector { | ||
| 285 | _handler: TIM1_TRG_COM, | ||
| 286 | }, | ||
| 287 | Vector { _handler: TIM1_CC }, | ||
| 288 | Vector { _handler: TIM2 }, | ||
| 289 | Vector { _reserved: 0 }, | ||
| 290 | Vector { _reserved: 0 }, | ||
| 291 | Vector { _handler: I2C1_EV }, | ||
| 292 | Vector { _handler: I2C1_ER }, | ||
| 293 | Vector { _handler: I2C2_EV }, | ||
| 294 | Vector { _handler: I2C2_ER }, | ||
| 295 | Vector { _handler: SPI1 }, | ||
| 296 | Vector { _handler: SPI2 }, | ||
| 297 | Vector { _handler: USART1 }, | ||
| 298 | Vector { _handler: USART2 }, | ||
| 299 | Vector { _handler: USART3 }, | ||
| 300 | Vector { | ||
| 301 | _handler: EXTI15_10, | ||
| 302 | }, | ||
| 303 | Vector { | ||
| 304 | _handler: RTC_Alarm, | ||
| 305 | }, | ||
| 306 | Vector { _reserved: 0 }, | ||
| 307 | Vector { _reserved: 0 }, | ||
| 308 | Vector { _reserved: 0 }, | ||
| 309 | Vector { _reserved: 0 }, | ||
| 310 | Vector { _reserved: 0 }, | ||
| 311 | Vector { _reserved: 0 }, | ||
| 312 | Vector { _reserved: 0 }, | ||
| 313 | Vector { _handler: SDMMC1 }, | ||
| 314 | Vector { _reserved: 0 }, | ||
| 315 | Vector { _handler: SPI3 }, | ||
| 316 | Vector { _reserved: 0 }, | ||
| 317 | Vector { _reserved: 0 }, | ||
| 318 | Vector { _handler: TIM6_DAC }, | ||
| 319 | Vector { _handler: TIM7 }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA2_Channel1, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA2_Channel2, | ||
| 325 | }, | ||
| 326 | Vector { | ||
| 327 | _handler: DMA2_Channel3, | ||
| 328 | }, | ||
| 329 | Vector { | ||
| 330 | _handler: DMA2_Channel4, | ||
| 331 | }, | ||
| 332 | Vector { | ||
| 333 | _handler: DMA2_Channel5, | ||
| 334 | }, | ||
| 335 | Vector { _reserved: 0 }, | ||
| 336 | Vector { _reserved: 0 }, | ||
| 337 | Vector { _reserved: 0 }, | ||
| 338 | Vector { _handler: COMP }, | ||
| 339 | Vector { _handler: LPTIM1 }, | ||
| 340 | Vector { _handler: LPTIM2 }, | ||
| 341 | Vector { _reserved: 0 }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA2_Channel6, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA2_Channel7, | ||
| 347 | }, | ||
| 348 | Vector { _handler: LPUART1 }, | ||
| 349 | Vector { _handler: QUADSPI }, | ||
| 350 | Vector { _handler: I2C3_EV }, | ||
| 351 | Vector { _handler: I2C3_ER }, | ||
| 352 | Vector { _handler: SAI1 }, | ||
| 353 | Vector { _reserved: 0 }, | ||
| 354 | Vector { _handler: SWPMI1 }, | ||
| 355 | Vector { _handler: TSC }, | ||
| 356 | Vector { _reserved: 0 }, | ||
| 357 | Vector { _reserved: 0 }, | ||
| 358 | Vector { _handler: RNG }, | ||
| 359 | Vector { _handler: FPU }, | ||
| 360 | Vector { _handler: CRS }, | ||
| 361 | ]; | ||
| 362 | } | ||
| 15 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 363 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 16 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 364 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 17 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 365 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l431kc.rs b/embassy-stm32/src/chip/stm32l431kc.rs index 3959d4989..a55b3860f 100644 --- a/embassy-stm32/src/chip/stm32l431kc.rs +++ b/embassy-stm32/src/chip/stm32l431kc.rs | |||
| @@ -1,17 +1,365 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, SAI1, | 10 | PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, |
| 11 | SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, USART2, WWDG | 11 | SAI1, SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, USART2, |
| 12 | WWDG | ||
| 12 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 13 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 14 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DMA1_Channel1 = 11, | ||
| 35 | DMA1_Channel2 = 12, | ||
| 36 | DMA1_Channel3 = 13, | ||
| 37 | DMA1_Channel4 = 14, | ||
| 38 | DMA1_Channel5 = 15, | ||
| 39 | DMA1_Channel6 = 16, | ||
| 40 | DMA1_Channel7 = 17, | ||
| 41 | DMA2_Channel1 = 56, | ||
| 42 | DMA2_Channel2 = 57, | ||
| 43 | DMA2_Channel3 = 58, | ||
| 44 | DMA2_Channel4 = 59, | ||
| 45 | DMA2_Channel5 = 60, | ||
| 46 | DMA2_Channel6 = 68, | ||
| 47 | DMA2_Channel7 = 69, | ||
| 48 | EXTI0 = 6, | ||
| 49 | EXTI1 = 7, | ||
| 50 | EXTI15_10 = 40, | ||
| 51 | EXTI2 = 8, | ||
| 52 | EXTI3 = 9, | ||
| 53 | EXTI4 = 10, | ||
| 54 | EXTI9_5 = 23, | ||
| 55 | FLASH = 4, | ||
| 56 | FPU = 81, | ||
| 57 | I2C1_ER = 32, | ||
| 58 | I2C1_EV = 31, | ||
| 59 | I2C2_ER = 34, | ||
| 60 | I2C2_EV = 33, | ||
| 61 | I2C3_ER = 73, | ||
| 62 | I2C3_EV = 72, | ||
| 63 | LPTIM1 = 65, | ||
| 64 | LPTIM2 = 66, | ||
| 65 | LPUART1 = 70, | ||
| 66 | PVD_PVM = 1, | ||
| 67 | QUADSPI = 71, | ||
| 68 | RCC = 5, | ||
| 69 | RNG = 80, | ||
| 70 | RTC_Alarm = 41, | ||
| 71 | RTC_WKUP = 3, | ||
| 72 | SAI1 = 74, | ||
| 73 | SDMMC1 = 49, | ||
| 74 | SPI1 = 35, | ||
| 75 | SPI2 = 36, | ||
| 76 | SPI3 = 51, | ||
| 77 | SWPMI1 = 76, | ||
| 78 | TAMP_STAMP = 2, | ||
| 79 | TIM1_BRK_TIM15 = 24, | ||
| 80 | TIM1_CC = 27, | ||
| 81 | TIM1_TRG_COM = 26, | ||
| 82 | TIM1_UP_TIM16 = 25, | ||
| 83 | TIM2 = 28, | ||
| 84 | TIM6_DAC = 54, | ||
| 85 | TIM7 = 55, | ||
| 86 | TSC = 77, | ||
| 87 | USART1 = 37, | ||
| 88 | USART2 = 38, | ||
| 89 | USART3 = 39, | ||
| 90 | WWDG = 0, | ||
| 91 | } | ||
| 92 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 93 | #[inline(always)] | ||
| 94 | fn number(self) -> u16 { | ||
| 95 | self as u16 | ||
| 96 | } | ||
| 97 | } | ||
| 98 | |||
| 99 | declare!(ADC1); | ||
| 100 | declare!(CAN1_RX0); | ||
| 101 | declare!(CAN1_RX1); | ||
| 102 | declare!(CAN1_SCE); | ||
| 103 | declare!(CAN1_TX); | ||
| 104 | declare!(COMP); | ||
| 105 | declare!(CRS); | ||
| 106 | declare!(DMA1_Channel1); | ||
| 107 | declare!(DMA1_Channel2); | ||
| 108 | declare!(DMA1_Channel3); | ||
| 109 | declare!(DMA1_Channel4); | ||
| 110 | declare!(DMA1_Channel5); | ||
| 111 | declare!(DMA1_Channel6); | ||
| 112 | declare!(DMA1_Channel7); | ||
| 113 | declare!(DMA2_Channel1); | ||
| 114 | declare!(DMA2_Channel2); | ||
| 115 | declare!(DMA2_Channel3); | ||
| 116 | declare!(DMA2_Channel4); | ||
| 117 | declare!(DMA2_Channel5); | ||
| 118 | declare!(DMA2_Channel6); | ||
| 119 | declare!(DMA2_Channel7); | ||
| 120 | declare!(EXTI0); | ||
| 121 | declare!(EXTI1); | ||
| 122 | declare!(EXTI15_10); | ||
| 123 | declare!(EXTI2); | ||
| 124 | declare!(EXTI3); | ||
| 125 | declare!(EXTI4); | ||
| 126 | declare!(EXTI9_5); | ||
| 127 | declare!(FLASH); | ||
| 128 | declare!(FPU); | ||
| 129 | declare!(I2C1_ER); | ||
| 130 | declare!(I2C1_EV); | ||
| 131 | declare!(I2C2_ER); | ||
| 132 | declare!(I2C2_EV); | ||
| 133 | declare!(I2C3_ER); | ||
| 134 | declare!(I2C3_EV); | ||
| 135 | declare!(LPTIM1); | ||
| 136 | declare!(LPTIM2); | ||
| 137 | declare!(LPUART1); | ||
| 138 | declare!(PVD_PVM); | ||
| 139 | declare!(QUADSPI); | ||
| 140 | declare!(RCC); | ||
| 141 | declare!(RNG); | ||
| 142 | declare!(RTC_Alarm); | ||
| 143 | declare!(RTC_WKUP); | ||
| 144 | declare!(SAI1); | ||
| 145 | declare!(SDMMC1); | ||
| 146 | declare!(SPI1); | ||
| 147 | declare!(SPI2); | ||
| 148 | declare!(SPI3); | ||
| 149 | declare!(SWPMI1); | ||
| 150 | declare!(TAMP_STAMP); | ||
| 151 | declare!(TIM1_BRK_TIM15); | ||
| 152 | declare!(TIM1_CC); | ||
| 153 | declare!(TIM1_TRG_COM); | ||
| 154 | declare!(TIM1_UP_TIM16); | ||
| 155 | declare!(TIM2); | ||
| 156 | declare!(TIM6_DAC); | ||
| 157 | declare!(TIM7); | ||
| 158 | declare!(TSC); | ||
| 159 | declare!(USART1); | ||
| 160 | declare!(USART2); | ||
| 161 | declare!(USART3); | ||
| 162 | declare!(WWDG); | ||
| 163 | } | ||
| 164 | mod interrupt_vector { | ||
| 165 | extern "C" { | ||
| 166 | fn ADC1(); | ||
| 167 | fn CAN1_RX0(); | ||
| 168 | fn CAN1_RX1(); | ||
| 169 | fn CAN1_SCE(); | ||
| 170 | fn CAN1_TX(); | ||
| 171 | fn COMP(); | ||
| 172 | fn CRS(); | ||
| 173 | fn DMA1_Channel1(); | ||
| 174 | fn DMA1_Channel2(); | ||
| 175 | fn DMA1_Channel3(); | ||
| 176 | fn DMA1_Channel4(); | ||
| 177 | fn DMA1_Channel5(); | ||
| 178 | fn DMA1_Channel6(); | ||
| 179 | fn DMA1_Channel7(); | ||
| 180 | fn DMA2_Channel1(); | ||
| 181 | fn DMA2_Channel2(); | ||
| 182 | fn DMA2_Channel3(); | ||
| 183 | fn DMA2_Channel4(); | ||
| 184 | fn DMA2_Channel5(); | ||
| 185 | fn DMA2_Channel6(); | ||
| 186 | fn DMA2_Channel7(); | ||
| 187 | fn EXTI0(); | ||
| 188 | fn EXTI1(); | ||
| 189 | fn EXTI15_10(); | ||
| 190 | fn EXTI2(); | ||
| 191 | fn EXTI3(); | ||
| 192 | fn EXTI4(); | ||
| 193 | fn EXTI9_5(); | ||
| 194 | fn FLASH(); | ||
| 195 | fn FPU(); | ||
| 196 | fn I2C1_ER(); | ||
| 197 | fn I2C1_EV(); | ||
| 198 | fn I2C2_ER(); | ||
| 199 | fn I2C2_EV(); | ||
| 200 | fn I2C3_ER(); | ||
| 201 | fn I2C3_EV(); | ||
| 202 | fn LPTIM1(); | ||
| 203 | fn LPTIM2(); | ||
| 204 | fn LPUART1(); | ||
| 205 | fn PVD_PVM(); | ||
| 206 | fn QUADSPI(); | ||
| 207 | fn RCC(); | ||
| 208 | fn RNG(); | ||
| 209 | fn RTC_Alarm(); | ||
| 210 | fn RTC_WKUP(); | ||
| 211 | fn SAI1(); | ||
| 212 | fn SDMMC1(); | ||
| 213 | fn SPI1(); | ||
| 214 | fn SPI2(); | ||
| 215 | fn SPI3(); | ||
| 216 | fn SWPMI1(); | ||
| 217 | fn TAMP_STAMP(); | ||
| 218 | fn TIM1_BRK_TIM15(); | ||
| 219 | fn TIM1_CC(); | ||
| 220 | fn TIM1_TRG_COM(); | ||
| 221 | fn TIM1_UP_TIM16(); | ||
| 222 | fn TIM2(); | ||
| 223 | fn TIM6_DAC(); | ||
| 224 | fn TIM7(); | ||
| 225 | fn TSC(); | ||
| 226 | fn USART1(); | ||
| 227 | fn USART2(); | ||
| 228 | fn USART3(); | ||
| 229 | fn WWDG(); | ||
| 230 | } | ||
| 231 | pub union Vector { | ||
| 232 | _handler: unsafe extern "C" fn(), | ||
| 233 | _reserved: u32, | ||
| 234 | } | ||
| 235 | #[link_section = ".vector_table.interrupts"] | ||
| 236 | #[no_mangle] | ||
| 237 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 238 | Vector { _handler: WWDG }, | ||
| 239 | Vector { _handler: PVD_PVM }, | ||
| 240 | Vector { | ||
| 241 | _handler: TAMP_STAMP, | ||
| 242 | }, | ||
| 243 | Vector { _handler: RTC_WKUP }, | ||
| 244 | Vector { _handler: FLASH }, | ||
| 245 | Vector { _handler: RCC }, | ||
| 246 | Vector { _handler: EXTI0 }, | ||
| 247 | Vector { _handler: EXTI1 }, | ||
| 248 | Vector { _handler: EXTI2 }, | ||
| 249 | Vector { _handler: EXTI3 }, | ||
| 250 | Vector { _handler: EXTI4 }, | ||
| 251 | Vector { | ||
| 252 | _handler: DMA1_Channel1, | ||
| 253 | }, | ||
| 254 | Vector { | ||
| 255 | _handler: DMA1_Channel2, | ||
| 256 | }, | ||
| 257 | Vector { | ||
| 258 | _handler: DMA1_Channel3, | ||
| 259 | }, | ||
| 260 | Vector { | ||
| 261 | _handler: DMA1_Channel4, | ||
| 262 | }, | ||
| 263 | Vector { | ||
| 264 | _handler: DMA1_Channel5, | ||
| 265 | }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel6, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel7, | ||
| 271 | }, | ||
| 272 | Vector { _handler: ADC1 }, | ||
| 273 | Vector { _handler: CAN1_TX }, | ||
| 274 | Vector { _handler: CAN1_RX0 }, | ||
| 275 | Vector { _handler: CAN1_RX1 }, | ||
| 276 | Vector { _handler: CAN1_SCE }, | ||
| 277 | Vector { _handler: EXTI9_5 }, | ||
| 278 | Vector { | ||
| 279 | _handler: TIM1_BRK_TIM15, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: TIM1_UP_TIM16, | ||
| 283 | }, | ||
| 284 | Vector { | ||
| 285 | _handler: TIM1_TRG_COM, | ||
| 286 | }, | ||
| 287 | Vector { _handler: TIM1_CC }, | ||
| 288 | Vector { _handler: TIM2 }, | ||
| 289 | Vector { _reserved: 0 }, | ||
| 290 | Vector { _reserved: 0 }, | ||
| 291 | Vector { _handler: I2C1_EV }, | ||
| 292 | Vector { _handler: I2C1_ER }, | ||
| 293 | Vector { _handler: I2C2_EV }, | ||
| 294 | Vector { _handler: I2C2_ER }, | ||
| 295 | Vector { _handler: SPI1 }, | ||
| 296 | Vector { _handler: SPI2 }, | ||
| 297 | Vector { _handler: USART1 }, | ||
| 298 | Vector { _handler: USART2 }, | ||
| 299 | Vector { _handler: USART3 }, | ||
| 300 | Vector { | ||
| 301 | _handler: EXTI15_10, | ||
| 302 | }, | ||
| 303 | Vector { | ||
| 304 | _handler: RTC_Alarm, | ||
| 305 | }, | ||
| 306 | Vector { _reserved: 0 }, | ||
| 307 | Vector { _reserved: 0 }, | ||
| 308 | Vector { _reserved: 0 }, | ||
| 309 | Vector { _reserved: 0 }, | ||
| 310 | Vector { _reserved: 0 }, | ||
| 311 | Vector { _reserved: 0 }, | ||
| 312 | Vector { _reserved: 0 }, | ||
| 313 | Vector { _handler: SDMMC1 }, | ||
| 314 | Vector { _reserved: 0 }, | ||
| 315 | Vector { _handler: SPI3 }, | ||
| 316 | Vector { _reserved: 0 }, | ||
| 317 | Vector { _reserved: 0 }, | ||
| 318 | Vector { _handler: TIM6_DAC }, | ||
| 319 | Vector { _handler: TIM7 }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA2_Channel1, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA2_Channel2, | ||
| 325 | }, | ||
| 326 | Vector { | ||
| 327 | _handler: DMA2_Channel3, | ||
| 328 | }, | ||
| 329 | Vector { | ||
| 330 | _handler: DMA2_Channel4, | ||
| 331 | }, | ||
| 332 | Vector { | ||
| 333 | _handler: DMA2_Channel5, | ||
| 334 | }, | ||
| 335 | Vector { _reserved: 0 }, | ||
| 336 | Vector { _reserved: 0 }, | ||
| 337 | Vector { _reserved: 0 }, | ||
| 338 | Vector { _handler: COMP }, | ||
| 339 | Vector { _handler: LPTIM1 }, | ||
| 340 | Vector { _handler: LPTIM2 }, | ||
| 341 | Vector { _reserved: 0 }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA2_Channel6, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA2_Channel7, | ||
| 347 | }, | ||
| 348 | Vector { _handler: LPUART1 }, | ||
| 349 | Vector { _handler: QUADSPI }, | ||
| 350 | Vector { _handler: I2C3_EV }, | ||
| 351 | Vector { _handler: I2C3_ER }, | ||
| 352 | Vector { _handler: SAI1 }, | ||
| 353 | Vector { _reserved: 0 }, | ||
| 354 | Vector { _handler: SWPMI1 }, | ||
| 355 | Vector { _handler: TSC }, | ||
| 356 | Vector { _reserved: 0 }, | ||
| 357 | Vector { _reserved: 0 }, | ||
| 358 | Vector { _handler: RNG }, | ||
| 359 | Vector { _handler: FPU }, | ||
| 360 | Vector { _handler: CRS }, | ||
| 361 | ]; | ||
| 362 | } | ||
| 15 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 363 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 16 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 364 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 17 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 365 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l431rb.rs b/embassy-stm32/src/chip/stm32l431rb.rs index 9c26d500d..902c4eb19 100644 --- a/embassy-stm32/src/chip/stm32l431rb.rs +++ b/embassy-stm32/src/chip/stm32l431rb.rs | |||
| @@ -1,18 +1,365 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, | 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, |
| 11 | SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, | 11 | RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, |
| 12 | USART1, USART2, USART3, WWDG | 12 | USART1, USART2, USART3, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DMA1_Channel1 = 11, | ||
| 35 | DMA1_Channel2 = 12, | ||
| 36 | DMA1_Channel3 = 13, | ||
| 37 | DMA1_Channel4 = 14, | ||
| 38 | DMA1_Channel5 = 15, | ||
| 39 | DMA1_Channel6 = 16, | ||
| 40 | DMA1_Channel7 = 17, | ||
| 41 | DMA2_Channel1 = 56, | ||
| 42 | DMA2_Channel2 = 57, | ||
| 43 | DMA2_Channel3 = 58, | ||
| 44 | DMA2_Channel4 = 59, | ||
| 45 | DMA2_Channel5 = 60, | ||
| 46 | DMA2_Channel6 = 68, | ||
| 47 | DMA2_Channel7 = 69, | ||
| 48 | EXTI0 = 6, | ||
| 49 | EXTI1 = 7, | ||
| 50 | EXTI15_10 = 40, | ||
| 51 | EXTI2 = 8, | ||
| 52 | EXTI3 = 9, | ||
| 53 | EXTI4 = 10, | ||
| 54 | EXTI9_5 = 23, | ||
| 55 | FLASH = 4, | ||
| 56 | FPU = 81, | ||
| 57 | I2C1_ER = 32, | ||
| 58 | I2C1_EV = 31, | ||
| 59 | I2C2_ER = 34, | ||
| 60 | I2C2_EV = 33, | ||
| 61 | I2C3_ER = 73, | ||
| 62 | I2C3_EV = 72, | ||
| 63 | LPTIM1 = 65, | ||
| 64 | LPTIM2 = 66, | ||
| 65 | LPUART1 = 70, | ||
| 66 | PVD_PVM = 1, | ||
| 67 | QUADSPI = 71, | ||
| 68 | RCC = 5, | ||
| 69 | RNG = 80, | ||
| 70 | RTC_Alarm = 41, | ||
| 71 | RTC_WKUP = 3, | ||
| 72 | SAI1 = 74, | ||
| 73 | SDMMC1 = 49, | ||
| 74 | SPI1 = 35, | ||
| 75 | SPI2 = 36, | ||
| 76 | SPI3 = 51, | ||
| 77 | SWPMI1 = 76, | ||
| 78 | TAMP_STAMP = 2, | ||
| 79 | TIM1_BRK_TIM15 = 24, | ||
| 80 | TIM1_CC = 27, | ||
| 81 | TIM1_TRG_COM = 26, | ||
| 82 | TIM1_UP_TIM16 = 25, | ||
| 83 | TIM2 = 28, | ||
| 84 | TIM6_DAC = 54, | ||
| 85 | TIM7 = 55, | ||
| 86 | TSC = 77, | ||
| 87 | USART1 = 37, | ||
| 88 | USART2 = 38, | ||
| 89 | USART3 = 39, | ||
| 90 | WWDG = 0, | ||
| 91 | } | ||
| 92 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 93 | #[inline(always)] | ||
| 94 | fn number(self) -> u16 { | ||
| 95 | self as u16 | ||
| 96 | } | ||
| 97 | } | ||
| 98 | |||
| 99 | declare!(ADC1); | ||
| 100 | declare!(CAN1_RX0); | ||
| 101 | declare!(CAN1_RX1); | ||
| 102 | declare!(CAN1_SCE); | ||
| 103 | declare!(CAN1_TX); | ||
| 104 | declare!(COMP); | ||
| 105 | declare!(CRS); | ||
| 106 | declare!(DMA1_Channel1); | ||
| 107 | declare!(DMA1_Channel2); | ||
| 108 | declare!(DMA1_Channel3); | ||
| 109 | declare!(DMA1_Channel4); | ||
| 110 | declare!(DMA1_Channel5); | ||
| 111 | declare!(DMA1_Channel6); | ||
| 112 | declare!(DMA1_Channel7); | ||
| 113 | declare!(DMA2_Channel1); | ||
| 114 | declare!(DMA2_Channel2); | ||
| 115 | declare!(DMA2_Channel3); | ||
| 116 | declare!(DMA2_Channel4); | ||
| 117 | declare!(DMA2_Channel5); | ||
| 118 | declare!(DMA2_Channel6); | ||
| 119 | declare!(DMA2_Channel7); | ||
| 120 | declare!(EXTI0); | ||
| 121 | declare!(EXTI1); | ||
| 122 | declare!(EXTI15_10); | ||
| 123 | declare!(EXTI2); | ||
| 124 | declare!(EXTI3); | ||
| 125 | declare!(EXTI4); | ||
| 126 | declare!(EXTI9_5); | ||
| 127 | declare!(FLASH); | ||
| 128 | declare!(FPU); | ||
| 129 | declare!(I2C1_ER); | ||
| 130 | declare!(I2C1_EV); | ||
| 131 | declare!(I2C2_ER); | ||
| 132 | declare!(I2C2_EV); | ||
| 133 | declare!(I2C3_ER); | ||
| 134 | declare!(I2C3_EV); | ||
| 135 | declare!(LPTIM1); | ||
| 136 | declare!(LPTIM2); | ||
| 137 | declare!(LPUART1); | ||
| 138 | declare!(PVD_PVM); | ||
| 139 | declare!(QUADSPI); | ||
| 140 | declare!(RCC); | ||
| 141 | declare!(RNG); | ||
| 142 | declare!(RTC_Alarm); | ||
| 143 | declare!(RTC_WKUP); | ||
| 144 | declare!(SAI1); | ||
| 145 | declare!(SDMMC1); | ||
| 146 | declare!(SPI1); | ||
| 147 | declare!(SPI2); | ||
| 148 | declare!(SPI3); | ||
| 149 | declare!(SWPMI1); | ||
| 150 | declare!(TAMP_STAMP); | ||
| 151 | declare!(TIM1_BRK_TIM15); | ||
| 152 | declare!(TIM1_CC); | ||
| 153 | declare!(TIM1_TRG_COM); | ||
| 154 | declare!(TIM1_UP_TIM16); | ||
| 155 | declare!(TIM2); | ||
| 156 | declare!(TIM6_DAC); | ||
| 157 | declare!(TIM7); | ||
| 158 | declare!(TSC); | ||
| 159 | declare!(USART1); | ||
| 160 | declare!(USART2); | ||
| 161 | declare!(USART3); | ||
| 162 | declare!(WWDG); | ||
| 163 | } | ||
| 164 | mod interrupt_vector { | ||
| 165 | extern "C" { | ||
| 166 | fn ADC1(); | ||
| 167 | fn CAN1_RX0(); | ||
| 168 | fn CAN1_RX1(); | ||
| 169 | fn CAN1_SCE(); | ||
| 170 | fn CAN1_TX(); | ||
| 171 | fn COMP(); | ||
| 172 | fn CRS(); | ||
| 173 | fn DMA1_Channel1(); | ||
| 174 | fn DMA1_Channel2(); | ||
| 175 | fn DMA1_Channel3(); | ||
| 176 | fn DMA1_Channel4(); | ||
| 177 | fn DMA1_Channel5(); | ||
| 178 | fn DMA1_Channel6(); | ||
| 179 | fn DMA1_Channel7(); | ||
| 180 | fn DMA2_Channel1(); | ||
| 181 | fn DMA2_Channel2(); | ||
| 182 | fn DMA2_Channel3(); | ||
| 183 | fn DMA2_Channel4(); | ||
| 184 | fn DMA2_Channel5(); | ||
| 185 | fn DMA2_Channel6(); | ||
| 186 | fn DMA2_Channel7(); | ||
| 187 | fn EXTI0(); | ||
| 188 | fn EXTI1(); | ||
| 189 | fn EXTI15_10(); | ||
| 190 | fn EXTI2(); | ||
| 191 | fn EXTI3(); | ||
| 192 | fn EXTI4(); | ||
| 193 | fn EXTI9_5(); | ||
| 194 | fn FLASH(); | ||
| 195 | fn FPU(); | ||
| 196 | fn I2C1_ER(); | ||
| 197 | fn I2C1_EV(); | ||
| 198 | fn I2C2_ER(); | ||
| 199 | fn I2C2_EV(); | ||
| 200 | fn I2C3_ER(); | ||
| 201 | fn I2C3_EV(); | ||
| 202 | fn LPTIM1(); | ||
| 203 | fn LPTIM2(); | ||
| 204 | fn LPUART1(); | ||
| 205 | fn PVD_PVM(); | ||
| 206 | fn QUADSPI(); | ||
| 207 | fn RCC(); | ||
| 208 | fn RNG(); | ||
| 209 | fn RTC_Alarm(); | ||
| 210 | fn RTC_WKUP(); | ||
| 211 | fn SAI1(); | ||
| 212 | fn SDMMC1(); | ||
| 213 | fn SPI1(); | ||
| 214 | fn SPI2(); | ||
| 215 | fn SPI3(); | ||
| 216 | fn SWPMI1(); | ||
| 217 | fn TAMP_STAMP(); | ||
| 218 | fn TIM1_BRK_TIM15(); | ||
| 219 | fn TIM1_CC(); | ||
| 220 | fn TIM1_TRG_COM(); | ||
| 221 | fn TIM1_UP_TIM16(); | ||
| 222 | fn TIM2(); | ||
| 223 | fn TIM6_DAC(); | ||
| 224 | fn TIM7(); | ||
| 225 | fn TSC(); | ||
| 226 | fn USART1(); | ||
| 227 | fn USART2(); | ||
| 228 | fn USART3(); | ||
| 229 | fn WWDG(); | ||
| 230 | } | ||
| 231 | pub union Vector { | ||
| 232 | _handler: unsafe extern "C" fn(), | ||
| 233 | _reserved: u32, | ||
| 234 | } | ||
| 235 | #[link_section = ".vector_table.interrupts"] | ||
| 236 | #[no_mangle] | ||
| 237 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 238 | Vector { _handler: WWDG }, | ||
| 239 | Vector { _handler: PVD_PVM }, | ||
| 240 | Vector { | ||
| 241 | _handler: TAMP_STAMP, | ||
| 242 | }, | ||
| 243 | Vector { _handler: RTC_WKUP }, | ||
| 244 | Vector { _handler: FLASH }, | ||
| 245 | Vector { _handler: RCC }, | ||
| 246 | Vector { _handler: EXTI0 }, | ||
| 247 | Vector { _handler: EXTI1 }, | ||
| 248 | Vector { _handler: EXTI2 }, | ||
| 249 | Vector { _handler: EXTI3 }, | ||
| 250 | Vector { _handler: EXTI4 }, | ||
| 251 | Vector { | ||
| 252 | _handler: DMA1_Channel1, | ||
| 253 | }, | ||
| 254 | Vector { | ||
| 255 | _handler: DMA1_Channel2, | ||
| 256 | }, | ||
| 257 | Vector { | ||
| 258 | _handler: DMA1_Channel3, | ||
| 259 | }, | ||
| 260 | Vector { | ||
| 261 | _handler: DMA1_Channel4, | ||
| 262 | }, | ||
| 263 | Vector { | ||
| 264 | _handler: DMA1_Channel5, | ||
| 265 | }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel6, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel7, | ||
| 271 | }, | ||
| 272 | Vector { _handler: ADC1 }, | ||
| 273 | Vector { _handler: CAN1_TX }, | ||
| 274 | Vector { _handler: CAN1_RX0 }, | ||
| 275 | Vector { _handler: CAN1_RX1 }, | ||
| 276 | Vector { _handler: CAN1_SCE }, | ||
| 277 | Vector { _handler: EXTI9_5 }, | ||
| 278 | Vector { | ||
| 279 | _handler: TIM1_BRK_TIM15, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: TIM1_UP_TIM16, | ||
| 283 | }, | ||
| 284 | Vector { | ||
| 285 | _handler: TIM1_TRG_COM, | ||
| 286 | }, | ||
| 287 | Vector { _handler: TIM1_CC }, | ||
| 288 | Vector { _handler: TIM2 }, | ||
| 289 | Vector { _reserved: 0 }, | ||
| 290 | Vector { _reserved: 0 }, | ||
| 291 | Vector { _handler: I2C1_EV }, | ||
| 292 | Vector { _handler: I2C1_ER }, | ||
| 293 | Vector { _handler: I2C2_EV }, | ||
| 294 | Vector { _handler: I2C2_ER }, | ||
| 295 | Vector { _handler: SPI1 }, | ||
| 296 | Vector { _handler: SPI2 }, | ||
| 297 | Vector { _handler: USART1 }, | ||
| 298 | Vector { _handler: USART2 }, | ||
| 299 | Vector { _handler: USART3 }, | ||
| 300 | Vector { | ||
| 301 | _handler: EXTI15_10, | ||
| 302 | }, | ||
| 303 | Vector { | ||
| 304 | _handler: RTC_Alarm, | ||
| 305 | }, | ||
| 306 | Vector { _reserved: 0 }, | ||
| 307 | Vector { _reserved: 0 }, | ||
| 308 | Vector { _reserved: 0 }, | ||
| 309 | Vector { _reserved: 0 }, | ||
| 310 | Vector { _reserved: 0 }, | ||
| 311 | Vector { _reserved: 0 }, | ||
| 312 | Vector { _reserved: 0 }, | ||
| 313 | Vector { _handler: SDMMC1 }, | ||
| 314 | Vector { _reserved: 0 }, | ||
| 315 | Vector { _handler: SPI3 }, | ||
| 316 | Vector { _reserved: 0 }, | ||
| 317 | Vector { _reserved: 0 }, | ||
| 318 | Vector { _handler: TIM6_DAC }, | ||
| 319 | Vector { _handler: TIM7 }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA2_Channel1, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA2_Channel2, | ||
| 325 | }, | ||
| 326 | Vector { | ||
| 327 | _handler: DMA2_Channel3, | ||
| 328 | }, | ||
| 329 | Vector { | ||
| 330 | _handler: DMA2_Channel4, | ||
| 331 | }, | ||
| 332 | Vector { | ||
| 333 | _handler: DMA2_Channel5, | ||
| 334 | }, | ||
| 335 | Vector { _reserved: 0 }, | ||
| 336 | Vector { _reserved: 0 }, | ||
| 337 | Vector { _reserved: 0 }, | ||
| 338 | Vector { _handler: COMP }, | ||
| 339 | Vector { _handler: LPTIM1 }, | ||
| 340 | Vector { _handler: LPTIM2 }, | ||
| 341 | Vector { _reserved: 0 }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA2_Channel6, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA2_Channel7, | ||
| 347 | }, | ||
| 348 | Vector { _handler: LPUART1 }, | ||
| 349 | Vector { _handler: QUADSPI }, | ||
| 350 | Vector { _handler: I2C3_EV }, | ||
| 351 | Vector { _handler: I2C3_ER }, | ||
| 352 | Vector { _handler: SAI1 }, | ||
| 353 | Vector { _reserved: 0 }, | ||
| 354 | Vector { _handler: SWPMI1 }, | ||
| 355 | Vector { _handler: TSC }, | ||
| 356 | Vector { _reserved: 0 }, | ||
| 357 | Vector { _reserved: 0 }, | ||
| 358 | Vector { _handler: RNG }, | ||
| 359 | Vector { _handler: FPU }, | ||
| 360 | Vector { _handler: CRS }, | ||
| 361 | ]; | ||
| 362 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 363 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 364 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 365 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l431rc.rs b/embassy-stm32/src/chip/stm32l431rc.rs index 9c26d500d..902c4eb19 100644 --- a/embassy-stm32/src/chip/stm32l431rc.rs +++ b/embassy-stm32/src/chip/stm32l431rc.rs | |||
| @@ -1,18 +1,365 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, | 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, |
| 11 | SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, | 11 | RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, |
| 12 | USART1, USART2, USART3, WWDG | 12 | USART1, USART2, USART3, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DMA1_Channel1 = 11, | ||
| 35 | DMA1_Channel2 = 12, | ||
| 36 | DMA1_Channel3 = 13, | ||
| 37 | DMA1_Channel4 = 14, | ||
| 38 | DMA1_Channel5 = 15, | ||
| 39 | DMA1_Channel6 = 16, | ||
| 40 | DMA1_Channel7 = 17, | ||
| 41 | DMA2_Channel1 = 56, | ||
| 42 | DMA2_Channel2 = 57, | ||
| 43 | DMA2_Channel3 = 58, | ||
| 44 | DMA2_Channel4 = 59, | ||
| 45 | DMA2_Channel5 = 60, | ||
| 46 | DMA2_Channel6 = 68, | ||
| 47 | DMA2_Channel7 = 69, | ||
| 48 | EXTI0 = 6, | ||
| 49 | EXTI1 = 7, | ||
| 50 | EXTI15_10 = 40, | ||
| 51 | EXTI2 = 8, | ||
| 52 | EXTI3 = 9, | ||
| 53 | EXTI4 = 10, | ||
| 54 | EXTI9_5 = 23, | ||
| 55 | FLASH = 4, | ||
| 56 | FPU = 81, | ||
| 57 | I2C1_ER = 32, | ||
| 58 | I2C1_EV = 31, | ||
| 59 | I2C2_ER = 34, | ||
| 60 | I2C2_EV = 33, | ||
| 61 | I2C3_ER = 73, | ||
| 62 | I2C3_EV = 72, | ||
| 63 | LPTIM1 = 65, | ||
| 64 | LPTIM2 = 66, | ||
| 65 | LPUART1 = 70, | ||
| 66 | PVD_PVM = 1, | ||
| 67 | QUADSPI = 71, | ||
| 68 | RCC = 5, | ||
| 69 | RNG = 80, | ||
| 70 | RTC_Alarm = 41, | ||
| 71 | RTC_WKUP = 3, | ||
| 72 | SAI1 = 74, | ||
| 73 | SDMMC1 = 49, | ||
| 74 | SPI1 = 35, | ||
| 75 | SPI2 = 36, | ||
| 76 | SPI3 = 51, | ||
| 77 | SWPMI1 = 76, | ||
| 78 | TAMP_STAMP = 2, | ||
| 79 | TIM1_BRK_TIM15 = 24, | ||
| 80 | TIM1_CC = 27, | ||
| 81 | TIM1_TRG_COM = 26, | ||
| 82 | TIM1_UP_TIM16 = 25, | ||
| 83 | TIM2 = 28, | ||
| 84 | TIM6_DAC = 54, | ||
| 85 | TIM7 = 55, | ||
| 86 | TSC = 77, | ||
| 87 | USART1 = 37, | ||
| 88 | USART2 = 38, | ||
| 89 | USART3 = 39, | ||
| 90 | WWDG = 0, | ||
| 91 | } | ||
| 92 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 93 | #[inline(always)] | ||
| 94 | fn number(self) -> u16 { | ||
| 95 | self as u16 | ||
| 96 | } | ||
| 97 | } | ||
| 98 | |||
| 99 | declare!(ADC1); | ||
| 100 | declare!(CAN1_RX0); | ||
| 101 | declare!(CAN1_RX1); | ||
| 102 | declare!(CAN1_SCE); | ||
| 103 | declare!(CAN1_TX); | ||
| 104 | declare!(COMP); | ||
| 105 | declare!(CRS); | ||
| 106 | declare!(DMA1_Channel1); | ||
| 107 | declare!(DMA1_Channel2); | ||
| 108 | declare!(DMA1_Channel3); | ||
| 109 | declare!(DMA1_Channel4); | ||
| 110 | declare!(DMA1_Channel5); | ||
| 111 | declare!(DMA1_Channel6); | ||
| 112 | declare!(DMA1_Channel7); | ||
| 113 | declare!(DMA2_Channel1); | ||
| 114 | declare!(DMA2_Channel2); | ||
| 115 | declare!(DMA2_Channel3); | ||
| 116 | declare!(DMA2_Channel4); | ||
| 117 | declare!(DMA2_Channel5); | ||
| 118 | declare!(DMA2_Channel6); | ||
| 119 | declare!(DMA2_Channel7); | ||
| 120 | declare!(EXTI0); | ||
| 121 | declare!(EXTI1); | ||
| 122 | declare!(EXTI15_10); | ||
| 123 | declare!(EXTI2); | ||
| 124 | declare!(EXTI3); | ||
| 125 | declare!(EXTI4); | ||
| 126 | declare!(EXTI9_5); | ||
| 127 | declare!(FLASH); | ||
| 128 | declare!(FPU); | ||
| 129 | declare!(I2C1_ER); | ||
| 130 | declare!(I2C1_EV); | ||
| 131 | declare!(I2C2_ER); | ||
| 132 | declare!(I2C2_EV); | ||
| 133 | declare!(I2C3_ER); | ||
| 134 | declare!(I2C3_EV); | ||
| 135 | declare!(LPTIM1); | ||
| 136 | declare!(LPTIM2); | ||
| 137 | declare!(LPUART1); | ||
| 138 | declare!(PVD_PVM); | ||
| 139 | declare!(QUADSPI); | ||
| 140 | declare!(RCC); | ||
| 141 | declare!(RNG); | ||
| 142 | declare!(RTC_Alarm); | ||
| 143 | declare!(RTC_WKUP); | ||
| 144 | declare!(SAI1); | ||
| 145 | declare!(SDMMC1); | ||
| 146 | declare!(SPI1); | ||
| 147 | declare!(SPI2); | ||
| 148 | declare!(SPI3); | ||
| 149 | declare!(SWPMI1); | ||
| 150 | declare!(TAMP_STAMP); | ||
| 151 | declare!(TIM1_BRK_TIM15); | ||
| 152 | declare!(TIM1_CC); | ||
| 153 | declare!(TIM1_TRG_COM); | ||
| 154 | declare!(TIM1_UP_TIM16); | ||
| 155 | declare!(TIM2); | ||
| 156 | declare!(TIM6_DAC); | ||
| 157 | declare!(TIM7); | ||
| 158 | declare!(TSC); | ||
| 159 | declare!(USART1); | ||
| 160 | declare!(USART2); | ||
| 161 | declare!(USART3); | ||
| 162 | declare!(WWDG); | ||
| 163 | } | ||
| 164 | mod interrupt_vector { | ||
| 165 | extern "C" { | ||
| 166 | fn ADC1(); | ||
| 167 | fn CAN1_RX0(); | ||
| 168 | fn CAN1_RX1(); | ||
| 169 | fn CAN1_SCE(); | ||
| 170 | fn CAN1_TX(); | ||
| 171 | fn COMP(); | ||
| 172 | fn CRS(); | ||
| 173 | fn DMA1_Channel1(); | ||
| 174 | fn DMA1_Channel2(); | ||
| 175 | fn DMA1_Channel3(); | ||
| 176 | fn DMA1_Channel4(); | ||
| 177 | fn DMA1_Channel5(); | ||
| 178 | fn DMA1_Channel6(); | ||
| 179 | fn DMA1_Channel7(); | ||
| 180 | fn DMA2_Channel1(); | ||
| 181 | fn DMA2_Channel2(); | ||
| 182 | fn DMA2_Channel3(); | ||
| 183 | fn DMA2_Channel4(); | ||
| 184 | fn DMA2_Channel5(); | ||
| 185 | fn DMA2_Channel6(); | ||
| 186 | fn DMA2_Channel7(); | ||
| 187 | fn EXTI0(); | ||
| 188 | fn EXTI1(); | ||
| 189 | fn EXTI15_10(); | ||
| 190 | fn EXTI2(); | ||
| 191 | fn EXTI3(); | ||
| 192 | fn EXTI4(); | ||
| 193 | fn EXTI9_5(); | ||
| 194 | fn FLASH(); | ||
| 195 | fn FPU(); | ||
| 196 | fn I2C1_ER(); | ||
| 197 | fn I2C1_EV(); | ||
| 198 | fn I2C2_ER(); | ||
| 199 | fn I2C2_EV(); | ||
| 200 | fn I2C3_ER(); | ||
| 201 | fn I2C3_EV(); | ||
| 202 | fn LPTIM1(); | ||
| 203 | fn LPTIM2(); | ||
| 204 | fn LPUART1(); | ||
| 205 | fn PVD_PVM(); | ||
| 206 | fn QUADSPI(); | ||
| 207 | fn RCC(); | ||
| 208 | fn RNG(); | ||
| 209 | fn RTC_Alarm(); | ||
| 210 | fn RTC_WKUP(); | ||
| 211 | fn SAI1(); | ||
| 212 | fn SDMMC1(); | ||
| 213 | fn SPI1(); | ||
| 214 | fn SPI2(); | ||
| 215 | fn SPI3(); | ||
| 216 | fn SWPMI1(); | ||
| 217 | fn TAMP_STAMP(); | ||
| 218 | fn TIM1_BRK_TIM15(); | ||
| 219 | fn TIM1_CC(); | ||
| 220 | fn TIM1_TRG_COM(); | ||
| 221 | fn TIM1_UP_TIM16(); | ||
| 222 | fn TIM2(); | ||
| 223 | fn TIM6_DAC(); | ||
| 224 | fn TIM7(); | ||
| 225 | fn TSC(); | ||
| 226 | fn USART1(); | ||
| 227 | fn USART2(); | ||
| 228 | fn USART3(); | ||
| 229 | fn WWDG(); | ||
| 230 | } | ||
| 231 | pub union Vector { | ||
| 232 | _handler: unsafe extern "C" fn(), | ||
| 233 | _reserved: u32, | ||
| 234 | } | ||
| 235 | #[link_section = ".vector_table.interrupts"] | ||
| 236 | #[no_mangle] | ||
| 237 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 238 | Vector { _handler: WWDG }, | ||
| 239 | Vector { _handler: PVD_PVM }, | ||
| 240 | Vector { | ||
| 241 | _handler: TAMP_STAMP, | ||
| 242 | }, | ||
| 243 | Vector { _handler: RTC_WKUP }, | ||
| 244 | Vector { _handler: FLASH }, | ||
| 245 | Vector { _handler: RCC }, | ||
| 246 | Vector { _handler: EXTI0 }, | ||
| 247 | Vector { _handler: EXTI1 }, | ||
| 248 | Vector { _handler: EXTI2 }, | ||
| 249 | Vector { _handler: EXTI3 }, | ||
| 250 | Vector { _handler: EXTI4 }, | ||
| 251 | Vector { | ||
| 252 | _handler: DMA1_Channel1, | ||
| 253 | }, | ||
| 254 | Vector { | ||
| 255 | _handler: DMA1_Channel2, | ||
| 256 | }, | ||
| 257 | Vector { | ||
| 258 | _handler: DMA1_Channel3, | ||
| 259 | }, | ||
| 260 | Vector { | ||
| 261 | _handler: DMA1_Channel4, | ||
| 262 | }, | ||
| 263 | Vector { | ||
| 264 | _handler: DMA1_Channel5, | ||
| 265 | }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel6, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel7, | ||
| 271 | }, | ||
| 272 | Vector { _handler: ADC1 }, | ||
| 273 | Vector { _handler: CAN1_TX }, | ||
| 274 | Vector { _handler: CAN1_RX0 }, | ||
| 275 | Vector { _handler: CAN1_RX1 }, | ||
| 276 | Vector { _handler: CAN1_SCE }, | ||
| 277 | Vector { _handler: EXTI9_5 }, | ||
| 278 | Vector { | ||
| 279 | _handler: TIM1_BRK_TIM15, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: TIM1_UP_TIM16, | ||
| 283 | }, | ||
| 284 | Vector { | ||
| 285 | _handler: TIM1_TRG_COM, | ||
| 286 | }, | ||
| 287 | Vector { _handler: TIM1_CC }, | ||
| 288 | Vector { _handler: TIM2 }, | ||
| 289 | Vector { _reserved: 0 }, | ||
| 290 | Vector { _reserved: 0 }, | ||
| 291 | Vector { _handler: I2C1_EV }, | ||
| 292 | Vector { _handler: I2C1_ER }, | ||
| 293 | Vector { _handler: I2C2_EV }, | ||
| 294 | Vector { _handler: I2C2_ER }, | ||
| 295 | Vector { _handler: SPI1 }, | ||
| 296 | Vector { _handler: SPI2 }, | ||
| 297 | Vector { _handler: USART1 }, | ||
| 298 | Vector { _handler: USART2 }, | ||
| 299 | Vector { _handler: USART3 }, | ||
| 300 | Vector { | ||
| 301 | _handler: EXTI15_10, | ||
| 302 | }, | ||
| 303 | Vector { | ||
| 304 | _handler: RTC_Alarm, | ||
| 305 | }, | ||
| 306 | Vector { _reserved: 0 }, | ||
| 307 | Vector { _reserved: 0 }, | ||
| 308 | Vector { _reserved: 0 }, | ||
| 309 | Vector { _reserved: 0 }, | ||
| 310 | Vector { _reserved: 0 }, | ||
| 311 | Vector { _reserved: 0 }, | ||
| 312 | Vector { _reserved: 0 }, | ||
| 313 | Vector { _handler: SDMMC1 }, | ||
| 314 | Vector { _reserved: 0 }, | ||
| 315 | Vector { _handler: SPI3 }, | ||
| 316 | Vector { _reserved: 0 }, | ||
| 317 | Vector { _reserved: 0 }, | ||
| 318 | Vector { _handler: TIM6_DAC }, | ||
| 319 | Vector { _handler: TIM7 }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA2_Channel1, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA2_Channel2, | ||
| 325 | }, | ||
| 326 | Vector { | ||
| 327 | _handler: DMA2_Channel3, | ||
| 328 | }, | ||
| 329 | Vector { | ||
| 330 | _handler: DMA2_Channel4, | ||
| 331 | }, | ||
| 332 | Vector { | ||
| 333 | _handler: DMA2_Channel5, | ||
| 334 | }, | ||
| 335 | Vector { _reserved: 0 }, | ||
| 336 | Vector { _reserved: 0 }, | ||
| 337 | Vector { _reserved: 0 }, | ||
| 338 | Vector { _handler: COMP }, | ||
| 339 | Vector { _handler: LPTIM1 }, | ||
| 340 | Vector { _handler: LPTIM2 }, | ||
| 341 | Vector { _reserved: 0 }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA2_Channel6, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA2_Channel7, | ||
| 347 | }, | ||
| 348 | Vector { _handler: LPUART1 }, | ||
| 349 | Vector { _handler: QUADSPI }, | ||
| 350 | Vector { _handler: I2C3_EV }, | ||
| 351 | Vector { _handler: I2C3_ER }, | ||
| 352 | Vector { _handler: SAI1 }, | ||
| 353 | Vector { _reserved: 0 }, | ||
| 354 | Vector { _handler: SWPMI1 }, | ||
| 355 | Vector { _handler: TSC }, | ||
| 356 | Vector { _reserved: 0 }, | ||
| 357 | Vector { _reserved: 0 }, | ||
| 358 | Vector { _handler: RNG }, | ||
| 359 | Vector { _handler: FPU }, | ||
| 360 | Vector { _handler: CRS }, | ||
| 361 | ]; | ||
| 362 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 363 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 364 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 365 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l431vc.rs b/embassy-stm32/src/chip/stm32l431vc.rs index 9c26d500d..902c4eb19 100644 --- a/embassy-stm32/src/chip/stm32l431vc.rs +++ b/embassy-stm32/src/chip/stm32l431vc.rs | |||
| @@ -1,18 +1,365 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, | 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, |
| 11 | SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, | 11 | RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, |
| 12 | USART1, USART2, USART3, WWDG | 12 | USART1, USART2, USART3, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DMA1_Channel1 = 11, | ||
| 35 | DMA1_Channel2 = 12, | ||
| 36 | DMA1_Channel3 = 13, | ||
| 37 | DMA1_Channel4 = 14, | ||
| 38 | DMA1_Channel5 = 15, | ||
| 39 | DMA1_Channel6 = 16, | ||
| 40 | DMA1_Channel7 = 17, | ||
| 41 | DMA2_Channel1 = 56, | ||
| 42 | DMA2_Channel2 = 57, | ||
| 43 | DMA2_Channel3 = 58, | ||
| 44 | DMA2_Channel4 = 59, | ||
| 45 | DMA2_Channel5 = 60, | ||
| 46 | DMA2_Channel6 = 68, | ||
| 47 | DMA2_Channel7 = 69, | ||
| 48 | EXTI0 = 6, | ||
| 49 | EXTI1 = 7, | ||
| 50 | EXTI15_10 = 40, | ||
| 51 | EXTI2 = 8, | ||
| 52 | EXTI3 = 9, | ||
| 53 | EXTI4 = 10, | ||
| 54 | EXTI9_5 = 23, | ||
| 55 | FLASH = 4, | ||
| 56 | FPU = 81, | ||
| 57 | I2C1_ER = 32, | ||
| 58 | I2C1_EV = 31, | ||
| 59 | I2C2_ER = 34, | ||
| 60 | I2C2_EV = 33, | ||
| 61 | I2C3_ER = 73, | ||
| 62 | I2C3_EV = 72, | ||
| 63 | LPTIM1 = 65, | ||
| 64 | LPTIM2 = 66, | ||
| 65 | LPUART1 = 70, | ||
| 66 | PVD_PVM = 1, | ||
| 67 | QUADSPI = 71, | ||
| 68 | RCC = 5, | ||
| 69 | RNG = 80, | ||
| 70 | RTC_Alarm = 41, | ||
| 71 | RTC_WKUP = 3, | ||
| 72 | SAI1 = 74, | ||
| 73 | SDMMC1 = 49, | ||
| 74 | SPI1 = 35, | ||
| 75 | SPI2 = 36, | ||
| 76 | SPI3 = 51, | ||
| 77 | SWPMI1 = 76, | ||
| 78 | TAMP_STAMP = 2, | ||
| 79 | TIM1_BRK_TIM15 = 24, | ||
| 80 | TIM1_CC = 27, | ||
| 81 | TIM1_TRG_COM = 26, | ||
| 82 | TIM1_UP_TIM16 = 25, | ||
| 83 | TIM2 = 28, | ||
| 84 | TIM6_DAC = 54, | ||
| 85 | TIM7 = 55, | ||
| 86 | TSC = 77, | ||
| 87 | USART1 = 37, | ||
| 88 | USART2 = 38, | ||
| 89 | USART3 = 39, | ||
| 90 | WWDG = 0, | ||
| 91 | } | ||
| 92 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 93 | #[inline(always)] | ||
| 94 | fn number(self) -> u16 { | ||
| 95 | self as u16 | ||
| 96 | } | ||
| 97 | } | ||
| 98 | |||
| 99 | declare!(ADC1); | ||
| 100 | declare!(CAN1_RX0); | ||
| 101 | declare!(CAN1_RX1); | ||
| 102 | declare!(CAN1_SCE); | ||
| 103 | declare!(CAN1_TX); | ||
| 104 | declare!(COMP); | ||
| 105 | declare!(CRS); | ||
| 106 | declare!(DMA1_Channel1); | ||
| 107 | declare!(DMA1_Channel2); | ||
| 108 | declare!(DMA1_Channel3); | ||
| 109 | declare!(DMA1_Channel4); | ||
| 110 | declare!(DMA1_Channel5); | ||
| 111 | declare!(DMA1_Channel6); | ||
| 112 | declare!(DMA1_Channel7); | ||
| 113 | declare!(DMA2_Channel1); | ||
| 114 | declare!(DMA2_Channel2); | ||
| 115 | declare!(DMA2_Channel3); | ||
| 116 | declare!(DMA2_Channel4); | ||
| 117 | declare!(DMA2_Channel5); | ||
| 118 | declare!(DMA2_Channel6); | ||
| 119 | declare!(DMA2_Channel7); | ||
| 120 | declare!(EXTI0); | ||
| 121 | declare!(EXTI1); | ||
| 122 | declare!(EXTI15_10); | ||
| 123 | declare!(EXTI2); | ||
| 124 | declare!(EXTI3); | ||
| 125 | declare!(EXTI4); | ||
| 126 | declare!(EXTI9_5); | ||
| 127 | declare!(FLASH); | ||
| 128 | declare!(FPU); | ||
| 129 | declare!(I2C1_ER); | ||
| 130 | declare!(I2C1_EV); | ||
| 131 | declare!(I2C2_ER); | ||
| 132 | declare!(I2C2_EV); | ||
| 133 | declare!(I2C3_ER); | ||
| 134 | declare!(I2C3_EV); | ||
| 135 | declare!(LPTIM1); | ||
| 136 | declare!(LPTIM2); | ||
| 137 | declare!(LPUART1); | ||
| 138 | declare!(PVD_PVM); | ||
| 139 | declare!(QUADSPI); | ||
| 140 | declare!(RCC); | ||
| 141 | declare!(RNG); | ||
| 142 | declare!(RTC_Alarm); | ||
| 143 | declare!(RTC_WKUP); | ||
| 144 | declare!(SAI1); | ||
| 145 | declare!(SDMMC1); | ||
| 146 | declare!(SPI1); | ||
| 147 | declare!(SPI2); | ||
| 148 | declare!(SPI3); | ||
| 149 | declare!(SWPMI1); | ||
| 150 | declare!(TAMP_STAMP); | ||
| 151 | declare!(TIM1_BRK_TIM15); | ||
| 152 | declare!(TIM1_CC); | ||
| 153 | declare!(TIM1_TRG_COM); | ||
| 154 | declare!(TIM1_UP_TIM16); | ||
| 155 | declare!(TIM2); | ||
| 156 | declare!(TIM6_DAC); | ||
| 157 | declare!(TIM7); | ||
| 158 | declare!(TSC); | ||
| 159 | declare!(USART1); | ||
| 160 | declare!(USART2); | ||
| 161 | declare!(USART3); | ||
| 162 | declare!(WWDG); | ||
| 163 | } | ||
| 164 | mod interrupt_vector { | ||
| 165 | extern "C" { | ||
| 166 | fn ADC1(); | ||
| 167 | fn CAN1_RX0(); | ||
| 168 | fn CAN1_RX1(); | ||
| 169 | fn CAN1_SCE(); | ||
| 170 | fn CAN1_TX(); | ||
| 171 | fn COMP(); | ||
| 172 | fn CRS(); | ||
| 173 | fn DMA1_Channel1(); | ||
| 174 | fn DMA1_Channel2(); | ||
| 175 | fn DMA1_Channel3(); | ||
| 176 | fn DMA1_Channel4(); | ||
| 177 | fn DMA1_Channel5(); | ||
| 178 | fn DMA1_Channel6(); | ||
| 179 | fn DMA1_Channel7(); | ||
| 180 | fn DMA2_Channel1(); | ||
| 181 | fn DMA2_Channel2(); | ||
| 182 | fn DMA2_Channel3(); | ||
| 183 | fn DMA2_Channel4(); | ||
| 184 | fn DMA2_Channel5(); | ||
| 185 | fn DMA2_Channel6(); | ||
| 186 | fn DMA2_Channel7(); | ||
| 187 | fn EXTI0(); | ||
| 188 | fn EXTI1(); | ||
| 189 | fn EXTI15_10(); | ||
| 190 | fn EXTI2(); | ||
| 191 | fn EXTI3(); | ||
| 192 | fn EXTI4(); | ||
| 193 | fn EXTI9_5(); | ||
| 194 | fn FLASH(); | ||
| 195 | fn FPU(); | ||
| 196 | fn I2C1_ER(); | ||
| 197 | fn I2C1_EV(); | ||
| 198 | fn I2C2_ER(); | ||
| 199 | fn I2C2_EV(); | ||
| 200 | fn I2C3_ER(); | ||
| 201 | fn I2C3_EV(); | ||
| 202 | fn LPTIM1(); | ||
| 203 | fn LPTIM2(); | ||
| 204 | fn LPUART1(); | ||
| 205 | fn PVD_PVM(); | ||
| 206 | fn QUADSPI(); | ||
| 207 | fn RCC(); | ||
| 208 | fn RNG(); | ||
| 209 | fn RTC_Alarm(); | ||
| 210 | fn RTC_WKUP(); | ||
| 211 | fn SAI1(); | ||
| 212 | fn SDMMC1(); | ||
| 213 | fn SPI1(); | ||
| 214 | fn SPI2(); | ||
| 215 | fn SPI3(); | ||
| 216 | fn SWPMI1(); | ||
| 217 | fn TAMP_STAMP(); | ||
| 218 | fn TIM1_BRK_TIM15(); | ||
| 219 | fn TIM1_CC(); | ||
| 220 | fn TIM1_TRG_COM(); | ||
| 221 | fn TIM1_UP_TIM16(); | ||
| 222 | fn TIM2(); | ||
| 223 | fn TIM6_DAC(); | ||
| 224 | fn TIM7(); | ||
| 225 | fn TSC(); | ||
| 226 | fn USART1(); | ||
| 227 | fn USART2(); | ||
| 228 | fn USART3(); | ||
| 229 | fn WWDG(); | ||
| 230 | } | ||
| 231 | pub union Vector { | ||
| 232 | _handler: unsafe extern "C" fn(), | ||
| 233 | _reserved: u32, | ||
| 234 | } | ||
| 235 | #[link_section = ".vector_table.interrupts"] | ||
| 236 | #[no_mangle] | ||
| 237 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 238 | Vector { _handler: WWDG }, | ||
| 239 | Vector { _handler: PVD_PVM }, | ||
| 240 | Vector { | ||
| 241 | _handler: TAMP_STAMP, | ||
| 242 | }, | ||
| 243 | Vector { _handler: RTC_WKUP }, | ||
| 244 | Vector { _handler: FLASH }, | ||
| 245 | Vector { _handler: RCC }, | ||
| 246 | Vector { _handler: EXTI0 }, | ||
| 247 | Vector { _handler: EXTI1 }, | ||
| 248 | Vector { _handler: EXTI2 }, | ||
| 249 | Vector { _handler: EXTI3 }, | ||
| 250 | Vector { _handler: EXTI4 }, | ||
| 251 | Vector { | ||
| 252 | _handler: DMA1_Channel1, | ||
| 253 | }, | ||
| 254 | Vector { | ||
| 255 | _handler: DMA1_Channel2, | ||
| 256 | }, | ||
| 257 | Vector { | ||
| 258 | _handler: DMA1_Channel3, | ||
| 259 | }, | ||
| 260 | Vector { | ||
| 261 | _handler: DMA1_Channel4, | ||
| 262 | }, | ||
| 263 | Vector { | ||
| 264 | _handler: DMA1_Channel5, | ||
| 265 | }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel6, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel7, | ||
| 271 | }, | ||
| 272 | Vector { _handler: ADC1 }, | ||
| 273 | Vector { _handler: CAN1_TX }, | ||
| 274 | Vector { _handler: CAN1_RX0 }, | ||
| 275 | Vector { _handler: CAN1_RX1 }, | ||
| 276 | Vector { _handler: CAN1_SCE }, | ||
| 277 | Vector { _handler: EXTI9_5 }, | ||
| 278 | Vector { | ||
| 279 | _handler: TIM1_BRK_TIM15, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: TIM1_UP_TIM16, | ||
| 283 | }, | ||
| 284 | Vector { | ||
| 285 | _handler: TIM1_TRG_COM, | ||
| 286 | }, | ||
| 287 | Vector { _handler: TIM1_CC }, | ||
| 288 | Vector { _handler: TIM2 }, | ||
| 289 | Vector { _reserved: 0 }, | ||
| 290 | Vector { _reserved: 0 }, | ||
| 291 | Vector { _handler: I2C1_EV }, | ||
| 292 | Vector { _handler: I2C1_ER }, | ||
| 293 | Vector { _handler: I2C2_EV }, | ||
| 294 | Vector { _handler: I2C2_ER }, | ||
| 295 | Vector { _handler: SPI1 }, | ||
| 296 | Vector { _handler: SPI2 }, | ||
| 297 | Vector { _handler: USART1 }, | ||
| 298 | Vector { _handler: USART2 }, | ||
| 299 | Vector { _handler: USART3 }, | ||
| 300 | Vector { | ||
| 301 | _handler: EXTI15_10, | ||
| 302 | }, | ||
| 303 | Vector { | ||
| 304 | _handler: RTC_Alarm, | ||
| 305 | }, | ||
| 306 | Vector { _reserved: 0 }, | ||
| 307 | Vector { _reserved: 0 }, | ||
| 308 | Vector { _reserved: 0 }, | ||
| 309 | Vector { _reserved: 0 }, | ||
| 310 | Vector { _reserved: 0 }, | ||
| 311 | Vector { _reserved: 0 }, | ||
| 312 | Vector { _reserved: 0 }, | ||
| 313 | Vector { _handler: SDMMC1 }, | ||
| 314 | Vector { _reserved: 0 }, | ||
| 315 | Vector { _handler: SPI3 }, | ||
| 316 | Vector { _reserved: 0 }, | ||
| 317 | Vector { _reserved: 0 }, | ||
| 318 | Vector { _handler: TIM6_DAC }, | ||
| 319 | Vector { _handler: TIM7 }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA2_Channel1, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA2_Channel2, | ||
| 325 | }, | ||
| 326 | Vector { | ||
| 327 | _handler: DMA2_Channel3, | ||
| 328 | }, | ||
| 329 | Vector { | ||
| 330 | _handler: DMA2_Channel4, | ||
| 331 | }, | ||
| 332 | Vector { | ||
| 333 | _handler: DMA2_Channel5, | ||
| 334 | }, | ||
| 335 | Vector { _reserved: 0 }, | ||
| 336 | Vector { _reserved: 0 }, | ||
| 337 | Vector { _reserved: 0 }, | ||
| 338 | Vector { _handler: COMP }, | ||
| 339 | Vector { _handler: LPTIM1 }, | ||
| 340 | Vector { _handler: LPTIM2 }, | ||
| 341 | Vector { _reserved: 0 }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA2_Channel6, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA2_Channel7, | ||
| 347 | }, | ||
| 348 | Vector { _handler: LPUART1 }, | ||
| 349 | Vector { _handler: QUADSPI }, | ||
| 350 | Vector { _handler: I2C3_EV }, | ||
| 351 | Vector { _handler: I2C3_ER }, | ||
| 352 | Vector { _handler: SAI1 }, | ||
| 353 | Vector { _reserved: 0 }, | ||
| 354 | Vector { _handler: SWPMI1 }, | ||
| 355 | Vector { _handler: TSC }, | ||
| 356 | Vector { _reserved: 0 }, | ||
| 357 | Vector { _reserved: 0 }, | ||
| 358 | Vector { _handler: RNG }, | ||
| 359 | Vector { _handler: FPU }, | ||
| 360 | Vector { _handler: CRS }, | ||
| 361 | ]; | ||
| 362 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 363 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 364 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 365 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l432kb.rs b/embassy-stm32/src/chip/stm32l432kb.rs index 36b8571c1..915bbbd6a 100644 --- a/embassy-stm32/src/chip/stm32l432kb.rs +++ b/embassy-stm32/src/chip/stm32l432kb.rs | |||
| @@ -1,16 +1,351 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, |
| 8 | PH12, PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, | 8 | PH11, PH12, PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, |
| 9 | RTC, SAI1, SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, | 9 | RNG, RTC, SAI1, SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, |
| 10 | USART2, USB, WWDG | 10 | USART2, USB, WWDG |
| 11 | ); | 11 | ); |
| 12 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 13 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 12 | pub const GPIO_BASE: usize = 0x48000000; | 14 | pub const GPIO_BASE: usize = 0x48000000; |
| 13 | pub const GPIO_STRIDE: usize = 0x400; | 15 | pub const GPIO_STRIDE: usize = 0x400; |
| 16 | |||
| 17 | pub mod interrupt { | ||
| 18 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 19 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 20 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 21 | |||
| 22 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 23 | #[allow(non_camel_case_types)] | ||
| 24 | enum InterruptEnum { | ||
| 25 | ADC1 = 18, | ||
| 26 | CAN1_RX0 = 20, | ||
| 27 | CAN1_RX1 = 21, | ||
| 28 | CAN1_SCE = 22, | ||
| 29 | CAN1_TX = 19, | ||
| 30 | COMP = 64, | ||
| 31 | CRS = 82, | ||
| 32 | DMA1_Channel1 = 11, | ||
| 33 | DMA1_Channel2 = 12, | ||
| 34 | DMA1_Channel3 = 13, | ||
| 35 | DMA1_Channel4 = 14, | ||
| 36 | DMA1_Channel5 = 15, | ||
| 37 | DMA1_Channel6 = 16, | ||
| 38 | DMA1_Channel7 = 17, | ||
| 39 | DMA2_Channel1 = 56, | ||
| 40 | DMA2_Channel2 = 57, | ||
| 41 | DMA2_Channel3 = 58, | ||
| 42 | DMA2_Channel4 = 59, | ||
| 43 | DMA2_Channel5 = 60, | ||
| 44 | DMA2_Channel6 = 68, | ||
| 45 | DMA2_Channel7 = 69, | ||
| 46 | EXTI0 = 6, | ||
| 47 | EXTI1 = 7, | ||
| 48 | EXTI15_10 = 40, | ||
| 49 | EXTI2 = 8, | ||
| 50 | EXTI3 = 9, | ||
| 51 | EXTI4 = 10, | ||
| 52 | EXTI9_5 = 23, | ||
| 53 | FLASH = 4, | ||
| 54 | FPU = 81, | ||
| 55 | I2C1_ER = 32, | ||
| 56 | I2C1_EV = 31, | ||
| 57 | I2C3_ER = 73, | ||
| 58 | I2C3_EV = 72, | ||
| 59 | LPTIM1 = 65, | ||
| 60 | LPTIM2 = 66, | ||
| 61 | LPUART1 = 70, | ||
| 62 | PVD_PVM = 1, | ||
| 63 | QUADSPI = 71, | ||
| 64 | RCC = 5, | ||
| 65 | RNG = 80, | ||
| 66 | RTC_Alarm = 41, | ||
| 67 | RTC_WKUP = 3, | ||
| 68 | SAI1 = 74, | ||
| 69 | SPI1 = 35, | ||
| 70 | SPI3 = 51, | ||
| 71 | SWPMI1 = 76, | ||
| 72 | TAMP_STAMP = 2, | ||
| 73 | TIM1_BRK_TIM15 = 24, | ||
| 74 | TIM1_CC = 27, | ||
| 75 | TIM1_TRG_COM = 26, | ||
| 76 | TIM1_UP_TIM16 = 25, | ||
| 77 | TIM2 = 28, | ||
| 78 | TIM6_DAC = 54, | ||
| 79 | TIM7 = 55, | ||
| 80 | TSC = 77, | ||
| 81 | USART1 = 37, | ||
| 82 | USART2 = 38, | ||
| 83 | USB = 67, | ||
| 84 | WWDG = 0, | ||
| 85 | } | ||
| 86 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 87 | #[inline(always)] | ||
| 88 | fn number(self) -> u16 { | ||
| 89 | self as u16 | ||
| 90 | } | ||
| 91 | } | ||
| 92 | |||
| 93 | declare!(ADC1); | ||
| 94 | declare!(CAN1_RX0); | ||
| 95 | declare!(CAN1_RX1); | ||
| 96 | declare!(CAN1_SCE); | ||
| 97 | declare!(CAN1_TX); | ||
| 98 | declare!(COMP); | ||
| 99 | declare!(CRS); | ||
| 100 | declare!(DMA1_Channel1); | ||
| 101 | declare!(DMA1_Channel2); | ||
| 102 | declare!(DMA1_Channel3); | ||
| 103 | declare!(DMA1_Channel4); | ||
| 104 | declare!(DMA1_Channel5); | ||
| 105 | declare!(DMA1_Channel6); | ||
| 106 | declare!(DMA1_Channel7); | ||
| 107 | declare!(DMA2_Channel1); | ||
| 108 | declare!(DMA2_Channel2); | ||
| 109 | declare!(DMA2_Channel3); | ||
| 110 | declare!(DMA2_Channel4); | ||
| 111 | declare!(DMA2_Channel5); | ||
| 112 | declare!(DMA2_Channel6); | ||
| 113 | declare!(DMA2_Channel7); | ||
| 114 | declare!(EXTI0); | ||
| 115 | declare!(EXTI1); | ||
| 116 | declare!(EXTI15_10); | ||
| 117 | declare!(EXTI2); | ||
| 118 | declare!(EXTI3); | ||
| 119 | declare!(EXTI4); | ||
| 120 | declare!(EXTI9_5); | ||
| 121 | declare!(FLASH); | ||
| 122 | declare!(FPU); | ||
| 123 | declare!(I2C1_ER); | ||
| 124 | declare!(I2C1_EV); | ||
| 125 | declare!(I2C3_ER); | ||
| 126 | declare!(I2C3_EV); | ||
| 127 | declare!(LPTIM1); | ||
| 128 | declare!(LPTIM2); | ||
| 129 | declare!(LPUART1); | ||
| 130 | declare!(PVD_PVM); | ||
| 131 | declare!(QUADSPI); | ||
| 132 | declare!(RCC); | ||
| 133 | declare!(RNG); | ||
| 134 | declare!(RTC_Alarm); | ||
| 135 | declare!(RTC_WKUP); | ||
| 136 | declare!(SAI1); | ||
| 137 | declare!(SPI1); | ||
| 138 | declare!(SPI3); | ||
| 139 | declare!(SWPMI1); | ||
| 140 | declare!(TAMP_STAMP); | ||
| 141 | declare!(TIM1_BRK_TIM15); | ||
| 142 | declare!(TIM1_CC); | ||
| 143 | declare!(TIM1_TRG_COM); | ||
| 144 | declare!(TIM1_UP_TIM16); | ||
| 145 | declare!(TIM2); | ||
| 146 | declare!(TIM6_DAC); | ||
| 147 | declare!(TIM7); | ||
| 148 | declare!(TSC); | ||
| 149 | declare!(USART1); | ||
| 150 | declare!(USART2); | ||
| 151 | declare!(USB); | ||
| 152 | declare!(WWDG); | ||
| 153 | } | ||
| 154 | mod interrupt_vector { | ||
| 155 | extern "C" { | ||
| 156 | fn ADC1(); | ||
| 157 | fn CAN1_RX0(); | ||
| 158 | fn CAN1_RX1(); | ||
| 159 | fn CAN1_SCE(); | ||
| 160 | fn CAN1_TX(); | ||
| 161 | fn COMP(); | ||
| 162 | fn CRS(); | ||
| 163 | fn DMA1_Channel1(); | ||
| 164 | fn DMA1_Channel2(); | ||
| 165 | fn DMA1_Channel3(); | ||
| 166 | fn DMA1_Channel4(); | ||
| 167 | fn DMA1_Channel5(); | ||
| 168 | fn DMA1_Channel6(); | ||
| 169 | fn DMA1_Channel7(); | ||
| 170 | fn DMA2_Channel1(); | ||
| 171 | fn DMA2_Channel2(); | ||
| 172 | fn DMA2_Channel3(); | ||
| 173 | fn DMA2_Channel4(); | ||
| 174 | fn DMA2_Channel5(); | ||
| 175 | fn DMA2_Channel6(); | ||
| 176 | fn DMA2_Channel7(); | ||
| 177 | fn EXTI0(); | ||
| 178 | fn EXTI1(); | ||
| 179 | fn EXTI15_10(); | ||
| 180 | fn EXTI2(); | ||
| 181 | fn EXTI3(); | ||
| 182 | fn EXTI4(); | ||
| 183 | fn EXTI9_5(); | ||
| 184 | fn FLASH(); | ||
| 185 | fn FPU(); | ||
| 186 | fn I2C1_ER(); | ||
| 187 | fn I2C1_EV(); | ||
| 188 | fn I2C3_ER(); | ||
| 189 | fn I2C3_EV(); | ||
| 190 | fn LPTIM1(); | ||
| 191 | fn LPTIM2(); | ||
| 192 | fn LPUART1(); | ||
| 193 | fn PVD_PVM(); | ||
| 194 | fn QUADSPI(); | ||
| 195 | fn RCC(); | ||
| 196 | fn RNG(); | ||
| 197 | fn RTC_Alarm(); | ||
| 198 | fn RTC_WKUP(); | ||
| 199 | fn SAI1(); | ||
| 200 | fn SPI1(); | ||
| 201 | fn SPI3(); | ||
| 202 | fn SWPMI1(); | ||
| 203 | fn TAMP_STAMP(); | ||
| 204 | fn TIM1_BRK_TIM15(); | ||
| 205 | fn TIM1_CC(); | ||
| 206 | fn TIM1_TRG_COM(); | ||
| 207 | fn TIM1_UP_TIM16(); | ||
| 208 | fn TIM2(); | ||
| 209 | fn TIM6_DAC(); | ||
| 210 | fn TIM7(); | ||
| 211 | fn TSC(); | ||
| 212 | fn USART1(); | ||
| 213 | fn USART2(); | ||
| 214 | fn USB(); | ||
| 215 | fn WWDG(); | ||
| 216 | } | ||
| 217 | pub union Vector { | ||
| 218 | _handler: unsafe extern "C" fn(), | ||
| 219 | _reserved: u32, | ||
| 220 | } | ||
| 221 | #[link_section = ".vector_table.interrupts"] | ||
| 222 | #[no_mangle] | ||
| 223 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 224 | Vector { _handler: WWDG }, | ||
| 225 | Vector { _handler: PVD_PVM }, | ||
| 226 | Vector { | ||
| 227 | _handler: TAMP_STAMP, | ||
| 228 | }, | ||
| 229 | Vector { _handler: RTC_WKUP }, | ||
| 230 | Vector { _handler: FLASH }, | ||
| 231 | Vector { _handler: RCC }, | ||
| 232 | Vector { _handler: EXTI0 }, | ||
| 233 | Vector { _handler: EXTI1 }, | ||
| 234 | Vector { _handler: EXTI2 }, | ||
| 235 | Vector { _handler: EXTI3 }, | ||
| 236 | Vector { _handler: EXTI4 }, | ||
| 237 | Vector { | ||
| 238 | _handler: DMA1_Channel1, | ||
| 239 | }, | ||
| 240 | Vector { | ||
| 241 | _handler: DMA1_Channel2, | ||
| 242 | }, | ||
| 243 | Vector { | ||
| 244 | _handler: DMA1_Channel3, | ||
| 245 | }, | ||
| 246 | Vector { | ||
| 247 | _handler: DMA1_Channel4, | ||
| 248 | }, | ||
| 249 | Vector { | ||
| 250 | _handler: DMA1_Channel5, | ||
| 251 | }, | ||
| 252 | Vector { | ||
| 253 | _handler: DMA1_Channel6, | ||
| 254 | }, | ||
| 255 | Vector { | ||
| 256 | _handler: DMA1_Channel7, | ||
| 257 | }, | ||
| 258 | Vector { _handler: ADC1 }, | ||
| 259 | Vector { _handler: CAN1_TX }, | ||
| 260 | Vector { _handler: CAN1_RX0 }, | ||
| 261 | Vector { _handler: CAN1_RX1 }, | ||
| 262 | Vector { _handler: CAN1_SCE }, | ||
| 263 | Vector { _handler: EXTI9_5 }, | ||
| 264 | Vector { | ||
| 265 | _handler: TIM1_BRK_TIM15, | ||
| 266 | }, | ||
| 267 | Vector { | ||
| 268 | _handler: TIM1_UP_TIM16, | ||
| 269 | }, | ||
| 270 | Vector { | ||
| 271 | _handler: TIM1_TRG_COM, | ||
| 272 | }, | ||
| 273 | Vector { _handler: TIM1_CC }, | ||
| 274 | Vector { _handler: TIM2 }, | ||
| 275 | Vector { _reserved: 0 }, | ||
| 276 | Vector { _reserved: 0 }, | ||
| 277 | Vector { _handler: I2C1_EV }, | ||
| 278 | Vector { _handler: I2C1_ER }, | ||
| 279 | Vector { _reserved: 0 }, | ||
| 280 | Vector { _reserved: 0 }, | ||
| 281 | Vector { _handler: SPI1 }, | ||
| 282 | Vector { _reserved: 0 }, | ||
| 283 | Vector { _handler: USART1 }, | ||
| 284 | Vector { _handler: USART2 }, | ||
| 285 | Vector { _reserved: 0 }, | ||
| 286 | Vector { | ||
| 287 | _handler: EXTI15_10, | ||
| 288 | }, | ||
| 289 | Vector { | ||
| 290 | _handler: RTC_Alarm, | ||
| 291 | }, | ||
| 292 | Vector { _reserved: 0 }, | ||
| 293 | Vector { _reserved: 0 }, | ||
| 294 | Vector { _reserved: 0 }, | ||
| 295 | Vector { _reserved: 0 }, | ||
| 296 | Vector { _reserved: 0 }, | ||
| 297 | Vector { _reserved: 0 }, | ||
| 298 | Vector { _reserved: 0 }, | ||
| 299 | Vector { _reserved: 0 }, | ||
| 300 | Vector { _reserved: 0 }, | ||
| 301 | Vector { _handler: SPI3 }, | ||
| 302 | Vector { _reserved: 0 }, | ||
| 303 | Vector { _reserved: 0 }, | ||
| 304 | Vector { _handler: TIM6_DAC }, | ||
| 305 | Vector { _handler: TIM7 }, | ||
| 306 | Vector { | ||
| 307 | _handler: DMA2_Channel1, | ||
| 308 | }, | ||
| 309 | Vector { | ||
| 310 | _handler: DMA2_Channel2, | ||
| 311 | }, | ||
| 312 | Vector { | ||
| 313 | _handler: DMA2_Channel3, | ||
| 314 | }, | ||
| 315 | Vector { | ||
| 316 | _handler: DMA2_Channel4, | ||
| 317 | }, | ||
| 318 | Vector { | ||
| 319 | _handler: DMA2_Channel5, | ||
| 320 | }, | ||
| 321 | Vector { _reserved: 0 }, | ||
| 322 | Vector { _reserved: 0 }, | ||
| 323 | Vector { _reserved: 0 }, | ||
| 324 | Vector { _handler: COMP }, | ||
| 325 | Vector { _handler: LPTIM1 }, | ||
| 326 | Vector { _handler: LPTIM2 }, | ||
| 327 | Vector { _handler: USB }, | ||
| 328 | Vector { | ||
| 329 | _handler: DMA2_Channel6, | ||
| 330 | }, | ||
| 331 | Vector { | ||
| 332 | _handler: DMA2_Channel7, | ||
| 333 | }, | ||
| 334 | Vector { _handler: LPUART1 }, | ||
| 335 | Vector { _handler: QUADSPI }, | ||
| 336 | Vector { _handler: I2C3_EV }, | ||
| 337 | Vector { _handler: I2C3_ER }, | ||
| 338 | Vector { _handler: SAI1 }, | ||
| 339 | Vector { _reserved: 0 }, | ||
| 340 | Vector { _handler: SWPMI1 }, | ||
| 341 | Vector { _handler: TSC }, | ||
| 342 | Vector { _reserved: 0 }, | ||
| 343 | Vector { _reserved: 0 }, | ||
| 344 | Vector { _handler: RNG }, | ||
| 345 | Vector { _handler: FPU }, | ||
| 346 | Vector { _handler: CRS }, | ||
| 347 | ]; | ||
| 348 | } | ||
| 14 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 349 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 15 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 350 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 16 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 351 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l432kc.rs b/embassy-stm32/src/chip/stm32l432kc.rs index 36b8571c1..915bbbd6a 100644 --- a/embassy-stm32/src/chip/stm32l432kc.rs +++ b/embassy-stm32/src/chip/stm32l432kc.rs | |||
| @@ -1,16 +1,351 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, |
| 8 | PH12, PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, | 8 | PH11, PH12, PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, |
| 9 | RTC, SAI1, SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, | 9 | RNG, RTC, SAI1, SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, |
| 10 | USART2, USB, WWDG | 10 | USART2, USB, WWDG |
| 11 | ); | 11 | ); |
| 12 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 13 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 12 | pub const GPIO_BASE: usize = 0x48000000; | 14 | pub const GPIO_BASE: usize = 0x48000000; |
| 13 | pub const GPIO_STRIDE: usize = 0x400; | 15 | pub const GPIO_STRIDE: usize = 0x400; |
| 16 | |||
| 17 | pub mod interrupt { | ||
| 18 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 19 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 20 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 21 | |||
| 22 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 23 | #[allow(non_camel_case_types)] | ||
| 24 | enum InterruptEnum { | ||
| 25 | ADC1 = 18, | ||
| 26 | CAN1_RX0 = 20, | ||
| 27 | CAN1_RX1 = 21, | ||
| 28 | CAN1_SCE = 22, | ||
| 29 | CAN1_TX = 19, | ||
| 30 | COMP = 64, | ||
| 31 | CRS = 82, | ||
| 32 | DMA1_Channel1 = 11, | ||
| 33 | DMA1_Channel2 = 12, | ||
| 34 | DMA1_Channel3 = 13, | ||
| 35 | DMA1_Channel4 = 14, | ||
| 36 | DMA1_Channel5 = 15, | ||
| 37 | DMA1_Channel6 = 16, | ||
| 38 | DMA1_Channel7 = 17, | ||
| 39 | DMA2_Channel1 = 56, | ||
| 40 | DMA2_Channel2 = 57, | ||
| 41 | DMA2_Channel3 = 58, | ||
| 42 | DMA2_Channel4 = 59, | ||
| 43 | DMA2_Channel5 = 60, | ||
| 44 | DMA2_Channel6 = 68, | ||
| 45 | DMA2_Channel7 = 69, | ||
| 46 | EXTI0 = 6, | ||
| 47 | EXTI1 = 7, | ||
| 48 | EXTI15_10 = 40, | ||
| 49 | EXTI2 = 8, | ||
| 50 | EXTI3 = 9, | ||
| 51 | EXTI4 = 10, | ||
| 52 | EXTI9_5 = 23, | ||
| 53 | FLASH = 4, | ||
| 54 | FPU = 81, | ||
| 55 | I2C1_ER = 32, | ||
| 56 | I2C1_EV = 31, | ||
| 57 | I2C3_ER = 73, | ||
| 58 | I2C3_EV = 72, | ||
| 59 | LPTIM1 = 65, | ||
| 60 | LPTIM2 = 66, | ||
| 61 | LPUART1 = 70, | ||
| 62 | PVD_PVM = 1, | ||
| 63 | QUADSPI = 71, | ||
| 64 | RCC = 5, | ||
| 65 | RNG = 80, | ||
| 66 | RTC_Alarm = 41, | ||
| 67 | RTC_WKUP = 3, | ||
| 68 | SAI1 = 74, | ||
| 69 | SPI1 = 35, | ||
| 70 | SPI3 = 51, | ||
| 71 | SWPMI1 = 76, | ||
| 72 | TAMP_STAMP = 2, | ||
| 73 | TIM1_BRK_TIM15 = 24, | ||
| 74 | TIM1_CC = 27, | ||
| 75 | TIM1_TRG_COM = 26, | ||
| 76 | TIM1_UP_TIM16 = 25, | ||
| 77 | TIM2 = 28, | ||
| 78 | TIM6_DAC = 54, | ||
| 79 | TIM7 = 55, | ||
| 80 | TSC = 77, | ||
| 81 | USART1 = 37, | ||
| 82 | USART2 = 38, | ||
| 83 | USB = 67, | ||
| 84 | WWDG = 0, | ||
| 85 | } | ||
| 86 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 87 | #[inline(always)] | ||
| 88 | fn number(self) -> u16 { | ||
| 89 | self as u16 | ||
| 90 | } | ||
| 91 | } | ||
| 92 | |||
| 93 | declare!(ADC1); | ||
| 94 | declare!(CAN1_RX0); | ||
| 95 | declare!(CAN1_RX1); | ||
| 96 | declare!(CAN1_SCE); | ||
| 97 | declare!(CAN1_TX); | ||
| 98 | declare!(COMP); | ||
| 99 | declare!(CRS); | ||
| 100 | declare!(DMA1_Channel1); | ||
| 101 | declare!(DMA1_Channel2); | ||
| 102 | declare!(DMA1_Channel3); | ||
| 103 | declare!(DMA1_Channel4); | ||
| 104 | declare!(DMA1_Channel5); | ||
| 105 | declare!(DMA1_Channel6); | ||
| 106 | declare!(DMA1_Channel7); | ||
| 107 | declare!(DMA2_Channel1); | ||
| 108 | declare!(DMA2_Channel2); | ||
| 109 | declare!(DMA2_Channel3); | ||
| 110 | declare!(DMA2_Channel4); | ||
| 111 | declare!(DMA2_Channel5); | ||
| 112 | declare!(DMA2_Channel6); | ||
| 113 | declare!(DMA2_Channel7); | ||
| 114 | declare!(EXTI0); | ||
| 115 | declare!(EXTI1); | ||
| 116 | declare!(EXTI15_10); | ||
| 117 | declare!(EXTI2); | ||
| 118 | declare!(EXTI3); | ||
| 119 | declare!(EXTI4); | ||
| 120 | declare!(EXTI9_5); | ||
| 121 | declare!(FLASH); | ||
| 122 | declare!(FPU); | ||
| 123 | declare!(I2C1_ER); | ||
| 124 | declare!(I2C1_EV); | ||
| 125 | declare!(I2C3_ER); | ||
| 126 | declare!(I2C3_EV); | ||
| 127 | declare!(LPTIM1); | ||
| 128 | declare!(LPTIM2); | ||
| 129 | declare!(LPUART1); | ||
| 130 | declare!(PVD_PVM); | ||
| 131 | declare!(QUADSPI); | ||
| 132 | declare!(RCC); | ||
| 133 | declare!(RNG); | ||
| 134 | declare!(RTC_Alarm); | ||
| 135 | declare!(RTC_WKUP); | ||
| 136 | declare!(SAI1); | ||
| 137 | declare!(SPI1); | ||
| 138 | declare!(SPI3); | ||
| 139 | declare!(SWPMI1); | ||
| 140 | declare!(TAMP_STAMP); | ||
| 141 | declare!(TIM1_BRK_TIM15); | ||
| 142 | declare!(TIM1_CC); | ||
| 143 | declare!(TIM1_TRG_COM); | ||
| 144 | declare!(TIM1_UP_TIM16); | ||
| 145 | declare!(TIM2); | ||
| 146 | declare!(TIM6_DAC); | ||
| 147 | declare!(TIM7); | ||
| 148 | declare!(TSC); | ||
| 149 | declare!(USART1); | ||
| 150 | declare!(USART2); | ||
| 151 | declare!(USB); | ||
| 152 | declare!(WWDG); | ||
| 153 | } | ||
| 154 | mod interrupt_vector { | ||
| 155 | extern "C" { | ||
| 156 | fn ADC1(); | ||
| 157 | fn CAN1_RX0(); | ||
| 158 | fn CAN1_RX1(); | ||
| 159 | fn CAN1_SCE(); | ||
| 160 | fn CAN1_TX(); | ||
| 161 | fn COMP(); | ||
| 162 | fn CRS(); | ||
| 163 | fn DMA1_Channel1(); | ||
| 164 | fn DMA1_Channel2(); | ||
| 165 | fn DMA1_Channel3(); | ||
| 166 | fn DMA1_Channel4(); | ||
| 167 | fn DMA1_Channel5(); | ||
| 168 | fn DMA1_Channel6(); | ||
| 169 | fn DMA1_Channel7(); | ||
| 170 | fn DMA2_Channel1(); | ||
| 171 | fn DMA2_Channel2(); | ||
| 172 | fn DMA2_Channel3(); | ||
| 173 | fn DMA2_Channel4(); | ||
| 174 | fn DMA2_Channel5(); | ||
| 175 | fn DMA2_Channel6(); | ||
| 176 | fn DMA2_Channel7(); | ||
| 177 | fn EXTI0(); | ||
| 178 | fn EXTI1(); | ||
| 179 | fn EXTI15_10(); | ||
| 180 | fn EXTI2(); | ||
| 181 | fn EXTI3(); | ||
| 182 | fn EXTI4(); | ||
| 183 | fn EXTI9_5(); | ||
| 184 | fn FLASH(); | ||
| 185 | fn FPU(); | ||
| 186 | fn I2C1_ER(); | ||
| 187 | fn I2C1_EV(); | ||
| 188 | fn I2C3_ER(); | ||
| 189 | fn I2C3_EV(); | ||
| 190 | fn LPTIM1(); | ||
| 191 | fn LPTIM2(); | ||
| 192 | fn LPUART1(); | ||
| 193 | fn PVD_PVM(); | ||
| 194 | fn QUADSPI(); | ||
| 195 | fn RCC(); | ||
| 196 | fn RNG(); | ||
| 197 | fn RTC_Alarm(); | ||
| 198 | fn RTC_WKUP(); | ||
| 199 | fn SAI1(); | ||
| 200 | fn SPI1(); | ||
| 201 | fn SPI3(); | ||
| 202 | fn SWPMI1(); | ||
| 203 | fn TAMP_STAMP(); | ||
| 204 | fn TIM1_BRK_TIM15(); | ||
| 205 | fn TIM1_CC(); | ||
| 206 | fn TIM1_TRG_COM(); | ||
| 207 | fn TIM1_UP_TIM16(); | ||
| 208 | fn TIM2(); | ||
| 209 | fn TIM6_DAC(); | ||
| 210 | fn TIM7(); | ||
| 211 | fn TSC(); | ||
| 212 | fn USART1(); | ||
| 213 | fn USART2(); | ||
| 214 | fn USB(); | ||
| 215 | fn WWDG(); | ||
| 216 | } | ||
| 217 | pub union Vector { | ||
| 218 | _handler: unsafe extern "C" fn(), | ||
| 219 | _reserved: u32, | ||
| 220 | } | ||
| 221 | #[link_section = ".vector_table.interrupts"] | ||
| 222 | #[no_mangle] | ||
| 223 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 224 | Vector { _handler: WWDG }, | ||
| 225 | Vector { _handler: PVD_PVM }, | ||
| 226 | Vector { | ||
| 227 | _handler: TAMP_STAMP, | ||
| 228 | }, | ||
| 229 | Vector { _handler: RTC_WKUP }, | ||
| 230 | Vector { _handler: FLASH }, | ||
| 231 | Vector { _handler: RCC }, | ||
| 232 | Vector { _handler: EXTI0 }, | ||
| 233 | Vector { _handler: EXTI1 }, | ||
| 234 | Vector { _handler: EXTI2 }, | ||
| 235 | Vector { _handler: EXTI3 }, | ||
| 236 | Vector { _handler: EXTI4 }, | ||
| 237 | Vector { | ||
| 238 | _handler: DMA1_Channel1, | ||
| 239 | }, | ||
| 240 | Vector { | ||
| 241 | _handler: DMA1_Channel2, | ||
| 242 | }, | ||
| 243 | Vector { | ||
| 244 | _handler: DMA1_Channel3, | ||
| 245 | }, | ||
| 246 | Vector { | ||
| 247 | _handler: DMA1_Channel4, | ||
| 248 | }, | ||
| 249 | Vector { | ||
| 250 | _handler: DMA1_Channel5, | ||
| 251 | }, | ||
| 252 | Vector { | ||
| 253 | _handler: DMA1_Channel6, | ||
| 254 | }, | ||
| 255 | Vector { | ||
| 256 | _handler: DMA1_Channel7, | ||
| 257 | }, | ||
| 258 | Vector { _handler: ADC1 }, | ||
| 259 | Vector { _handler: CAN1_TX }, | ||
| 260 | Vector { _handler: CAN1_RX0 }, | ||
| 261 | Vector { _handler: CAN1_RX1 }, | ||
| 262 | Vector { _handler: CAN1_SCE }, | ||
| 263 | Vector { _handler: EXTI9_5 }, | ||
| 264 | Vector { | ||
| 265 | _handler: TIM1_BRK_TIM15, | ||
| 266 | }, | ||
| 267 | Vector { | ||
| 268 | _handler: TIM1_UP_TIM16, | ||
| 269 | }, | ||
| 270 | Vector { | ||
| 271 | _handler: TIM1_TRG_COM, | ||
| 272 | }, | ||
| 273 | Vector { _handler: TIM1_CC }, | ||
| 274 | Vector { _handler: TIM2 }, | ||
| 275 | Vector { _reserved: 0 }, | ||
| 276 | Vector { _reserved: 0 }, | ||
| 277 | Vector { _handler: I2C1_EV }, | ||
| 278 | Vector { _handler: I2C1_ER }, | ||
| 279 | Vector { _reserved: 0 }, | ||
| 280 | Vector { _reserved: 0 }, | ||
| 281 | Vector { _handler: SPI1 }, | ||
| 282 | Vector { _reserved: 0 }, | ||
| 283 | Vector { _handler: USART1 }, | ||
| 284 | Vector { _handler: USART2 }, | ||
| 285 | Vector { _reserved: 0 }, | ||
| 286 | Vector { | ||
| 287 | _handler: EXTI15_10, | ||
| 288 | }, | ||
| 289 | Vector { | ||
| 290 | _handler: RTC_Alarm, | ||
| 291 | }, | ||
| 292 | Vector { _reserved: 0 }, | ||
| 293 | Vector { _reserved: 0 }, | ||
| 294 | Vector { _reserved: 0 }, | ||
| 295 | Vector { _reserved: 0 }, | ||
| 296 | Vector { _reserved: 0 }, | ||
| 297 | Vector { _reserved: 0 }, | ||
| 298 | Vector { _reserved: 0 }, | ||
| 299 | Vector { _reserved: 0 }, | ||
| 300 | Vector { _reserved: 0 }, | ||
| 301 | Vector { _handler: SPI3 }, | ||
| 302 | Vector { _reserved: 0 }, | ||
| 303 | Vector { _reserved: 0 }, | ||
| 304 | Vector { _handler: TIM6_DAC }, | ||
| 305 | Vector { _handler: TIM7 }, | ||
| 306 | Vector { | ||
| 307 | _handler: DMA2_Channel1, | ||
| 308 | }, | ||
| 309 | Vector { | ||
| 310 | _handler: DMA2_Channel2, | ||
| 311 | }, | ||
| 312 | Vector { | ||
| 313 | _handler: DMA2_Channel3, | ||
| 314 | }, | ||
| 315 | Vector { | ||
| 316 | _handler: DMA2_Channel4, | ||
| 317 | }, | ||
| 318 | Vector { | ||
| 319 | _handler: DMA2_Channel5, | ||
| 320 | }, | ||
| 321 | Vector { _reserved: 0 }, | ||
| 322 | Vector { _reserved: 0 }, | ||
| 323 | Vector { _reserved: 0 }, | ||
| 324 | Vector { _handler: COMP }, | ||
| 325 | Vector { _handler: LPTIM1 }, | ||
| 326 | Vector { _handler: LPTIM2 }, | ||
| 327 | Vector { _handler: USB }, | ||
| 328 | Vector { | ||
| 329 | _handler: DMA2_Channel6, | ||
| 330 | }, | ||
| 331 | Vector { | ||
| 332 | _handler: DMA2_Channel7, | ||
| 333 | }, | ||
| 334 | Vector { _handler: LPUART1 }, | ||
| 335 | Vector { _handler: QUADSPI }, | ||
| 336 | Vector { _handler: I2C3_EV }, | ||
| 337 | Vector { _handler: I2C3_ER }, | ||
| 338 | Vector { _handler: SAI1 }, | ||
| 339 | Vector { _reserved: 0 }, | ||
| 340 | Vector { _handler: SWPMI1 }, | ||
| 341 | Vector { _handler: TSC }, | ||
| 342 | Vector { _reserved: 0 }, | ||
| 343 | Vector { _reserved: 0 }, | ||
| 344 | Vector { _handler: RNG }, | ||
| 345 | Vector { _handler: FPU }, | ||
| 346 | Vector { _handler: CRS }, | ||
| 347 | ]; | ||
| 348 | } | ||
| 14 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 349 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 15 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 350 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 16 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 351 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l433cb.rs b/embassy-stm32/src/chip/stm32l433cb.rs index 80e01da59..95313ffb0 100644 --- a/embassy-stm32/src/chip/stm32l433cb.rs +++ b/embassy-stm32/src/chip/stm32l433cb.rs | |||
| @@ -1,18 +1,371 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, | 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, |
| 11 | RTC, SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, | 11 | RNG, RTC, SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, |
| 12 | USART2, USART3, USB, WWDG | 12 | USART1, USART2, USART3, USB, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DMA1_Channel1 = 11, | ||
| 35 | DMA1_Channel2 = 12, | ||
| 36 | DMA1_Channel3 = 13, | ||
| 37 | DMA1_Channel4 = 14, | ||
| 38 | DMA1_Channel5 = 15, | ||
| 39 | DMA1_Channel6 = 16, | ||
| 40 | DMA1_Channel7 = 17, | ||
| 41 | DMA2_Channel1 = 56, | ||
| 42 | DMA2_Channel2 = 57, | ||
| 43 | DMA2_Channel3 = 58, | ||
| 44 | DMA2_Channel4 = 59, | ||
| 45 | DMA2_Channel5 = 60, | ||
| 46 | DMA2_Channel6 = 68, | ||
| 47 | DMA2_Channel7 = 69, | ||
| 48 | EXTI0 = 6, | ||
| 49 | EXTI1 = 7, | ||
| 50 | EXTI15_10 = 40, | ||
| 51 | EXTI2 = 8, | ||
| 52 | EXTI3 = 9, | ||
| 53 | EXTI4 = 10, | ||
| 54 | EXTI9_5 = 23, | ||
| 55 | FLASH = 4, | ||
| 56 | FPU = 81, | ||
| 57 | I2C1_ER = 32, | ||
| 58 | I2C1_EV = 31, | ||
| 59 | I2C2_ER = 34, | ||
| 60 | I2C2_EV = 33, | ||
| 61 | I2C3_ER = 73, | ||
| 62 | I2C3_EV = 72, | ||
| 63 | LCD = 78, | ||
| 64 | LPTIM1 = 65, | ||
| 65 | LPTIM2 = 66, | ||
| 66 | LPUART1 = 70, | ||
| 67 | PVD_PVM = 1, | ||
| 68 | QUADSPI = 71, | ||
| 69 | RCC = 5, | ||
| 70 | RNG = 80, | ||
| 71 | RTC_Alarm = 41, | ||
| 72 | RTC_WKUP = 3, | ||
| 73 | SAI1 = 74, | ||
| 74 | SDMMC1 = 49, | ||
| 75 | SPI1 = 35, | ||
| 76 | SPI2 = 36, | ||
| 77 | SPI3 = 51, | ||
| 78 | SWPMI1 = 76, | ||
| 79 | TAMP_STAMP = 2, | ||
| 80 | TIM1_BRK_TIM15 = 24, | ||
| 81 | TIM1_CC = 27, | ||
| 82 | TIM1_TRG_COM = 26, | ||
| 83 | TIM1_UP_TIM16 = 25, | ||
| 84 | TIM2 = 28, | ||
| 85 | TIM6_DAC = 54, | ||
| 86 | TIM7 = 55, | ||
| 87 | TSC = 77, | ||
| 88 | USART1 = 37, | ||
| 89 | USART2 = 38, | ||
| 90 | USART3 = 39, | ||
| 91 | USB = 67, | ||
| 92 | WWDG = 0, | ||
| 93 | } | ||
| 94 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 95 | #[inline(always)] | ||
| 96 | fn number(self) -> u16 { | ||
| 97 | self as u16 | ||
| 98 | } | ||
| 99 | } | ||
| 100 | |||
| 101 | declare!(ADC1); | ||
| 102 | declare!(CAN1_RX0); | ||
| 103 | declare!(CAN1_RX1); | ||
| 104 | declare!(CAN1_SCE); | ||
| 105 | declare!(CAN1_TX); | ||
| 106 | declare!(COMP); | ||
| 107 | declare!(CRS); | ||
| 108 | declare!(DMA1_Channel1); | ||
| 109 | declare!(DMA1_Channel2); | ||
| 110 | declare!(DMA1_Channel3); | ||
| 111 | declare!(DMA1_Channel4); | ||
| 112 | declare!(DMA1_Channel5); | ||
| 113 | declare!(DMA1_Channel6); | ||
| 114 | declare!(DMA1_Channel7); | ||
| 115 | declare!(DMA2_Channel1); | ||
| 116 | declare!(DMA2_Channel2); | ||
| 117 | declare!(DMA2_Channel3); | ||
| 118 | declare!(DMA2_Channel4); | ||
| 119 | declare!(DMA2_Channel5); | ||
| 120 | declare!(DMA2_Channel6); | ||
| 121 | declare!(DMA2_Channel7); | ||
| 122 | declare!(EXTI0); | ||
| 123 | declare!(EXTI1); | ||
| 124 | declare!(EXTI15_10); | ||
| 125 | declare!(EXTI2); | ||
| 126 | declare!(EXTI3); | ||
| 127 | declare!(EXTI4); | ||
| 128 | declare!(EXTI9_5); | ||
| 129 | declare!(FLASH); | ||
| 130 | declare!(FPU); | ||
| 131 | declare!(I2C1_ER); | ||
| 132 | declare!(I2C1_EV); | ||
| 133 | declare!(I2C2_ER); | ||
| 134 | declare!(I2C2_EV); | ||
| 135 | declare!(I2C3_ER); | ||
| 136 | declare!(I2C3_EV); | ||
| 137 | declare!(LCD); | ||
| 138 | declare!(LPTIM1); | ||
| 139 | declare!(LPTIM2); | ||
| 140 | declare!(LPUART1); | ||
| 141 | declare!(PVD_PVM); | ||
| 142 | declare!(QUADSPI); | ||
| 143 | declare!(RCC); | ||
| 144 | declare!(RNG); | ||
| 145 | declare!(RTC_Alarm); | ||
| 146 | declare!(RTC_WKUP); | ||
| 147 | declare!(SAI1); | ||
| 148 | declare!(SDMMC1); | ||
| 149 | declare!(SPI1); | ||
| 150 | declare!(SPI2); | ||
| 151 | declare!(SPI3); | ||
| 152 | declare!(SWPMI1); | ||
| 153 | declare!(TAMP_STAMP); | ||
| 154 | declare!(TIM1_BRK_TIM15); | ||
| 155 | declare!(TIM1_CC); | ||
| 156 | declare!(TIM1_TRG_COM); | ||
| 157 | declare!(TIM1_UP_TIM16); | ||
| 158 | declare!(TIM2); | ||
| 159 | declare!(TIM6_DAC); | ||
| 160 | declare!(TIM7); | ||
| 161 | declare!(TSC); | ||
| 162 | declare!(USART1); | ||
| 163 | declare!(USART2); | ||
| 164 | declare!(USART3); | ||
| 165 | declare!(USB); | ||
| 166 | declare!(WWDG); | ||
| 167 | } | ||
| 168 | mod interrupt_vector { | ||
| 169 | extern "C" { | ||
| 170 | fn ADC1(); | ||
| 171 | fn CAN1_RX0(); | ||
| 172 | fn CAN1_RX1(); | ||
| 173 | fn CAN1_SCE(); | ||
| 174 | fn CAN1_TX(); | ||
| 175 | fn COMP(); | ||
| 176 | fn CRS(); | ||
| 177 | fn DMA1_Channel1(); | ||
| 178 | fn DMA1_Channel2(); | ||
| 179 | fn DMA1_Channel3(); | ||
| 180 | fn DMA1_Channel4(); | ||
| 181 | fn DMA1_Channel5(); | ||
| 182 | fn DMA1_Channel6(); | ||
| 183 | fn DMA1_Channel7(); | ||
| 184 | fn DMA2_Channel1(); | ||
| 185 | fn DMA2_Channel2(); | ||
| 186 | fn DMA2_Channel3(); | ||
| 187 | fn DMA2_Channel4(); | ||
| 188 | fn DMA2_Channel5(); | ||
| 189 | fn DMA2_Channel6(); | ||
| 190 | fn DMA2_Channel7(); | ||
| 191 | fn EXTI0(); | ||
| 192 | fn EXTI1(); | ||
| 193 | fn EXTI15_10(); | ||
| 194 | fn EXTI2(); | ||
| 195 | fn EXTI3(); | ||
| 196 | fn EXTI4(); | ||
| 197 | fn EXTI9_5(); | ||
| 198 | fn FLASH(); | ||
| 199 | fn FPU(); | ||
| 200 | fn I2C1_ER(); | ||
| 201 | fn I2C1_EV(); | ||
| 202 | fn I2C2_ER(); | ||
| 203 | fn I2C2_EV(); | ||
| 204 | fn I2C3_ER(); | ||
| 205 | fn I2C3_EV(); | ||
| 206 | fn LCD(); | ||
| 207 | fn LPTIM1(); | ||
| 208 | fn LPTIM2(); | ||
| 209 | fn LPUART1(); | ||
| 210 | fn PVD_PVM(); | ||
| 211 | fn QUADSPI(); | ||
| 212 | fn RCC(); | ||
| 213 | fn RNG(); | ||
| 214 | fn RTC_Alarm(); | ||
| 215 | fn RTC_WKUP(); | ||
| 216 | fn SAI1(); | ||
| 217 | fn SDMMC1(); | ||
| 218 | fn SPI1(); | ||
| 219 | fn SPI2(); | ||
| 220 | fn SPI3(); | ||
| 221 | fn SWPMI1(); | ||
| 222 | fn TAMP_STAMP(); | ||
| 223 | fn TIM1_BRK_TIM15(); | ||
| 224 | fn TIM1_CC(); | ||
| 225 | fn TIM1_TRG_COM(); | ||
| 226 | fn TIM1_UP_TIM16(); | ||
| 227 | fn TIM2(); | ||
| 228 | fn TIM6_DAC(); | ||
| 229 | fn TIM7(); | ||
| 230 | fn TSC(); | ||
| 231 | fn USART1(); | ||
| 232 | fn USART2(); | ||
| 233 | fn USART3(); | ||
| 234 | fn USB(); | ||
| 235 | fn WWDG(); | ||
| 236 | } | ||
| 237 | pub union Vector { | ||
| 238 | _handler: unsafe extern "C" fn(), | ||
| 239 | _reserved: u32, | ||
| 240 | } | ||
| 241 | #[link_section = ".vector_table.interrupts"] | ||
| 242 | #[no_mangle] | ||
| 243 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 244 | Vector { _handler: WWDG }, | ||
| 245 | Vector { _handler: PVD_PVM }, | ||
| 246 | Vector { | ||
| 247 | _handler: TAMP_STAMP, | ||
| 248 | }, | ||
| 249 | Vector { _handler: RTC_WKUP }, | ||
| 250 | Vector { _handler: FLASH }, | ||
| 251 | Vector { _handler: RCC }, | ||
| 252 | Vector { _handler: EXTI0 }, | ||
| 253 | Vector { _handler: EXTI1 }, | ||
| 254 | Vector { _handler: EXTI2 }, | ||
| 255 | Vector { _handler: EXTI3 }, | ||
| 256 | Vector { _handler: EXTI4 }, | ||
| 257 | Vector { | ||
| 258 | _handler: DMA1_Channel1, | ||
| 259 | }, | ||
| 260 | Vector { | ||
| 261 | _handler: DMA1_Channel2, | ||
| 262 | }, | ||
| 263 | Vector { | ||
| 264 | _handler: DMA1_Channel3, | ||
| 265 | }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel4, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel5, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel6, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel7, | ||
| 277 | }, | ||
| 278 | Vector { _handler: ADC1 }, | ||
| 279 | Vector { _handler: CAN1_TX }, | ||
| 280 | Vector { _handler: CAN1_RX0 }, | ||
| 281 | Vector { _handler: CAN1_RX1 }, | ||
| 282 | Vector { _handler: CAN1_SCE }, | ||
| 283 | Vector { _handler: EXTI9_5 }, | ||
| 284 | Vector { | ||
| 285 | _handler: TIM1_BRK_TIM15, | ||
| 286 | }, | ||
| 287 | Vector { | ||
| 288 | _handler: TIM1_UP_TIM16, | ||
| 289 | }, | ||
| 290 | Vector { | ||
| 291 | _handler: TIM1_TRG_COM, | ||
| 292 | }, | ||
| 293 | Vector { _handler: TIM1_CC }, | ||
| 294 | Vector { _handler: TIM2 }, | ||
| 295 | Vector { _reserved: 0 }, | ||
| 296 | Vector { _reserved: 0 }, | ||
| 297 | Vector { _handler: I2C1_EV }, | ||
| 298 | Vector { _handler: I2C1_ER }, | ||
| 299 | Vector { _handler: I2C2_EV }, | ||
| 300 | Vector { _handler: I2C2_ER }, | ||
| 301 | Vector { _handler: SPI1 }, | ||
| 302 | Vector { _handler: SPI2 }, | ||
| 303 | Vector { _handler: USART1 }, | ||
| 304 | Vector { _handler: USART2 }, | ||
| 305 | Vector { _handler: USART3 }, | ||
| 306 | Vector { | ||
| 307 | _handler: EXTI15_10, | ||
| 308 | }, | ||
| 309 | Vector { | ||
| 310 | _handler: RTC_Alarm, | ||
| 311 | }, | ||
| 312 | Vector { _reserved: 0 }, | ||
| 313 | Vector { _reserved: 0 }, | ||
| 314 | Vector { _reserved: 0 }, | ||
| 315 | Vector { _reserved: 0 }, | ||
| 316 | Vector { _reserved: 0 }, | ||
| 317 | Vector { _reserved: 0 }, | ||
| 318 | Vector { _reserved: 0 }, | ||
| 319 | Vector { _handler: SDMMC1 }, | ||
| 320 | Vector { _reserved: 0 }, | ||
| 321 | Vector { _handler: SPI3 }, | ||
| 322 | Vector { _reserved: 0 }, | ||
| 323 | Vector { _reserved: 0 }, | ||
| 324 | Vector { _handler: TIM6_DAC }, | ||
| 325 | Vector { _handler: TIM7 }, | ||
| 326 | Vector { | ||
| 327 | _handler: DMA2_Channel1, | ||
| 328 | }, | ||
| 329 | Vector { | ||
| 330 | _handler: DMA2_Channel2, | ||
| 331 | }, | ||
| 332 | Vector { | ||
| 333 | _handler: DMA2_Channel3, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: DMA2_Channel4, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel5, | ||
| 340 | }, | ||
| 341 | Vector { _reserved: 0 }, | ||
| 342 | Vector { _reserved: 0 }, | ||
| 343 | Vector { _reserved: 0 }, | ||
| 344 | Vector { _handler: COMP }, | ||
| 345 | Vector { _handler: LPTIM1 }, | ||
| 346 | Vector { _handler: LPTIM2 }, | ||
| 347 | Vector { _handler: USB }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA2_Channel6, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA2_Channel7, | ||
| 353 | }, | ||
| 354 | Vector { _handler: LPUART1 }, | ||
| 355 | Vector { _handler: QUADSPI }, | ||
| 356 | Vector { _handler: I2C3_EV }, | ||
| 357 | Vector { _handler: I2C3_ER }, | ||
| 358 | Vector { _handler: SAI1 }, | ||
| 359 | Vector { _reserved: 0 }, | ||
| 360 | Vector { _handler: SWPMI1 }, | ||
| 361 | Vector { _handler: TSC }, | ||
| 362 | Vector { _handler: LCD }, | ||
| 363 | Vector { _reserved: 0 }, | ||
| 364 | Vector { _handler: RNG }, | ||
| 365 | Vector { _handler: FPU }, | ||
| 366 | Vector { _handler: CRS }, | ||
| 367 | ]; | ||
| 368 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 369 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 370 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 371 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l433cc.rs b/embassy-stm32/src/chip/stm32l433cc.rs index 80e01da59..95313ffb0 100644 --- a/embassy-stm32/src/chip/stm32l433cc.rs +++ b/embassy-stm32/src/chip/stm32l433cc.rs | |||
| @@ -1,18 +1,371 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, | 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, |
| 11 | RTC, SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, | 11 | RNG, RTC, SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, |
| 12 | USART2, USART3, USB, WWDG | 12 | USART1, USART2, USART3, USB, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DMA1_Channel1 = 11, | ||
| 35 | DMA1_Channel2 = 12, | ||
| 36 | DMA1_Channel3 = 13, | ||
| 37 | DMA1_Channel4 = 14, | ||
| 38 | DMA1_Channel5 = 15, | ||
| 39 | DMA1_Channel6 = 16, | ||
| 40 | DMA1_Channel7 = 17, | ||
| 41 | DMA2_Channel1 = 56, | ||
| 42 | DMA2_Channel2 = 57, | ||
| 43 | DMA2_Channel3 = 58, | ||
| 44 | DMA2_Channel4 = 59, | ||
| 45 | DMA2_Channel5 = 60, | ||
| 46 | DMA2_Channel6 = 68, | ||
| 47 | DMA2_Channel7 = 69, | ||
| 48 | EXTI0 = 6, | ||
| 49 | EXTI1 = 7, | ||
| 50 | EXTI15_10 = 40, | ||
| 51 | EXTI2 = 8, | ||
| 52 | EXTI3 = 9, | ||
| 53 | EXTI4 = 10, | ||
| 54 | EXTI9_5 = 23, | ||
| 55 | FLASH = 4, | ||
| 56 | FPU = 81, | ||
| 57 | I2C1_ER = 32, | ||
| 58 | I2C1_EV = 31, | ||
| 59 | I2C2_ER = 34, | ||
| 60 | I2C2_EV = 33, | ||
| 61 | I2C3_ER = 73, | ||
| 62 | I2C3_EV = 72, | ||
| 63 | LCD = 78, | ||
| 64 | LPTIM1 = 65, | ||
| 65 | LPTIM2 = 66, | ||
| 66 | LPUART1 = 70, | ||
| 67 | PVD_PVM = 1, | ||
| 68 | QUADSPI = 71, | ||
| 69 | RCC = 5, | ||
| 70 | RNG = 80, | ||
| 71 | RTC_Alarm = 41, | ||
| 72 | RTC_WKUP = 3, | ||
| 73 | SAI1 = 74, | ||
| 74 | SDMMC1 = 49, | ||
| 75 | SPI1 = 35, | ||
| 76 | SPI2 = 36, | ||
| 77 | SPI3 = 51, | ||
| 78 | SWPMI1 = 76, | ||
| 79 | TAMP_STAMP = 2, | ||
| 80 | TIM1_BRK_TIM15 = 24, | ||
| 81 | TIM1_CC = 27, | ||
| 82 | TIM1_TRG_COM = 26, | ||
| 83 | TIM1_UP_TIM16 = 25, | ||
| 84 | TIM2 = 28, | ||
| 85 | TIM6_DAC = 54, | ||
| 86 | TIM7 = 55, | ||
| 87 | TSC = 77, | ||
| 88 | USART1 = 37, | ||
| 89 | USART2 = 38, | ||
| 90 | USART3 = 39, | ||
| 91 | USB = 67, | ||
| 92 | WWDG = 0, | ||
| 93 | } | ||
| 94 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 95 | #[inline(always)] | ||
| 96 | fn number(self) -> u16 { | ||
| 97 | self as u16 | ||
| 98 | } | ||
| 99 | } | ||
| 100 | |||
| 101 | declare!(ADC1); | ||
| 102 | declare!(CAN1_RX0); | ||
| 103 | declare!(CAN1_RX1); | ||
| 104 | declare!(CAN1_SCE); | ||
| 105 | declare!(CAN1_TX); | ||
| 106 | declare!(COMP); | ||
| 107 | declare!(CRS); | ||
| 108 | declare!(DMA1_Channel1); | ||
| 109 | declare!(DMA1_Channel2); | ||
| 110 | declare!(DMA1_Channel3); | ||
| 111 | declare!(DMA1_Channel4); | ||
| 112 | declare!(DMA1_Channel5); | ||
| 113 | declare!(DMA1_Channel6); | ||
| 114 | declare!(DMA1_Channel7); | ||
| 115 | declare!(DMA2_Channel1); | ||
| 116 | declare!(DMA2_Channel2); | ||
| 117 | declare!(DMA2_Channel3); | ||
| 118 | declare!(DMA2_Channel4); | ||
| 119 | declare!(DMA2_Channel5); | ||
| 120 | declare!(DMA2_Channel6); | ||
| 121 | declare!(DMA2_Channel7); | ||
| 122 | declare!(EXTI0); | ||
| 123 | declare!(EXTI1); | ||
| 124 | declare!(EXTI15_10); | ||
| 125 | declare!(EXTI2); | ||
| 126 | declare!(EXTI3); | ||
| 127 | declare!(EXTI4); | ||
| 128 | declare!(EXTI9_5); | ||
| 129 | declare!(FLASH); | ||
| 130 | declare!(FPU); | ||
| 131 | declare!(I2C1_ER); | ||
| 132 | declare!(I2C1_EV); | ||
| 133 | declare!(I2C2_ER); | ||
| 134 | declare!(I2C2_EV); | ||
| 135 | declare!(I2C3_ER); | ||
| 136 | declare!(I2C3_EV); | ||
| 137 | declare!(LCD); | ||
| 138 | declare!(LPTIM1); | ||
| 139 | declare!(LPTIM2); | ||
| 140 | declare!(LPUART1); | ||
| 141 | declare!(PVD_PVM); | ||
| 142 | declare!(QUADSPI); | ||
| 143 | declare!(RCC); | ||
| 144 | declare!(RNG); | ||
| 145 | declare!(RTC_Alarm); | ||
| 146 | declare!(RTC_WKUP); | ||
| 147 | declare!(SAI1); | ||
| 148 | declare!(SDMMC1); | ||
| 149 | declare!(SPI1); | ||
| 150 | declare!(SPI2); | ||
| 151 | declare!(SPI3); | ||
| 152 | declare!(SWPMI1); | ||
| 153 | declare!(TAMP_STAMP); | ||
| 154 | declare!(TIM1_BRK_TIM15); | ||
| 155 | declare!(TIM1_CC); | ||
| 156 | declare!(TIM1_TRG_COM); | ||
| 157 | declare!(TIM1_UP_TIM16); | ||
| 158 | declare!(TIM2); | ||
| 159 | declare!(TIM6_DAC); | ||
| 160 | declare!(TIM7); | ||
| 161 | declare!(TSC); | ||
| 162 | declare!(USART1); | ||
| 163 | declare!(USART2); | ||
| 164 | declare!(USART3); | ||
| 165 | declare!(USB); | ||
| 166 | declare!(WWDG); | ||
| 167 | } | ||
| 168 | mod interrupt_vector { | ||
| 169 | extern "C" { | ||
| 170 | fn ADC1(); | ||
| 171 | fn CAN1_RX0(); | ||
| 172 | fn CAN1_RX1(); | ||
| 173 | fn CAN1_SCE(); | ||
| 174 | fn CAN1_TX(); | ||
| 175 | fn COMP(); | ||
| 176 | fn CRS(); | ||
| 177 | fn DMA1_Channel1(); | ||
| 178 | fn DMA1_Channel2(); | ||
| 179 | fn DMA1_Channel3(); | ||
| 180 | fn DMA1_Channel4(); | ||
| 181 | fn DMA1_Channel5(); | ||
| 182 | fn DMA1_Channel6(); | ||
| 183 | fn DMA1_Channel7(); | ||
| 184 | fn DMA2_Channel1(); | ||
| 185 | fn DMA2_Channel2(); | ||
| 186 | fn DMA2_Channel3(); | ||
| 187 | fn DMA2_Channel4(); | ||
| 188 | fn DMA2_Channel5(); | ||
| 189 | fn DMA2_Channel6(); | ||
| 190 | fn DMA2_Channel7(); | ||
| 191 | fn EXTI0(); | ||
| 192 | fn EXTI1(); | ||
| 193 | fn EXTI15_10(); | ||
| 194 | fn EXTI2(); | ||
| 195 | fn EXTI3(); | ||
| 196 | fn EXTI4(); | ||
| 197 | fn EXTI9_5(); | ||
| 198 | fn FLASH(); | ||
| 199 | fn FPU(); | ||
| 200 | fn I2C1_ER(); | ||
| 201 | fn I2C1_EV(); | ||
| 202 | fn I2C2_ER(); | ||
| 203 | fn I2C2_EV(); | ||
| 204 | fn I2C3_ER(); | ||
| 205 | fn I2C3_EV(); | ||
| 206 | fn LCD(); | ||
| 207 | fn LPTIM1(); | ||
| 208 | fn LPTIM2(); | ||
| 209 | fn LPUART1(); | ||
| 210 | fn PVD_PVM(); | ||
| 211 | fn QUADSPI(); | ||
| 212 | fn RCC(); | ||
| 213 | fn RNG(); | ||
| 214 | fn RTC_Alarm(); | ||
| 215 | fn RTC_WKUP(); | ||
| 216 | fn SAI1(); | ||
| 217 | fn SDMMC1(); | ||
| 218 | fn SPI1(); | ||
| 219 | fn SPI2(); | ||
| 220 | fn SPI3(); | ||
| 221 | fn SWPMI1(); | ||
| 222 | fn TAMP_STAMP(); | ||
| 223 | fn TIM1_BRK_TIM15(); | ||
| 224 | fn TIM1_CC(); | ||
| 225 | fn TIM1_TRG_COM(); | ||
| 226 | fn TIM1_UP_TIM16(); | ||
| 227 | fn TIM2(); | ||
| 228 | fn TIM6_DAC(); | ||
| 229 | fn TIM7(); | ||
| 230 | fn TSC(); | ||
| 231 | fn USART1(); | ||
| 232 | fn USART2(); | ||
| 233 | fn USART3(); | ||
| 234 | fn USB(); | ||
| 235 | fn WWDG(); | ||
| 236 | } | ||
| 237 | pub union Vector { | ||
| 238 | _handler: unsafe extern "C" fn(), | ||
| 239 | _reserved: u32, | ||
| 240 | } | ||
| 241 | #[link_section = ".vector_table.interrupts"] | ||
| 242 | #[no_mangle] | ||
| 243 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 244 | Vector { _handler: WWDG }, | ||
| 245 | Vector { _handler: PVD_PVM }, | ||
| 246 | Vector { | ||
| 247 | _handler: TAMP_STAMP, | ||
| 248 | }, | ||
| 249 | Vector { _handler: RTC_WKUP }, | ||
| 250 | Vector { _handler: FLASH }, | ||
| 251 | Vector { _handler: RCC }, | ||
| 252 | Vector { _handler: EXTI0 }, | ||
| 253 | Vector { _handler: EXTI1 }, | ||
| 254 | Vector { _handler: EXTI2 }, | ||
| 255 | Vector { _handler: EXTI3 }, | ||
| 256 | Vector { _handler: EXTI4 }, | ||
| 257 | Vector { | ||
| 258 | _handler: DMA1_Channel1, | ||
| 259 | }, | ||
| 260 | Vector { | ||
| 261 | _handler: DMA1_Channel2, | ||
| 262 | }, | ||
| 263 | Vector { | ||
| 264 | _handler: DMA1_Channel3, | ||
| 265 | }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel4, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel5, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel6, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel7, | ||
| 277 | }, | ||
| 278 | Vector { _handler: ADC1 }, | ||
| 279 | Vector { _handler: CAN1_TX }, | ||
| 280 | Vector { _handler: CAN1_RX0 }, | ||
| 281 | Vector { _handler: CAN1_RX1 }, | ||
| 282 | Vector { _handler: CAN1_SCE }, | ||
| 283 | Vector { _handler: EXTI9_5 }, | ||
| 284 | Vector { | ||
| 285 | _handler: TIM1_BRK_TIM15, | ||
| 286 | }, | ||
| 287 | Vector { | ||
| 288 | _handler: TIM1_UP_TIM16, | ||
| 289 | }, | ||
| 290 | Vector { | ||
| 291 | _handler: TIM1_TRG_COM, | ||
| 292 | }, | ||
| 293 | Vector { _handler: TIM1_CC }, | ||
| 294 | Vector { _handler: TIM2 }, | ||
| 295 | Vector { _reserved: 0 }, | ||
| 296 | Vector { _reserved: 0 }, | ||
| 297 | Vector { _handler: I2C1_EV }, | ||
| 298 | Vector { _handler: I2C1_ER }, | ||
| 299 | Vector { _handler: I2C2_EV }, | ||
| 300 | Vector { _handler: I2C2_ER }, | ||
| 301 | Vector { _handler: SPI1 }, | ||
| 302 | Vector { _handler: SPI2 }, | ||
| 303 | Vector { _handler: USART1 }, | ||
| 304 | Vector { _handler: USART2 }, | ||
| 305 | Vector { _handler: USART3 }, | ||
| 306 | Vector { | ||
| 307 | _handler: EXTI15_10, | ||
| 308 | }, | ||
| 309 | Vector { | ||
| 310 | _handler: RTC_Alarm, | ||
| 311 | }, | ||
| 312 | Vector { _reserved: 0 }, | ||
| 313 | Vector { _reserved: 0 }, | ||
| 314 | Vector { _reserved: 0 }, | ||
| 315 | Vector { _reserved: 0 }, | ||
| 316 | Vector { _reserved: 0 }, | ||
| 317 | Vector { _reserved: 0 }, | ||
| 318 | Vector { _reserved: 0 }, | ||
| 319 | Vector { _handler: SDMMC1 }, | ||
| 320 | Vector { _reserved: 0 }, | ||
| 321 | Vector { _handler: SPI3 }, | ||
| 322 | Vector { _reserved: 0 }, | ||
| 323 | Vector { _reserved: 0 }, | ||
| 324 | Vector { _handler: TIM6_DAC }, | ||
| 325 | Vector { _handler: TIM7 }, | ||
| 326 | Vector { | ||
| 327 | _handler: DMA2_Channel1, | ||
| 328 | }, | ||
| 329 | Vector { | ||
| 330 | _handler: DMA2_Channel2, | ||
| 331 | }, | ||
| 332 | Vector { | ||
| 333 | _handler: DMA2_Channel3, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: DMA2_Channel4, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel5, | ||
| 340 | }, | ||
| 341 | Vector { _reserved: 0 }, | ||
| 342 | Vector { _reserved: 0 }, | ||
| 343 | Vector { _reserved: 0 }, | ||
| 344 | Vector { _handler: COMP }, | ||
| 345 | Vector { _handler: LPTIM1 }, | ||
| 346 | Vector { _handler: LPTIM2 }, | ||
| 347 | Vector { _handler: USB }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA2_Channel6, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA2_Channel7, | ||
| 353 | }, | ||
| 354 | Vector { _handler: LPUART1 }, | ||
| 355 | Vector { _handler: QUADSPI }, | ||
| 356 | Vector { _handler: I2C3_EV }, | ||
| 357 | Vector { _handler: I2C3_ER }, | ||
| 358 | Vector { _handler: SAI1 }, | ||
| 359 | Vector { _reserved: 0 }, | ||
| 360 | Vector { _handler: SWPMI1 }, | ||
| 361 | Vector { _handler: TSC }, | ||
| 362 | Vector { _handler: LCD }, | ||
| 363 | Vector { _reserved: 0 }, | ||
| 364 | Vector { _handler: RNG }, | ||
| 365 | Vector { _handler: FPU }, | ||
| 366 | Vector { _handler: CRS }, | ||
| 367 | ]; | ||
| 368 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 369 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 370 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 371 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l433rb.rs b/embassy-stm32/src/chip/stm32l433rb.rs index a61a3c53e..38d4b8310 100644 --- a/embassy-stm32/src/chip/stm32l433rb.rs +++ b/embassy-stm32/src/chip/stm32l433rb.rs | |||
| @@ -1,18 +1,371 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, | 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, |
| 11 | RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, | 11 | RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, |
| 12 | USART1, USART2, USART3, USB, WWDG | 12 | TSC, USART1, USART2, USART3, USB, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DMA1_Channel1 = 11, | ||
| 35 | DMA1_Channel2 = 12, | ||
| 36 | DMA1_Channel3 = 13, | ||
| 37 | DMA1_Channel4 = 14, | ||
| 38 | DMA1_Channel5 = 15, | ||
| 39 | DMA1_Channel6 = 16, | ||
| 40 | DMA1_Channel7 = 17, | ||
| 41 | DMA2_Channel1 = 56, | ||
| 42 | DMA2_Channel2 = 57, | ||
| 43 | DMA2_Channel3 = 58, | ||
| 44 | DMA2_Channel4 = 59, | ||
| 45 | DMA2_Channel5 = 60, | ||
| 46 | DMA2_Channel6 = 68, | ||
| 47 | DMA2_Channel7 = 69, | ||
| 48 | EXTI0 = 6, | ||
| 49 | EXTI1 = 7, | ||
| 50 | EXTI15_10 = 40, | ||
| 51 | EXTI2 = 8, | ||
| 52 | EXTI3 = 9, | ||
| 53 | EXTI4 = 10, | ||
| 54 | EXTI9_5 = 23, | ||
| 55 | FLASH = 4, | ||
| 56 | FPU = 81, | ||
| 57 | I2C1_ER = 32, | ||
| 58 | I2C1_EV = 31, | ||
| 59 | I2C2_ER = 34, | ||
| 60 | I2C2_EV = 33, | ||
| 61 | I2C3_ER = 73, | ||
| 62 | I2C3_EV = 72, | ||
| 63 | LCD = 78, | ||
| 64 | LPTIM1 = 65, | ||
| 65 | LPTIM2 = 66, | ||
| 66 | LPUART1 = 70, | ||
| 67 | PVD_PVM = 1, | ||
| 68 | QUADSPI = 71, | ||
| 69 | RCC = 5, | ||
| 70 | RNG = 80, | ||
| 71 | RTC_Alarm = 41, | ||
| 72 | RTC_WKUP = 3, | ||
| 73 | SAI1 = 74, | ||
| 74 | SDMMC1 = 49, | ||
| 75 | SPI1 = 35, | ||
| 76 | SPI2 = 36, | ||
| 77 | SPI3 = 51, | ||
| 78 | SWPMI1 = 76, | ||
| 79 | TAMP_STAMP = 2, | ||
| 80 | TIM1_BRK_TIM15 = 24, | ||
| 81 | TIM1_CC = 27, | ||
| 82 | TIM1_TRG_COM = 26, | ||
| 83 | TIM1_UP_TIM16 = 25, | ||
| 84 | TIM2 = 28, | ||
| 85 | TIM6_DAC = 54, | ||
| 86 | TIM7 = 55, | ||
| 87 | TSC = 77, | ||
| 88 | USART1 = 37, | ||
| 89 | USART2 = 38, | ||
| 90 | USART3 = 39, | ||
| 91 | USB = 67, | ||
| 92 | WWDG = 0, | ||
| 93 | } | ||
| 94 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 95 | #[inline(always)] | ||
| 96 | fn number(self) -> u16 { | ||
| 97 | self as u16 | ||
| 98 | } | ||
| 99 | } | ||
| 100 | |||
| 101 | declare!(ADC1); | ||
| 102 | declare!(CAN1_RX0); | ||
| 103 | declare!(CAN1_RX1); | ||
| 104 | declare!(CAN1_SCE); | ||
| 105 | declare!(CAN1_TX); | ||
| 106 | declare!(COMP); | ||
| 107 | declare!(CRS); | ||
| 108 | declare!(DMA1_Channel1); | ||
| 109 | declare!(DMA1_Channel2); | ||
| 110 | declare!(DMA1_Channel3); | ||
| 111 | declare!(DMA1_Channel4); | ||
| 112 | declare!(DMA1_Channel5); | ||
| 113 | declare!(DMA1_Channel6); | ||
| 114 | declare!(DMA1_Channel7); | ||
| 115 | declare!(DMA2_Channel1); | ||
| 116 | declare!(DMA2_Channel2); | ||
| 117 | declare!(DMA2_Channel3); | ||
| 118 | declare!(DMA2_Channel4); | ||
| 119 | declare!(DMA2_Channel5); | ||
| 120 | declare!(DMA2_Channel6); | ||
| 121 | declare!(DMA2_Channel7); | ||
| 122 | declare!(EXTI0); | ||
| 123 | declare!(EXTI1); | ||
| 124 | declare!(EXTI15_10); | ||
| 125 | declare!(EXTI2); | ||
| 126 | declare!(EXTI3); | ||
| 127 | declare!(EXTI4); | ||
| 128 | declare!(EXTI9_5); | ||
| 129 | declare!(FLASH); | ||
| 130 | declare!(FPU); | ||
| 131 | declare!(I2C1_ER); | ||
| 132 | declare!(I2C1_EV); | ||
| 133 | declare!(I2C2_ER); | ||
| 134 | declare!(I2C2_EV); | ||
| 135 | declare!(I2C3_ER); | ||
| 136 | declare!(I2C3_EV); | ||
| 137 | declare!(LCD); | ||
| 138 | declare!(LPTIM1); | ||
| 139 | declare!(LPTIM2); | ||
| 140 | declare!(LPUART1); | ||
| 141 | declare!(PVD_PVM); | ||
| 142 | declare!(QUADSPI); | ||
| 143 | declare!(RCC); | ||
| 144 | declare!(RNG); | ||
| 145 | declare!(RTC_Alarm); | ||
| 146 | declare!(RTC_WKUP); | ||
| 147 | declare!(SAI1); | ||
| 148 | declare!(SDMMC1); | ||
| 149 | declare!(SPI1); | ||
| 150 | declare!(SPI2); | ||
| 151 | declare!(SPI3); | ||
| 152 | declare!(SWPMI1); | ||
| 153 | declare!(TAMP_STAMP); | ||
| 154 | declare!(TIM1_BRK_TIM15); | ||
| 155 | declare!(TIM1_CC); | ||
| 156 | declare!(TIM1_TRG_COM); | ||
| 157 | declare!(TIM1_UP_TIM16); | ||
| 158 | declare!(TIM2); | ||
| 159 | declare!(TIM6_DAC); | ||
| 160 | declare!(TIM7); | ||
| 161 | declare!(TSC); | ||
| 162 | declare!(USART1); | ||
| 163 | declare!(USART2); | ||
| 164 | declare!(USART3); | ||
| 165 | declare!(USB); | ||
| 166 | declare!(WWDG); | ||
| 167 | } | ||
| 168 | mod interrupt_vector { | ||
| 169 | extern "C" { | ||
| 170 | fn ADC1(); | ||
| 171 | fn CAN1_RX0(); | ||
| 172 | fn CAN1_RX1(); | ||
| 173 | fn CAN1_SCE(); | ||
| 174 | fn CAN1_TX(); | ||
| 175 | fn COMP(); | ||
| 176 | fn CRS(); | ||
| 177 | fn DMA1_Channel1(); | ||
| 178 | fn DMA1_Channel2(); | ||
| 179 | fn DMA1_Channel3(); | ||
| 180 | fn DMA1_Channel4(); | ||
| 181 | fn DMA1_Channel5(); | ||
| 182 | fn DMA1_Channel6(); | ||
| 183 | fn DMA1_Channel7(); | ||
| 184 | fn DMA2_Channel1(); | ||
| 185 | fn DMA2_Channel2(); | ||
| 186 | fn DMA2_Channel3(); | ||
| 187 | fn DMA2_Channel4(); | ||
| 188 | fn DMA2_Channel5(); | ||
| 189 | fn DMA2_Channel6(); | ||
| 190 | fn DMA2_Channel7(); | ||
| 191 | fn EXTI0(); | ||
| 192 | fn EXTI1(); | ||
| 193 | fn EXTI15_10(); | ||
| 194 | fn EXTI2(); | ||
| 195 | fn EXTI3(); | ||
| 196 | fn EXTI4(); | ||
| 197 | fn EXTI9_5(); | ||
| 198 | fn FLASH(); | ||
| 199 | fn FPU(); | ||
| 200 | fn I2C1_ER(); | ||
| 201 | fn I2C1_EV(); | ||
| 202 | fn I2C2_ER(); | ||
| 203 | fn I2C2_EV(); | ||
| 204 | fn I2C3_ER(); | ||
| 205 | fn I2C3_EV(); | ||
| 206 | fn LCD(); | ||
| 207 | fn LPTIM1(); | ||
| 208 | fn LPTIM2(); | ||
| 209 | fn LPUART1(); | ||
| 210 | fn PVD_PVM(); | ||
| 211 | fn QUADSPI(); | ||
| 212 | fn RCC(); | ||
| 213 | fn RNG(); | ||
| 214 | fn RTC_Alarm(); | ||
| 215 | fn RTC_WKUP(); | ||
| 216 | fn SAI1(); | ||
| 217 | fn SDMMC1(); | ||
| 218 | fn SPI1(); | ||
| 219 | fn SPI2(); | ||
| 220 | fn SPI3(); | ||
| 221 | fn SWPMI1(); | ||
| 222 | fn TAMP_STAMP(); | ||
| 223 | fn TIM1_BRK_TIM15(); | ||
| 224 | fn TIM1_CC(); | ||
| 225 | fn TIM1_TRG_COM(); | ||
| 226 | fn TIM1_UP_TIM16(); | ||
| 227 | fn TIM2(); | ||
| 228 | fn TIM6_DAC(); | ||
| 229 | fn TIM7(); | ||
| 230 | fn TSC(); | ||
| 231 | fn USART1(); | ||
| 232 | fn USART2(); | ||
| 233 | fn USART3(); | ||
| 234 | fn USB(); | ||
| 235 | fn WWDG(); | ||
| 236 | } | ||
| 237 | pub union Vector { | ||
| 238 | _handler: unsafe extern "C" fn(), | ||
| 239 | _reserved: u32, | ||
| 240 | } | ||
| 241 | #[link_section = ".vector_table.interrupts"] | ||
| 242 | #[no_mangle] | ||
| 243 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 244 | Vector { _handler: WWDG }, | ||
| 245 | Vector { _handler: PVD_PVM }, | ||
| 246 | Vector { | ||
| 247 | _handler: TAMP_STAMP, | ||
| 248 | }, | ||
| 249 | Vector { _handler: RTC_WKUP }, | ||
| 250 | Vector { _handler: FLASH }, | ||
| 251 | Vector { _handler: RCC }, | ||
| 252 | Vector { _handler: EXTI0 }, | ||
| 253 | Vector { _handler: EXTI1 }, | ||
| 254 | Vector { _handler: EXTI2 }, | ||
| 255 | Vector { _handler: EXTI3 }, | ||
| 256 | Vector { _handler: EXTI4 }, | ||
| 257 | Vector { | ||
| 258 | _handler: DMA1_Channel1, | ||
| 259 | }, | ||
| 260 | Vector { | ||
| 261 | _handler: DMA1_Channel2, | ||
| 262 | }, | ||
| 263 | Vector { | ||
| 264 | _handler: DMA1_Channel3, | ||
| 265 | }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel4, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel5, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel6, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel7, | ||
| 277 | }, | ||
| 278 | Vector { _handler: ADC1 }, | ||
| 279 | Vector { _handler: CAN1_TX }, | ||
| 280 | Vector { _handler: CAN1_RX0 }, | ||
| 281 | Vector { _handler: CAN1_RX1 }, | ||
| 282 | Vector { _handler: CAN1_SCE }, | ||
| 283 | Vector { _handler: EXTI9_5 }, | ||
| 284 | Vector { | ||
| 285 | _handler: TIM1_BRK_TIM15, | ||
| 286 | }, | ||
| 287 | Vector { | ||
| 288 | _handler: TIM1_UP_TIM16, | ||
| 289 | }, | ||
| 290 | Vector { | ||
| 291 | _handler: TIM1_TRG_COM, | ||
| 292 | }, | ||
| 293 | Vector { _handler: TIM1_CC }, | ||
| 294 | Vector { _handler: TIM2 }, | ||
| 295 | Vector { _reserved: 0 }, | ||
| 296 | Vector { _reserved: 0 }, | ||
| 297 | Vector { _handler: I2C1_EV }, | ||
| 298 | Vector { _handler: I2C1_ER }, | ||
| 299 | Vector { _handler: I2C2_EV }, | ||
| 300 | Vector { _handler: I2C2_ER }, | ||
| 301 | Vector { _handler: SPI1 }, | ||
| 302 | Vector { _handler: SPI2 }, | ||
| 303 | Vector { _handler: USART1 }, | ||
| 304 | Vector { _handler: USART2 }, | ||
| 305 | Vector { _handler: USART3 }, | ||
| 306 | Vector { | ||
| 307 | _handler: EXTI15_10, | ||
| 308 | }, | ||
| 309 | Vector { | ||
| 310 | _handler: RTC_Alarm, | ||
| 311 | }, | ||
| 312 | Vector { _reserved: 0 }, | ||
| 313 | Vector { _reserved: 0 }, | ||
| 314 | Vector { _reserved: 0 }, | ||
| 315 | Vector { _reserved: 0 }, | ||
| 316 | Vector { _reserved: 0 }, | ||
| 317 | Vector { _reserved: 0 }, | ||
| 318 | Vector { _reserved: 0 }, | ||
| 319 | Vector { _handler: SDMMC1 }, | ||
| 320 | Vector { _reserved: 0 }, | ||
| 321 | Vector { _handler: SPI3 }, | ||
| 322 | Vector { _reserved: 0 }, | ||
| 323 | Vector { _reserved: 0 }, | ||
| 324 | Vector { _handler: TIM6_DAC }, | ||
| 325 | Vector { _handler: TIM7 }, | ||
| 326 | Vector { | ||
| 327 | _handler: DMA2_Channel1, | ||
| 328 | }, | ||
| 329 | Vector { | ||
| 330 | _handler: DMA2_Channel2, | ||
| 331 | }, | ||
| 332 | Vector { | ||
| 333 | _handler: DMA2_Channel3, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: DMA2_Channel4, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel5, | ||
| 340 | }, | ||
| 341 | Vector { _reserved: 0 }, | ||
| 342 | Vector { _reserved: 0 }, | ||
| 343 | Vector { _reserved: 0 }, | ||
| 344 | Vector { _handler: COMP }, | ||
| 345 | Vector { _handler: LPTIM1 }, | ||
| 346 | Vector { _handler: LPTIM2 }, | ||
| 347 | Vector { _handler: USB }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA2_Channel6, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA2_Channel7, | ||
| 353 | }, | ||
| 354 | Vector { _handler: LPUART1 }, | ||
| 355 | Vector { _handler: QUADSPI }, | ||
| 356 | Vector { _handler: I2C3_EV }, | ||
| 357 | Vector { _handler: I2C3_ER }, | ||
| 358 | Vector { _handler: SAI1 }, | ||
| 359 | Vector { _reserved: 0 }, | ||
| 360 | Vector { _handler: SWPMI1 }, | ||
| 361 | Vector { _handler: TSC }, | ||
| 362 | Vector { _handler: LCD }, | ||
| 363 | Vector { _reserved: 0 }, | ||
| 364 | Vector { _handler: RNG }, | ||
| 365 | Vector { _handler: FPU }, | ||
| 366 | Vector { _handler: CRS }, | ||
| 367 | ]; | ||
| 368 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 369 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 370 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 371 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l433rc.rs b/embassy-stm32/src/chip/stm32l433rc.rs index a61a3c53e..38d4b8310 100644 --- a/embassy-stm32/src/chip/stm32l433rc.rs +++ b/embassy-stm32/src/chip/stm32l433rc.rs | |||
| @@ -1,18 +1,371 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, | 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, |
| 11 | RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, | 11 | RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, |
| 12 | USART1, USART2, USART3, USB, WWDG | 12 | TSC, USART1, USART2, USART3, USB, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DMA1_Channel1 = 11, | ||
| 35 | DMA1_Channel2 = 12, | ||
| 36 | DMA1_Channel3 = 13, | ||
| 37 | DMA1_Channel4 = 14, | ||
| 38 | DMA1_Channel5 = 15, | ||
| 39 | DMA1_Channel6 = 16, | ||
| 40 | DMA1_Channel7 = 17, | ||
| 41 | DMA2_Channel1 = 56, | ||
| 42 | DMA2_Channel2 = 57, | ||
| 43 | DMA2_Channel3 = 58, | ||
| 44 | DMA2_Channel4 = 59, | ||
| 45 | DMA2_Channel5 = 60, | ||
| 46 | DMA2_Channel6 = 68, | ||
| 47 | DMA2_Channel7 = 69, | ||
| 48 | EXTI0 = 6, | ||
| 49 | EXTI1 = 7, | ||
| 50 | EXTI15_10 = 40, | ||
| 51 | EXTI2 = 8, | ||
| 52 | EXTI3 = 9, | ||
| 53 | EXTI4 = 10, | ||
| 54 | EXTI9_5 = 23, | ||
| 55 | FLASH = 4, | ||
| 56 | FPU = 81, | ||
| 57 | I2C1_ER = 32, | ||
| 58 | I2C1_EV = 31, | ||
| 59 | I2C2_ER = 34, | ||
| 60 | I2C2_EV = 33, | ||
| 61 | I2C3_ER = 73, | ||
| 62 | I2C3_EV = 72, | ||
| 63 | LCD = 78, | ||
| 64 | LPTIM1 = 65, | ||
| 65 | LPTIM2 = 66, | ||
| 66 | LPUART1 = 70, | ||
| 67 | PVD_PVM = 1, | ||
| 68 | QUADSPI = 71, | ||
| 69 | RCC = 5, | ||
| 70 | RNG = 80, | ||
| 71 | RTC_Alarm = 41, | ||
| 72 | RTC_WKUP = 3, | ||
| 73 | SAI1 = 74, | ||
| 74 | SDMMC1 = 49, | ||
| 75 | SPI1 = 35, | ||
| 76 | SPI2 = 36, | ||
| 77 | SPI3 = 51, | ||
| 78 | SWPMI1 = 76, | ||
| 79 | TAMP_STAMP = 2, | ||
| 80 | TIM1_BRK_TIM15 = 24, | ||
| 81 | TIM1_CC = 27, | ||
| 82 | TIM1_TRG_COM = 26, | ||
| 83 | TIM1_UP_TIM16 = 25, | ||
| 84 | TIM2 = 28, | ||
| 85 | TIM6_DAC = 54, | ||
| 86 | TIM7 = 55, | ||
| 87 | TSC = 77, | ||
| 88 | USART1 = 37, | ||
| 89 | USART2 = 38, | ||
| 90 | USART3 = 39, | ||
| 91 | USB = 67, | ||
| 92 | WWDG = 0, | ||
| 93 | } | ||
| 94 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 95 | #[inline(always)] | ||
| 96 | fn number(self) -> u16 { | ||
| 97 | self as u16 | ||
| 98 | } | ||
| 99 | } | ||
| 100 | |||
| 101 | declare!(ADC1); | ||
| 102 | declare!(CAN1_RX0); | ||
| 103 | declare!(CAN1_RX1); | ||
| 104 | declare!(CAN1_SCE); | ||
| 105 | declare!(CAN1_TX); | ||
| 106 | declare!(COMP); | ||
| 107 | declare!(CRS); | ||
| 108 | declare!(DMA1_Channel1); | ||
| 109 | declare!(DMA1_Channel2); | ||
| 110 | declare!(DMA1_Channel3); | ||
| 111 | declare!(DMA1_Channel4); | ||
| 112 | declare!(DMA1_Channel5); | ||
| 113 | declare!(DMA1_Channel6); | ||
| 114 | declare!(DMA1_Channel7); | ||
| 115 | declare!(DMA2_Channel1); | ||
| 116 | declare!(DMA2_Channel2); | ||
| 117 | declare!(DMA2_Channel3); | ||
| 118 | declare!(DMA2_Channel4); | ||
| 119 | declare!(DMA2_Channel5); | ||
| 120 | declare!(DMA2_Channel6); | ||
| 121 | declare!(DMA2_Channel7); | ||
| 122 | declare!(EXTI0); | ||
| 123 | declare!(EXTI1); | ||
| 124 | declare!(EXTI15_10); | ||
| 125 | declare!(EXTI2); | ||
| 126 | declare!(EXTI3); | ||
| 127 | declare!(EXTI4); | ||
| 128 | declare!(EXTI9_5); | ||
| 129 | declare!(FLASH); | ||
| 130 | declare!(FPU); | ||
| 131 | declare!(I2C1_ER); | ||
| 132 | declare!(I2C1_EV); | ||
| 133 | declare!(I2C2_ER); | ||
| 134 | declare!(I2C2_EV); | ||
| 135 | declare!(I2C3_ER); | ||
| 136 | declare!(I2C3_EV); | ||
| 137 | declare!(LCD); | ||
| 138 | declare!(LPTIM1); | ||
| 139 | declare!(LPTIM2); | ||
| 140 | declare!(LPUART1); | ||
| 141 | declare!(PVD_PVM); | ||
| 142 | declare!(QUADSPI); | ||
| 143 | declare!(RCC); | ||
| 144 | declare!(RNG); | ||
| 145 | declare!(RTC_Alarm); | ||
| 146 | declare!(RTC_WKUP); | ||
| 147 | declare!(SAI1); | ||
| 148 | declare!(SDMMC1); | ||
| 149 | declare!(SPI1); | ||
| 150 | declare!(SPI2); | ||
| 151 | declare!(SPI3); | ||
| 152 | declare!(SWPMI1); | ||
| 153 | declare!(TAMP_STAMP); | ||
| 154 | declare!(TIM1_BRK_TIM15); | ||
| 155 | declare!(TIM1_CC); | ||
| 156 | declare!(TIM1_TRG_COM); | ||
| 157 | declare!(TIM1_UP_TIM16); | ||
| 158 | declare!(TIM2); | ||
| 159 | declare!(TIM6_DAC); | ||
| 160 | declare!(TIM7); | ||
| 161 | declare!(TSC); | ||
| 162 | declare!(USART1); | ||
| 163 | declare!(USART2); | ||
| 164 | declare!(USART3); | ||
| 165 | declare!(USB); | ||
| 166 | declare!(WWDG); | ||
| 167 | } | ||
| 168 | mod interrupt_vector { | ||
| 169 | extern "C" { | ||
| 170 | fn ADC1(); | ||
| 171 | fn CAN1_RX0(); | ||
| 172 | fn CAN1_RX1(); | ||
| 173 | fn CAN1_SCE(); | ||
| 174 | fn CAN1_TX(); | ||
| 175 | fn COMP(); | ||
| 176 | fn CRS(); | ||
| 177 | fn DMA1_Channel1(); | ||
| 178 | fn DMA1_Channel2(); | ||
| 179 | fn DMA1_Channel3(); | ||
| 180 | fn DMA1_Channel4(); | ||
| 181 | fn DMA1_Channel5(); | ||
| 182 | fn DMA1_Channel6(); | ||
| 183 | fn DMA1_Channel7(); | ||
| 184 | fn DMA2_Channel1(); | ||
| 185 | fn DMA2_Channel2(); | ||
| 186 | fn DMA2_Channel3(); | ||
| 187 | fn DMA2_Channel4(); | ||
| 188 | fn DMA2_Channel5(); | ||
| 189 | fn DMA2_Channel6(); | ||
| 190 | fn DMA2_Channel7(); | ||
| 191 | fn EXTI0(); | ||
| 192 | fn EXTI1(); | ||
| 193 | fn EXTI15_10(); | ||
| 194 | fn EXTI2(); | ||
| 195 | fn EXTI3(); | ||
| 196 | fn EXTI4(); | ||
| 197 | fn EXTI9_5(); | ||
| 198 | fn FLASH(); | ||
| 199 | fn FPU(); | ||
| 200 | fn I2C1_ER(); | ||
| 201 | fn I2C1_EV(); | ||
| 202 | fn I2C2_ER(); | ||
| 203 | fn I2C2_EV(); | ||
| 204 | fn I2C3_ER(); | ||
| 205 | fn I2C3_EV(); | ||
| 206 | fn LCD(); | ||
| 207 | fn LPTIM1(); | ||
| 208 | fn LPTIM2(); | ||
| 209 | fn LPUART1(); | ||
| 210 | fn PVD_PVM(); | ||
| 211 | fn QUADSPI(); | ||
| 212 | fn RCC(); | ||
| 213 | fn RNG(); | ||
| 214 | fn RTC_Alarm(); | ||
| 215 | fn RTC_WKUP(); | ||
| 216 | fn SAI1(); | ||
| 217 | fn SDMMC1(); | ||
| 218 | fn SPI1(); | ||
| 219 | fn SPI2(); | ||
| 220 | fn SPI3(); | ||
| 221 | fn SWPMI1(); | ||
| 222 | fn TAMP_STAMP(); | ||
| 223 | fn TIM1_BRK_TIM15(); | ||
| 224 | fn TIM1_CC(); | ||
| 225 | fn TIM1_TRG_COM(); | ||
| 226 | fn TIM1_UP_TIM16(); | ||
| 227 | fn TIM2(); | ||
| 228 | fn TIM6_DAC(); | ||
| 229 | fn TIM7(); | ||
| 230 | fn TSC(); | ||
| 231 | fn USART1(); | ||
| 232 | fn USART2(); | ||
| 233 | fn USART3(); | ||
| 234 | fn USB(); | ||
| 235 | fn WWDG(); | ||
| 236 | } | ||
| 237 | pub union Vector { | ||
| 238 | _handler: unsafe extern "C" fn(), | ||
| 239 | _reserved: u32, | ||
| 240 | } | ||
| 241 | #[link_section = ".vector_table.interrupts"] | ||
| 242 | #[no_mangle] | ||
| 243 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 244 | Vector { _handler: WWDG }, | ||
| 245 | Vector { _handler: PVD_PVM }, | ||
| 246 | Vector { | ||
| 247 | _handler: TAMP_STAMP, | ||
| 248 | }, | ||
| 249 | Vector { _handler: RTC_WKUP }, | ||
| 250 | Vector { _handler: FLASH }, | ||
| 251 | Vector { _handler: RCC }, | ||
| 252 | Vector { _handler: EXTI0 }, | ||
| 253 | Vector { _handler: EXTI1 }, | ||
| 254 | Vector { _handler: EXTI2 }, | ||
| 255 | Vector { _handler: EXTI3 }, | ||
| 256 | Vector { _handler: EXTI4 }, | ||
| 257 | Vector { | ||
| 258 | _handler: DMA1_Channel1, | ||
| 259 | }, | ||
| 260 | Vector { | ||
| 261 | _handler: DMA1_Channel2, | ||
| 262 | }, | ||
| 263 | Vector { | ||
| 264 | _handler: DMA1_Channel3, | ||
| 265 | }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel4, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel5, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel6, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel7, | ||
| 277 | }, | ||
| 278 | Vector { _handler: ADC1 }, | ||
| 279 | Vector { _handler: CAN1_TX }, | ||
| 280 | Vector { _handler: CAN1_RX0 }, | ||
| 281 | Vector { _handler: CAN1_RX1 }, | ||
| 282 | Vector { _handler: CAN1_SCE }, | ||
| 283 | Vector { _handler: EXTI9_5 }, | ||
| 284 | Vector { | ||
| 285 | _handler: TIM1_BRK_TIM15, | ||
| 286 | }, | ||
| 287 | Vector { | ||
| 288 | _handler: TIM1_UP_TIM16, | ||
| 289 | }, | ||
| 290 | Vector { | ||
| 291 | _handler: TIM1_TRG_COM, | ||
| 292 | }, | ||
| 293 | Vector { _handler: TIM1_CC }, | ||
| 294 | Vector { _handler: TIM2 }, | ||
| 295 | Vector { _reserved: 0 }, | ||
| 296 | Vector { _reserved: 0 }, | ||
| 297 | Vector { _handler: I2C1_EV }, | ||
| 298 | Vector { _handler: I2C1_ER }, | ||
| 299 | Vector { _handler: I2C2_EV }, | ||
| 300 | Vector { _handler: I2C2_ER }, | ||
| 301 | Vector { _handler: SPI1 }, | ||
| 302 | Vector { _handler: SPI2 }, | ||
| 303 | Vector { _handler: USART1 }, | ||
| 304 | Vector { _handler: USART2 }, | ||
| 305 | Vector { _handler: USART3 }, | ||
| 306 | Vector { | ||
| 307 | _handler: EXTI15_10, | ||
| 308 | }, | ||
| 309 | Vector { | ||
| 310 | _handler: RTC_Alarm, | ||
| 311 | }, | ||
| 312 | Vector { _reserved: 0 }, | ||
| 313 | Vector { _reserved: 0 }, | ||
| 314 | Vector { _reserved: 0 }, | ||
| 315 | Vector { _reserved: 0 }, | ||
| 316 | Vector { _reserved: 0 }, | ||
| 317 | Vector { _reserved: 0 }, | ||
| 318 | Vector { _reserved: 0 }, | ||
| 319 | Vector { _handler: SDMMC1 }, | ||
| 320 | Vector { _reserved: 0 }, | ||
| 321 | Vector { _handler: SPI3 }, | ||
| 322 | Vector { _reserved: 0 }, | ||
| 323 | Vector { _reserved: 0 }, | ||
| 324 | Vector { _handler: TIM6_DAC }, | ||
| 325 | Vector { _handler: TIM7 }, | ||
| 326 | Vector { | ||
| 327 | _handler: DMA2_Channel1, | ||
| 328 | }, | ||
| 329 | Vector { | ||
| 330 | _handler: DMA2_Channel2, | ||
| 331 | }, | ||
| 332 | Vector { | ||
| 333 | _handler: DMA2_Channel3, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: DMA2_Channel4, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel5, | ||
| 340 | }, | ||
| 341 | Vector { _reserved: 0 }, | ||
| 342 | Vector { _reserved: 0 }, | ||
| 343 | Vector { _reserved: 0 }, | ||
| 344 | Vector { _handler: COMP }, | ||
| 345 | Vector { _handler: LPTIM1 }, | ||
| 346 | Vector { _handler: LPTIM2 }, | ||
| 347 | Vector { _handler: USB }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA2_Channel6, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA2_Channel7, | ||
| 353 | }, | ||
| 354 | Vector { _handler: LPUART1 }, | ||
| 355 | Vector { _handler: QUADSPI }, | ||
| 356 | Vector { _handler: I2C3_EV }, | ||
| 357 | Vector { _handler: I2C3_ER }, | ||
| 358 | Vector { _handler: SAI1 }, | ||
| 359 | Vector { _reserved: 0 }, | ||
| 360 | Vector { _handler: SWPMI1 }, | ||
| 361 | Vector { _handler: TSC }, | ||
| 362 | Vector { _handler: LCD }, | ||
| 363 | Vector { _reserved: 0 }, | ||
| 364 | Vector { _handler: RNG }, | ||
| 365 | Vector { _handler: FPU }, | ||
| 366 | Vector { _handler: CRS }, | ||
| 367 | ]; | ||
| 368 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 369 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 370 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 371 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l433vc.rs b/embassy-stm32/src/chip/stm32l433vc.rs index a61a3c53e..38d4b8310 100644 --- a/embassy-stm32/src/chip/stm32l433vc.rs +++ b/embassy-stm32/src/chip/stm32l433vc.rs | |||
| @@ -1,18 +1,371 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, | 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, |
| 11 | RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, | 11 | RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, |
| 12 | USART1, USART2, USART3, USB, WWDG | 12 | TSC, USART1, USART2, USART3, USB, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DMA1_Channel1 = 11, | ||
| 35 | DMA1_Channel2 = 12, | ||
| 36 | DMA1_Channel3 = 13, | ||
| 37 | DMA1_Channel4 = 14, | ||
| 38 | DMA1_Channel5 = 15, | ||
| 39 | DMA1_Channel6 = 16, | ||
| 40 | DMA1_Channel7 = 17, | ||
| 41 | DMA2_Channel1 = 56, | ||
| 42 | DMA2_Channel2 = 57, | ||
| 43 | DMA2_Channel3 = 58, | ||
| 44 | DMA2_Channel4 = 59, | ||
| 45 | DMA2_Channel5 = 60, | ||
| 46 | DMA2_Channel6 = 68, | ||
| 47 | DMA2_Channel7 = 69, | ||
| 48 | EXTI0 = 6, | ||
| 49 | EXTI1 = 7, | ||
| 50 | EXTI15_10 = 40, | ||
| 51 | EXTI2 = 8, | ||
| 52 | EXTI3 = 9, | ||
| 53 | EXTI4 = 10, | ||
| 54 | EXTI9_5 = 23, | ||
| 55 | FLASH = 4, | ||
| 56 | FPU = 81, | ||
| 57 | I2C1_ER = 32, | ||
| 58 | I2C1_EV = 31, | ||
| 59 | I2C2_ER = 34, | ||
| 60 | I2C2_EV = 33, | ||
| 61 | I2C3_ER = 73, | ||
| 62 | I2C3_EV = 72, | ||
| 63 | LCD = 78, | ||
| 64 | LPTIM1 = 65, | ||
| 65 | LPTIM2 = 66, | ||
| 66 | LPUART1 = 70, | ||
| 67 | PVD_PVM = 1, | ||
| 68 | QUADSPI = 71, | ||
| 69 | RCC = 5, | ||
| 70 | RNG = 80, | ||
| 71 | RTC_Alarm = 41, | ||
| 72 | RTC_WKUP = 3, | ||
| 73 | SAI1 = 74, | ||
| 74 | SDMMC1 = 49, | ||
| 75 | SPI1 = 35, | ||
| 76 | SPI2 = 36, | ||
| 77 | SPI3 = 51, | ||
| 78 | SWPMI1 = 76, | ||
| 79 | TAMP_STAMP = 2, | ||
| 80 | TIM1_BRK_TIM15 = 24, | ||
| 81 | TIM1_CC = 27, | ||
| 82 | TIM1_TRG_COM = 26, | ||
| 83 | TIM1_UP_TIM16 = 25, | ||
| 84 | TIM2 = 28, | ||
| 85 | TIM6_DAC = 54, | ||
| 86 | TIM7 = 55, | ||
| 87 | TSC = 77, | ||
| 88 | USART1 = 37, | ||
| 89 | USART2 = 38, | ||
| 90 | USART3 = 39, | ||
| 91 | USB = 67, | ||
| 92 | WWDG = 0, | ||
| 93 | } | ||
| 94 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 95 | #[inline(always)] | ||
| 96 | fn number(self) -> u16 { | ||
| 97 | self as u16 | ||
| 98 | } | ||
| 99 | } | ||
| 100 | |||
| 101 | declare!(ADC1); | ||
| 102 | declare!(CAN1_RX0); | ||
| 103 | declare!(CAN1_RX1); | ||
| 104 | declare!(CAN1_SCE); | ||
| 105 | declare!(CAN1_TX); | ||
| 106 | declare!(COMP); | ||
| 107 | declare!(CRS); | ||
| 108 | declare!(DMA1_Channel1); | ||
| 109 | declare!(DMA1_Channel2); | ||
| 110 | declare!(DMA1_Channel3); | ||
| 111 | declare!(DMA1_Channel4); | ||
| 112 | declare!(DMA1_Channel5); | ||
| 113 | declare!(DMA1_Channel6); | ||
| 114 | declare!(DMA1_Channel7); | ||
| 115 | declare!(DMA2_Channel1); | ||
| 116 | declare!(DMA2_Channel2); | ||
| 117 | declare!(DMA2_Channel3); | ||
| 118 | declare!(DMA2_Channel4); | ||
| 119 | declare!(DMA2_Channel5); | ||
| 120 | declare!(DMA2_Channel6); | ||
| 121 | declare!(DMA2_Channel7); | ||
| 122 | declare!(EXTI0); | ||
| 123 | declare!(EXTI1); | ||
| 124 | declare!(EXTI15_10); | ||
| 125 | declare!(EXTI2); | ||
| 126 | declare!(EXTI3); | ||
| 127 | declare!(EXTI4); | ||
| 128 | declare!(EXTI9_5); | ||
| 129 | declare!(FLASH); | ||
| 130 | declare!(FPU); | ||
| 131 | declare!(I2C1_ER); | ||
| 132 | declare!(I2C1_EV); | ||
| 133 | declare!(I2C2_ER); | ||
| 134 | declare!(I2C2_EV); | ||
| 135 | declare!(I2C3_ER); | ||
| 136 | declare!(I2C3_EV); | ||
| 137 | declare!(LCD); | ||
| 138 | declare!(LPTIM1); | ||
| 139 | declare!(LPTIM2); | ||
| 140 | declare!(LPUART1); | ||
| 141 | declare!(PVD_PVM); | ||
| 142 | declare!(QUADSPI); | ||
| 143 | declare!(RCC); | ||
| 144 | declare!(RNG); | ||
| 145 | declare!(RTC_Alarm); | ||
| 146 | declare!(RTC_WKUP); | ||
| 147 | declare!(SAI1); | ||
| 148 | declare!(SDMMC1); | ||
| 149 | declare!(SPI1); | ||
| 150 | declare!(SPI2); | ||
| 151 | declare!(SPI3); | ||
| 152 | declare!(SWPMI1); | ||
| 153 | declare!(TAMP_STAMP); | ||
| 154 | declare!(TIM1_BRK_TIM15); | ||
| 155 | declare!(TIM1_CC); | ||
| 156 | declare!(TIM1_TRG_COM); | ||
| 157 | declare!(TIM1_UP_TIM16); | ||
| 158 | declare!(TIM2); | ||
| 159 | declare!(TIM6_DAC); | ||
| 160 | declare!(TIM7); | ||
| 161 | declare!(TSC); | ||
| 162 | declare!(USART1); | ||
| 163 | declare!(USART2); | ||
| 164 | declare!(USART3); | ||
| 165 | declare!(USB); | ||
| 166 | declare!(WWDG); | ||
| 167 | } | ||
| 168 | mod interrupt_vector { | ||
| 169 | extern "C" { | ||
| 170 | fn ADC1(); | ||
| 171 | fn CAN1_RX0(); | ||
| 172 | fn CAN1_RX1(); | ||
| 173 | fn CAN1_SCE(); | ||
| 174 | fn CAN1_TX(); | ||
| 175 | fn COMP(); | ||
| 176 | fn CRS(); | ||
| 177 | fn DMA1_Channel1(); | ||
| 178 | fn DMA1_Channel2(); | ||
| 179 | fn DMA1_Channel3(); | ||
| 180 | fn DMA1_Channel4(); | ||
| 181 | fn DMA1_Channel5(); | ||
| 182 | fn DMA1_Channel6(); | ||
| 183 | fn DMA1_Channel7(); | ||
| 184 | fn DMA2_Channel1(); | ||
| 185 | fn DMA2_Channel2(); | ||
| 186 | fn DMA2_Channel3(); | ||
| 187 | fn DMA2_Channel4(); | ||
| 188 | fn DMA2_Channel5(); | ||
| 189 | fn DMA2_Channel6(); | ||
| 190 | fn DMA2_Channel7(); | ||
| 191 | fn EXTI0(); | ||
| 192 | fn EXTI1(); | ||
| 193 | fn EXTI15_10(); | ||
| 194 | fn EXTI2(); | ||
| 195 | fn EXTI3(); | ||
| 196 | fn EXTI4(); | ||
| 197 | fn EXTI9_5(); | ||
| 198 | fn FLASH(); | ||
| 199 | fn FPU(); | ||
| 200 | fn I2C1_ER(); | ||
| 201 | fn I2C1_EV(); | ||
| 202 | fn I2C2_ER(); | ||
| 203 | fn I2C2_EV(); | ||
| 204 | fn I2C3_ER(); | ||
| 205 | fn I2C3_EV(); | ||
| 206 | fn LCD(); | ||
| 207 | fn LPTIM1(); | ||
| 208 | fn LPTIM2(); | ||
| 209 | fn LPUART1(); | ||
| 210 | fn PVD_PVM(); | ||
| 211 | fn QUADSPI(); | ||
| 212 | fn RCC(); | ||
| 213 | fn RNG(); | ||
| 214 | fn RTC_Alarm(); | ||
| 215 | fn RTC_WKUP(); | ||
| 216 | fn SAI1(); | ||
| 217 | fn SDMMC1(); | ||
| 218 | fn SPI1(); | ||
| 219 | fn SPI2(); | ||
| 220 | fn SPI3(); | ||
| 221 | fn SWPMI1(); | ||
| 222 | fn TAMP_STAMP(); | ||
| 223 | fn TIM1_BRK_TIM15(); | ||
| 224 | fn TIM1_CC(); | ||
| 225 | fn TIM1_TRG_COM(); | ||
| 226 | fn TIM1_UP_TIM16(); | ||
| 227 | fn TIM2(); | ||
| 228 | fn TIM6_DAC(); | ||
| 229 | fn TIM7(); | ||
| 230 | fn TSC(); | ||
| 231 | fn USART1(); | ||
| 232 | fn USART2(); | ||
| 233 | fn USART3(); | ||
| 234 | fn USB(); | ||
| 235 | fn WWDG(); | ||
| 236 | } | ||
| 237 | pub union Vector { | ||
| 238 | _handler: unsafe extern "C" fn(), | ||
| 239 | _reserved: u32, | ||
| 240 | } | ||
| 241 | #[link_section = ".vector_table.interrupts"] | ||
| 242 | #[no_mangle] | ||
| 243 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 244 | Vector { _handler: WWDG }, | ||
| 245 | Vector { _handler: PVD_PVM }, | ||
| 246 | Vector { | ||
| 247 | _handler: TAMP_STAMP, | ||
| 248 | }, | ||
| 249 | Vector { _handler: RTC_WKUP }, | ||
| 250 | Vector { _handler: FLASH }, | ||
| 251 | Vector { _handler: RCC }, | ||
| 252 | Vector { _handler: EXTI0 }, | ||
| 253 | Vector { _handler: EXTI1 }, | ||
| 254 | Vector { _handler: EXTI2 }, | ||
| 255 | Vector { _handler: EXTI3 }, | ||
| 256 | Vector { _handler: EXTI4 }, | ||
| 257 | Vector { | ||
| 258 | _handler: DMA1_Channel1, | ||
| 259 | }, | ||
| 260 | Vector { | ||
| 261 | _handler: DMA1_Channel2, | ||
| 262 | }, | ||
| 263 | Vector { | ||
| 264 | _handler: DMA1_Channel3, | ||
| 265 | }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel4, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel5, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel6, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel7, | ||
| 277 | }, | ||
| 278 | Vector { _handler: ADC1 }, | ||
| 279 | Vector { _handler: CAN1_TX }, | ||
| 280 | Vector { _handler: CAN1_RX0 }, | ||
| 281 | Vector { _handler: CAN1_RX1 }, | ||
| 282 | Vector { _handler: CAN1_SCE }, | ||
| 283 | Vector { _handler: EXTI9_5 }, | ||
| 284 | Vector { | ||
| 285 | _handler: TIM1_BRK_TIM15, | ||
| 286 | }, | ||
| 287 | Vector { | ||
| 288 | _handler: TIM1_UP_TIM16, | ||
| 289 | }, | ||
| 290 | Vector { | ||
| 291 | _handler: TIM1_TRG_COM, | ||
| 292 | }, | ||
| 293 | Vector { _handler: TIM1_CC }, | ||
| 294 | Vector { _handler: TIM2 }, | ||
| 295 | Vector { _reserved: 0 }, | ||
| 296 | Vector { _reserved: 0 }, | ||
| 297 | Vector { _handler: I2C1_EV }, | ||
| 298 | Vector { _handler: I2C1_ER }, | ||
| 299 | Vector { _handler: I2C2_EV }, | ||
| 300 | Vector { _handler: I2C2_ER }, | ||
| 301 | Vector { _handler: SPI1 }, | ||
| 302 | Vector { _handler: SPI2 }, | ||
| 303 | Vector { _handler: USART1 }, | ||
| 304 | Vector { _handler: USART2 }, | ||
| 305 | Vector { _handler: USART3 }, | ||
| 306 | Vector { | ||
| 307 | _handler: EXTI15_10, | ||
| 308 | }, | ||
| 309 | Vector { | ||
| 310 | _handler: RTC_Alarm, | ||
| 311 | }, | ||
| 312 | Vector { _reserved: 0 }, | ||
| 313 | Vector { _reserved: 0 }, | ||
| 314 | Vector { _reserved: 0 }, | ||
| 315 | Vector { _reserved: 0 }, | ||
| 316 | Vector { _reserved: 0 }, | ||
| 317 | Vector { _reserved: 0 }, | ||
| 318 | Vector { _reserved: 0 }, | ||
| 319 | Vector { _handler: SDMMC1 }, | ||
| 320 | Vector { _reserved: 0 }, | ||
| 321 | Vector { _handler: SPI3 }, | ||
| 322 | Vector { _reserved: 0 }, | ||
| 323 | Vector { _reserved: 0 }, | ||
| 324 | Vector { _handler: TIM6_DAC }, | ||
| 325 | Vector { _handler: TIM7 }, | ||
| 326 | Vector { | ||
| 327 | _handler: DMA2_Channel1, | ||
| 328 | }, | ||
| 329 | Vector { | ||
| 330 | _handler: DMA2_Channel2, | ||
| 331 | }, | ||
| 332 | Vector { | ||
| 333 | _handler: DMA2_Channel3, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: DMA2_Channel4, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel5, | ||
| 340 | }, | ||
| 341 | Vector { _reserved: 0 }, | ||
| 342 | Vector { _reserved: 0 }, | ||
| 343 | Vector { _reserved: 0 }, | ||
| 344 | Vector { _handler: COMP }, | ||
| 345 | Vector { _handler: LPTIM1 }, | ||
| 346 | Vector { _handler: LPTIM2 }, | ||
| 347 | Vector { _handler: USB }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA2_Channel6, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA2_Channel7, | ||
| 353 | }, | ||
| 354 | Vector { _handler: LPUART1 }, | ||
| 355 | Vector { _handler: QUADSPI }, | ||
| 356 | Vector { _handler: I2C3_EV }, | ||
| 357 | Vector { _handler: I2C3_ER }, | ||
| 358 | Vector { _handler: SAI1 }, | ||
| 359 | Vector { _reserved: 0 }, | ||
| 360 | Vector { _handler: SWPMI1 }, | ||
| 361 | Vector { _handler: TSC }, | ||
| 362 | Vector { _handler: LCD }, | ||
| 363 | Vector { _reserved: 0 }, | ||
| 364 | Vector { _handler: RNG }, | ||
| 365 | Vector { _handler: FPU }, | ||
| 366 | Vector { _handler: CRS }, | ||
| 367 | ]; | ||
| 368 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 369 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 370 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 371 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l442kc.rs b/embassy-stm32/src/chip/stm32l442kc.rs index 331d152f3..4837adef1 100644 --- a/embassy-stm32/src/chip/stm32l442kc.rs +++ b/embassy-stm32/src/chip/stm32l442kc.rs | |||
| @@ -1,16 +1,354 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, | 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, |
| 5 | PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, | 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, |
| 6 | PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, | 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, |
| 8 | PH11, PH12, PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, | 8 | PH10, PH11, PH12, PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, |
| 9 | RNG, RTC, SAI1, SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, | 9 | RCC, RNG, RTC, SAI1, SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, |
| 10 | USART2, USB, WWDG | 10 | USART1, USART2, USB, WWDG |
| 11 | ); | 11 | ); |
| 12 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 13 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 12 | pub const GPIO_BASE: usize = 0x48000000; | 14 | pub const GPIO_BASE: usize = 0x48000000; |
| 13 | pub const GPIO_STRIDE: usize = 0x400; | 15 | pub const GPIO_STRIDE: usize = 0x400; |
| 16 | |||
| 17 | pub mod interrupt { | ||
| 18 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 19 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 20 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 21 | |||
| 22 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 23 | #[allow(non_camel_case_types)] | ||
| 24 | enum InterruptEnum { | ||
| 25 | ADC1 = 18, | ||
| 26 | AES = 79, | ||
| 27 | CAN1_RX0 = 20, | ||
| 28 | CAN1_RX1 = 21, | ||
| 29 | CAN1_SCE = 22, | ||
| 30 | CAN1_TX = 19, | ||
| 31 | COMP = 64, | ||
| 32 | CRS = 82, | ||
| 33 | DMA1_Channel1 = 11, | ||
| 34 | DMA1_Channel2 = 12, | ||
| 35 | DMA1_Channel3 = 13, | ||
| 36 | DMA1_Channel4 = 14, | ||
| 37 | DMA1_Channel5 = 15, | ||
| 38 | DMA1_Channel6 = 16, | ||
| 39 | DMA1_Channel7 = 17, | ||
| 40 | DMA2_Channel1 = 56, | ||
| 41 | DMA2_Channel2 = 57, | ||
| 42 | DMA2_Channel3 = 58, | ||
| 43 | DMA2_Channel4 = 59, | ||
| 44 | DMA2_Channel5 = 60, | ||
| 45 | DMA2_Channel6 = 68, | ||
| 46 | DMA2_Channel7 = 69, | ||
| 47 | EXTI0 = 6, | ||
| 48 | EXTI1 = 7, | ||
| 49 | EXTI15_10 = 40, | ||
| 50 | EXTI2 = 8, | ||
| 51 | EXTI3 = 9, | ||
| 52 | EXTI4 = 10, | ||
| 53 | EXTI9_5 = 23, | ||
| 54 | FLASH = 4, | ||
| 55 | FPU = 81, | ||
| 56 | I2C1_ER = 32, | ||
| 57 | I2C1_EV = 31, | ||
| 58 | I2C3_ER = 73, | ||
| 59 | I2C3_EV = 72, | ||
| 60 | LPTIM1 = 65, | ||
| 61 | LPTIM2 = 66, | ||
| 62 | LPUART1 = 70, | ||
| 63 | PVD_PVM = 1, | ||
| 64 | QUADSPI = 71, | ||
| 65 | RCC = 5, | ||
| 66 | RNG = 80, | ||
| 67 | RTC_Alarm = 41, | ||
| 68 | RTC_WKUP = 3, | ||
| 69 | SAI1 = 74, | ||
| 70 | SPI1 = 35, | ||
| 71 | SPI3 = 51, | ||
| 72 | SWPMI1 = 76, | ||
| 73 | TAMP_STAMP = 2, | ||
| 74 | TIM1_BRK_TIM15 = 24, | ||
| 75 | TIM1_CC = 27, | ||
| 76 | TIM1_TRG_COM = 26, | ||
| 77 | TIM1_UP_TIM16 = 25, | ||
| 78 | TIM2 = 28, | ||
| 79 | TIM6_DAC = 54, | ||
| 80 | TIM7 = 55, | ||
| 81 | TSC = 77, | ||
| 82 | USART1 = 37, | ||
| 83 | USART2 = 38, | ||
| 84 | USB = 67, | ||
| 85 | WWDG = 0, | ||
| 86 | } | ||
| 87 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 88 | #[inline(always)] | ||
| 89 | fn number(self) -> u16 { | ||
| 90 | self as u16 | ||
| 91 | } | ||
| 92 | } | ||
| 93 | |||
| 94 | declare!(ADC1); | ||
| 95 | declare!(AES); | ||
| 96 | declare!(CAN1_RX0); | ||
| 97 | declare!(CAN1_RX1); | ||
| 98 | declare!(CAN1_SCE); | ||
| 99 | declare!(CAN1_TX); | ||
| 100 | declare!(COMP); | ||
| 101 | declare!(CRS); | ||
| 102 | declare!(DMA1_Channel1); | ||
| 103 | declare!(DMA1_Channel2); | ||
| 104 | declare!(DMA1_Channel3); | ||
| 105 | declare!(DMA1_Channel4); | ||
| 106 | declare!(DMA1_Channel5); | ||
| 107 | declare!(DMA1_Channel6); | ||
| 108 | declare!(DMA1_Channel7); | ||
| 109 | declare!(DMA2_Channel1); | ||
| 110 | declare!(DMA2_Channel2); | ||
| 111 | declare!(DMA2_Channel3); | ||
| 112 | declare!(DMA2_Channel4); | ||
| 113 | declare!(DMA2_Channel5); | ||
| 114 | declare!(DMA2_Channel6); | ||
| 115 | declare!(DMA2_Channel7); | ||
| 116 | declare!(EXTI0); | ||
| 117 | declare!(EXTI1); | ||
| 118 | declare!(EXTI15_10); | ||
| 119 | declare!(EXTI2); | ||
| 120 | declare!(EXTI3); | ||
| 121 | declare!(EXTI4); | ||
| 122 | declare!(EXTI9_5); | ||
| 123 | declare!(FLASH); | ||
| 124 | declare!(FPU); | ||
| 125 | declare!(I2C1_ER); | ||
| 126 | declare!(I2C1_EV); | ||
| 127 | declare!(I2C3_ER); | ||
| 128 | declare!(I2C3_EV); | ||
| 129 | declare!(LPTIM1); | ||
| 130 | declare!(LPTIM2); | ||
| 131 | declare!(LPUART1); | ||
| 132 | declare!(PVD_PVM); | ||
| 133 | declare!(QUADSPI); | ||
| 134 | declare!(RCC); | ||
| 135 | declare!(RNG); | ||
| 136 | declare!(RTC_Alarm); | ||
| 137 | declare!(RTC_WKUP); | ||
| 138 | declare!(SAI1); | ||
| 139 | declare!(SPI1); | ||
| 140 | declare!(SPI3); | ||
| 141 | declare!(SWPMI1); | ||
| 142 | declare!(TAMP_STAMP); | ||
| 143 | declare!(TIM1_BRK_TIM15); | ||
| 144 | declare!(TIM1_CC); | ||
| 145 | declare!(TIM1_TRG_COM); | ||
| 146 | declare!(TIM1_UP_TIM16); | ||
| 147 | declare!(TIM2); | ||
| 148 | declare!(TIM6_DAC); | ||
| 149 | declare!(TIM7); | ||
| 150 | declare!(TSC); | ||
| 151 | declare!(USART1); | ||
| 152 | declare!(USART2); | ||
| 153 | declare!(USB); | ||
| 154 | declare!(WWDG); | ||
| 155 | } | ||
| 156 | mod interrupt_vector { | ||
| 157 | extern "C" { | ||
| 158 | fn ADC1(); | ||
| 159 | fn AES(); | ||
| 160 | fn CAN1_RX0(); | ||
| 161 | fn CAN1_RX1(); | ||
| 162 | fn CAN1_SCE(); | ||
| 163 | fn CAN1_TX(); | ||
| 164 | fn COMP(); | ||
| 165 | fn CRS(); | ||
| 166 | fn DMA1_Channel1(); | ||
| 167 | fn DMA1_Channel2(); | ||
| 168 | fn DMA1_Channel3(); | ||
| 169 | fn DMA1_Channel4(); | ||
| 170 | fn DMA1_Channel5(); | ||
| 171 | fn DMA1_Channel6(); | ||
| 172 | fn DMA1_Channel7(); | ||
| 173 | fn DMA2_Channel1(); | ||
| 174 | fn DMA2_Channel2(); | ||
| 175 | fn DMA2_Channel3(); | ||
| 176 | fn DMA2_Channel4(); | ||
| 177 | fn DMA2_Channel5(); | ||
| 178 | fn DMA2_Channel6(); | ||
| 179 | fn DMA2_Channel7(); | ||
| 180 | fn EXTI0(); | ||
| 181 | fn EXTI1(); | ||
| 182 | fn EXTI15_10(); | ||
| 183 | fn EXTI2(); | ||
| 184 | fn EXTI3(); | ||
| 185 | fn EXTI4(); | ||
| 186 | fn EXTI9_5(); | ||
| 187 | fn FLASH(); | ||
| 188 | fn FPU(); | ||
| 189 | fn I2C1_ER(); | ||
| 190 | fn I2C1_EV(); | ||
| 191 | fn I2C3_ER(); | ||
| 192 | fn I2C3_EV(); | ||
| 193 | fn LPTIM1(); | ||
| 194 | fn LPTIM2(); | ||
| 195 | fn LPUART1(); | ||
| 196 | fn PVD_PVM(); | ||
| 197 | fn QUADSPI(); | ||
| 198 | fn RCC(); | ||
| 199 | fn RNG(); | ||
| 200 | fn RTC_Alarm(); | ||
| 201 | fn RTC_WKUP(); | ||
| 202 | fn SAI1(); | ||
| 203 | fn SPI1(); | ||
| 204 | fn SPI3(); | ||
| 205 | fn SWPMI1(); | ||
| 206 | fn TAMP_STAMP(); | ||
| 207 | fn TIM1_BRK_TIM15(); | ||
| 208 | fn TIM1_CC(); | ||
| 209 | fn TIM1_TRG_COM(); | ||
| 210 | fn TIM1_UP_TIM16(); | ||
| 211 | fn TIM2(); | ||
| 212 | fn TIM6_DAC(); | ||
| 213 | fn TIM7(); | ||
| 214 | fn TSC(); | ||
| 215 | fn USART1(); | ||
| 216 | fn USART2(); | ||
| 217 | fn USB(); | ||
| 218 | fn WWDG(); | ||
| 219 | } | ||
| 220 | pub union Vector { | ||
| 221 | _handler: unsafe extern "C" fn(), | ||
| 222 | _reserved: u32, | ||
| 223 | } | ||
| 224 | #[link_section = ".vector_table.interrupts"] | ||
| 225 | #[no_mangle] | ||
| 226 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 227 | Vector { _handler: WWDG }, | ||
| 228 | Vector { _handler: PVD_PVM }, | ||
| 229 | Vector { | ||
| 230 | _handler: TAMP_STAMP, | ||
| 231 | }, | ||
| 232 | Vector { _handler: RTC_WKUP }, | ||
| 233 | Vector { _handler: FLASH }, | ||
| 234 | Vector { _handler: RCC }, | ||
| 235 | Vector { _handler: EXTI0 }, | ||
| 236 | Vector { _handler: EXTI1 }, | ||
| 237 | Vector { _handler: EXTI2 }, | ||
| 238 | Vector { _handler: EXTI3 }, | ||
| 239 | Vector { _handler: EXTI4 }, | ||
| 240 | Vector { | ||
| 241 | _handler: DMA1_Channel1, | ||
| 242 | }, | ||
| 243 | Vector { | ||
| 244 | _handler: DMA1_Channel2, | ||
| 245 | }, | ||
| 246 | Vector { | ||
| 247 | _handler: DMA1_Channel3, | ||
| 248 | }, | ||
| 249 | Vector { | ||
| 250 | _handler: DMA1_Channel4, | ||
| 251 | }, | ||
| 252 | Vector { | ||
| 253 | _handler: DMA1_Channel5, | ||
| 254 | }, | ||
| 255 | Vector { | ||
| 256 | _handler: DMA1_Channel6, | ||
| 257 | }, | ||
| 258 | Vector { | ||
| 259 | _handler: DMA1_Channel7, | ||
| 260 | }, | ||
| 261 | Vector { _handler: ADC1 }, | ||
| 262 | Vector { _handler: CAN1_TX }, | ||
| 263 | Vector { _handler: CAN1_RX0 }, | ||
| 264 | Vector { _handler: CAN1_RX1 }, | ||
| 265 | Vector { _handler: CAN1_SCE }, | ||
| 266 | Vector { _handler: EXTI9_5 }, | ||
| 267 | Vector { | ||
| 268 | _handler: TIM1_BRK_TIM15, | ||
| 269 | }, | ||
| 270 | Vector { | ||
| 271 | _handler: TIM1_UP_TIM16, | ||
| 272 | }, | ||
| 273 | Vector { | ||
| 274 | _handler: TIM1_TRG_COM, | ||
| 275 | }, | ||
| 276 | Vector { _handler: TIM1_CC }, | ||
| 277 | Vector { _handler: TIM2 }, | ||
| 278 | Vector { _reserved: 0 }, | ||
| 279 | Vector { _reserved: 0 }, | ||
| 280 | Vector { _handler: I2C1_EV }, | ||
| 281 | Vector { _handler: I2C1_ER }, | ||
| 282 | Vector { _reserved: 0 }, | ||
| 283 | Vector { _reserved: 0 }, | ||
| 284 | Vector { _handler: SPI1 }, | ||
| 285 | Vector { _reserved: 0 }, | ||
| 286 | Vector { _handler: USART1 }, | ||
| 287 | Vector { _handler: USART2 }, | ||
| 288 | Vector { _reserved: 0 }, | ||
| 289 | Vector { | ||
| 290 | _handler: EXTI15_10, | ||
| 291 | }, | ||
| 292 | Vector { | ||
| 293 | _handler: RTC_Alarm, | ||
| 294 | }, | ||
| 295 | Vector { _reserved: 0 }, | ||
| 296 | Vector { _reserved: 0 }, | ||
| 297 | Vector { _reserved: 0 }, | ||
| 298 | Vector { _reserved: 0 }, | ||
| 299 | Vector { _reserved: 0 }, | ||
| 300 | Vector { _reserved: 0 }, | ||
| 301 | Vector { _reserved: 0 }, | ||
| 302 | Vector { _reserved: 0 }, | ||
| 303 | Vector { _reserved: 0 }, | ||
| 304 | Vector { _handler: SPI3 }, | ||
| 305 | Vector { _reserved: 0 }, | ||
| 306 | Vector { _reserved: 0 }, | ||
| 307 | Vector { _handler: TIM6_DAC }, | ||
| 308 | Vector { _handler: TIM7 }, | ||
| 309 | Vector { | ||
| 310 | _handler: DMA2_Channel1, | ||
| 311 | }, | ||
| 312 | Vector { | ||
| 313 | _handler: DMA2_Channel2, | ||
| 314 | }, | ||
| 315 | Vector { | ||
| 316 | _handler: DMA2_Channel3, | ||
| 317 | }, | ||
| 318 | Vector { | ||
| 319 | _handler: DMA2_Channel4, | ||
| 320 | }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA2_Channel5, | ||
| 323 | }, | ||
| 324 | Vector { _reserved: 0 }, | ||
| 325 | Vector { _reserved: 0 }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _handler: COMP }, | ||
| 328 | Vector { _handler: LPTIM1 }, | ||
| 329 | Vector { _handler: LPTIM2 }, | ||
| 330 | Vector { _handler: USB }, | ||
| 331 | Vector { | ||
| 332 | _handler: DMA2_Channel6, | ||
| 333 | }, | ||
| 334 | Vector { | ||
| 335 | _handler: DMA2_Channel7, | ||
| 336 | }, | ||
| 337 | Vector { _handler: LPUART1 }, | ||
| 338 | Vector { _handler: QUADSPI }, | ||
| 339 | Vector { _handler: I2C3_EV }, | ||
| 340 | Vector { _handler: I2C3_ER }, | ||
| 341 | Vector { _handler: SAI1 }, | ||
| 342 | Vector { _reserved: 0 }, | ||
| 343 | Vector { _handler: SWPMI1 }, | ||
| 344 | Vector { _handler: TSC }, | ||
| 345 | Vector { _reserved: 0 }, | ||
| 346 | Vector { _handler: AES }, | ||
| 347 | Vector { _handler: RNG }, | ||
| 348 | Vector { _handler: FPU }, | ||
| 349 | Vector { _handler: CRS }, | ||
| 350 | ]; | ||
| 351 | } | ||
| 14 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 352 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 15 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 353 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 16 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 354 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l443cc.rs b/embassy-stm32/src/chip/stm32l443cc.rs index 10d538aef..aa21e3322 100644 --- a/embassy-stm32/src/chip/stm32l443cc.rs +++ b/embassy-stm32/src/chip/stm32l443cc.rs | |||
| @@ -1,18 +1,374 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, | 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, |
| 5 | PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, | 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, |
| 6 | PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 9 | PE11, PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, | 10 | PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, |
| 11 | RNG, RTC, SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, | 11 | RCC, RNG, RTC, SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, |
| 12 | USART1, USART2, USART3, USB, WWDG | 12 | TSC, USART1, USART2, USART3, USB, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | AES = 79, | ||
| 29 | CAN1_RX0 = 20, | ||
| 30 | CAN1_RX1 = 21, | ||
| 31 | CAN1_SCE = 22, | ||
| 32 | CAN1_TX = 19, | ||
| 33 | COMP = 64, | ||
| 34 | CRS = 82, | ||
| 35 | DMA1_Channel1 = 11, | ||
| 36 | DMA1_Channel2 = 12, | ||
| 37 | DMA1_Channel3 = 13, | ||
| 38 | DMA1_Channel4 = 14, | ||
| 39 | DMA1_Channel5 = 15, | ||
| 40 | DMA1_Channel6 = 16, | ||
| 41 | DMA1_Channel7 = 17, | ||
| 42 | DMA2_Channel1 = 56, | ||
| 43 | DMA2_Channel2 = 57, | ||
| 44 | DMA2_Channel3 = 58, | ||
| 45 | DMA2_Channel4 = 59, | ||
| 46 | DMA2_Channel5 = 60, | ||
| 47 | DMA2_Channel6 = 68, | ||
| 48 | DMA2_Channel7 = 69, | ||
| 49 | EXTI0 = 6, | ||
| 50 | EXTI1 = 7, | ||
| 51 | EXTI15_10 = 40, | ||
| 52 | EXTI2 = 8, | ||
| 53 | EXTI3 = 9, | ||
| 54 | EXTI4 = 10, | ||
| 55 | EXTI9_5 = 23, | ||
| 56 | FLASH = 4, | ||
| 57 | FPU = 81, | ||
| 58 | I2C1_ER = 32, | ||
| 59 | I2C1_EV = 31, | ||
| 60 | I2C2_ER = 34, | ||
| 61 | I2C2_EV = 33, | ||
| 62 | I2C3_ER = 73, | ||
| 63 | I2C3_EV = 72, | ||
| 64 | LCD = 78, | ||
| 65 | LPTIM1 = 65, | ||
| 66 | LPTIM2 = 66, | ||
| 67 | LPUART1 = 70, | ||
| 68 | PVD_PVM = 1, | ||
| 69 | QUADSPI = 71, | ||
| 70 | RCC = 5, | ||
| 71 | RNG = 80, | ||
| 72 | RTC_Alarm = 41, | ||
| 73 | RTC_WKUP = 3, | ||
| 74 | SAI1 = 74, | ||
| 75 | SDMMC1 = 49, | ||
| 76 | SPI1 = 35, | ||
| 77 | SPI2 = 36, | ||
| 78 | SPI3 = 51, | ||
| 79 | SWPMI1 = 76, | ||
| 80 | TAMP_STAMP = 2, | ||
| 81 | TIM1_BRK_TIM15 = 24, | ||
| 82 | TIM1_CC = 27, | ||
| 83 | TIM1_TRG_COM = 26, | ||
| 84 | TIM1_UP_TIM16 = 25, | ||
| 85 | TIM2 = 28, | ||
| 86 | TIM6_DAC = 54, | ||
| 87 | TIM7 = 55, | ||
| 88 | TSC = 77, | ||
| 89 | USART1 = 37, | ||
| 90 | USART2 = 38, | ||
| 91 | USART3 = 39, | ||
| 92 | USB = 67, | ||
| 93 | WWDG = 0, | ||
| 94 | } | ||
| 95 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 96 | #[inline(always)] | ||
| 97 | fn number(self) -> u16 { | ||
| 98 | self as u16 | ||
| 99 | } | ||
| 100 | } | ||
| 101 | |||
| 102 | declare!(ADC1); | ||
| 103 | declare!(AES); | ||
| 104 | declare!(CAN1_RX0); | ||
| 105 | declare!(CAN1_RX1); | ||
| 106 | declare!(CAN1_SCE); | ||
| 107 | declare!(CAN1_TX); | ||
| 108 | declare!(COMP); | ||
| 109 | declare!(CRS); | ||
| 110 | declare!(DMA1_Channel1); | ||
| 111 | declare!(DMA1_Channel2); | ||
| 112 | declare!(DMA1_Channel3); | ||
| 113 | declare!(DMA1_Channel4); | ||
| 114 | declare!(DMA1_Channel5); | ||
| 115 | declare!(DMA1_Channel6); | ||
| 116 | declare!(DMA1_Channel7); | ||
| 117 | declare!(DMA2_Channel1); | ||
| 118 | declare!(DMA2_Channel2); | ||
| 119 | declare!(DMA2_Channel3); | ||
| 120 | declare!(DMA2_Channel4); | ||
| 121 | declare!(DMA2_Channel5); | ||
| 122 | declare!(DMA2_Channel6); | ||
| 123 | declare!(DMA2_Channel7); | ||
| 124 | declare!(EXTI0); | ||
| 125 | declare!(EXTI1); | ||
| 126 | declare!(EXTI15_10); | ||
| 127 | declare!(EXTI2); | ||
| 128 | declare!(EXTI3); | ||
| 129 | declare!(EXTI4); | ||
| 130 | declare!(EXTI9_5); | ||
| 131 | declare!(FLASH); | ||
| 132 | declare!(FPU); | ||
| 133 | declare!(I2C1_ER); | ||
| 134 | declare!(I2C1_EV); | ||
| 135 | declare!(I2C2_ER); | ||
| 136 | declare!(I2C2_EV); | ||
| 137 | declare!(I2C3_ER); | ||
| 138 | declare!(I2C3_EV); | ||
| 139 | declare!(LCD); | ||
| 140 | declare!(LPTIM1); | ||
| 141 | declare!(LPTIM2); | ||
| 142 | declare!(LPUART1); | ||
| 143 | declare!(PVD_PVM); | ||
| 144 | declare!(QUADSPI); | ||
| 145 | declare!(RCC); | ||
| 146 | declare!(RNG); | ||
| 147 | declare!(RTC_Alarm); | ||
| 148 | declare!(RTC_WKUP); | ||
| 149 | declare!(SAI1); | ||
| 150 | declare!(SDMMC1); | ||
| 151 | declare!(SPI1); | ||
| 152 | declare!(SPI2); | ||
| 153 | declare!(SPI3); | ||
| 154 | declare!(SWPMI1); | ||
| 155 | declare!(TAMP_STAMP); | ||
| 156 | declare!(TIM1_BRK_TIM15); | ||
| 157 | declare!(TIM1_CC); | ||
| 158 | declare!(TIM1_TRG_COM); | ||
| 159 | declare!(TIM1_UP_TIM16); | ||
| 160 | declare!(TIM2); | ||
| 161 | declare!(TIM6_DAC); | ||
| 162 | declare!(TIM7); | ||
| 163 | declare!(TSC); | ||
| 164 | declare!(USART1); | ||
| 165 | declare!(USART2); | ||
| 166 | declare!(USART3); | ||
| 167 | declare!(USB); | ||
| 168 | declare!(WWDG); | ||
| 169 | } | ||
| 170 | mod interrupt_vector { | ||
| 171 | extern "C" { | ||
| 172 | fn ADC1(); | ||
| 173 | fn AES(); | ||
| 174 | fn CAN1_RX0(); | ||
| 175 | fn CAN1_RX1(); | ||
| 176 | fn CAN1_SCE(); | ||
| 177 | fn CAN1_TX(); | ||
| 178 | fn COMP(); | ||
| 179 | fn CRS(); | ||
| 180 | fn DMA1_Channel1(); | ||
| 181 | fn DMA1_Channel2(); | ||
| 182 | fn DMA1_Channel3(); | ||
| 183 | fn DMA1_Channel4(); | ||
| 184 | fn DMA1_Channel5(); | ||
| 185 | fn DMA1_Channel6(); | ||
| 186 | fn DMA1_Channel7(); | ||
| 187 | fn DMA2_Channel1(); | ||
| 188 | fn DMA2_Channel2(); | ||
| 189 | fn DMA2_Channel3(); | ||
| 190 | fn DMA2_Channel4(); | ||
| 191 | fn DMA2_Channel5(); | ||
| 192 | fn DMA2_Channel6(); | ||
| 193 | fn DMA2_Channel7(); | ||
| 194 | fn EXTI0(); | ||
| 195 | fn EXTI1(); | ||
| 196 | fn EXTI15_10(); | ||
| 197 | fn EXTI2(); | ||
| 198 | fn EXTI3(); | ||
| 199 | fn EXTI4(); | ||
| 200 | fn EXTI9_5(); | ||
| 201 | fn FLASH(); | ||
| 202 | fn FPU(); | ||
| 203 | fn I2C1_ER(); | ||
| 204 | fn I2C1_EV(); | ||
| 205 | fn I2C2_ER(); | ||
| 206 | fn I2C2_EV(); | ||
| 207 | fn I2C3_ER(); | ||
| 208 | fn I2C3_EV(); | ||
| 209 | fn LCD(); | ||
| 210 | fn LPTIM1(); | ||
| 211 | fn LPTIM2(); | ||
| 212 | fn LPUART1(); | ||
| 213 | fn PVD_PVM(); | ||
| 214 | fn QUADSPI(); | ||
| 215 | fn RCC(); | ||
| 216 | fn RNG(); | ||
| 217 | fn RTC_Alarm(); | ||
| 218 | fn RTC_WKUP(); | ||
| 219 | fn SAI1(); | ||
| 220 | fn SDMMC1(); | ||
| 221 | fn SPI1(); | ||
| 222 | fn SPI2(); | ||
| 223 | fn SPI3(); | ||
| 224 | fn SWPMI1(); | ||
| 225 | fn TAMP_STAMP(); | ||
| 226 | fn TIM1_BRK_TIM15(); | ||
| 227 | fn TIM1_CC(); | ||
| 228 | fn TIM1_TRG_COM(); | ||
| 229 | fn TIM1_UP_TIM16(); | ||
| 230 | fn TIM2(); | ||
| 231 | fn TIM6_DAC(); | ||
| 232 | fn TIM7(); | ||
| 233 | fn TSC(); | ||
| 234 | fn USART1(); | ||
| 235 | fn USART2(); | ||
| 236 | fn USART3(); | ||
| 237 | fn USB(); | ||
| 238 | fn WWDG(); | ||
| 239 | } | ||
| 240 | pub union Vector { | ||
| 241 | _handler: unsafe extern "C" fn(), | ||
| 242 | _reserved: u32, | ||
| 243 | } | ||
| 244 | #[link_section = ".vector_table.interrupts"] | ||
| 245 | #[no_mangle] | ||
| 246 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 247 | Vector { _handler: WWDG }, | ||
| 248 | Vector { _handler: PVD_PVM }, | ||
| 249 | Vector { | ||
| 250 | _handler: TAMP_STAMP, | ||
| 251 | }, | ||
| 252 | Vector { _handler: RTC_WKUP }, | ||
| 253 | Vector { _handler: FLASH }, | ||
| 254 | Vector { _handler: RCC }, | ||
| 255 | Vector { _handler: EXTI0 }, | ||
| 256 | Vector { _handler: EXTI1 }, | ||
| 257 | Vector { _handler: EXTI2 }, | ||
| 258 | Vector { _handler: EXTI3 }, | ||
| 259 | Vector { _handler: EXTI4 }, | ||
| 260 | Vector { | ||
| 261 | _handler: DMA1_Channel1, | ||
| 262 | }, | ||
| 263 | Vector { | ||
| 264 | _handler: DMA1_Channel2, | ||
| 265 | }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel3, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel4, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel5, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel6, | ||
| 277 | }, | ||
| 278 | Vector { | ||
| 279 | _handler: DMA1_Channel7, | ||
| 280 | }, | ||
| 281 | Vector { _handler: ADC1 }, | ||
| 282 | Vector { _handler: CAN1_TX }, | ||
| 283 | Vector { _handler: CAN1_RX0 }, | ||
| 284 | Vector { _handler: CAN1_RX1 }, | ||
| 285 | Vector { _handler: CAN1_SCE }, | ||
| 286 | Vector { _handler: EXTI9_5 }, | ||
| 287 | Vector { | ||
| 288 | _handler: TIM1_BRK_TIM15, | ||
| 289 | }, | ||
| 290 | Vector { | ||
| 291 | _handler: TIM1_UP_TIM16, | ||
| 292 | }, | ||
| 293 | Vector { | ||
| 294 | _handler: TIM1_TRG_COM, | ||
| 295 | }, | ||
| 296 | Vector { _handler: TIM1_CC }, | ||
| 297 | Vector { _handler: TIM2 }, | ||
| 298 | Vector { _reserved: 0 }, | ||
| 299 | Vector { _reserved: 0 }, | ||
| 300 | Vector { _handler: I2C1_EV }, | ||
| 301 | Vector { _handler: I2C1_ER }, | ||
| 302 | Vector { _handler: I2C2_EV }, | ||
| 303 | Vector { _handler: I2C2_ER }, | ||
| 304 | Vector { _handler: SPI1 }, | ||
| 305 | Vector { _handler: SPI2 }, | ||
| 306 | Vector { _handler: USART1 }, | ||
| 307 | Vector { _handler: USART2 }, | ||
| 308 | Vector { _handler: USART3 }, | ||
| 309 | Vector { | ||
| 310 | _handler: EXTI15_10, | ||
| 311 | }, | ||
| 312 | Vector { | ||
| 313 | _handler: RTC_Alarm, | ||
| 314 | }, | ||
| 315 | Vector { _reserved: 0 }, | ||
| 316 | Vector { _reserved: 0 }, | ||
| 317 | Vector { _reserved: 0 }, | ||
| 318 | Vector { _reserved: 0 }, | ||
| 319 | Vector { _reserved: 0 }, | ||
| 320 | Vector { _reserved: 0 }, | ||
| 321 | Vector { _reserved: 0 }, | ||
| 322 | Vector { _handler: SDMMC1 }, | ||
| 323 | Vector { _reserved: 0 }, | ||
| 324 | Vector { _handler: SPI3 }, | ||
| 325 | Vector { _reserved: 0 }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _handler: TIM6_DAC }, | ||
| 328 | Vector { _handler: TIM7 }, | ||
| 329 | Vector { | ||
| 330 | _handler: DMA2_Channel1, | ||
| 331 | }, | ||
| 332 | Vector { | ||
| 333 | _handler: DMA2_Channel2, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: DMA2_Channel3, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel4, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: DMA2_Channel5, | ||
| 343 | }, | ||
| 344 | Vector { _reserved: 0 }, | ||
| 345 | Vector { _reserved: 0 }, | ||
| 346 | Vector { _reserved: 0 }, | ||
| 347 | Vector { _handler: COMP }, | ||
| 348 | Vector { _handler: LPTIM1 }, | ||
| 349 | Vector { _handler: LPTIM2 }, | ||
| 350 | Vector { _handler: USB }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA2_Channel6, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: DMA2_Channel7, | ||
| 356 | }, | ||
| 357 | Vector { _handler: LPUART1 }, | ||
| 358 | Vector { _handler: QUADSPI }, | ||
| 359 | Vector { _handler: I2C3_EV }, | ||
| 360 | Vector { _handler: I2C3_ER }, | ||
| 361 | Vector { _handler: SAI1 }, | ||
| 362 | Vector { _reserved: 0 }, | ||
| 363 | Vector { _handler: SWPMI1 }, | ||
| 364 | Vector { _handler: TSC }, | ||
| 365 | Vector { _handler: LCD }, | ||
| 366 | Vector { _handler: AES }, | ||
| 367 | Vector { _handler: RNG }, | ||
| 368 | Vector { _handler: FPU }, | ||
| 369 | Vector { _handler: CRS }, | ||
| 370 | ]; | ||
| 371 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 372 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 373 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 374 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l443rc.rs b/embassy-stm32/src/chip/stm32l443rc.rs index 4842bf0f6..f3139bc11 100644 --- a/embassy-stm32/src/chip/stm32l443rc.rs +++ b/embassy-stm32/src/chip/stm32l443rc.rs | |||
| @@ -1,18 +1,374 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, | 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, |
| 5 | PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, | 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, |
| 6 | PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 9 | PE11, PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, | 10 | PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, |
| 11 | RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, | 11 | RCC, RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, |
| 12 | TSC, USART1, USART2, USART3, USB, WWDG | 12 | TIM7, TSC, USART1, USART2, USART3, USB, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | AES = 79, | ||
| 29 | CAN1_RX0 = 20, | ||
| 30 | CAN1_RX1 = 21, | ||
| 31 | CAN1_SCE = 22, | ||
| 32 | CAN1_TX = 19, | ||
| 33 | COMP = 64, | ||
| 34 | CRS = 82, | ||
| 35 | DMA1_Channel1 = 11, | ||
| 36 | DMA1_Channel2 = 12, | ||
| 37 | DMA1_Channel3 = 13, | ||
| 38 | DMA1_Channel4 = 14, | ||
| 39 | DMA1_Channel5 = 15, | ||
| 40 | DMA1_Channel6 = 16, | ||
| 41 | DMA1_Channel7 = 17, | ||
| 42 | DMA2_Channel1 = 56, | ||
| 43 | DMA2_Channel2 = 57, | ||
| 44 | DMA2_Channel3 = 58, | ||
| 45 | DMA2_Channel4 = 59, | ||
| 46 | DMA2_Channel5 = 60, | ||
| 47 | DMA2_Channel6 = 68, | ||
| 48 | DMA2_Channel7 = 69, | ||
| 49 | EXTI0 = 6, | ||
| 50 | EXTI1 = 7, | ||
| 51 | EXTI15_10 = 40, | ||
| 52 | EXTI2 = 8, | ||
| 53 | EXTI3 = 9, | ||
| 54 | EXTI4 = 10, | ||
| 55 | EXTI9_5 = 23, | ||
| 56 | FLASH = 4, | ||
| 57 | FPU = 81, | ||
| 58 | I2C1_ER = 32, | ||
| 59 | I2C1_EV = 31, | ||
| 60 | I2C2_ER = 34, | ||
| 61 | I2C2_EV = 33, | ||
| 62 | I2C3_ER = 73, | ||
| 63 | I2C3_EV = 72, | ||
| 64 | LCD = 78, | ||
| 65 | LPTIM1 = 65, | ||
| 66 | LPTIM2 = 66, | ||
| 67 | LPUART1 = 70, | ||
| 68 | PVD_PVM = 1, | ||
| 69 | QUADSPI = 71, | ||
| 70 | RCC = 5, | ||
| 71 | RNG = 80, | ||
| 72 | RTC_Alarm = 41, | ||
| 73 | RTC_WKUP = 3, | ||
| 74 | SAI1 = 74, | ||
| 75 | SDMMC1 = 49, | ||
| 76 | SPI1 = 35, | ||
| 77 | SPI2 = 36, | ||
| 78 | SPI3 = 51, | ||
| 79 | SWPMI1 = 76, | ||
| 80 | TAMP_STAMP = 2, | ||
| 81 | TIM1_BRK_TIM15 = 24, | ||
| 82 | TIM1_CC = 27, | ||
| 83 | TIM1_TRG_COM = 26, | ||
| 84 | TIM1_UP_TIM16 = 25, | ||
| 85 | TIM2 = 28, | ||
| 86 | TIM6_DAC = 54, | ||
| 87 | TIM7 = 55, | ||
| 88 | TSC = 77, | ||
| 89 | USART1 = 37, | ||
| 90 | USART2 = 38, | ||
| 91 | USART3 = 39, | ||
| 92 | USB = 67, | ||
| 93 | WWDG = 0, | ||
| 94 | } | ||
| 95 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 96 | #[inline(always)] | ||
| 97 | fn number(self) -> u16 { | ||
| 98 | self as u16 | ||
| 99 | } | ||
| 100 | } | ||
| 101 | |||
| 102 | declare!(ADC1); | ||
| 103 | declare!(AES); | ||
| 104 | declare!(CAN1_RX0); | ||
| 105 | declare!(CAN1_RX1); | ||
| 106 | declare!(CAN1_SCE); | ||
| 107 | declare!(CAN1_TX); | ||
| 108 | declare!(COMP); | ||
| 109 | declare!(CRS); | ||
| 110 | declare!(DMA1_Channel1); | ||
| 111 | declare!(DMA1_Channel2); | ||
| 112 | declare!(DMA1_Channel3); | ||
| 113 | declare!(DMA1_Channel4); | ||
| 114 | declare!(DMA1_Channel5); | ||
| 115 | declare!(DMA1_Channel6); | ||
| 116 | declare!(DMA1_Channel7); | ||
| 117 | declare!(DMA2_Channel1); | ||
| 118 | declare!(DMA2_Channel2); | ||
| 119 | declare!(DMA2_Channel3); | ||
| 120 | declare!(DMA2_Channel4); | ||
| 121 | declare!(DMA2_Channel5); | ||
| 122 | declare!(DMA2_Channel6); | ||
| 123 | declare!(DMA2_Channel7); | ||
| 124 | declare!(EXTI0); | ||
| 125 | declare!(EXTI1); | ||
| 126 | declare!(EXTI15_10); | ||
| 127 | declare!(EXTI2); | ||
| 128 | declare!(EXTI3); | ||
| 129 | declare!(EXTI4); | ||
| 130 | declare!(EXTI9_5); | ||
| 131 | declare!(FLASH); | ||
| 132 | declare!(FPU); | ||
| 133 | declare!(I2C1_ER); | ||
| 134 | declare!(I2C1_EV); | ||
| 135 | declare!(I2C2_ER); | ||
| 136 | declare!(I2C2_EV); | ||
| 137 | declare!(I2C3_ER); | ||
| 138 | declare!(I2C3_EV); | ||
| 139 | declare!(LCD); | ||
| 140 | declare!(LPTIM1); | ||
| 141 | declare!(LPTIM2); | ||
| 142 | declare!(LPUART1); | ||
| 143 | declare!(PVD_PVM); | ||
| 144 | declare!(QUADSPI); | ||
| 145 | declare!(RCC); | ||
| 146 | declare!(RNG); | ||
| 147 | declare!(RTC_Alarm); | ||
| 148 | declare!(RTC_WKUP); | ||
| 149 | declare!(SAI1); | ||
| 150 | declare!(SDMMC1); | ||
| 151 | declare!(SPI1); | ||
| 152 | declare!(SPI2); | ||
| 153 | declare!(SPI3); | ||
| 154 | declare!(SWPMI1); | ||
| 155 | declare!(TAMP_STAMP); | ||
| 156 | declare!(TIM1_BRK_TIM15); | ||
| 157 | declare!(TIM1_CC); | ||
| 158 | declare!(TIM1_TRG_COM); | ||
| 159 | declare!(TIM1_UP_TIM16); | ||
| 160 | declare!(TIM2); | ||
| 161 | declare!(TIM6_DAC); | ||
| 162 | declare!(TIM7); | ||
| 163 | declare!(TSC); | ||
| 164 | declare!(USART1); | ||
| 165 | declare!(USART2); | ||
| 166 | declare!(USART3); | ||
| 167 | declare!(USB); | ||
| 168 | declare!(WWDG); | ||
| 169 | } | ||
| 170 | mod interrupt_vector { | ||
| 171 | extern "C" { | ||
| 172 | fn ADC1(); | ||
| 173 | fn AES(); | ||
| 174 | fn CAN1_RX0(); | ||
| 175 | fn CAN1_RX1(); | ||
| 176 | fn CAN1_SCE(); | ||
| 177 | fn CAN1_TX(); | ||
| 178 | fn COMP(); | ||
| 179 | fn CRS(); | ||
| 180 | fn DMA1_Channel1(); | ||
| 181 | fn DMA1_Channel2(); | ||
| 182 | fn DMA1_Channel3(); | ||
| 183 | fn DMA1_Channel4(); | ||
| 184 | fn DMA1_Channel5(); | ||
| 185 | fn DMA1_Channel6(); | ||
| 186 | fn DMA1_Channel7(); | ||
| 187 | fn DMA2_Channel1(); | ||
| 188 | fn DMA2_Channel2(); | ||
| 189 | fn DMA2_Channel3(); | ||
| 190 | fn DMA2_Channel4(); | ||
| 191 | fn DMA2_Channel5(); | ||
| 192 | fn DMA2_Channel6(); | ||
| 193 | fn DMA2_Channel7(); | ||
| 194 | fn EXTI0(); | ||
| 195 | fn EXTI1(); | ||
| 196 | fn EXTI15_10(); | ||
| 197 | fn EXTI2(); | ||
| 198 | fn EXTI3(); | ||
| 199 | fn EXTI4(); | ||
| 200 | fn EXTI9_5(); | ||
| 201 | fn FLASH(); | ||
| 202 | fn FPU(); | ||
| 203 | fn I2C1_ER(); | ||
| 204 | fn I2C1_EV(); | ||
| 205 | fn I2C2_ER(); | ||
| 206 | fn I2C2_EV(); | ||
| 207 | fn I2C3_ER(); | ||
| 208 | fn I2C3_EV(); | ||
| 209 | fn LCD(); | ||
| 210 | fn LPTIM1(); | ||
| 211 | fn LPTIM2(); | ||
| 212 | fn LPUART1(); | ||
| 213 | fn PVD_PVM(); | ||
| 214 | fn QUADSPI(); | ||
| 215 | fn RCC(); | ||
| 216 | fn RNG(); | ||
| 217 | fn RTC_Alarm(); | ||
| 218 | fn RTC_WKUP(); | ||
| 219 | fn SAI1(); | ||
| 220 | fn SDMMC1(); | ||
| 221 | fn SPI1(); | ||
| 222 | fn SPI2(); | ||
| 223 | fn SPI3(); | ||
| 224 | fn SWPMI1(); | ||
| 225 | fn TAMP_STAMP(); | ||
| 226 | fn TIM1_BRK_TIM15(); | ||
| 227 | fn TIM1_CC(); | ||
| 228 | fn TIM1_TRG_COM(); | ||
| 229 | fn TIM1_UP_TIM16(); | ||
| 230 | fn TIM2(); | ||
| 231 | fn TIM6_DAC(); | ||
| 232 | fn TIM7(); | ||
| 233 | fn TSC(); | ||
| 234 | fn USART1(); | ||
| 235 | fn USART2(); | ||
| 236 | fn USART3(); | ||
| 237 | fn USB(); | ||
| 238 | fn WWDG(); | ||
| 239 | } | ||
| 240 | pub union Vector { | ||
| 241 | _handler: unsafe extern "C" fn(), | ||
| 242 | _reserved: u32, | ||
| 243 | } | ||
| 244 | #[link_section = ".vector_table.interrupts"] | ||
| 245 | #[no_mangle] | ||
| 246 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 247 | Vector { _handler: WWDG }, | ||
| 248 | Vector { _handler: PVD_PVM }, | ||
| 249 | Vector { | ||
| 250 | _handler: TAMP_STAMP, | ||
| 251 | }, | ||
| 252 | Vector { _handler: RTC_WKUP }, | ||
| 253 | Vector { _handler: FLASH }, | ||
| 254 | Vector { _handler: RCC }, | ||
| 255 | Vector { _handler: EXTI0 }, | ||
| 256 | Vector { _handler: EXTI1 }, | ||
| 257 | Vector { _handler: EXTI2 }, | ||
| 258 | Vector { _handler: EXTI3 }, | ||
| 259 | Vector { _handler: EXTI4 }, | ||
| 260 | Vector { | ||
| 261 | _handler: DMA1_Channel1, | ||
| 262 | }, | ||
| 263 | Vector { | ||
| 264 | _handler: DMA1_Channel2, | ||
| 265 | }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel3, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel4, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel5, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel6, | ||
| 277 | }, | ||
| 278 | Vector { | ||
| 279 | _handler: DMA1_Channel7, | ||
| 280 | }, | ||
| 281 | Vector { _handler: ADC1 }, | ||
| 282 | Vector { _handler: CAN1_TX }, | ||
| 283 | Vector { _handler: CAN1_RX0 }, | ||
| 284 | Vector { _handler: CAN1_RX1 }, | ||
| 285 | Vector { _handler: CAN1_SCE }, | ||
| 286 | Vector { _handler: EXTI9_5 }, | ||
| 287 | Vector { | ||
| 288 | _handler: TIM1_BRK_TIM15, | ||
| 289 | }, | ||
| 290 | Vector { | ||
| 291 | _handler: TIM1_UP_TIM16, | ||
| 292 | }, | ||
| 293 | Vector { | ||
| 294 | _handler: TIM1_TRG_COM, | ||
| 295 | }, | ||
| 296 | Vector { _handler: TIM1_CC }, | ||
| 297 | Vector { _handler: TIM2 }, | ||
| 298 | Vector { _reserved: 0 }, | ||
| 299 | Vector { _reserved: 0 }, | ||
| 300 | Vector { _handler: I2C1_EV }, | ||
| 301 | Vector { _handler: I2C1_ER }, | ||
| 302 | Vector { _handler: I2C2_EV }, | ||
| 303 | Vector { _handler: I2C2_ER }, | ||
| 304 | Vector { _handler: SPI1 }, | ||
| 305 | Vector { _handler: SPI2 }, | ||
| 306 | Vector { _handler: USART1 }, | ||
| 307 | Vector { _handler: USART2 }, | ||
| 308 | Vector { _handler: USART3 }, | ||
| 309 | Vector { | ||
| 310 | _handler: EXTI15_10, | ||
| 311 | }, | ||
| 312 | Vector { | ||
| 313 | _handler: RTC_Alarm, | ||
| 314 | }, | ||
| 315 | Vector { _reserved: 0 }, | ||
| 316 | Vector { _reserved: 0 }, | ||
| 317 | Vector { _reserved: 0 }, | ||
| 318 | Vector { _reserved: 0 }, | ||
| 319 | Vector { _reserved: 0 }, | ||
| 320 | Vector { _reserved: 0 }, | ||
| 321 | Vector { _reserved: 0 }, | ||
| 322 | Vector { _handler: SDMMC1 }, | ||
| 323 | Vector { _reserved: 0 }, | ||
| 324 | Vector { _handler: SPI3 }, | ||
| 325 | Vector { _reserved: 0 }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _handler: TIM6_DAC }, | ||
| 328 | Vector { _handler: TIM7 }, | ||
| 329 | Vector { | ||
| 330 | _handler: DMA2_Channel1, | ||
| 331 | }, | ||
| 332 | Vector { | ||
| 333 | _handler: DMA2_Channel2, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: DMA2_Channel3, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel4, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: DMA2_Channel5, | ||
| 343 | }, | ||
| 344 | Vector { _reserved: 0 }, | ||
| 345 | Vector { _reserved: 0 }, | ||
| 346 | Vector { _reserved: 0 }, | ||
| 347 | Vector { _handler: COMP }, | ||
| 348 | Vector { _handler: LPTIM1 }, | ||
| 349 | Vector { _handler: LPTIM2 }, | ||
| 350 | Vector { _handler: USB }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA2_Channel6, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: DMA2_Channel7, | ||
| 356 | }, | ||
| 357 | Vector { _handler: LPUART1 }, | ||
| 358 | Vector { _handler: QUADSPI }, | ||
| 359 | Vector { _handler: I2C3_EV }, | ||
| 360 | Vector { _handler: I2C3_ER }, | ||
| 361 | Vector { _handler: SAI1 }, | ||
| 362 | Vector { _reserved: 0 }, | ||
| 363 | Vector { _handler: SWPMI1 }, | ||
| 364 | Vector { _handler: TSC }, | ||
| 365 | Vector { _handler: LCD }, | ||
| 366 | Vector { _handler: AES }, | ||
| 367 | Vector { _handler: RNG }, | ||
| 368 | Vector { _handler: FPU }, | ||
| 369 | Vector { _handler: CRS }, | ||
| 370 | ]; | ||
| 371 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 372 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 373 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 374 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l443vc.rs b/embassy-stm32/src/chip/stm32l443vc.rs index 4842bf0f6..f3139bc11 100644 --- a/embassy-stm32/src/chip/stm32l443vc.rs +++ b/embassy-stm32/src/chip/stm32l443vc.rs | |||
| @@ -1,18 +1,374 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, | 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, |
| 5 | PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, | 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, |
| 6 | PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 9 | PE11, PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, | 10 | PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, |
| 11 | RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, | 11 | RCC, RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, |
| 12 | TSC, USART1, USART2, USART3, USB, WWDG | 12 | TIM7, TSC, USART1, USART2, USART3, USB, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | AES = 79, | ||
| 29 | CAN1_RX0 = 20, | ||
| 30 | CAN1_RX1 = 21, | ||
| 31 | CAN1_SCE = 22, | ||
| 32 | CAN1_TX = 19, | ||
| 33 | COMP = 64, | ||
| 34 | CRS = 82, | ||
| 35 | DMA1_Channel1 = 11, | ||
| 36 | DMA1_Channel2 = 12, | ||
| 37 | DMA1_Channel3 = 13, | ||
| 38 | DMA1_Channel4 = 14, | ||
| 39 | DMA1_Channel5 = 15, | ||
| 40 | DMA1_Channel6 = 16, | ||
| 41 | DMA1_Channel7 = 17, | ||
| 42 | DMA2_Channel1 = 56, | ||
| 43 | DMA2_Channel2 = 57, | ||
| 44 | DMA2_Channel3 = 58, | ||
| 45 | DMA2_Channel4 = 59, | ||
| 46 | DMA2_Channel5 = 60, | ||
| 47 | DMA2_Channel6 = 68, | ||
| 48 | DMA2_Channel7 = 69, | ||
| 49 | EXTI0 = 6, | ||
| 50 | EXTI1 = 7, | ||
| 51 | EXTI15_10 = 40, | ||
| 52 | EXTI2 = 8, | ||
| 53 | EXTI3 = 9, | ||
| 54 | EXTI4 = 10, | ||
| 55 | EXTI9_5 = 23, | ||
| 56 | FLASH = 4, | ||
| 57 | FPU = 81, | ||
| 58 | I2C1_ER = 32, | ||
| 59 | I2C1_EV = 31, | ||
| 60 | I2C2_ER = 34, | ||
| 61 | I2C2_EV = 33, | ||
| 62 | I2C3_ER = 73, | ||
| 63 | I2C3_EV = 72, | ||
| 64 | LCD = 78, | ||
| 65 | LPTIM1 = 65, | ||
| 66 | LPTIM2 = 66, | ||
| 67 | LPUART1 = 70, | ||
| 68 | PVD_PVM = 1, | ||
| 69 | QUADSPI = 71, | ||
| 70 | RCC = 5, | ||
| 71 | RNG = 80, | ||
| 72 | RTC_Alarm = 41, | ||
| 73 | RTC_WKUP = 3, | ||
| 74 | SAI1 = 74, | ||
| 75 | SDMMC1 = 49, | ||
| 76 | SPI1 = 35, | ||
| 77 | SPI2 = 36, | ||
| 78 | SPI3 = 51, | ||
| 79 | SWPMI1 = 76, | ||
| 80 | TAMP_STAMP = 2, | ||
| 81 | TIM1_BRK_TIM15 = 24, | ||
| 82 | TIM1_CC = 27, | ||
| 83 | TIM1_TRG_COM = 26, | ||
| 84 | TIM1_UP_TIM16 = 25, | ||
| 85 | TIM2 = 28, | ||
| 86 | TIM6_DAC = 54, | ||
| 87 | TIM7 = 55, | ||
| 88 | TSC = 77, | ||
| 89 | USART1 = 37, | ||
| 90 | USART2 = 38, | ||
| 91 | USART3 = 39, | ||
| 92 | USB = 67, | ||
| 93 | WWDG = 0, | ||
| 94 | } | ||
| 95 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 96 | #[inline(always)] | ||
| 97 | fn number(self) -> u16 { | ||
| 98 | self as u16 | ||
| 99 | } | ||
| 100 | } | ||
| 101 | |||
| 102 | declare!(ADC1); | ||
| 103 | declare!(AES); | ||
| 104 | declare!(CAN1_RX0); | ||
| 105 | declare!(CAN1_RX1); | ||
| 106 | declare!(CAN1_SCE); | ||
| 107 | declare!(CAN1_TX); | ||
| 108 | declare!(COMP); | ||
| 109 | declare!(CRS); | ||
| 110 | declare!(DMA1_Channel1); | ||
| 111 | declare!(DMA1_Channel2); | ||
| 112 | declare!(DMA1_Channel3); | ||
| 113 | declare!(DMA1_Channel4); | ||
| 114 | declare!(DMA1_Channel5); | ||
| 115 | declare!(DMA1_Channel6); | ||
| 116 | declare!(DMA1_Channel7); | ||
| 117 | declare!(DMA2_Channel1); | ||
| 118 | declare!(DMA2_Channel2); | ||
| 119 | declare!(DMA2_Channel3); | ||
| 120 | declare!(DMA2_Channel4); | ||
| 121 | declare!(DMA2_Channel5); | ||
| 122 | declare!(DMA2_Channel6); | ||
| 123 | declare!(DMA2_Channel7); | ||
| 124 | declare!(EXTI0); | ||
| 125 | declare!(EXTI1); | ||
| 126 | declare!(EXTI15_10); | ||
| 127 | declare!(EXTI2); | ||
| 128 | declare!(EXTI3); | ||
| 129 | declare!(EXTI4); | ||
| 130 | declare!(EXTI9_5); | ||
| 131 | declare!(FLASH); | ||
| 132 | declare!(FPU); | ||
| 133 | declare!(I2C1_ER); | ||
| 134 | declare!(I2C1_EV); | ||
| 135 | declare!(I2C2_ER); | ||
| 136 | declare!(I2C2_EV); | ||
| 137 | declare!(I2C3_ER); | ||
| 138 | declare!(I2C3_EV); | ||
| 139 | declare!(LCD); | ||
| 140 | declare!(LPTIM1); | ||
| 141 | declare!(LPTIM2); | ||
| 142 | declare!(LPUART1); | ||
| 143 | declare!(PVD_PVM); | ||
| 144 | declare!(QUADSPI); | ||
| 145 | declare!(RCC); | ||
| 146 | declare!(RNG); | ||
| 147 | declare!(RTC_Alarm); | ||
| 148 | declare!(RTC_WKUP); | ||
| 149 | declare!(SAI1); | ||
| 150 | declare!(SDMMC1); | ||
| 151 | declare!(SPI1); | ||
| 152 | declare!(SPI2); | ||
| 153 | declare!(SPI3); | ||
| 154 | declare!(SWPMI1); | ||
| 155 | declare!(TAMP_STAMP); | ||
| 156 | declare!(TIM1_BRK_TIM15); | ||
| 157 | declare!(TIM1_CC); | ||
| 158 | declare!(TIM1_TRG_COM); | ||
| 159 | declare!(TIM1_UP_TIM16); | ||
| 160 | declare!(TIM2); | ||
| 161 | declare!(TIM6_DAC); | ||
| 162 | declare!(TIM7); | ||
| 163 | declare!(TSC); | ||
| 164 | declare!(USART1); | ||
| 165 | declare!(USART2); | ||
| 166 | declare!(USART3); | ||
| 167 | declare!(USB); | ||
| 168 | declare!(WWDG); | ||
| 169 | } | ||
| 170 | mod interrupt_vector { | ||
| 171 | extern "C" { | ||
| 172 | fn ADC1(); | ||
| 173 | fn AES(); | ||
| 174 | fn CAN1_RX0(); | ||
| 175 | fn CAN1_RX1(); | ||
| 176 | fn CAN1_SCE(); | ||
| 177 | fn CAN1_TX(); | ||
| 178 | fn COMP(); | ||
| 179 | fn CRS(); | ||
| 180 | fn DMA1_Channel1(); | ||
| 181 | fn DMA1_Channel2(); | ||
| 182 | fn DMA1_Channel3(); | ||
| 183 | fn DMA1_Channel4(); | ||
| 184 | fn DMA1_Channel5(); | ||
| 185 | fn DMA1_Channel6(); | ||
| 186 | fn DMA1_Channel7(); | ||
| 187 | fn DMA2_Channel1(); | ||
| 188 | fn DMA2_Channel2(); | ||
| 189 | fn DMA2_Channel3(); | ||
| 190 | fn DMA2_Channel4(); | ||
| 191 | fn DMA2_Channel5(); | ||
| 192 | fn DMA2_Channel6(); | ||
| 193 | fn DMA2_Channel7(); | ||
| 194 | fn EXTI0(); | ||
| 195 | fn EXTI1(); | ||
| 196 | fn EXTI15_10(); | ||
| 197 | fn EXTI2(); | ||
| 198 | fn EXTI3(); | ||
| 199 | fn EXTI4(); | ||
| 200 | fn EXTI9_5(); | ||
| 201 | fn FLASH(); | ||
| 202 | fn FPU(); | ||
| 203 | fn I2C1_ER(); | ||
| 204 | fn I2C1_EV(); | ||
| 205 | fn I2C2_ER(); | ||
| 206 | fn I2C2_EV(); | ||
| 207 | fn I2C3_ER(); | ||
| 208 | fn I2C3_EV(); | ||
| 209 | fn LCD(); | ||
| 210 | fn LPTIM1(); | ||
| 211 | fn LPTIM2(); | ||
| 212 | fn LPUART1(); | ||
| 213 | fn PVD_PVM(); | ||
| 214 | fn QUADSPI(); | ||
| 215 | fn RCC(); | ||
| 216 | fn RNG(); | ||
| 217 | fn RTC_Alarm(); | ||
| 218 | fn RTC_WKUP(); | ||
| 219 | fn SAI1(); | ||
| 220 | fn SDMMC1(); | ||
| 221 | fn SPI1(); | ||
| 222 | fn SPI2(); | ||
| 223 | fn SPI3(); | ||
| 224 | fn SWPMI1(); | ||
| 225 | fn TAMP_STAMP(); | ||
| 226 | fn TIM1_BRK_TIM15(); | ||
| 227 | fn TIM1_CC(); | ||
| 228 | fn TIM1_TRG_COM(); | ||
| 229 | fn TIM1_UP_TIM16(); | ||
| 230 | fn TIM2(); | ||
| 231 | fn TIM6_DAC(); | ||
| 232 | fn TIM7(); | ||
| 233 | fn TSC(); | ||
| 234 | fn USART1(); | ||
| 235 | fn USART2(); | ||
| 236 | fn USART3(); | ||
| 237 | fn USB(); | ||
| 238 | fn WWDG(); | ||
| 239 | } | ||
| 240 | pub union Vector { | ||
| 241 | _handler: unsafe extern "C" fn(), | ||
| 242 | _reserved: u32, | ||
| 243 | } | ||
| 244 | #[link_section = ".vector_table.interrupts"] | ||
| 245 | #[no_mangle] | ||
| 246 | pub static __INTERRUPTS: [Vector; 83] = [ | ||
| 247 | Vector { _handler: WWDG }, | ||
| 248 | Vector { _handler: PVD_PVM }, | ||
| 249 | Vector { | ||
| 250 | _handler: TAMP_STAMP, | ||
| 251 | }, | ||
| 252 | Vector { _handler: RTC_WKUP }, | ||
| 253 | Vector { _handler: FLASH }, | ||
| 254 | Vector { _handler: RCC }, | ||
| 255 | Vector { _handler: EXTI0 }, | ||
| 256 | Vector { _handler: EXTI1 }, | ||
| 257 | Vector { _handler: EXTI2 }, | ||
| 258 | Vector { _handler: EXTI3 }, | ||
| 259 | Vector { _handler: EXTI4 }, | ||
| 260 | Vector { | ||
| 261 | _handler: DMA1_Channel1, | ||
| 262 | }, | ||
| 263 | Vector { | ||
| 264 | _handler: DMA1_Channel2, | ||
| 265 | }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel3, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel4, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel5, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel6, | ||
| 277 | }, | ||
| 278 | Vector { | ||
| 279 | _handler: DMA1_Channel7, | ||
| 280 | }, | ||
| 281 | Vector { _handler: ADC1 }, | ||
| 282 | Vector { _handler: CAN1_TX }, | ||
| 283 | Vector { _handler: CAN1_RX0 }, | ||
| 284 | Vector { _handler: CAN1_RX1 }, | ||
| 285 | Vector { _handler: CAN1_SCE }, | ||
| 286 | Vector { _handler: EXTI9_5 }, | ||
| 287 | Vector { | ||
| 288 | _handler: TIM1_BRK_TIM15, | ||
| 289 | }, | ||
| 290 | Vector { | ||
| 291 | _handler: TIM1_UP_TIM16, | ||
| 292 | }, | ||
| 293 | Vector { | ||
| 294 | _handler: TIM1_TRG_COM, | ||
| 295 | }, | ||
| 296 | Vector { _handler: TIM1_CC }, | ||
| 297 | Vector { _handler: TIM2 }, | ||
| 298 | Vector { _reserved: 0 }, | ||
| 299 | Vector { _reserved: 0 }, | ||
| 300 | Vector { _handler: I2C1_EV }, | ||
| 301 | Vector { _handler: I2C1_ER }, | ||
| 302 | Vector { _handler: I2C2_EV }, | ||
| 303 | Vector { _handler: I2C2_ER }, | ||
| 304 | Vector { _handler: SPI1 }, | ||
| 305 | Vector { _handler: SPI2 }, | ||
| 306 | Vector { _handler: USART1 }, | ||
| 307 | Vector { _handler: USART2 }, | ||
| 308 | Vector { _handler: USART3 }, | ||
| 309 | Vector { | ||
| 310 | _handler: EXTI15_10, | ||
| 311 | }, | ||
| 312 | Vector { | ||
| 313 | _handler: RTC_Alarm, | ||
| 314 | }, | ||
| 315 | Vector { _reserved: 0 }, | ||
| 316 | Vector { _reserved: 0 }, | ||
| 317 | Vector { _reserved: 0 }, | ||
| 318 | Vector { _reserved: 0 }, | ||
| 319 | Vector { _reserved: 0 }, | ||
| 320 | Vector { _reserved: 0 }, | ||
| 321 | Vector { _reserved: 0 }, | ||
| 322 | Vector { _handler: SDMMC1 }, | ||
| 323 | Vector { _reserved: 0 }, | ||
| 324 | Vector { _handler: SPI3 }, | ||
| 325 | Vector { _reserved: 0 }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _handler: TIM6_DAC }, | ||
| 328 | Vector { _handler: TIM7 }, | ||
| 329 | Vector { | ||
| 330 | _handler: DMA2_Channel1, | ||
| 331 | }, | ||
| 332 | Vector { | ||
| 333 | _handler: DMA2_Channel2, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: DMA2_Channel3, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel4, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: DMA2_Channel5, | ||
| 343 | }, | ||
| 344 | Vector { _reserved: 0 }, | ||
| 345 | Vector { _reserved: 0 }, | ||
| 346 | Vector { _reserved: 0 }, | ||
| 347 | Vector { _handler: COMP }, | ||
| 348 | Vector { _handler: LPTIM1 }, | ||
| 349 | Vector { _handler: LPTIM2 }, | ||
| 350 | Vector { _handler: USB }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA2_Channel6, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: DMA2_Channel7, | ||
| 356 | }, | ||
| 357 | Vector { _handler: LPUART1 }, | ||
| 358 | Vector { _handler: QUADSPI }, | ||
| 359 | Vector { _handler: I2C3_EV }, | ||
| 360 | Vector { _handler: I2C3_ER }, | ||
| 361 | Vector { _handler: SAI1 }, | ||
| 362 | Vector { _reserved: 0 }, | ||
| 363 | Vector { _handler: SWPMI1 }, | ||
| 364 | Vector { _handler: TSC }, | ||
| 365 | Vector { _handler: LCD }, | ||
| 366 | Vector { _handler: AES }, | ||
| 367 | Vector { _handler: RNG }, | ||
| 368 | Vector { _handler: FPU }, | ||
| 369 | Vector { _handler: CRS }, | ||
| 370 | ]; | ||
| 371 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 372 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 373 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 374 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l451cc.rs b/embassy-stm32/src/chip/stm32l451cc.rs index 59132f492..6d8463347 100644 --- a/embassy-stm32/src/chip/stm32l451cc.rs +++ b/embassy-stm32/src/chip/stm32l451cc.rs | |||
| @@ -1,18 +1,383 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, | 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, |
| 11 | RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, USART1, | 11 | RNG, RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, |
| 12 | USART2, USART3, WWDG | 12 | USART1, USART2, USART3, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DFSDM1_FLT0 = 61, | ||
| 35 | DFSDM1_FLT1 = 62, | ||
| 36 | DMA1_Channel1 = 11, | ||
| 37 | DMA1_Channel2 = 12, | ||
| 38 | DMA1_Channel3 = 13, | ||
| 39 | DMA1_Channel4 = 14, | ||
| 40 | DMA1_Channel5 = 15, | ||
| 41 | DMA1_Channel6 = 16, | ||
| 42 | DMA1_Channel7 = 17, | ||
| 43 | DMA2_Channel1 = 56, | ||
| 44 | DMA2_Channel2 = 57, | ||
| 45 | DMA2_Channel3 = 58, | ||
| 46 | DMA2_Channel4 = 59, | ||
| 47 | DMA2_Channel5 = 60, | ||
| 48 | DMA2_Channel6 = 68, | ||
| 49 | DMA2_Channel7 = 69, | ||
| 50 | EXTI0 = 6, | ||
| 51 | EXTI1 = 7, | ||
| 52 | EXTI15_10 = 40, | ||
| 53 | EXTI2 = 8, | ||
| 54 | EXTI3 = 9, | ||
| 55 | EXTI4 = 10, | ||
| 56 | EXTI9_5 = 23, | ||
| 57 | FLASH = 4, | ||
| 58 | FPU = 81, | ||
| 59 | I2C1_ER = 32, | ||
| 60 | I2C1_EV = 31, | ||
| 61 | I2C2_ER = 34, | ||
| 62 | I2C2_EV = 33, | ||
| 63 | I2C3_ER = 73, | ||
| 64 | I2C3_EV = 72, | ||
| 65 | I2C4_ER = 84, | ||
| 66 | I2C4_EV = 83, | ||
| 67 | LPTIM1 = 65, | ||
| 68 | LPTIM2 = 66, | ||
| 69 | LPUART1 = 70, | ||
| 70 | PVD_PVM = 1, | ||
| 71 | QUADSPI = 71, | ||
| 72 | RCC = 5, | ||
| 73 | RNG = 80, | ||
| 74 | RTC_Alarm = 41, | ||
| 75 | RTC_WKUP = 3, | ||
| 76 | SAI1 = 74, | ||
| 77 | SDMMC1 = 49, | ||
| 78 | SPI1 = 35, | ||
| 79 | SPI2 = 36, | ||
| 80 | SPI3 = 51, | ||
| 81 | TAMP_STAMP = 2, | ||
| 82 | TIM1_BRK_TIM15 = 24, | ||
| 83 | TIM1_CC = 27, | ||
| 84 | TIM1_TRG_COM = 26, | ||
| 85 | TIM1_UP_TIM16 = 25, | ||
| 86 | TIM2 = 28, | ||
| 87 | TIM3 = 29, | ||
| 88 | TIM6_DAC = 54, | ||
| 89 | TSC = 77, | ||
| 90 | UART4 = 52, | ||
| 91 | USART1 = 37, | ||
| 92 | USART2 = 38, | ||
| 93 | USART3 = 39, | ||
| 94 | WWDG = 0, | ||
| 95 | } | ||
| 96 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 97 | #[inline(always)] | ||
| 98 | fn number(self) -> u16 { | ||
| 99 | self as u16 | ||
| 100 | } | ||
| 101 | } | ||
| 102 | |||
| 103 | declare!(ADC1); | ||
| 104 | declare!(CAN1_RX0); | ||
| 105 | declare!(CAN1_RX1); | ||
| 106 | declare!(CAN1_SCE); | ||
| 107 | declare!(CAN1_TX); | ||
| 108 | declare!(COMP); | ||
| 109 | declare!(CRS); | ||
| 110 | declare!(DFSDM1_FLT0); | ||
| 111 | declare!(DFSDM1_FLT1); | ||
| 112 | declare!(DMA1_Channel1); | ||
| 113 | declare!(DMA1_Channel2); | ||
| 114 | declare!(DMA1_Channel3); | ||
| 115 | declare!(DMA1_Channel4); | ||
| 116 | declare!(DMA1_Channel5); | ||
| 117 | declare!(DMA1_Channel6); | ||
| 118 | declare!(DMA1_Channel7); | ||
| 119 | declare!(DMA2_Channel1); | ||
| 120 | declare!(DMA2_Channel2); | ||
| 121 | declare!(DMA2_Channel3); | ||
| 122 | declare!(DMA2_Channel4); | ||
| 123 | declare!(DMA2_Channel5); | ||
| 124 | declare!(DMA2_Channel6); | ||
| 125 | declare!(DMA2_Channel7); | ||
| 126 | declare!(EXTI0); | ||
| 127 | declare!(EXTI1); | ||
| 128 | declare!(EXTI15_10); | ||
| 129 | declare!(EXTI2); | ||
| 130 | declare!(EXTI3); | ||
| 131 | declare!(EXTI4); | ||
| 132 | declare!(EXTI9_5); | ||
| 133 | declare!(FLASH); | ||
| 134 | declare!(FPU); | ||
| 135 | declare!(I2C1_ER); | ||
| 136 | declare!(I2C1_EV); | ||
| 137 | declare!(I2C2_ER); | ||
| 138 | declare!(I2C2_EV); | ||
| 139 | declare!(I2C3_ER); | ||
| 140 | declare!(I2C3_EV); | ||
| 141 | declare!(I2C4_ER); | ||
| 142 | declare!(I2C4_EV); | ||
| 143 | declare!(LPTIM1); | ||
| 144 | declare!(LPTIM2); | ||
| 145 | declare!(LPUART1); | ||
| 146 | declare!(PVD_PVM); | ||
| 147 | declare!(QUADSPI); | ||
| 148 | declare!(RCC); | ||
| 149 | declare!(RNG); | ||
| 150 | declare!(RTC_Alarm); | ||
| 151 | declare!(RTC_WKUP); | ||
| 152 | declare!(SAI1); | ||
| 153 | declare!(SDMMC1); | ||
| 154 | declare!(SPI1); | ||
| 155 | declare!(SPI2); | ||
| 156 | declare!(SPI3); | ||
| 157 | declare!(TAMP_STAMP); | ||
| 158 | declare!(TIM1_BRK_TIM15); | ||
| 159 | declare!(TIM1_CC); | ||
| 160 | declare!(TIM1_TRG_COM); | ||
| 161 | declare!(TIM1_UP_TIM16); | ||
| 162 | declare!(TIM2); | ||
| 163 | declare!(TIM3); | ||
| 164 | declare!(TIM6_DAC); | ||
| 165 | declare!(TSC); | ||
| 166 | declare!(UART4); | ||
| 167 | declare!(USART1); | ||
| 168 | declare!(USART2); | ||
| 169 | declare!(USART3); | ||
| 170 | declare!(WWDG); | ||
| 171 | } | ||
| 172 | mod interrupt_vector { | ||
| 173 | extern "C" { | ||
| 174 | fn ADC1(); | ||
| 175 | fn CAN1_RX0(); | ||
| 176 | fn CAN1_RX1(); | ||
| 177 | fn CAN1_SCE(); | ||
| 178 | fn CAN1_TX(); | ||
| 179 | fn COMP(); | ||
| 180 | fn CRS(); | ||
| 181 | fn DFSDM1_FLT0(); | ||
| 182 | fn DFSDM1_FLT1(); | ||
| 183 | fn DMA1_Channel1(); | ||
| 184 | fn DMA1_Channel2(); | ||
| 185 | fn DMA1_Channel3(); | ||
| 186 | fn DMA1_Channel4(); | ||
| 187 | fn DMA1_Channel5(); | ||
| 188 | fn DMA1_Channel6(); | ||
| 189 | fn DMA1_Channel7(); | ||
| 190 | fn DMA2_Channel1(); | ||
| 191 | fn DMA2_Channel2(); | ||
| 192 | fn DMA2_Channel3(); | ||
| 193 | fn DMA2_Channel4(); | ||
| 194 | fn DMA2_Channel5(); | ||
| 195 | fn DMA2_Channel6(); | ||
| 196 | fn DMA2_Channel7(); | ||
| 197 | fn EXTI0(); | ||
| 198 | fn EXTI1(); | ||
| 199 | fn EXTI15_10(); | ||
| 200 | fn EXTI2(); | ||
| 201 | fn EXTI3(); | ||
| 202 | fn EXTI4(); | ||
| 203 | fn EXTI9_5(); | ||
| 204 | fn FLASH(); | ||
| 205 | fn FPU(); | ||
| 206 | fn I2C1_ER(); | ||
| 207 | fn I2C1_EV(); | ||
| 208 | fn I2C2_ER(); | ||
| 209 | fn I2C2_EV(); | ||
| 210 | fn I2C3_ER(); | ||
| 211 | fn I2C3_EV(); | ||
| 212 | fn I2C4_ER(); | ||
| 213 | fn I2C4_EV(); | ||
| 214 | fn LPTIM1(); | ||
| 215 | fn LPTIM2(); | ||
| 216 | fn LPUART1(); | ||
| 217 | fn PVD_PVM(); | ||
| 218 | fn QUADSPI(); | ||
| 219 | fn RCC(); | ||
| 220 | fn RNG(); | ||
| 221 | fn RTC_Alarm(); | ||
| 222 | fn RTC_WKUP(); | ||
| 223 | fn SAI1(); | ||
| 224 | fn SDMMC1(); | ||
| 225 | fn SPI1(); | ||
| 226 | fn SPI2(); | ||
| 227 | fn SPI3(); | ||
| 228 | fn TAMP_STAMP(); | ||
| 229 | fn TIM1_BRK_TIM15(); | ||
| 230 | fn TIM1_CC(); | ||
| 231 | fn TIM1_TRG_COM(); | ||
| 232 | fn TIM1_UP_TIM16(); | ||
| 233 | fn TIM2(); | ||
| 234 | fn TIM3(); | ||
| 235 | fn TIM6_DAC(); | ||
| 236 | fn TSC(); | ||
| 237 | fn UART4(); | ||
| 238 | fn USART1(); | ||
| 239 | fn USART2(); | ||
| 240 | fn USART3(); | ||
| 241 | fn WWDG(); | ||
| 242 | } | ||
| 243 | pub union Vector { | ||
| 244 | _handler: unsafe extern "C" fn(), | ||
| 245 | _reserved: u32, | ||
| 246 | } | ||
| 247 | #[link_section = ".vector_table.interrupts"] | ||
| 248 | #[no_mangle] | ||
| 249 | pub static __INTERRUPTS: [Vector; 85] = [ | ||
| 250 | Vector { _handler: WWDG }, | ||
| 251 | Vector { _handler: PVD_PVM }, | ||
| 252 | Vector { | ||
| 253 | _handler: TAMP_STAMP, | ||
| 254 | }, | ||
| 255 | Vector { _handler: RTC_WKUP }, | ||
| 256 | Vector { _handler: FLASH }, | ||
| 257 | Vector { _handler: RCC }, | ||
| 258 | Vector { _handler: EXTI0 }, | ||
| 259 | Vector { _handler: EXTI1 }, | ||
| 260 | Vector { _handler: EXTI2 }, | ||
| 261 | Vector { _handler: EXTI3 }, | ||
| 262 | Vector { _handler: EXTI4 }, | ||
| 263 | Vector { | ||
| 264 | _handler: DMA1_Channel1, | ||
| 265 | }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel2, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel3, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel4, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel5, | ||
| 277 | }, | ||
| 278 | Vector { | ||
| 279 | _handler: DMA1_Channel6, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: DMA1_Channel7, | ||
| 283 | }, | ||
| 284 | Vector { _handler: ADC1 }, | ||
| 285 | Vector { _handler: CAN1_TX }, | ||
| 286 | Vector { _handler: CAN1_RX0 }, | ||
| 287 | Vector { _handler: CAN1_RX1 }, | ||
| 288 | Vector { _handler: CAN1_SCE }, | ||
| 289 | Vector { _handler: EXTI9_5 }, | ||
| 290 | Vector { | ||
| 291 | _handler: TIM1_BRK_TIM15, | ||
| 292 | }, | ||
| 293 | Vector { | ||
| 294 | _handler: TIM1_UP_TIM16, | ||
| 295 | }, | ||
| 296 | Vector { | ||
| 297 | _handler: TIM1_TRG_COM, | ||
| 298 | }, | ||
| 299 | Vector { _handler: TIM1_CC }, | ||
| 300 | Vector { _handler: TIM2 }, | ||
| 301 | Vector { _handler: TIM3 }, | ||
| 302 | Vector { _reserved: 0 }, | ||
| 303 | Vector { _handler: I2C1_EV }, | ||
| 304 | Vector { _handler: I2C1_ER }, | ||
| 305 | Vector { _handler: I2C2_EV }, | ||
| 306 | Vector { _handler: I2C2_ER }, | ||
| 307 | Vector { _handler: SPI1 }, | ||
| 308 | Vector { _handler: SPI2 }, | ||
| 309 | Vector { _handler: USART1 }, | ||
| 310 | Vector { _handler: USART2 }, | ||
| 311 | Vector { _handler: USART3 }, | ||
| 312 | Vector { | ||
| 313 | _handler: EXTI15_10, | ||
| 314 | }, | ||
| 315 | Vector { | ||
| 316 | _handler: RTC_Alarm, | ||
| 317 | }, | ||
| 318 | Vector { _reserved: 0 }, | ||
| 319 | Vector { _reserved: 0 }, | ||
| 320 | Vector { _reserved: 0 }, | ||
| 321 | Vector { _reserved: 0 }, | ||
| 322 | Vector { _reserved: 0 }, | ||
| 323 | Vector { _reserved: 0 }, | ||
| 324 | Vector { _reserved: 0 }, | ||
| 325 | Vector { _handler: SDMMC1 }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _handler: SPI3 }, | ||
| 328 | Vector { _handler: UART4 }, | ||
| 329 | Vector { _reserved: 0 }, | ||
| 330 | Vector { _handler: TIM6_DAC }, | ||
| 331 | Vector { _reserved: 0 }, | ||
| 332 | Vector { | ||
| 333 | _handler: DMA2_Channel1, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: DMA2_Channel2, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel3, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: DMA2_Channel4, | ||
| 343 | }, | ||
| 344 | Vector { | ||
| 345 | _handler: DMA2_Channel5, | ||
| 346 | }, | ||
| 347 | Vector { | ||
| 348 | _handler: DFSDM1_FLT0, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: DFSDM1_FLT1, | ||
| 352 | }, | ||
| 353 | Vector { _reserved: 0 }, | ||
| 354 | Vector { _handler: COMP }, | ||
| 355 | Vector { _handler: LPTIM1 }, | ||
| 356 | Vector { _handler: LPTIM2 }, | ||
| 357 | Vector { _reserved: 0 }, | ||
| 358 | Vector { | ||
| 359 | _handler: DMA2_Channel6, | ||
| 360 | }, | ||
| 361 | Vector { | ||
| 362 | _handler: DMA2_Channel7, | ||
| 363 | }, | ||
| 364 | Vector { _handler: LPUART1 }, | ||
| 365 | Vector { _handler: QUADSPI }, | ||
| 366 | Vector { _handler: I2C3_EV }, | ||
| 367 | Vector { _handler: I2C3_ER }, | ||
| 368 | Vector { _handler: SAI1 }, | ||
| 369 | Vector { _reserved: 0 }, | ||
| 370 | Vector { _reserved: 0 }, | ||
| 371 | Vector { _handler: TSC }, | ||
| 372 | Vector { _reserved: 0 }, | ||
| 373 | Vector { _reserved: 0 }, | ||
| 374 | Vector { _handler: RNG }, | ||
| 375 | Vector { _handler: FPU }, | ||
| 376 | Vector { _handler: CRS }, | ||
| 377 | Vector { _handler: I2C4_EV }, | ||
| 378 | Vector { _handler: I2C4_ER }, | ||
| 379 | ]; | ||
| 380 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 381 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 382 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 383 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l451ce.rs b/embassy-stm32/src/chip/stm32l451ce.rs index 59132f492..6d8463347 100644 --- a/embassy-stm32/src/chip/stm32l451ce.rs +++ b/embassy-stm32/src/chip/stm32l451ce.rs | |||
| @@ -1,18 +1,383 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, | 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, |
| 11 | RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, USART1, | 11 | RNG, RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, |
| 12 | USART2, USART3, WWDG | 12 | USART1, USART2, USART3, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DFSDM1_FLT0 = 61, | ||
| 35 | DFSDM1_FLT1 = 62, | ||
| 36 | DMA1_Channel1 = 11, | ||
| 37 | DMA1_Channel2 = 12, | ||
| 38 | DMA1_Channel3 = 13, | ||
| 39 | DMA1_Channel4 = 14, | ||
| 40 | DMA1_Channel5 = 15, | ||
| 41 | DMA1_Channel6 = 16, | ||
| 42 | DMA1_Channel7 = 17, | ||
| 43 | DMA2_Channel1 = 56, | ||
| 44 | DMA2_Channel2 = 57, | ||
| 45 | DMA2_Channel3 = 58, | ||
| 46 | DMA2_Channel4 = 59, | ||
| 47 | DMA2_Channel5 = 60, | ||
| 48 | DMA2_Channel6 = 68, | ||
| 49 | DMA2_Channel7 = 69, | ||
| 50 | EXTI0 = 6, | ||
| 51 | EXTI1 = 7, | ||
| 52 | EXTI15_10 = 40, | ||
| 53 | EXTI2 = 8, | ||
| 54 | EXTI3 = 9, | ||
| 55 | EXTI4 = 10, | ||
| 56 | EXTI9_5 = 23, | ||
| 57 | FLASH = 4, | ||
| 58 | FPU = 81, | ||
| 59 | I2C1_ER = 32, | ||
| 60 | I2C1_EV = 31, | ||
| 61 | I2C2_ER = 34, | ||
| 62 | I2C2_EV = 33, | ||
| 63 | I2C3_ER = 73, | ||
| 64 | I2C3_EV = 72, | ||
| 65 | I2C4_ER = 84, | ||
| 66 | I2C4_EV = 83, | ||
| 67 | LPTIM1 = 65, | ||
| 68 | LPTIM2 = 66, | ||
| 69 | LPUART1 = 70, | ||
| 70 | PVD_PVM = 1, | ||
| 71 | QUADSPI = 71, | ||
| 72 | RCC = 5, | ||
| 73 | RNG = 80, | ||
| 74 | RTC_Alarm = 41, | ||
| 75 | RTC_WKUP = 3, | ||
| 76 | SAI1 = 74, | ||
| 77 | SDMMC1 = 49, | ||
| 78 | SPI1 = 35, | ||
| 79 | SPI2 = 36, | ||
| 80 | SPI3 = 51, | ||
| 81 | TAMP_STAMP = 2, | ||
| 82 | TIM1_BRK_TIM15 = 24, | ||
| 83 | TIM1_CC = 27, | ||
| 84 | TIM1_TRG_COM = 26, | ||
| 85 | TIM1_UP_TIM16 = 25, | ||
| 86 | TIM2 = 28, | ||
| 87 | TIM3 = 29, | ||
| 88 | TIM6_DAC = 54, | ||
| 89 | TSC = 77, | ||
| 90 | UART4 = 52, | ||
| 91 | USART1 = 37, | ||
| 92 | USART2 = 38, | ||
| 93 | USART3 = 39, | ||
| 94 | WWDG = 0, | ||
| 95 | } | ||
| 96 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 97 | #[inline(always)] | ||
| 98 | fn number(self) -> u16 { | ||
| 99 | self as u16 | ||
| 100 | } | ||
| 101 | } | ||
| 102 | |||
| 103 | declare!(ADC1); | ||
| 104 | declare!(CAN1_RX0); | ||
| 105 | declare!(CAN1_RX1); | ||
| 106 | declare!(CAN1_SCE); | ||
| 107 | declare!(CAN1_TX); | ||
| 108 | declare!(COMP); | ||
| 109 | declare!(CRS); | ||
| 110 | declare!(DFSDM1_FLT0); | ||
| 111 | declare!(DFSDM1_FLT1); | ||
| 112 | declare!(DMA1_Channel1); | ||
| 113 | declare!(DMA1_Channel2); | ||
| 114 | declare!(DMA1_Channel3); | ||
| 115 | declare!(DMA1_Channel4); | ||
| 116 | declare!(DMA1_Channel5); | ||
| 117 | declare!(DMA1_Channel6); | ||
| 118 | declare!(DMA1_Channel7); | ||
| 119 | declare!(DMA2_Channel1); | ||
| 120 | declare!(DMA2_Channel2); | ||
| 121 | declare!(DMA2_Channel3); | ||
| 122 | declare!(DMA2_Channel4); | ||
| 123 | declare!(DMA2_Channel5); | ||
| 124 | declare!(DMA2_Channel6); | ||
| 125 | declare!(DMA2_Channel7); | ||
| 126 | declare!(EXTI0); | ||
| 127 | declare!(EXTI1); | ||
| 128 | declare!(EXTI15_10); | ||
| 129 | declare!(EXTI2); | ||
| 130 | declare!(EXTI3); | ||
| 131 | declare!(EXTI4); | ||
| 132 | declare!(EXTI9_5); | ||
| 133 | declare!(FLASH); | ||
| 134 | declare!(FPU); | ||
| 135 | declare!(I2C1_ER); | ||
| 136 | declare!(I2C1_EV); | ||
| 137 | declare!(I2C2_ER); | ||
| 138 | declare!(I2C2_EV); | ||
| 139 | declare!(I2C3_ER); | ||
| 140 | declare!(I2C3_EV); | ||
| 141 | declare!(I2C4_ER); | ||
| 142 | declare!(I2C4_EV); | ||
| 143 | declare!(LPTIM1); | ||
| 144 | declare!(LPTIM2); | ||
| 145 | declare!(LPUART1); | ||
| 146 | declare!(PVD_PVM); | ||
| 147 | declare!(QUADSPI); | ||
| 148 | declare!(RCC); | ||
| 149 | declare!(RNG); | ||
| 150 | declare!(RTC_Alarm); | ||
| 151 | declare!(RTC_WKUP); | ||
| 152 | declare!(SAI1); | ||
| 153 | declare!(SDMMC1); | ||
| 154 | declare!(SPI1); | ||
| 155 | declare!(SPI2); | ||
| 156 | declare!(SPI3); | ||
| 157 | declare!(TAMP_STAMP); | ||
| 158 | declare!(TIM1_BRK_TIM15); | ||
| 159 | declare!(TIM1_CC); | ||
| 160 | declare!(TIM1_TRG_COM); | ||
| 161 | declare!(TIM1_UP_TIM16); | ||
| 162 | declare!(TIM2); | ||
| 163 | declare!(TIM3); | ||
| 164 | declare!(TIM6_DAC); | ||
| 165 | declare!(TSC); | ||
| 166 | declare!(UART4); | ||
| 167 | declare!(USART1); | ||
| 168 | declare!(USART2); | ||
| 169 | declare!(USART3); | ||
| 170 | declare!(WWDG); | ||
| 171 | } | ||
| 172 | mod interrupt_vector { | ||
| 173 | extern "C" { | ||
| 174 | fn ADC1(); | ||
| 175 | fn CAN1_RX0(); | ||
| 176 | fn CAN1_RX1(); | ||
| 177 | fn CAN1_SCE(); | ||
| 178 | fn CAN1_TX(); | ||
| 179 | fn COMP(); | ||
| 180 | fn CRS(); | ||
| 181 | fn DFSDM1_FLT0(); | ||
| 182 | fn DFSDM1_FLT1(); | ||
| 183 | fn DMA1_Channel1(); | ||
| 184 | fn DMA1_Channel2(); | ||
| 185 | fn DMA1_Channel3(); | ||
| 186 | fn DMA1_Channel4(); | ||
| 187 | fn DMA1_Channel5(); | ||
| 188 | fn DMA1_Channel6(); | ||
| 189 | fn DMA1_Channel7(); | ||
| 190 | fn DMA2_Channel1(); | ||
| 191 | fn DMA2_Channel2(); | ||
| 192 | fn DMA2_Channel3(); | ||
| 193 | fn DMA2_Channel4(); | ||
| 194 | fn DMA2_Channel5(); | ||
| 195 | fn DMA2_Channel6(); | ||
| 196 | fn DMA2_Channel7(); | ||
| 197 | fn EXTI0(); | ||
| 198 | fn EXTI1(); | ||
| 199 | fn EXTI15_10(); | ||
| 200 | fn EXTI2(); | ||
| 201 | fn EXTI3(); | ||
| 202 | fn EXTI4(); | ||
| 203 | fn EXTI9_5(); | ||
| 204 | fn FLASH(); | ||
| 205 | fn FPU(); | ||
| 206 | fn I2C1_ER(); | ||
| 207 | fn I2C1_EV(); | ||
| 208 | fn I2C2_ER(); | ||
| 209 | fn I2C2_EV(); | ||
| 210 | fn I2C3_ER(); | ||
| 211 | fn I2C3_EV(); | ||
| 212 | fn I2C4_ER(); | ||
| 213 | fn I2C4_EV(); | ||
| 214 | fn LPTIM1(); | ||
| 215 | fn LPTIM2(); | ||
| 216 | fn LPUART1(); | ||
| 217 | fn PVD_PVM(); | ||
| 218 | fn QUADSPI(); | ||
| 219 | fn RCC(); | ||
| 220 | fn RNG(); | ||
| 221 | fn RTC_Alarm(); | ||
| 222 | fn RTC_WKUP(); | ||
| 223 | fn SAI1(); | ||
| 224 | fn SDMMC1(); | ||
| 225 | fn SPI1(); | ||
| 226 | fn SPI2(); | ||
| 227 | fn SPI3(); | ||
| 228 | fn TAMP_STAMP(); | ||
| 229 | fn TIM1_BRK_TIM15(); | ||
| 230 | fn TIM1_CC(); | ||
| 231 | fn TIM1_TRG_COM(); | ||
| 232 | fn TIM1_UP_TIM16(); | ||
| 233 | fn TIM2(); | ||
| 234 | fn TIM3(); | ||
| 235 | fn TIM6_DAC(); | ||
| 236 | fn TSC(); | ||
| 237 | fn UART4(); | ||
| 238 | fn USART1(); | ||
| 239 | fn USART2(); | ||
| 240 | fn USART3(); | ||
| 241 | fn WWDG(); | ||
| 242 | } | ||
| 243 | pub union Vector { | ||
| 244 | _handler: unsafe extern "C" fn(), | ||
| 245 | _reserved: u32, | ||
| 246 | } | ||
| 247 | #[link_section = ".vector_table.interrupts"] | ||
| 248 | #[no_mangle] | ||
| 249 | pub static __INTERRUPTS: [Vector; 85] = [ | ||
| 250 | Vector { _handler: WWDG }, | ||
| 251 | Vector { _handler: PVD_PVM }, | ||
| 252 | Vector { | ||
| 253 | _handler: TAMP_STAMP, | ||
| 254 | }, | ||
| 255 | Vector { _handler: RTC_WKUP }, | ||
| 256 | Vector { _handler: FLASH }, | ||
| 257 | Vector { _handler: RCC }, | ||
| 258 | Vector { _handler: EXTI0 }, | ||
| 259 | Vector { _handler: EXTI1 }, | ||
| 260 | Vector { _handler: EXTI2 }, | ||
| 261 | Vector { _handler: EXTI3 }, | ||
| 262 | Vector { _handler: EXTI4 }, | ||
| 263 | Vector { | ||
| 264 | _handler: DMA1_Channel1, | ||
| 265 | }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel2, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel3, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel4, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel5, | ||
| 277 | }, | ||
| 278 | Vector { | ||
| 279 | _handler: DMA1_Channel6, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: DMA1_Channel7, | ||
| 283 | }, | ||
| 284 | Vector { _handler: ADC1 }, | ||
| 285 | Vector { _handler: CAN1_TX }, | ||
| 286 | Vector { _handler: CAN1_RX0 }, | ||
| 287 | Vector { _handler: CAN1_RX1 }, | ||
| 288 | Vector { _handler: CAN1_SCE }, | ||
| 289 | Vector { _handler: EXTI9_5 }, | ||
| 290 | Vector { | ||
| 291 | _handler: TIM1_BRK_TIM15, | ||
| 292 | }, | ||
| 293 | Vector { | ||
| 294 | _handler: TIM1_UP_TIM16, | ||
| 295 | }, | ||
| 296 | Vector { | ||
| 297 | _handler: TIM1_TRG_COM, | ||
| 298 | }, | ||
| 299 | Vector { _handler: TIM1_CC }, | ||
| 300 | Vector { _handler: TIM2 }, | ||
| 301 | Vector { _handler: TIM3 }, | ||
| 302 | Vector { _reserved: 0 }, | ||
| 303 | Vector { _handler: I2C1_EV }, | ||
| 304 | Vector { _handler: I2C1_ER }, | ||
| 305 | Vector { _handler: I2C2_EV }, | ||
| 306 | Vector { _handler: I2C2_ER }, | ||
| 307 | Vector { _handler: SPI1 }, | ||
| 308 | Vector { _handler: SPI2 }, | ||
| 309 | Vector { _handler: USART1 }, | ||
| 310 | Vector { _handler: USART2 }, | ||
| 311 | Vector { _handler: USART3 }, | ||
| 312 | Vector { | ||
| 313 | _handler: EXTI15_10, | ||
| 314 | }, | ||
| 315 | Vector { | ||
| 316 | _handler: RTC_Alarm, | ||
| 317 | }, | ||
| 318 | Vector { _reserved: 0 }, | ||
| 319 | Vector { _reserved: 0 }, | ||
| 320 | Vector { _reserved: 0 }, | ||
| 321 | Vector { _reserved: 0 }, | ||
| 322 | Vector { _reserved: 0 }, | ||
| 323 | Vector { _reserved: 0 }, | ||
| 324 | Vector { _reserved: 0 }, | ||
| 325 | Vector { _handler: SDMMC1 }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _handler: SPI3 }, | ||
| 328 | Vector { _handler: UART4 }, | ||
| 329 | Vector { _reserved: 0 }, | ||
| 330 | Vector { _handler: TIM6_DAC }, | ||
| 331 | Vector { _reserved: 0 }, | ||
| 332 | Vector { | ||
| 333 | _handler: DMA2_Channel1, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: DMA2_Channel2, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel3, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: DMA2_Channel4, | ||
| 343 | }, | ||
| 344 | Vector { | ||
| 345 | _handler: DMA2_Channel5, | ||
| 346 | }, | ||
| 347 | Vector { | ||
| 348 | _handler: DFSDM1_FLT0, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: DFSDM1_FLT1, | ||
| 352 | }, | ||
| 353 | Vector { _reserved: 0 }, | ||
| 354 | Vector { _handler: COMP }, | ||
| 355 | Vector { _handler: LPTIM1 }, | ||
| 356 | Vector { _handler: LPTIM2 }, | ||
| 357 | Vector { _reserved: 0 }, | ||
| 358 | Vector { | ||
| 359 | _handler: DMA2_Channel6, | ||
| 360 | }, | ||
| 361 | Vector { | ||
| 362 | _handler: DMA2_Channel7, | ||
| 363 | }, | ||
| 364 | Vector { _handler: LPUART1 }, | ||
| 365 | Vector { _handler: QUADSPI }, | ||
| 366 | Vector { _handler: I2C3_EV }, | ||
| 367 | Vector { _handler: I2C3_ER }, | ||
| 368 | Vector { _handler: SAI1 }, | ||
| 369 | Vector { _reserved: 0 }, | ||
| 370 | Vector { _reserved: 0 }, | ||
| 371 | Vector { _handler: TSC }, | ||
| 372 | Vector { _reserved: 0 }, | ||
| 373 | Vector { _reserved: 0 }, | ||
| 374 | Vector { _handler: RNG }, | ||
| 375 | Vector { _handler: FPU }, | ||
| 376 | Vector { _handler: CRS }, | ||
| 377 | Vector { _handler: I2C4_EV }, | ||
| 378 | Vector { _handler: I2C4_ER }, | ||
| 379 | ]; | ||
| 380 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 381 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 382 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 383 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l451rc.rs b/embassy-stm32/src/chip/stm32l451rc.rs index af1f601c7..464fdc4ac 100644 --- a/embassy-stm32/src/chip/stm32l451rc.rs +++ b/embassy-stm32/src/chip/stm32l451rc.rs | |||
| @@ -1,18 +1,383 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, | 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, |
| 11 | RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, | 11 | RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, |
| 12 | USART1, USART2, USART3, WWDG | 12 | UART4, USART1, USART2, USART3, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DFSDM1_FLT0 = 61, | ||
| 35 | DFSDM1_FLT1 = 62, | ||
| 36 | DMA1_Channel1 = 11, | ||
| 37 | DMA1_Channel2 = 12, | ||
| 38 | DMA1_Channel3 = 13, | ||
| 39 | DMA1_Channel4 = 14, | ||
| 40 | DMA1_Channel5 = 15, | ||
| 41 | DMA1_Channel6 = 16, | ||
| 42 | DMA1_Channel7 = 17, | ||
| 43 | DMA2_Channel1 = 56, | ||
| 44 | DMA2_Channel2 = 57, | ||
| 45 | DMA2_Channel3 = 58, | ||
| 46 | DMA2_Channel4 = 59, | ||
| 47 | DMA2_Channel5 = 60, | ||
| 48 | DMA2_Channel6 = 68, | ||
| 49 | DMA2_Channel7 = 69, | ||
| 50 | EXTI0 = 6, | ||
| 51 | EXTI1 = 7, | ||
| 52 | EXTI15_10 = 40, | ||
| 53 | EXTI2 = 8, | ||
| 54 | EXTI3 = 9, | ||
| 55 | EXTI4 = 10, | ||
| 56 | EXTI9_5 = 23, | ||
| 57 | FLASH = 4, | ||
| 58 | FPU = 81, | ||
| 59 | I2C1_ER = 32, | ||
| 60 | I2C1_EV = 31, | ||
| 61 | I2C2_ER = 34, | ||
| 62 | I2C2_EV = 33, | ||
| 63 | I2C3_ER = 73, | ||
| 64 | I2C3_EV = 72, | ||
| 65 | I2C4_ER = 84, | ||
| 66 | I2C4_EV = 83, | ||
| 67 | LPTIM1 = 65, | ||
| 68 | LPTIM2 = 66, | ||
| 69 | LPUART1 = 70, | ||
| 70 | PVD_PVM = 1, | ||
| 71 | QUADSPI = 71, | ||
| 72 | RCC = 5, | ||
| 73 | RNG = 80, | ||
| 74 | RTC_Alarm = 41, | ||
| 75 | RTC_WKUP = 3, | ||
| 76 | SAI1 = 74, | ||
| 77 | SDMMC1 = 49, | ||
| 78 | SPI1 = 35, | ||
| 79 | SPI2 = 36, | ||
| 80 | SPI3 = 51, | ||
| 81 | TAMP_STAMP = 2, | ||
| 82 | TIM1_BRK_TIM15 = 24, | ||
| 83 | TIM1_CC = 27, | ||
| 84 | TIM1_TRG_COM = 26, | ||
| 85 | TIM1_UP_TIM16 = 25, | ||
| 86 | TIM2 = 28, | ||
| 87 | TIM3 = 29, | ||
| 88 | TIM6_DAC = 54, | ||
| 89 | TSC = 77, | ||
| 90 | UART4 = 52, | ||
| 91 | USART1 = 37, | ||
| 92 | USART2 = 38, | ||
| 93 | USART3 = 39, | ||
| 94 | WWDG = 0, | ||
| 95 | } | ||
| 96 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 97 | #[inline(always)] | ||
| 98 | fn number(self) -> u16 { | ||
| 99 | self as u16 | ||
| 100 | } | ||
| 101 | } | ||
| 102 | |||
| 103 | declare!(ADC1); | ||
| 104 | declare!(CAN1_RX0); | ||
| 105 | declare!(CAN1_RX1); | ||
| 106 | declare!(CAN1_SCE); | ||
| 107 | declare!(CAN1_TX); | ||
| 108 | declare!(COMP); | ||
| 109 | declare!(CRS); | ||
| 110 | declare!(DFSDM1_FLT0); | ||
| 111 | declare!(DFSDM1_FLT1); | ||
| 112 | declare!(DMA1_Channel1); | ||
| 113 | declare!(DMA1_Channel2); | ||
| 114 | declare!(DMA1_Channel3); | ||
| 115 | declare!(DMA1_Channel4); | ||
| 116 | declare!(DMA1_Channel5); | ||
| 117 | declare!(DMA1_Channel6); | ||
| 118 | declare!(DMA1_Channel7); | ||
| 119 | declare!(DMA2_Channel1); | ||
| 120 | declare!(DMA2_Channel2); | ||
| 121 | declare!(DMA2_Channel3); | ||
| 122 | declare!(DMA2_Channel4); | ||
| 123 | declare!(DMA2_Channel5); | ||
| 124 | declare!(DMA2_Channel6); | ||
| 125 | declare!(DMA2_Channel7); | ||
| 126 | declare!(EXTI0); | ||
| 127 | declare!(EXTI1); | ||
| 128 | declare!(EXTI15_10); | ||
| 129 | declare!(EXTI2); | ||
| 130 | declare!(EXTI3); | ||
| 131 | declare!(EXTI4); | ||
| 132 | declare!(EXTI9_5); | ||
| 133 | declare!(FLASH); | ||
| 134 | declare!(FPU); | ||
| 135 | declare!(I2C1_ER); | ||
| 136 | declare!(I2C1_EV); | ||
| 137 | declare!(I2C2_ER); | ||
| 138 | declare!(I2C2_EV); | ||
| 139 | declare!(I2C3_ER); | ||
| 140 | declare!(I2C3_EV); | ||
| 141 | declare!(I2C4_ER); | ||
| 142 | declare!(I2C4_EV); | ||
| 143 | declare!(LPTIM1); | ||
| 144 | declare!(LPTIM2); | ||
| 145 | declare!(LPUART1); | ||
| 146 | declare!(PVD_PVM); | ||
| 147 | declare!(QUADSPI); | ||
| 148 | declare!(RCC); | ||
| 149 | declare!(RNG); | ||
| 150 | declare!(RTC_Alarm); | ||
| 151 | declare!(RTC_WKUP); | ||
| 152 | declare!(SAI1); | ||
| 153 | declare!(SDMMC1); | ||
| 154 | declare!(SPI1); | ||
| 155 | declare!(SPI2); | ||
| 156 | declare!(SPI3); | ||
| 157 | declare!(TAMP_STAMP); | ||
| 158 | declare!(TIM1_BRK_TIM15); | ||
| 159 | declare!(TIM1_CC); | ||
| 160 | declare!(TIM1_TRG_COM); | ||
| 161 | declare!(TIM1_UP_TIM16); | ||
| 162 | declare!(TIM2); | ||
| 163 | declare!(TIM3); | ||
| 164 | declare!(TIM6_DAC); | ||
| 165 | declare!(TSC); | ||
| 166 | declare!(UART4); | ||
| 167 | declare!(USART1); | ||
| 168 | declare!(USART2); | ||
| 169 | declare!(USART3); | ||
| 170 | declare!(WWDG); | ||
| 171 | } | ||
| 172 | mod interrupt_vector { | ||
| 173 | extern "C" { | ||
| 174 | fn ADC1(); | ||
| 175 | fn CAN1_RX0(); | ||
| 176 | fn CAN1_RX1(); | ||
| 177 | fn CAN1_SCE(); | ||
| 178 | fn CAN1_TX(); | ||
| 179 | fn COMP(); | ||
| 180 | fn CRS(); | ||
| 181 | fn DFSDM1_FLT0(); | ||
| 182 | fn DFSDM1_FLT1(); | ||
| 183 | fn DMA1_Channel1(); | ||
| 184 | fn DMA1_Channel2(); | ||
| 185 | fn DMA1_Channel3(); | ||
| 186 | fn DMA1_Channel4(); | ||
| 187 | fn DMA1_Channel5(); | ||
| 188 | fn DMA1_Channel6(); | ||
| 189 | fn DMA1_Channel7(); | ||
| 190 | fn DMA2_Channel1(); | ||
| 191 | fn DMA2_Channel2(); | ||
| 192 | fn DMA2_Channel3(); | ||
| 193 | fn DMA2_Channel4(); | ||
| 194 | fn DMA2_Channel5(); | ||
| 195 | fn DMA2_Channel6(); | ||
| 196 | fn DMA2_Channel7(); | ||
| 197 | fn EXTI0(); | ||
| 198 | fn EXTI1(); | ||
| 199 | fn EXTI15_10(); | ||
| 200 | fn EXTI2(); | ||
| 201 | fn EXTI3(); | ||
| 202 | fn EXTI4(); | ||
| 203 | fn EXTI9_5(); | ||
| 204 | fn FLASH(); | ||
| 205 | fn FPU(); | ||
| 206 | fn I2C1_ER(); | ||
| 207 | fn I2C1_EV(); | ||
| 208 | fn I2C2_ER(); | ||
| 209 | fn I2C2_EV(); | ||
| 210 | fn I2C3_ER(); | ||
| 211 | fn I2C3_EV(); | ||
| 212 | fn I2C4_ER(); | ||
| 213 | fn I2C4_EV(); | ||
| 214 | fn LPTIM1(); | ||
| 215 | fn LPTIM2(); | ||
| 216 | fn LPUART1(); | ||
| 217 | fn PVD_PVM(); | ||
| 218 | fn QUADSPI(); | ||
| 219 | fn RCC(); | ||
| 220 | fn RNG(); | ||
| 221 | fn RTC_Alarm(); | ||
| 222 | fn RTC_WKUP(); | ||
| 223 | fn SAI1(); | ||
| 224 | fn SDMMC1(); | ||
| 225 | fn SPI1(); | ||
| 226 | fn SPI2(); | ||
| 227 | fn SPI3(); | ||
| 228 | fn TAMP_STAMP(); | ||
| 229 | fn TIM1_BRK_TIM15(); | ||
| 230 | fn TIM1_CC(); | ||
| 231 | fn TIM1_TRG_COM(); | ||
| 232 | fn TIM1_UP_TIM16(); | ||
| 233 | fn TIM2(); | ||
| 234 | fn TIM3(); | ||
| 235 | fn TIM6_DAC(); | ||
| 236 | fn TSC(); | ||
| 237 | fn UART4(); | ||
| 238 | fn USART1(); | ||
| 239 | fn USART2(); | ||
| 240 | fn USART3(); | ||
| 241 | fn WWDG(); | ||
| 242 | } | ||
| 243 | pub union Vector { | ||
| 244 | _handler: unsafe extern "C" fn(), | ||
| 245 | _reserved: u32, | ||
| 246 | } | ||
| 247 | #[link_section = ".vector_table.interrupts"] | ||
| 248 | #[no_mangle] | ||
| 249 | pub static __INTERRUPTS: [Vector; 85] = [ | ||
| 250 | Vector { _handler: WWDG }, | ||
| 251 | Vector { _handler: PVD_PVM }, | ||
| 252 | Vector { | ||
| 253 | _handler: TAMP_STAMP, | ||
| 254 | }, | ||
| 255 | Vector { _handler: RTC_WKUP }, | ||
| 256 | Vector { _handler: FLASH }, | ||
| 257 | Vector { _handler: RCC }, | ||
| 258 | Vector { _handler: EXTI0 }, | ||
| 259 | Vector { _handler: EXTI1 }, | ||
| 260 | Vector { _handler: EXTI2 }, | ||
| 261 | Vector { _handler: EXTI3 }, | ||
| 262 | Vector { _handler: EXTI4 }, | ||
| 263 | Vector { | ||
| 264 | _handler: DMA1_Channel1, | ||
| 265 | }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel2, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel3, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel4, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel5, | ||
| 277 | }, | ||
| 278 | Vector { | ||
| 279 | _handler: DMA1_Channel6, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: DMA1_Channel7, | ||
| 283 | }, | ||
| 284 | Vector { _handler: ADC1 }, | ||
| 285 | Vector { _handler: CAN1_TX }, | ||
| 286 | Vector { _handler: CAN1_RX0 }, | ||
| 287 | Vector { _handler: CAN1_RX1 }, | ||
| 288 | Vector { _handler: CAN1_SCE }, | ||
| 289 | Vector { _handler: EXTI9_5 }, | ||
| 290 | Vector { | ||
| 291 | _handler: TIM1_BRK_TIM15, | ||
| 292 | }, | ||
| 293 | Vector { | ||
| 294 | _handler: TIM1_UP_TIM16, | ||
| 295 | }, | ||
| 296 | Vector { | ||
| 297 | _handler: TIM1_TRG_COM, | ||
| 298 | }, | ||
| 299 | Vector { _handler: TIM1_CC }, | ||
| 300 | Vector { _handler: TIM2 }, | ||
| 301 | Vector { _handler: TIM3 }, | ||
| 302 | Vector { _reserved: 0 }, | ||
| 303 | Vector { _handler: I2C1_EV }, | ||
| 304 | Vector { _handler: I2C1_ER }, | ||
| 305 | Vector { _handler: I2C2_EV }, | ||
| 306 | Vector { _handler: I2C2_ER }, | ||
| 307 | Vector { _handler: SPI1 }, | ||
| 308 | Vector { _handler: SPI2 }, | ||
| 309 | Vector { _handler: USART1 }, | ||
| 310 | Vector { _handler: USART2 }, | ||
| 311 | Vector { _handler: USART3 }, | ||
| 312 | Vector { | ||
| 313 | _handler: EXTI15_10, | ||
| 314 | }, | ||
| 315 | Vector { | ||
| 316 | _handler: RTC_Alarm, | ||
| 317 | }, | ||
| 318 | Vector { _reserved: 0 }, | ||
| 319 | Vector { _reserved: 0 }, | ||
| 320 | Vector { _reserved: 0 }, | ||
| 321 | Vector { _reserved: 0 }, | ||
| 322 | Vector { _reserved: 0 }, | ||
| 323 | Vector { _reserved: 0 }, | ||
| 324 | Vector { _reserved: 0 }, | ||
| 325 | Vector { _handler: SDMMC1 }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _handler: SPI3 }, | ||
| 328 | Vector { _handler: UART4 }, | ||
| 329 | Vector { _reserved: 0 }, | ||
| 330 | Vector { _handler: TIM6_DAC }, | ||
| 331 | Vector { _reserved: 0 }, | ||
| 332 | Vector { | ||
| 333 | _handler: DMA2_Channel1, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: DMA2_Channel2, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel3, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: DMA2_Channel4, | ||
| 343 | }, | ||
| 344 | Vector { | ||
| 345 | _handler: DMA2_Channel5, | ||
| 346 | }, | ||
| 347 | Vector { | ||
| 348 | _handler: DFSDM1_FLT0, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: DFSDM1_FLT1, | ||
| 352 | }, | ||
| 353 | Vector { _reserved: 0 }, | ||
| 354 | Vector { _handler: COMP }, | ||
| 355 | Vector { _handler: LPTIM1 }, | ||
| 356 | Vector { _handler: LPTIM2 }, | ||
| 357 | Vector { _reserved: 0 }, | ||
| 358 | Vector { | ||
| 359 | _handler: DMA2_Channel6, | ||
| 360 | }, | ||
| 361 | Vector { | ||
| 362 | _handler: DMA2_Channel7, | ||
| 363 | }, | ||
| 364 | Vector { _handler: LPUART1 }, | ||
| 365 | Vector { _handler: QUADSPI }, | ||
| 366 | Vector { _handler: I2C3_EV }, | ||
| 367 | Vector { _handler: I2C3_ER }, | ||
| 368 | Vector { _handler: SAI1 }, | ||
| 369 | Vector { _reserved: 0 }, | ||
| 370 | Vector { _reserved: 0 }, | ||
| 371 | Vector { _handler: TSC }, | ||
| 372 | Vector { _reserved: 0 }, | ||
| 373 | Vector { _reserved: 0 }, | ||
| 374 | Vector { _handler: RNG }, | ||
| 375 | Vector { _handler: FPU }, | ||
| 376 | Vector { _handler: CRS }, | ||
| 377 | Vector { _handler: I2C4_EV }, | ||
| 378 | Vector { _handler: I2C4_ER }, | ||
| 379 | ]; | ||
| 380 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 381 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 382 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 383 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l451re.rs b/embassy-stm32/src/chip/stm32l451re.rs index af1f601c7..464fdc4ac 100644 --- a/embassy-stm32/src/chip/stm32l451re.rs +++ b/embassy-stm32/src/chip/stm32l451re.rs | |||
| @@ -1,18 +1,383 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, | 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, |
| 11 | RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, | 11 | RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, |
| 12 | USART1, USART2, USART3, WWDG | 12 | UART4, USART1, USART2, USART3, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DFSDM1_FLT0 = 61, | ||
| 35 | DFSDM1_FLT1 = 62, | ||
| 36 | DMA1_Channel1 = 11, | ||
| 37 | DMA1_Channel2 = 12, | ||
| 38 | DMA1_Channel3 = 13, | ||
| 39 | DMA1_Channel4 = 14, | ||
| 40 | DMA1_Channel5 = 15, | ||
| 41 | DMA1_Channel6 = 16, | ||
| 42 | DMA1_Channel7 = 17, | ||
| 43 | DMA2_Channel1 = 56, | ||
| 44 | DMA2_Channel2 = 57, | ||
| 45 | DMA2_Channel3 = 58, | ||
| 46 | DMA2_Channel4 = 59, | ||
| 47 | DMA2_Channel5 = 60, | ||
| 48 | DMA2_Channel6 = 68, | ||
| 49 | DMA2_Channel7 = 69, | ||
| 50 | EXTI0 = 6, | ||
| 51 | EXTI1 = 7, | ||
| 52 | EXTI15_10 = 40, | ||
| 53 | EXTI2 = 8, | ||
| 54 | EXTI3 = 9, | ||
| 55 | EXTI4 = 10, | ||
| 56 | EXTI9_5 = 23, | ||
| 57 | FLASH = 4, | ||
| 58 | FPU = 81, | ||
| 59 | I2C1_ER = 32, | ||
| 60 | I2C1_EV = 31, | ||
| 61 | I2C2_ER = 34, | ||
| 62 | I2C2_EV = 33, | ||
| 63 | I2C3_ER = 73, | ||
| 64 | I2C3_EV = 72, | ||
| 65 | I2C4_ER = 84, | ||
| 66 | I2C4_EV = 83, | ||
| 67 | LPTIM1 = 65, | ||
| 68 | LPTIM2 = 66, | ||
| 69 | LPUART1 = 70, | ||
| 70 | PVD_PVM = 1, | ||
| 71 | QUADSPI = 71, | ||
| 72 | RCC = 5, | ||
| 73 | RNG = 80, | ||
| 74 | RTC_Alarm = 41, | ||
| 75 | RTC_WKUP = 3, | ||
| 76 | SAI1 = 74, | ||
| 77 | SDMMC1 = 49, | ||
| 78 | SPI1 = 35, | ||
| 79 | SPI2 = 36, | ||
| 80 | SPI3 = 51, | ||
| 81 | TAMP_STAMP = 2, | ||
| 82 | TIM1_BRK_TIM15 = 24, | ||
| 83 | TIM1_CC = 27, | ||
| 84 | TIM1_TRG_COM = 26, | ||
| 85 | TIM1_UP_TIM16 = 25, | ||
| 86 | TIM2 = 28, | ||
| 87 | TIM3 = 29, | ||
| 88 | TIM6_DAC = 54, | ||
| 89 | TSC = 77, | ||
| 90 | UART4 = 52, | ||
| 91 | USART1 = 37, | ||
| 92 | USART2 = 38, | ||
| 93 | USART3 = 39, | ||
| 94 | WWDG = 0, | ||
| 95 | } | ||
| 96 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 97 | #[inline(always)] | ||
| 98 | fn number(self) -> u16 { | ||
| 99 | self as u16 | ||
| 100 | } | ||
| 101 | } | ||
| 102 | |||
| 103 | declare!(ADC1); | ||
| 104 | declare!(CAN1_RX0); | ||
| 105 | declare!(CAN1_RX1); | ||
| 106 | declare!(CAN1_SCE); | ||
| 107 | declare!(CAN1_TX); | ||
| 108 | declare!(COMP); | ||
| 109 | declare!(CRS); | ||
| 110 | declare!(DFSDM1_FLT0); | ||
| 111 | declare!(DFSDM1_FLT1); | ||
| 112 | declare!(DMA1_Channel1); | ||
| 113 | declare!(DMA1_Channel2); | ||
| 114 | declare!(DMA1_Channel3); | ||
| 115 | declare!(DMA1_Channel4); | ||
| 116 | declare!(DMA1_Channel5); | ||
| 117 | declare!(DMA1_Channel6); | ||
| 118 | declare!(DMA1_Channel7); | ||
| 119 | declare!(DMA2_Channel1); | ||
| 120 | declare!(DMA2_Channel2); | ||
| 121 | declare!(DMA2_Channel3); | ||
| 122 | declare!(DMA2_Channel4); | ||
| 123 | declare!(DMA2_Channel5); | ||
| 124 | declare!(DMA2_Channel6); | ||
| 125 | declare!(DMA2_Channel7); | ||
| 126 | declare!(EXTI0); | ||
| 127 | declare!(EXTI1); | ||
| 128 | declare!(EXTI15_10); | ||
| 129 | declare!(EXTI2); | ||
| 130 | declare!(EXTI3); | ||
| 131 | declare!(EXTI4); | ||
| 132 | declare!(EXTI9_5); | ||
| 133 | declare!(FLASH); | ||
| 134 | declare!(FPU); | ||
| 135 | declare!(I2C1_ER); | ||
| 136 | declare!(I2C1_EV); | ||
| 137 | declare!(I2C2_ER); | ||
| 138 | declare!(I2C2_EV); | ||
| 139 | declare!(I2C3_ER); | ||
| 140 | declare!(I2C3_EV); | ||
| 141 | declare!(I2C4_ER); | ||
| 142 | declare!(I2C4_EV); | ||
| 143 | declare!(LPTIM1); | ||
| 144 | declare!(LPTIM2); | ||
| 145 | declare!(LPUART1); | ||
| 146 | declare!(PVD_PVM); | ||
| 147 | declare!(QUADSPI); | ||
| 148 | declare!(RCC); | ||
| 149 | declare!(RNG); | ||
| 150 | declare!(RTC_Alarm); | ||
| 151 | declare!(RTC_WKUP); | ||
| 152 | declare!(SAI1); | ||
| 153 | declare!(SDMMC1); | ||
| 154 | declare!(SPI1); | ||
| 155 | declare!(SPI2); | ||
| 156 | declare!(SPI3); | ||
| 157 | declare!(TAMP_STAMP); | ||
| 158 | declare!(TIM1_BRK_TIM15); | ||
| 159 | declare!(TIM1_CC); | ||
| 160 | declare!(TIM1_TRG_COM); | ||
| 161 | declare!(TIM1_UP_TIM16); | ||
| 162 | declare!(TIM2); | ||
| 163 | declare!(TIM3); | ||
| 164 | declare!(TIM6_DAC); | ||
| 165 | declare!(TSC); | ||
| 166 | declare!(UART4); | ||
| 167 | declare!(USART1); | ||
| 168 | declare!(USART2); | ||
| 169 | declare!(USART3); | ||
| 170 | declare!(WWDG); | ||
| 171 | } | ||
| 172 | mod interrupt_vector { | ||
| 173 | extern "C" { | ||
| 174 | fn ADC1(); | ||
| 175 | fn CAN1_RX0(); | ||
| 176 | fn CAN1_RX1(); | ||
| 177 | fn CAN1_SCE(); | ||
| 178 | fn CAN1_TX(); | ||
| 179 | fn COMP(); | ||
| 180 | fn CRS(); | ||
| 181 | fn DFSDM1_FLT0(); | ||
| 182 | fn DFSDM1_FLT1(); | ||
| 183 | fn DMA1_Channel1(); | ||
| 184 | fn DMA1_Channel2(); | ||
| 185 | fn DMA1_Channel3(); | ||
| 186 | fn DMA1_Channel4(); | ||
| 187 | fn DMA1_Channel5(); | ||
| 188 | fn DMA1_Channel6(); | ||
| 189 | fn DMA1_Channel7(); | ||
| 190 | fn DMA2_Channel1(); | ||
| 191 | fn DMA2_Channel2(); | ||
| 192 | fn DMA2_Channel3(); | ||
| 193 | fn DMA2_Channel4(); | ||
| 194 | fn DMA2_Channel5(); | ||
| 195 | fn DMA2_Channel6(); | ||
| 196 | fn DMA2_Channel7(); | ||
| 197 | fn EXTI0(); | ||
| 198 | fn EXTI1(); | ||
| 199 | fn EXTI15_10(); | ||
| 200 | fn EXTI2(); | ||
| 201 | fn EXTI3(); | ||
| 202 | fn EXTI4(); | ||
| 203 | fn EXTI9_5(); | ||
| 204 | fn FLASH(); | ||
| 205 | fn FPU(); | ||
| 206 | fn I2C1_ER(); | ||
| 207 | fn I2C1_EV(); | ||
| 208 | fn I2C2_ER(); | ||
| 209 | fn I2C2_EV(); | ||
| 210 | fn I2C3_ER(); | ||
| 211 | fn I2C3_EV(); | ||
| 212 | fn I2C4_ER(); | ||
| 213 | fn I2C4_EV(); | ||
| 214 | fn LPTIM1(); | ||
| 215 | fn LPTIM2(); | ||
| 216 | fn LPUART1(); | ||
| 217 | fn PVD_PVM(); | ||
| 218 | fn QUADSPI(); | ||
| 219 | fn RCC(); | ||
| 220 | fn RNG(); | ||
| 221 | fn RTC_Alarm(); | ||
| 222 | fn RTC_WKUP(); | ||
| 223 | fn SAI1(); | ||
| 224 | fn SDMMC1(); | ||
| 225 | fn SPI1(); | ||
| 226 | fn SPI2(); | ||
| 227 | fn SPI3(); | ||
| 228 | fn TAMP_STAMP(); | ||
| 229 | fn TIM1_BRK_TIM15(); | ||
| 230 | fn TIM1_CC(); | ||
| 231 | fn TIM1_TRG_COM(); | ||
| 232 | fn TIM1_UP_TIM16(); | ||
| 233 | fn TIM2(); | ||
| 234 | fn TIM3(); | ||
| 235 | fn TIM6_DAC(); | ||
| 236 | fn TSC(); | ||
| 237 | fn UART4(); | ||
| 238 | fn USART1(); | ||
| 239 | fn USART2(); | ||
| 240 | fn USART3(); | ||
| 241 | fn WWDG(); | ||
| 242 | } | ||
| 243 | pub union Vector { | ||
| 244 | _handler: unsafe extern "C" fn(), | ||
| 245 | _reserved: u32, | ||
| 246 | } | ||
| 247 | #[link_section = ".vector_table.interrupts"] | ||
| 248 | #[no_mangle] | ||
| 249 | pub static __INTERRUPTS: [Vector; 85] = [ | ||
| 250 | Vector { _handler: WWDG }, | ||
| 251 | Vector { _handler: PVD_PVM }, | ||
| 252 | Vector { | ||
| 253 | _handler: TAMP_STAMP, | ||
| 254 | }, | ||
| 255 | Vector { _handler: RTC_WKUP }, | ||
| 256 | Vector { _handler: FLASH }, | ||
| 257 | Vector { _handler: RCC }, | ||
| 258 | Vector { _handler: EXTI0 }, | ||
| 259 | Vector { _handler: EXTI1 }, | ||
| 260 | Vector { _handler: EXTI2 }, | ||
| 261 | Vector { _handler: EXTI3 }, | ||
| 262 | Vector { _handler: EXTI4 }, | ||
| 263 | Vector { | ||
| 264 | _handler: DMA1_Channel1, | ||
| 265 | }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel2, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel3, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel4, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel5, | ||
| 277 | }, | ||
| 278 | Vector { | ||
| 279 | _handler: DMA1_Channel6, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: DMA1_Channel7, | ||
| 283 | }, | ||
| 284 | Vector { _handler: ADC1 }, | ||
| 285 | Vector { _handler: CAN1_TX }, | ||
| 286 | Vector { _handler: CAN1_RX0 }, | ||
| 287 | Vector { _handler: CAN1_RX1 }, | ||
| 288 | Vector { _handler: CAN1_SCE }, | ||
| 289 | Vector { _handler: EXTI9_5 }, | ||
| 290 | Vector { | ||
| 291 | _handler: TIM1_BRK_TIM15, | ||
| 292 | }, | ||
| 293 | Vector { | ||
| 294 | _handler: TIM1_UP_TIM16, | ||
| 295 | }, | ||
| 296 | Vector { | ||
| 297 | _handler: TIM1_TRG_COM, | ||
| 298 | }, | ||
| 299 | Vector { _handler: TIM1_CC }, | ||
| 300 | Vector { _handler: TIM2 }, | ||
| 301 | Vector { _handler: TIM3 }, | ||
| 302 | Vector { _reserved: 0 }, | ||
| 303 | Vector { _handler: I2C1_EV }, | ||
| 304 | Vector { _handler: I2C1_ER }, | ||
| 305 | Vector { _handler: I2C2_EV }, | ||
| 306 | Vector { _handler: I2C2_ER }, | ||
| 307 | Vector { _handler: SPI1 }, | ||
| 308 | Vector { _handler: SPI2 }, | ||
| 309 | Vector { _handler: USART1 }, | ||
| 310 | Vector { _handler: USART2 }, | ||
| 311 | Vector { _handler: USART3 }, | ||
| 312 | Vector { | ||
| 313 | _handler: EXTI15_10, | ||
| 314 | }, | ||
| 315 | Vector { | ||
| 316 | _handler: RTC_Alarm, | ||
| 317 | }, | ||
| 318 | Vector { _reserved: 0 }, | ||
| 319 | Vector { _reserved: 0 }, | ||
| 320 | Vector { _reserved: 0 }, | ||
| 321 | Vector { _reserved: 0 }, | ||
| 322 | Vector { _reserved: 0 }, | ||
| 323 | Vector { _reserved: 0 }, | ||
| 324 | Vector { _reserved: 0 }, | ||
| 325 | Vector { _handler: SDMMC1 }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _handler: SPI3 }, | ||
| 328 | Vector { _handler: UART4 }, | ||
| 329 | Vector { _reserved: 0 }, | ||
| 330 | Vector { _handler: TIM6_DAC }, | ||
| 331 | Vector { _reserved: 0 }, | ||
| 332 | Vector { | ||
| 333 | _handler: DMA2_Channel1, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: DMA2_Channel2, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel3, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: DMA2_Channel4, | ||
| 343 | }, | ||
| 344 | Vector { | ||
| 345 | _handler: DMA2_Channel5, | ||
| 346 | }, | ||
| 347 | Vector { | ||
| 348 | _handler: DFSDM1_FLT0, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: DFSDM1_FLT1, | ||
| 352 | }, | ||
| 353 | Vector { _reserved: 0 }, | ||
| 354 | Vector { _handler: COMP }, | ||
| 355 | Vector { _handler: LPTIM1 }, | ||
| 356 | Vector { _handler: LPTIM2 }, | ||
| 357 | Vector { _reserved: 0 }, | ||
| 358 | Vector { | ||
| 359 | _handler: DMA2_Channel6, | ||
| 360 | }, | ||
| 361 | Vector { | ||
| 362 | _handler: DMA2_Channel7, | ||
| 363 | }, | ||
| 364 | Vector { _handler: LPUART1 }, | ||
| 365 | Vector { _handler: QUADSPI }, | ||
| 366 | Vector { _handler: I2C3_EV }, | ||
| 367 | Vector { _handler: I2C3_ER }, | ||
| 368 | Vector { _handler: SAI1 }, | ||
| 369 | Vector { _reserved: 0 }, | ||
| 370 | Vector { _reserved: 0 }, | ||
| 371 | Vector { _handler: TSC }, | ||
| 372 | Vector { _reserved: 0 }, | ||
| 373 | Vector { _reserved: 0 }, | ||
| 374 | Vector { _handler: RNG }, | ||
| 375 | Vector { _handler: FPU }, | ||
| 376 | Vector { _handler: CRS }, | ||
| 377 | Vector { _handler: I2C4_EV }, | ||
| 378 | Vector { _handler: I2C4_ER }, | ||
| 379 | ]; | ||
| 380 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 381 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 382 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 383 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l451vc.rs b/embassy-stm32/src/chip/stm32l451vc.rs index af1f601c7..464fdc4ac 100644 --- a/embassy-stm32/src/chip/stm32l451vc.rs +++ b/embassy-stm32/src/chip/stm32l451vc.rs | |||
| @@ -1,18 +1,383 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, | 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, |
| 11 | RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, | 11 | RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, |
| 12 | USART1, USART2, USART3, WWDG | 12 | UART4, USART1, USART2, USART3, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DFSDM1_FLT0 = 61, | ||
| 35 | DFSDM1_FLT1 = 62, | ||
| 36 | DMA1_Channel1 = 11, | ||
| 37 | DMA1_Channel2 = 12, | ||
| 38 | DMA1_Channel3 = 13, | ||
| 39 | DMA1_Channel4 = 14, | ||
| 40 | DMA1_Channel5 = 15, | ||
| 41 | DMA1_Channel6 = 16, | ||
| 42 | DMA1_Channel7 = 17, | ||
| 43 | DMA2_Channel1 = 56, | ||
| 44 | DMA2_Channel2 = 57, | ||
| 45 | DMA2_Channel3 = 58, | ||
| 46 | DMA2_Channel4 = 59, | ||
| 47 | DMA2_Channel5 = 60, | ||
| 48 | DMA2_Channel6 = 68, | ||
| 49 | DMA2_Channel7 = 69, | ||
| 50 | EXTI0 = 6, | ||
| 51 | EXTI1 = 7, | ||
| 52 | EXTI15_10 = 40, | ||
| 53 | EXTI2 = 8, | ||
| 54 | EXTI3 = 9, | ||
| 55 | EXTI4 = 10, | ||
| 56 | EXTI9_5 = 23, | ||
| 57 | FLASH = 4, | ||
| 58 | FPU = 81, | ||
| 59 | I2C1_ER = 32, | ||
| 60 | I2C1_EV = 31, | ||
| 61 | I2C2_ER = 34, | ||
| 62 | I2C2_EV = 33, | ||
| 63 | I2C3_ER = 73, | ||
| 64 | I2C3_EV = 72, | ||
| 65 | I2C4_ER = 84, | ||
| 66 | I2C4_EV = 83, | ||
| 67 | LPTIM1 = 65, | ||
| 68 | LPTIM2 = 66, | ||
| 69 | LPUART1 = 70, | ||
| 70 | PVD_PVM = 1, | ||
| 71 | QUADSPI = 71, | ||
| 72 | RCC = 5, | ||
| 73 | RNG = 80, | ||
| 74 | RTC_Alarm = 41, | ||
| 75 | RTC_WKUP = 3, | ||
| 76 | SAI1 = 74, | ||
| 77 | SDMMC1 = 49, | ||
| 78 | SPI1 = 35, | ||
| 79 | SPI2 = 36, | ||
| 80 | SPI3 = 51, | ||
| 81 | TAMP_STAMP = 2, | ||
| 82 | TIM1_BRK_TIM15 = 24, | ||
| 83 | TIM1_CC = 27, | ||
| 84 | TIM1_TRG_COM = 26, | ||
| 85 | TIM1_UP_TIM16 = 25, | ||
| 86 | TIM2 = 28, | ||
| 87 | TIM3 = 29, | ||
| 88 | TIM6_DAC = 54, | ||
| 89 | TSC = 77, | ||
| 90 | UART4 = 52, | ||
| 91 | USART1 = 37, | ||
| 92 | USART2 = 38, | ||
| 93 | USART3 = 39, | ||
| 94 | WWDG = 0, | ||
| 95 | } | ||
| 96 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 97 | #[inline(always)] | ||
| 98 | fn number(self) -> u16 { | ||
| 99 | self as u16 | ||
| 100 | } | ||
| 101 | } | ||
| 102 | |||
| 103 | declare!(ADC1); | ||
| 104 | declare!(CAN1_RX0); | ||
| 105 | declare!(CAN1_RX1); | ||
| 106 | declare!(CAN1_SCE); | ||
| 107 | declare!(CAN1_TX); | ||
| 108 | declare!(COMP); | ||
| 109 | declare!(CRS); | ||
| 110 | declare!(DFSDM1_FLT0); | ||
| 111 | declare!(DFSDM1_FLT1); | ||
| 112 | declare!(DMA1_Channel1); | ||
| 113 | declare!(DMA1_Channel2); | ||
| 114 | declare!(DMA1_Channel3); | ||
| 115 | declare!(DMA1_Channel4); | ||
| 116 | declare!(DMA1_Channel5); | ||
| 117 | declare!(DMA1_Channel6); | ||
| 118 | declare!(DMA1_Channel7); | ||
| 119 | declare!(DMA2_Channel1); | ||
| 120 | declare!(DMA2_Channel2); | ||
| 121 | declare!(DMA2_Channel3); | ||
| 122 | declare!(DMA2_Channel4); | ||
| 123 | declare!(DMA2_Channel5); | ||
| 124 | declare!(DMA2_Channel6); | ||
| 125 | declare!(DMA2_Channel7); | ||
| 126 | declare!(EXTI0); | ||
| 127 | declare!(EXTI1); | ||
| 128 | declare!(EXTI15_10); | ||
| 129 | declare!(EXTI2); | ||
| 130 | declare!(EXTI3); | ||
| 131 | declare!(EXTI4); | ||
| 132 | declare!(EXTI9_5); | ||
| 133 | declare!(FLASH); | ||
| 134 | declare!(FPU); | ||
| 135 | declare!(I2C1_ER); | ||
| 136 | declare!(I2C1_EV); | ||
| 137 | declare!(I2C2_ER); | ||
| 138 | declare!(I2C2_EV); | ||
| 139 | declare!(I2C3_ER); | ||
| 140 | declare!(I2C3_EV); | ||
| 141 | declare!(I2C4_ER); | ||
| 142 | declare!(I2C4_EV); | ||
| 143 | declare!(LPTIM1); | ||
| 144 | declare!(LPTIM2); | ||
| 145 | declare!(LPUART1); | ||
| 146 | declare!(PVD_PVM); | ||
| 147 | declare!(QUADSPI); | ||
| 148 | declare!(RCC); | ||
| 149 | declare!(RNG); | ||
| 150 | declare!(RTC_Alarm); | ||
| 151 | declare!(RTC_WKUP); | ||
| 152 | declare!(SAI1); | ||
| 153 | declare!(SDMMC1); | ||
| 154 | declare!(SPI1); | ||
| 155 | declare!(SPI2); | ||
| 156 | declare!(SPI3); | ||
| 157 | declare!(TAMP_STAMP); | ||
| 158 | declare!(TIM1_BRK_TIM15); | ||
| 159 | declare!(TIM1_CC); | ||
| 160 | declare!(TIM1_TRG_COM); | ||
| 161 | declare!(TIM1_UP_TIM16); | ||
| 162 | declare!(TIM2); | ||
| 163 | declare!(TIM3); | ||
| 164 | declare!(TIM6_DAC); | ||
| 165 | declare!(TSC); | ||
| 166 | declare!(UART4); | ||
| 167 | declare!(USART1); | ||
| 168 | declare!(USART2); | ||
| 169 | declare!(USART3); | ||
| 170 | declare!(WWDG); | ||
| 171 | } | ||
| 172 | mod interrupt_vector { | ||
| 173 | extern "C" { | ||
| 174 | fn ADC1(); | ||
| 175 | fn CAN1_RX0(); | ||
| 176 | fn CAN1_RX1(); | ||
| 177 | fn CAN1_SCE(); | ||
| 178 | fn CAN1_TX(); | ||
| 179 | fn COMP(); | ||
| 180 | fn CRS(); | ||
| 181 | fn DFSDM1_FLT0(); | ||
| 182 | fn DFSDM1_FLT1(); | ||
| 183 | fn DMA1_Channel1(); | ||
| 184 | fn DMA1_Channel2(); | ||
| 185 | fn DMA1_Channel3(); | ||
| 186 | fn DMA1_Channel4(); | ||
| 187 | fn DMA1_Channel5(); | ||
| 188 | fn DMA1_Channel6(); | ||
| 189 | fn DMA1_Channel7(); | ||
| 190 | fn DMA2_Channel1(); | ||
| 191 | fn DMA2_Channel2(); | ||
| 192 | fn DMA2_Channel3(); | ||
| 193 | fn DMA2_Channel4(); | ||
| 194 | fn DMA2_Channel5(); | ||
| 195 | fn DMA2_Channel6(); | ||
| 196 | fn DMA2_Channel7(); | ||
| 197 | fn EXTI0(); | ||
| 198 | fn EXTI1(); | ||
| 199 | fn EXTI15_10(); | ||
| 200 | fn EXTI2(); | ||
| 201 | fn EXTI3(); | ||
| 202 | fn EXTI4(); | ||
| 203 | fn EXTI9_5(); | ||
| 204 | fn FLASH(); | ||
| 205 | fn FPU(); | ||
| 206 | fn I2C1_ER(); | ||
| 207 | fn I2C1_EV(); | ||
| 208 | fn I2C2_ER(); | ||
| 209 | fn I2C2_EV(); | ||
| 210 | fn I2C3_ER(); | ||
| 211 | fn I2C3_EV(); | ||
| 212 | fn I2C4_ER(); | ||
| 213 | fn I2C4_EV(); | ||
| 214 | fn LPTIM1(); | ||
| 215 | fn LPTIM2(); | ||
| 216 | fn LPUART1(); | ||
| 217 | fn PVD_PVM(); | ||
| 218 | fn QUADSPI(); | ||
| 219 | fn RCC(); | ||
| 220 | fn RNG(); | ||
| 221 | fn RTC_Alarm(); | ||
| 222 | fn RTC_WKUP(); | ||
| 223 | fn SAI1(); | ||
| 224 | fn SDMMC1(); | ||
| 225 | fn SPI1(); | ||
| 226 | fn SPI2(); | ||
| 227 | fn SPI3(); | ||
| 228 | fn TAMP_STAMP(); | ||
| 229 | fn TIM1_BRK_TIM15(); | ||
| 230 | fn TIM1_CC(); | ||
| 231 | fn TIM1_TRG_COM(); | ||
| 232 | fn TIM1_UP_TIM16(); | ||
| 233 | fn TIM2(); | ||
| 234 | fn TIM3(); | ||
| 235 | fn TIM6_DAC(); | ||
| 236 | fn TSC(); | ||
| 237 | fn UART4(); | ||
| 238 | fn USART1(); | ||
| 239 | fn USART2(); | ||
| 240 | fn USART3(); | ||
| 241 | fn WWDG(); | ||
| 242 | } | ||
| 243 | pub union Vector { | ||
| 244 | _handler: unsafe extern "C" fn(), | ||
| 245 | _reserved: u32, | ||
| 246 | } | ||
| 247 | #[link_section = ".vector_table.interrupts"] | ||
| 248 | #[no_mangle] | ||
| 249 | pub static __INTERRUPTS: [Vector; 85] = [ | ||
| 250 | Vector { _handler: WWDG }, | ||
| 251 | Vector { _handler: PVD_PVM }, | ||
| 252 | Vector { | ||
| 253 | _handler: TAMP_STAMP, | ||
| 254 | }, | ||
| 255 | Vector { _handler: RTC_WKUP }, | ||
| 256 | Vector { _handler: FLASH }, | ||
| 257 | Vector { _handler: RCC }, | ||
| 258 | Vector { _handler: EXTI0 }, | ||
| 259 | Vector { _handler: EXTI1 }, | ||
| 260 | Vector { _handler: EXTI2 }, | ||
| 261 | Vector { _handler: EXTI3 }, | ||
| 262 | Vector { _handler: EXTI4 }, | ||
| 263 | Vector { | ||
| 264 | _handler: DMA1_Channel1, | ||
| 265 | }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel2, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel3, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel4, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel5, | ||
| 277 | }, | ||
| 278 | Vector { | ||
| 279 | _handler: DMA1_Channel6, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: DMA1_Channel7, | ||
| 283 | }, | ||
| 284 | Vector { _handler: ADC1 }, | ||
| 285 | Vector { _handler: CAN1_TX }, | ||
| 286 | Vector { _handler: CAN1_RX0 }, | ||
| 287 | Vector { _handler: CAN1_RX1 }, | ||
| 288 | Vector { _handler: CAN1_SCE }, | ||
| 289 | Vector { _handler: EXTI9_5 }, | ||
| 290 | Vector { | ||
| 291 | _handler: TIM1_BRK_TIM15, | ||
| 292 | }, | ||
| 293 | Vector { | ||
| 294 | _handler: TIM1_UP_TIM16, | ||
| 295 | }, | ||
| 296 | Vector { | ||
| 297 | _handler: TIM1_TRG_COM, | ||
| 298 | }, | ||
| 299 | Vector { _handler: TIM1_CC }, | ||
| 300 | Vector { _handler: TIM2 }, | ||
| 301 | Vector { _handler: TIM3 }, | ||
| 302 | Vector { _reserved: 0 }, | ||
| 303 | Vector { _handler: I2C1_EV }, | ||
| 304 | Vector { _handler: I2C1_ER }, | ||
| 305 | Vector { _handler: I2C2_EV }, | ||
| 306 | Vector { _handler: I2C2_ER }, | ||
| 307 | Vector { _handler: SPI1 }, | ||
| 308 | Vector { _handler: SPI2 }, | ||
| 309 | Vector { _handler: USART1 }, | ||
| 310 | Vector { _handler: USART2 }, | ||
| 311 | Vector { _handler: USART3 }, | ||
| 312 | Vector { | ||
| 313 | _handler: EXTI15_10, | ||
| 314 | }, | ||
| 315 | Vector { | ||
| 316 | _handler: RTC_Alarm, | ||
| 317 | }, | ||
| 318 | Vector { _reserved: 0 }, | ||
| 319 | Vector { _reserved: 0 }, | ||
| 320 | Vector { _reserved: 0 }, | ||
| 321 | Vector { _reserved: 0 }, | ||
| 322 | Vector { _reserved: 0 }, | ||
| 323 | Vector { _reserved: 0 }, | ||
| 324 | Vector { _reserved: 0 }, | ||
| 325 | Vector { _handler: SDMMC1 }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _handler: SPI3 }, | ||
| 328 | Vector { _handler: UART4 }, | ||
| 329 | Vector { _reserved: 0 }, | ||
| 330 | Vector { _handler: TIM6_DAC }, | ||
| 331 | Vector { _reserved: 0 }, | ||
| 332 | Vector { | ||
| 333 | _handler: DMA2_Channel1, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: DMA2_Channel2, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel3, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: DMA2_Channel4, | ||
| 343 | }, | ||
| 344 | Vector { | ||
| 345 | _handler: DMA2_Channel5, | ||
| 346 | }, | ||
| 347 | Vector { | ||
| 348 | _handler: DFSDM1_FLT0, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: DFSDM1_FLT1, | ||
| 352 | }, | ||
| 353 | Vector { _reserved: 0 }, | ||
| 354 | Vector { _handler: COMP }, | ||
| 355 | Vector { _handler: LPTIM1 }, | ||
| 356 | Vector { _handler: LPTIM2 }, | ||
| 357 | Vector { _reserved: 0 }, | ||
| 358 | Vector { | ||
| 359 | _handler: DMA2_Channel6, | ||
| 360 | }, | ||
| 361 | Vector { | ||
| 362 | _handler: DMA2_Channel7, | ||
| 363 | }, | ||
| 364 | Vector { _handler: LPUART1 }, | ||
| 365 | Vector { _handler: QUADSPI }, | ||
| 366 | Vector { _handler: I2C3_EV }, | ||
| 367 | Vector { _handler: I2C3_ER }, | ||
| 368 | Vector { _handler: SAI1 }, | ||
| 369 | Vector { _reserved: 0 }, | ||
| 370 | Vector { _reserved: 0 }, | ||
| 371 | Vector { _handler: TSC }, | ||
| 372 | Vector { _reserved: 0 }, | ||
| 373 | Vector { _reserved: 0 }, | ||
| 374 | Vector { _handler: RNG }, | ||
| 375 | Vector { _handler: FPU }, | ||
| 376 | Vector { _handler: CRS }, | ||
| 377 | Vector { _handler: I2C4_EV }, | ||
| 378 | Vector { _handler: I2C4_ER }, | ||
| 379 | ]; | ||
| 380 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 381 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 382 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 383 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l451ve.rs b/embassy-stm32/src/chip/stm32l451ve.rs index af1f601c7..464fdc4ac 100644 --- a/embassy-stm32/src/chip/stm32l451ve.rs +++ b/embassy-stm32/src/chip/stm32l451ve.rs | |||
| @@ -1,18 +1,383 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, | 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, |
| 11 | RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, | 11 | RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, |
| 12 | USART1, USART2, USART3, WWDG | 12 | UART4, USART1, USART2, USART3, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DFSDM1_FLT0 = 61, | ||
| 35 | DFSDM1_FLT1 = 62, | ||
| 36 | DMA1_Channel1 = 11, | ||
| 37 | DMA1_Channel2 = 12, | ||
| 38 | DMA1_Channel3 = 13, | ||
| 39 | DMA1_Channel4 = 14, | ||
| 40 | DMA1_Channel5 = 15, | ||
| 41 | DMA1_Channel6 = 16, | ||
| 42 | DMA1_Channel7 = 17, | ||
| 43 | DMA2_Channel1 = 56, | ||
| 44 | DMA2_Channel2 = 57, | ||
| 45 | DMA2_Channel3 = 58, | ||
| 46 | DMA2_Channel4 = 59, | ||
| 47 | DMA2_Channel5 = 60, | ||
| 48 | DMA2_Channel6 = 68, | ||
| 49 | DMA2_Channel7 = 69, | ||
| 50 | EXTI0 = 6, | ||
| 51 | EXTI1 = 7, | ||
| 52 | EXTI15_10 = 40, | ||
| 53 | EXTI2 = 8, | ||
| 54 | EXTI3 = 9, | ||
| 55 | EXTI4 = 10, | ||
| 56 | EXTI9_5 = 23, | ||
| 57 | FLASH = 4, | ||
| 58 | FPU = 81, | ||
| 59 | I2C1_ER = 32, | ||
| 60 | I2C1_EV = 31, | ||
| 61 | I2C2_ER = 34, | ||
| 62 | I2C2_EV = 33, | ||
| 63 | I2C3_ER = 73, | ||
| 64 | I2C3_EV = 72, | ||
| 65 | I2C4_ER = 84, | ||
| 66 | I2C4_EV = 83, | ||
| 67 | LPTIM1 = 65, | ||
| 68 | LPTIM2 = 66, | ||
| 69 | LPUART1 = 70, | ||
| 70 | PVD_PVM = 1, | ||
| 71 | QUADSPI = 71, | ||
| 72 | RCC = 5, | ||
| 73 | RNG = 80, | ||
| 74 | RTC_Alarm = 41, | ||
| 75 | RTC_WKUP = 3, | ||
| 76 | SAI1 = 74, | ||
| 77 | SDMMC1 = 49, | ||
| 78 | SPI1 = 35, | ||
| 79 | SPI2 = 36, | ||
| 80 | SPI3 = 51, | ||
| 81 | TAMP_STAMP = 2, | ||
| 82 | TIM1_BRK_TIM15 = 24, | ||
| 83 | TIM1_CC = 27, | ||
| 84 | TIM1_TRG_COM = 26, | ||
| 85 | TIM1_UP_TIM16 = 25, | ||
| 86 | TIM2 = 28, | ||
| 87 | TIM3 = 29, | ||
| 88 | TIM6_DAC = 54, | ||
| 89 | TSC = 77, | ||
| 90 | UART4 = 52, | ||
| 91 | USART1 = 37, | ||
| 92 | USART2 = 38, | ||
| 93 | USART3 = 39, | ||
| 94 | WWDG = 0, | ||
| 95 | } | ||
| 96 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 97 | #[inline(always)] | ||
| 98 | fn number(self) -> u16 { | ||
| 99 | self as u16 | ||
| 100 | } | ||
| 101 | } | ||
| 102 | |||
| 103 | declare!(ADC1); | ||
| 104 | declare!(CAN1_RX0); | ||
| 105 | declare!(CAN1_RX1); | ||
| 106 | declare!(CAN1_SCE); | ||
| 107 | declare!(CAN1_TX); | ||
| 108 | declare!(COMP); | ||
| 109 | declare!(CRS); | ||
| 110 | declare!(DFSDM1_FLT0); | ||
| 111 | declare!(DFSDM1_FLT1); | ||
| 112 | declare!(DMA1_Channel1); | ||
| 113 | declare!(DMA1_Channel2); | ||
| 114 | declare!(DMA1_Channel3); | ||
| 115 | declare!(DMA1_Channel4); | ||
| 116 | declare!(DMA1_Channel5); | ||
| 117 | declare!(DMA1_Channel6); | ||
| 118 | declare!(DMA1_Channel7); | ||
| 119 | declare!(DMA2_Channel1); | ||
| 120 | declare!(DMA2_Channel2); | ||
| 121 | declare!(DMA2_Channel3); | ||
| 122 | declare!(DMA2_Channel4); | ||
| 123 | declare!(DMA2_Channel5); | ||
| 124 | declare!(DMA2_Channel6); | ||
| 125 | declare!(DMA2_Channel7); | ||
| 126 | declare!(EXTI0); | ||
| 127 | declare!(EXTI1); | ||
| 128 | declare!(EXTI15_10); | ||
| 129 | declare!(EXTI2); | ||
| 130 | declare!(EXTI3); | ||
| 131 | declare!(EXTI4); | ||
| 132 | declare!(EXTI9_5); | ||
| 133 | declare!(FLASH); | ||
| 134 | declare!(FPU); | ||
| 135 | declare!(I2C1_ER); | ||
| 136 | declare!(I2C1_EV); | ||
| 137 | declare!(I2C2_ER); | ||
| 138 | declare!(I2C2_EV); | ||
| 139 | declare!(I2C3_ER); | ||
| 140 | declare!(I2C3_EV); | ||
| 141 | declare!(I2C4_ER); | ||
| 142 | declare!(I2C4_EV); | ||
| 143 | declare!(LPTIM1); | ||
| 144 | declare!(LPTIM2); | ||
| 145 | declare!(LPUART1); | ||
| 146 | declare!(PVD_PVM); | ||
| 147 | declare!(QUADSPI); | ||
| 148 | declare!(RCC); | ||
| 149 | declare!(RNG); | ||
| 150 | declare!(RTC_Alarm); | ||
| 151 | declare!(RTC_WKUP); | ||
| 152 | declare!(SAI1); | ||
| 153 | declare!(SDMMC1); | ||
| 154 | declare!(SPI1); | ||
| 155 | declare!(SPI2); | ||
| 156 | declare!(SPI3); | ||
| 157 | declare!(TAMP_STAMP); | ||
| 158 | declare!(TIM1_BRK_TIM15); | ||
| 159 | declare!(TIM1_CC); | ||
| 160 | declare!(TIM1_TRG_COM); | ||
| 161 | declare!(TIM1_UP_TIM16); | ||
| 162 | declare!(TIM2); | ||
| 163 | declare!(TIM3); | ||
| 164 | declare!(TIM6_DAC); | ||
| 165 | declare!(TSC); | ||
| 166 | declare!(UART4); | ||
| 167 | declare!(USART1); | ||
| 168 | declare!(USART2); | ||
| 169 | declare!(USART3); | ||
| 170 | declare!(WWDG); | ||
| 171 | } | ||
| 172 | mod interrupt_vector { | ||
| 173 | extern "C" { | ||
| 174 | fn ADC1(); | ||
| 175 | fn CAN1_RX0(); | ||
| 176 | fn CAN1_RX1(); | ||
| 177 | fn CAN1_SCE(); | ||
| 178 | fn CAN1_TX(); | ||
| 179 | fn COMP(); | ||
| 180 | fn CRS(); | ||
| 181 | fn DFSDM1_FLT0(); | ||
| 182 | fn DFSDM1_FLT1(); | ||
| 183 | fn DMA1_Channel1(); | ||
| 184 | fn DMA1_Channel2(); | ||
| 185 | fn DMA1_Channel3(); | ||
| 186 | fn DMA1_Channel4(); | ||
| 187 | fn DMA1_Channel5(); | ||
| 188 | fn DMA1_Channel6(); | ||
| 189 | fn DMA1_Channel7(); | ||
| 190 | fn DMA2_Channel1(); | ||
| 191 | fn DMA2_Channel2(); | ||
| 192 | fn DMA2_Channel3(); | ||
| 193 | fn DMA2_Channel4(); | ||
| 194 | fn DMA2_Channel5(); | ||
| 195 | fn DMA2_Channel6(); | ||
| 196 | fn DMA2_Channel7(); | ||
| 197 | fn EXTI0(); | ||
| 198 | fn EXTI1(); | ||
| 199 | fn EXTI15_10(); | ||
| 200 | fn EXTI2(); | ||
| 201 | fn EXTI3(); | ||
| 202 | fn EXTI4(); | ||
| 203 | fn EXTI9_5(); | ||
| 204 | fn FLASH(); | ||
| 205 | fn FPU(); | ||
| 206 | fn I2C1_ER(); | ||
| 207 | fn I2C1_EV(); | ||
| 208 | fn I2C2_ER(); | ||
| 209 | fn I2C2_EV(); | ||
| 210 | fn I2C3_ER(); | ||
| 211 | fn I2C3_EV(); | ||
| 212 | fn I2C4_ER(); | ||
| 213 | fn I2C4_EV(); | ||
| 214 | fn LPTIM1(); | ||
| 215 | fn LPTIM2(); | ||
| 216 | fn LPUART1(); | ||
| 217 | fn PVD_PVM(); | ||
| 218 | fn QUADSPI(); | ||
| 219 | fn RCC(); | ||
| 220 | fn RNG(); | ||
| 221 | fn RTC_Alarm(); | ||
| 222 | fn RTC_WKUP(); | ||
| 223 | fn SAI1(); | ||
| 224 | fn SDMMC1(); | ||
| 225 | fn SPI1(); | ||
| 226 | fn SPI2(); | ||
| 227 | fn SPI3(); | ||
| 228 | fn TAMP_STAMP(); | ||
| 229 | fn TIM1_BRK_TIM15(); | ||
| 230 | fn TIM1_CC(); | ||
| 231 | fn TIM1_TRG_COM(); | ||
| 232 | fn TIM1_UP_TIM16(); | ||
| 233 | fn TIM2(); | ||
| 234 | fn TIM3(); | ||
| 235 | fn TIM6_DAC(); | ||
| 236 | fn TSC(); | ||
| 237 | fn UART4(); | ||
| 238 | fn USART1(); | ||
| 239 | fn USART2(); | ||
| 240 | fn USART3(); | ||
| 241 | fn WWDG(); | ||
| 242 | } | ||
| 243 | pub union Vector { | ||
| 244 | _handler: unsafe extern "C" fn(), | ||
| 245 | _reserved: u32, | ||
| 246 | } | ||
| 247 | #[link_section = ".vector_table.interrupts"] | ||
| 248 | #[no_mangle] | ||
| 249 | pub static __INTERRUPTS: [Vector; 85] = [ | ||
| 250 | Vector { _handler: WWDG }, | ||
| 251 | Vector { _handler: PVD_PVM }, | ||
| 252 | Vector { | ||
| 253 | _handler: TAMP_STAMP, | ||
| 254 | }, | ||
| 255 | Vector { _handler: RTC_WKUP }, | ||
| 256 | Vector { _handler: FLASH }, | ||
| 257 | Vector { _handler: RCC }, | ||
| 258 | Vector { _handler: EXTI0 }, | ||
| 259 | Vector { _handler: EXTI1 }, | ||
| 260 | Vector { _handler: EXTI2 }, | ||
| 261 | Vector { _handler: EXTI3 }, | ||
| 262 | Vector { _handler: EXTI4 }, | ||
| 263 | Vector { | ||
| 264 | _handler: DMA1_Channel1, | ||
| 265 | }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel2, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel3, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel4, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel5, | ||
| 277 | }, | ||
| 278 | Vector { | ||
| 279 | _handler: DMA1_Channel6, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: DMA1_Channel7, | ||
| 283 | }, | ||
| 284 | Vector { _handler: ADC1 }, | ||
| 285 | Vector { _handler: CAN1_TX }, | ||
| 286 | Vector { _handler: CAN1_RX0 }, | ||
| 287 | Vector { _handler: CAN1_RX1 }, | ||
| 288 | Vector { _handler: CAN1_SCE }, | ||
| 289 | Vector { _handler: EXTI9_5 }, | ||
| 290 | Vector { | ||
| 291 | _handler: TIM1_BRK_TIM15, | ||
| 292 | }, | ||
| 293 | Vector { | ||
| 294 | _handler: TIM1_UP_TIM16, | ||
| 295 | }, | ||
| 296 | Vector { | ||
| 297 | _handler: TIM1_TRG_COM, | ||
| 298 | }, | ||
| 299 | Vector { _handler: TIM1_CC }, | ||
| 300 | Vector { _handler: TIM2 }, | ||
| 301 | Vector { _handler: TIM3 }, | ||
| 302 | Vector { _reserved: 0 }, | ||
| 303 | Vector { _handler: I2C1_EV }, | ||
| 304 | Vector { _handler: I2C1_ER }, | ||
| 305 | Vector { _handler: I2C2_EV }, | ||
| 306 | Vector { _handler: I2C2_ER }, | ||
| 307 | Vector { _handler: SPI1 }, | ||
| 308 | Vector { _handler: SPI2 }, | ||
| 309 | Vector { _handler: USART1 }, | ||
| 310 | Vector { _handler: USART2 }, | ||
| 311 | Vector { _handler: USART3 }, | ||
| 312 | Vector { | ||
| 313 | _handler: EXTI15_10, | ||
| 314 | }, | ||
| 315 | Vector { | ||
| 316 | _handler: RTC_Alarm, | ||
| 317 | }, | ||
| 318 | Vector { _reserved: 0 }, | ||
| 319 | Vector { _reserved: 0 }, | ||
| 320 | Vector { _reserved: 0 }, | ||
| 321 | Vector { _reserved: 0 }, | ||
| 322 | Vector { _reserved: 0 }, | ||
| 323 | Vector { _reserved: 0 }, | ||
| 324 | Vector { _reserved: 0 }, | ||
| 325 | Vector { _handler: SDMMC1 }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _handler: SPI3 }, | ||
| 328 | Vector { _handler: UART4 }, | ||
| 329 | Vector { _reserved: 0 }, | ||
| 330 | Vector { _handler: TIM6_DAC }, | ||
| 331 | Vector { _reserved: 0 }, | ||
| 332 | Vector { | ||
| 333 | _handler: DMA2_Channel1, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: DMA2_Channel2, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel3, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: DMA2_Channel4, | ||
| 343 | }, | ||
| 344 | Vector { | ||
| 345 | _handler: DMA2_Channel5, | ||
| 346 | }, | ||
| 347 | Vector { | ||
| 348 | _handler: DFSDM1_FLT0, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: DFSDM1_FLT1, | ||
| 352 | }, | ||
| 353 | Vector { _reserved: 0 }, | ||
| 354 | Vector { _handler: COMP }, | ||
| 355 | Vector { _handler: LPTIM1 }, | ||
| 356 | Vector { _handler: LPTIM2 }, | ||
| 357 | Vector { _reserved: 0 }, | ||
| 358 | Vector { | ||
| 359 | _handler: DMA2_Channel6, | ||
| 360 | }, | ||
| 361 | Vector { | ||
| 362 | _handler: DMA2_Channel7, | ||
| 363 | }, | ||
| 364 | Vector { _handler: LPUART1 }, | ||
| 365 | Vector { _handler: QUADSPI }, | ||
| 366 | Vector { _handler: I2C3_EV }, | ||
| 367 | Vector { _handler: I2C3_ER }, | ||
| 368 | Vector { _handler: SAI1 }, | ||
| 369 | Vector { _reserved: 0 }, | ||
| 370 | Vector { _reserved: 0 }, | ||
| 371 | Vector { _handler: TSC }, | ||
| 372 | Vector { _reserved: 0 }, | ||
| 373 | Vector { _reserved: 0 }, | ||
| 374 | Vector { _handler: RNG }, | ||
| 375 | Vector { _handler: FPU }, | ||
| 376 | Vector { _handler: CRS }, | ||
| 377 | Vector { _handler: I2C4_EV }, | ||
| 378 | Vector { _handler: I2C4_ER }, | ||
| 379 | ]; | ||
| 380 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 381 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 382 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 383 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l452cc.rs b/embassy-stm32/src/chip/stm32l452cc.rs index 9c348ae47..ef4a256e5 100644 --- a/embassy-stm32/src/chip/stm32l452cc.rs +++ b/embassy-stm32/src/chip/stm32l452cc.rs | |||
| @@ -1,18 +1,386 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, | 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, |
| 11 | RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, USART1, | 11 | RNG, RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, |
| 12 | USART2, USART3, USB, WWDG | 12 | USART1, USART2, USART3, USB, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DFSDM1_FLT0 = 61, | ||
| 35 | DFSDM1_FLT1 = 62, | ||
| 36 | DMA1_Channel1 = 11, | ||
| 37 | DMA1_Channel2 = 12, | ||
| 38 | DMA1_Channel3 = 13, | ||
| 39 | DMA1_Channel4 = 14, | ||
| 40 | DMA1_Channel5 = 15, | ||
| 41 | DMA1_Channel6 = 16, | ||
| 42 | DMA1_Channel7 = 17, | ||
| 43 | DMA2_Channel1 = 56, | ||
| 44 | DMA2_Channel2 = 57, | ||
| 45 | DMA2_Channel3 = 58, | ||
| 46 | DMA2_Channel4 = 59, | ||
| 47 | DMA2_Channel5 = 60, | ||
| 48 | DMA2_Channel6 = 68, | ||
| 49 | DMA2_Channel7 = 69, | ||
| 50 | EXTI0 = 6, | ||
| 51 | EXTI1 = 7, | ||
| 52 | EXTI15_10 = 40, | ||
| 53 | EXTI2 = 8, | ||
| 54 | EXTI3 = 9, | ||
| 55 | EXTI4 = 10, | ||
| 56 | EXTI9_5 = 23, | ||
| 57 | FLASH = 4, | ||
| 58 | FPU = 81, | ||
| 59 | I2C1_ER = 32, | ||
| 60 | I2C1_EV = 31, | ||
| 61 | I2C2_ER = 34, | ||
| 62 | I2C2_EV = 33, | ||
| 63 | I2C3_ER = 73, | ||
| 64 | I2C3_EV = 72, | ||
| 65 | I2C4_ER = 84, | ||
| 66 | I2C4_EV = 83, | ||
| 67 | LPTIM1 = 65, | ||
| 68 | LPTIM2 = 66, | ||
| 69 | LPUART1 = 70, | ||
| 70 | PVD_PVM = 1, | ||
| 71 | QUADSPI = 71, | ||
| 72 | RCC = 5, | ||
| 73 | RNG = 80, | ||
| 74 | RTC_Alarm = 41, | ||
| 75 | RTC_WKUP = 3, | ||
| 76 | SAI1 = 74, | ||
| 77 | SDMMC1 = 49, | ||
| 78 | SPI1 = 35, | ||
| 79 | SPI2 = 36, | ||
| 80 | SPI3 = 51, | ||
| 81 | TAMP_STAMP = 2, | ||
| 82 | TIM1_BRK_TIM15 = 24, | ||
| 83 | TIM1_CC = 27, | ||
| 84 | TIM1_TRG_COM = 26, | ||
| 85 | TIM1_UP_TIM16 = 25, | ||
| 86 | TIM2 = 28, | ||
| 87 | TIM3 = 29, | ||
| 88 | TIM6_DAC = 54, | ||
| 89 | TSC = 77, | ||
| 90 | UART4 = 52, | ||
| 91 | USART1 = 37, | ||
| 92 | USART2 = 38, | ||
| 93 | USART3 = 39, | ||
| 94 | USB = 67, | ||
| 95 | WWDG = 0, | ||
| 96 | } | ||
| 97 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 98 | #[inline(always)] | ||
| 99 | fn number(self) -> u16 { | ||
| 100 | self as u16 | ||
| 101 | } | ||
| 102 | } | ||
| 103 | |||
| 104 | declare!(ADC1); | ||
| 105 | declare!(CAN1_RX0); | ||
| 106 | declare!(CAN1_RX1); | ||
| 107 | declare!(CAN1_SCE); | ||
| 108 | declare!(CAN1_TX); | ||
| 109 | declare!(COMP); | ||
| 110 | declare!(CRS); | ||
| 111 | declare!(DFSDM1_FLT0); | ||
| 112 | declare!(DFSDM1_FLT1); | ||
| 113 | declare!(DMA1_Channel1); | ||
| 114 | declare!(DMA1_Channel2); | ||
| 115 | declare!(DMA1_Channel3); | ||
| 116 | declare!(DMA1_Channel4); | ||
| 117 | declare!(DMA1_Channel5); | ||
| 118 | declare!(DMA1_Channel6); | ||
| 119 | declare!(DMA1_Channel7); | ||
| 120 | declare!(DMA2_Channel1); | ||
| 121 | declare!(DMA2_Channel2); | ||
| 122 | declare!(DMA2_Channel3); | ||
| 123 | declare!(DMA2_Channel4); | ||
| 124 | declare!(DMA2_Channel5); | ||
| 125 | declare!(DMA2_Channel6); | ||
| 126 | declare!(DMA2_Channel7); | ||
| 127 | declare!(EXTI0); | ||
| 128 | declare!(EXTI1); | ||
| 129 | declare!(EXTI15_10); | ||
| 130 | declare!(EXTI2); | ||
| 131 | declare!(EXTI3); | ||
| 132 | declare!(EXTI4); | ||
| 133 | declare!(EXTI9_5); | ||
| 134 | declare!(FLASH); | ||
| 135 | declare!(FPU); | ||
| 136 | declare!(I2C1_ER); | ||
| 137 | declare!(I2C1_EV); | ||
| 138 | declare!(I2C2_ER); | ||
| 139 | declare!(I2C2_EV); | ||
| 140 | declare!(I2C3_ER); | ||
| 141 | declare!(I2C3_EV); | ||
| 142 | declare!(I2C4_ER); | ||
| 143 | declare!(I2C4_EV); | ||
| 144 | declare!(LPTIM1); | ||
| 145 | declare!(LPTIM2); | ||
| 146 | declare!(LPUART1); | ||
| 147 | declare!(PVD_PVM); | ||
| 148 | declare!(QUADSPI); | ||
| 149 | declare!(RCC); | ||
| 150 | declare!(RNG); | ||
| 151 | declare!(RTC_Alarm); | ||
| 152 | declare!(RTC_WKUP); | ||
| 153 | declare!(SAI1); | ||
| 154 | declare!(SDMMC1); | ||
| 155 | declare!(SPI1); | ||
| 156 | declare!(SPI2); | ||
| 157 | declare!(SPI3); | ||
| 158 | declare!(TAMP_STAMP); | ||
| 159 | declare!(TIM1_BRK_TIM15); | ||
| 160 | declare!(TIM1_CC); | ||
| 161 | declare!(TIM1_TRG_COM); | ||
| 162 | declare!(TIM1_UP_TIM16); | ||
| 163 | declare!(TIM2); | ||
| 164 | declare!(TIM3); | ||
| 165 | declare!(TIM6_DAC); | ||
| 166 | declare!(TSC); | ||
| 167 | declare!(UART4); | ||
| 168 | declare!(USART1); | ||
| 169 | declare!(USART2); | ||
| 170 | declare!(USART3); | ||
| 171 | declare!(USB); | ||
| 172 | declare!(WWDG); | ||
| 173 | } | ||
| 174 | mod interrupt_vector { | ||
| 175 | extern "C" { | ||
| 176 | fn ADC1(); | ||
| 177 | fn CAN1_RX0(); | ||
| 178 | fn CAN1_RX1(); | ||
| 179 | fn CAN1_SCE(); | ||
| 180 | fn CAN1_TX(); | ||
| 181 | fn COMP(); | ||
| 182 | fn CRS(); | ||
| 183 | fn DFSDM1_FLT0(); | ||
| 184 | fn DFSDM1_FLT1(); | ||
| 185 | fn DMA1_Channel1(); | ||
| 186 | fn DMA1_Channel2(); | ||
| 187 | fn DMA1_Channel3(); | ||
| 188 | fn DMA1_Channel4(); | ||
| 189 | fn DMA1_Channel5(); | ||
| 190 | fn DMA1_Channel6(); | ||
| 191 | fn DMA1_Channel7(); | ||
| 192 | fn DMA2_Channel1(); | ||
| 193 | fn DMA2_Channel2(); | ||
| 194 | fn DMA2_Channel3(); | ||
| 195 | fn DMA2_Channel4(); | ||
| 196 | fn DMA2_Channel5(); | ||
| 197 | fn DMA2_Channel6(); | ||
| 198 | fn DMA2_Channel7(); | ||
| 199 | fn EXTI0(); | ||
| 200 | fn EXTI1(); | ||
| 201 | fn EXTI15_10(); | ||
| 202 | fn EXTI2(); | ||
| 203 | fn EXTI3(); | ||
| 204 | fn EXTI4(); | ||
| 205 | fn EXTI9_5(); | ||
| 206 | fn FLASH(); | ||
| 207 | fn FPU(); | ||
| 208 | fn I2C1_ER(); | ||
| 209 | fn I2C1_EV(); | ||
| 210 | fn I2C2_ER(); | ||
| 211 | fn I2C2_EV(); | ||
| 212 | fn I2C3_ER(); | ||
| 213 | fn I2C3_EV(); | ||
| 214 | fn I2C4_ER(); | ||
| 215 | fn I2C4_EV(); | ||
| 216 | fn LPTIM1(); | ||
| 217 | fn LPTIM2(); | ||
| 218 | fn LPUART1(); | ||
| 219 | fn PVD_PVM(); | ||
| 220 | fn QUADSPI(); | ||
| 221 | fn RCC(); | ||
| 222 | fn RNG(); | ||
| 223 | fn RTC_Alarm(); | ||
| 224 | fn RTC_WKUP(); | ||
| 225 | fn SAI1(); | ||
| 226 | fn SDMMC1(); | ||
| 227 | fn SPI1(); | ||
| 228 | fn SPI2(); | ||
| 229 | fn SPI3(); | ||
| 230 | fn TAMP_STAMP(); | ||
| 231 | fn TIM1_BRK_TIM15(); | ||
| 232 | fn TIM1_CC(); | ||
| 233 | fn TIM1_TRG_COM(); | ||
| 234 | fn TIM1_UP_TIM16(); | ||
| 235 | fn TIM2(); | ||
| 236 | fn TIM3(); | ||
| 237 | fn TIM6_DAC(); | ||
| 238 | fn TSC(); | ||
| 239 | fn UART4(); | ||
| 240 | fn USART1(); | ||
| 241 | fn USART2(); | ||
| 242 | fn USART3(); | ||
| 243 | fn USB(); | ||
| 244 | fn WWDG(); | ||
| 245 | } | ||
| 246 | pub union Vector { | ||
| 247 | _handler: unsafe extern "C" fn(), | ||
| 248 | _reserved: u32, | ||
| 249 | } | ||
| 250 | #[link_section = ".vector_table.interrupts"] | ||
| 251 | #[no_mangle] | ||
| 252 | pub static __INTERRUPTS: [Vector; 85] = [ | ||
| 253 | Vector { _handler: WWDG }, | ||
| 254 | Vector { _handler: PVD_PVM }, | ||
| 255 | Vector { | ||
| 256 | _handler: TAMP_STAMP, | ||
| 257 | }, | ||
| 258 | Vector { _handler: RTC_WKUP }, | ||
| 259 | Vector { _handler: FLASH }, | ||
| 260 | Vector { _handler: RCC }, | ||
| 261 | Vector { _handler: EXTI0 }, | ||
| 262 | Vector { _handler: EXTI1 }, | ||
| 263 | Vector { _handler: EXTI2 }, | ||
| 264 | Vector { _handler: EXTI3 }, | ||
| 265 | Vector { _handler: EXTI4 }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel1, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel2, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel3, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel4, | ||
| 277 | }, | ||
| 278 | Vector { | ||
| 279 | _handler: DMA1_Channel5, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: DMA1_Channel6, | ||
| 283 | }, | ||
| 284 | Vector { | ||
| 285 | _handler: DMA1_Channel7, | ||
| 286 | }, | ||
| 287 | Vector { _handler: ADC1 }, | ||
| 288 | Vector { _handler: CAN1_TX }, | ||
| 289 | Vector { _handler: CAN1_RX0 }, | ||
| 290 | Vector { _handler: CAN1_RX1 }, | ||
| 291 | Vector { _handler: CAN1_SCE }, | ||
| 292 | Vector { _handler: EXTI9_5 }, | ||
| 293 | Vector { | ||
| 294 | _handler: TIM1_BRK_TIM15, | ||
| 295 | }, | ||
| 296 | Vector { | ||
| 297 | _handler: TIM1_UP_TIM16, | ||
| 298 | }, | ||
| 299 | Vector { | ||
| 300 | _handler: TIM1_TRG_COM, | ||
| 301 | }, | ||
| 302 | Vector { _handler: TIM1_CC }, | ||
| 303 | Vector { _handler: TIM2 }, | ||
| 304 | Vector { _handler: TIM3 }, | ||
| 305 | Vector { _reserved: 0 }, | ||
| 306 | Vector { _handler: I2C1_EV }, | ||
| 307 | Vector { _handler: I2C1_ER }, | ||
| 308 | Vector { _handler: I2C2_EV }, | ||
| 309 | Vector { _handler: I2C2_ER }, | ||
| 310 | Vector { _handler: SPI1 }, | ||
| 311 | Vector { _handler: SPI2 }, | ||
| 312 | Vector { _handler: USART1 }, | ||
| 313 | Vector { _handler: USART2 }, | ||
| 314 | Vector { _handler: USART3 }, | ||
| 315 | Vector { | ||
| 316 | _handler: EXTI15_10, | ||
| 317 | }, | ||
| 318 | Vector { | ||
| 319 | _handler: RTC_Alarm, | ||
| 320 | }, | ||
| 321 | Vector { _reserved: 0 }, | ||
| 322 | Vector { _reserved: 0 }, | ||
| 323 | Vector { _reserved: 0 }, | ||
| 324 | Vector { _reserved: 0 }, | ||
| 325 | Vector { _reserved: 0 }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _reserved: 0 }, | ||
| 328 | Vector { _handler: SDMMC1 }, | ||
| 329 | Vector { _reserved: 0 }, | ||
| 330 | Vector { _handler: SPI3 }, | ||
| 331 | Vector { _handler: UART4 }, | ||
| 332 | Vector { _reserved: 0 }, | ||
| 333 | Vector { _handler: TIM6_DAC }, | ||
| 334 | Vector { _reserved: 0 }, | ||
| 335 | Vector { | ||
| 336 | _handler: DMA2_Channel1, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel2, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: DMA2_Channel3, | ||
| 343 | }, | ||
| 344 | Vector { | ||
| 345 | _handler: DMA2_Channel4, | ||
| 346 | }, | ||
| 347 | Vector { | ||
| 348 | _handler: DMA2_Channel5, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: DFSDM1_FLT0, | ||
| 352 | }, | ||
| 353 | Vector { | ||
| 354 | _handler: DFSDM1_FLT1, | ||
| 355 | }, | ||
| 356 | Vector { _reserved: 0 }, | ||
| 357 | Vector { _handler: COMP }, | ||
| 358 | Vector { _handler: LPTIM1 }, | ||
| 359 | Vector { _handler: LPTIM2 }, | ||
| 360 | Vector { _handler: USB }, | ||
| 361 | Vector { | ||
| 362 | _handler: DMA2_Channel6, | ||
| 363 | }, | ||
| 364 | Vector { | ||
| 365 | _handler: DMA2_Channel7, | ||
| 366 | }, | ||
| 367 | Vector { _handler: LPUART1 }, | ||
| 368 | Vector { _handler: QUADSPI }, | ||
| 369 | Vector { _handler: I2C3_EV }, | ||
| 370 | Vector { _handler: I2C3_ER }, | ||
| 371 | Vector { _handler: SAI1 }, | ||
| 372 | Vector { _reserved: 0 }, | ||
| 373 | Vector { _reserved: 0 }, | ||
| 374 | Vector { _handler: TSC }, | ||
| 375 | Vector { _reserved: 0 }, | ||
| 376 | Vector { _reserved: 0 }, | ||
| 377 | Vector { _handler: RNG }, | ||
| 378 | Vector { _handler: FPU }, | ||
| 379 | Vector { _handler: CRS }, | ||
| 380 | Vector { _handler: I2C4_EV }, | ||
| 381 | Vector { _handler: I2C4_ER }, | ||
| 382 | ]; | ||
| 383 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 384 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 385 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 386 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l452ce.rs b/embassy-stm32/src/chip/stm32l452ce.rs index 9c348ae47..ef4a256e5 100644 --- a/embassy-stm32/src/chip/stm32l452ce.rs +++ b/embassy-stm32/src/chip/stm32l452ce.rs | |||
| @@ -1,18 +1,386 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, | 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, |
| 11 | RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, USART1, | 11 | RNG, RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, |
| 12 | USART2, USART3, USB, WWDG | 12 | USART1, USART2, USART3, USB, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DFSDM1_FLT0 = 61, | ||
| 35 | DFSDM1_FLT1 = 62, | ||
| 36 | DMA1_Channel1 = 11, | ||
| 37 | DMA1_Channel2 = 12, | ||
| 38 | DMA1_Channel3 = 13, | ||
| 39 | DMA1_Channel4 = 14, | ||
| 40 | DMA1_Channel5 = 15, | ||
| 41 | DMA1_Channel6 = 16, | ||
| 42 | DMA1_Channel7 = 17, | ||
| 43 | DMA2_Channel1 = 56, | ||
| 44 | DMA2_Channel2 = 57, | ||
| 45 | DMA2_Channel3 = 58, | ||
| 46 | DMA2_Channel4 = 59, | ||
| 47 | DMA2_Channel5 = 60, | ||
| 48 | DMA2_Channel6 = 68, | ||
| 49 | DMA2_Channel7 = 69, | ||
| 50 | EXTI0 = 6, | ||
| 51 | EXTI1 = 7, | ||
| 52 | EXTI15_10 = 40, | ||
| 53 | EXTI2 = 8, | ||
| 54 | EXTI3 = 9, | ||
| 55 | EXTI4 = 10, | ||
| 56 | EXTI9_5 = 23, | ||
| 57 | FLASH = 4, | ||
| 58 | FPU = 81, | ||
| 59 | I2C1_ER = 32, | ||
| 60 | I2C1_EV = 31, | ||
| 61 | I2C2_ER = 34, | ||
| 62 | I2C2_EV = 33, | ||
| 63 | I2C3_ER = 73, | ||
| 64 | I2C3_EV = 72, | ||
| 65 | I2C4_ER = 84, | ||
| 66 | I2C4_EV = 83, | ||
| 67 | LPTIM1 = 65, | ||
| 68 | LPTIM2 = 66, | ||
| 69 | LPUART1 = 70, | ||
| 70 | PVD_PVM = 1, | ||
| 71 | QUADSPI = 71, | ||
| 72 | RCC = 5, | ||
| 73 | RNG = 80, | ||
| 74 | RTC_Alarm = 41, | ||
| 75 | RTC_WKUP = 3, | ||
| 76 | SAI1 = 74, | ||
| 77 | SDMMC1 = 49, | ||
| 78 | SPI1 = 35, | ||
| 79 | SPI2 = 36, | ||
| 80 | SPI3 = 51, | ||
| 81 | TAMP_STAMP = 2, | ||
| 82 | TIM1_BRK_TIM15 = 24, | ||
| 83 | TIM1_CC = 27, | ||
| 84 | TIM1_TRG_COM = 26, | ||
| 85 | TIM1_UP_TIM16 = 25, | ||
| 86 | TIM2 = 28, | ||
| 87 | TIM3 = 29, | ||
| 88 | TIM6_DAC = 54, | ||
| 89 | TSC = 77, | ||
| 90 | UART4 = 52, | ||
| 91 | USART1 = 37, | ||
| 92 | USART2 = 38, | ||
| 93 | USART3 = 39, | ||
| 94 | USB = 67, | ||
| 95 | WWDG = 0, | ||
| 96 | } | ||
| 97 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 98 | #[inline(always)] | ||
| 99 | fn number(self) -> u16 { | ||
| 100 | self as u16 | ||
| 101 | } | ||
| 102 | } | ||
| 103 | |||
| 104 | declare!(ADC1); | ||
| 105 | declare!(CAN1_RX0); | ||
| 106 | declare!(CAN1_RX1); | ||
| 107 | declare!(CAN1_SCE); | ||
| 108 | declare!(CAN1_TX); | ||
| 109 | declare!(COMP); | ||
| 110 | declare!(CRS); | ||
| 111 | declare!(DFSDM1_FLT0); | ||
| 112 | declare!(DFSDM1_FLT1); | ||
| 113 | declare!(DMA1_Channel1); | ||
| 114 | declare!(DMA1_Channel2); | ||
| 115 | declare!(DMA1_Channel3); | ||
| 116 | declare!(DMA1_Channel4); | ||
| 117 | declare!(DMA1_Channel5); | ||
| 118 | declare!(DMA1_Channel6); | ||
| 119 | declare!(DMA1_Channel7); | ||
| 120 | declare!(DMA2_Channel1); | ||
| 121 | declare!(DMA2_Channel2); | ||
| 122 | declare!(DMA2_Channel3); | ||
| 123 | declare!(DMA2_Channel4); | ||
| 124 | declare!(DMA2_Channel5); | ||
| 125 | declare!(DMA2_Channel6); | ||
| 126 | declare!(DMA2_Channel7); | ||
| 127 | declare!(EXTI0); | ||
| 128 | declare!(EXTI1); | ||
| 129 | declare!(EXTI15_10); | ||
| 130 | declare!(EXTI2); | ||
| 131 | declare!(EXTI3); | ||
| 132 | declare!(EXTI4); | ||
| 133 | declare!(EXTI9_5); | ||
| 134 | declare!(FLASH); | ||
| 135 | declare!(FPU); | ||
| 136 | declare!(I2C1_ER); | ||
| 137 | declare!(I2C1_EV); | ||
| 138 | declare!(I2C2_ER); | ||
| 139 | declare!(I2C2_EV); | ||
| 140 | declare!(I2C3_ER); | ||
| 141 | declare!(I2C3_EV); | ||
| 142 | declare!(I2C4_ER); | ||
| 143 | declare!(I2C4_EV); | ||
| 144 | declare!(LPTIM1); | ||
| 145 | declare!(LPTIM2); | ||
| 146 | declare!(LPUART1); | ||
| 147 | declare!(PVD_PVM); | ||
| 148 | declare!(QUADSPI); | ||
| 149 | declare!(RCC); | ||
| 150 | declare!(RNG); | ||
| 151 | declare!(RTC_Alarm); | ||
| 152 | declare!(RTC_WKUP); | ||
| 153 | declare!(SAI1); | ||
| 154 | declare!(SDMMC1); | ||
| 155 | declare!(SPI1); | ||
| 156 | declare!(SPI2); | ||
| 157 | declare!(SPI3); | ||
| 158 | declare!(TAMP_STAMP); | ||
| 159 | declare!(TIM1_BRK_TIM15); | ||
| 160 | declare!(TIM1_CC); | ||
| 161 | declare!(TIM1_TRG_COM); | ||
| 162 | declare!(TIM1_UP_TIM16); | ||
| 163 | declare!(TIM2); | ||
| 164 | declare!(TIM3); | ||
| 165 | declare!(TIM6_DAC); | ||
| 166 | declare!(TSC); | ||
| 167 | declare!(UART4); | ||
| 168 | declare!(USART1); | ||
| 169 | declare!(USART2); | ||
| 170 | declare!(USART3); | ||
| 171 | declare!(USB); | ||
| 172 | declare!(WWDG); | ||
| 173 | } | ||
| 174 | mod interrupt_vector { | ||
| 175 | extern "C" { | ||
| 176 | fn ADC1(); | ||
| 177 | fn CAN1_RX0(); | ||
| 178 | fn CAN1_RX1(); | ||
| 179 | fn CAN1_SCE(); | ||
| 180 | fn CAN1_TX(); | ||
| 181 | fn COMP(); | ||
| 182 | fn CRS(); | ||
| 183 | fn DFSDM1_FLT0(); | ||
| 184 | fn DFSDM1_FLT1(); | ||
| 185 | fn DMA1_Channel1(); | ||
| 186 | fn DMA1_Channel2(); | ||
| 187 | fn DMA1_Channel3(); | ||
| 188 | fn DMA1_Channel4(); | ||
| 189 | fn DMA1_Channel5(); | ||
| 190 | fn DMA1_Channel6(); | ||
| 191 | fn DMA1_Channel7(); | ||
| 192 | fn DMA2_Channel1(); | ||
| 193 | fn DMA2_Channel2(); | ||
| 194 | fn DMA2_Channel3(); | ||
| 195 | fn DMA2_Channel4(); | ||
| 196 | fn DMA2_Channel5(); | ||
| 197 | fn DMA2_Channel6(); | ||
| 198 | fn DMA2_Channel7(); | ||
| 199 | fn EXTI0(); | ||
| 200 | fn EXTI1(); | ||
| 201 | fn EXTI15_10(); | ||
| 202 | fn EXTI2(); | ||
| 203 | fn EXTI3(); | ||
| 204 | fn EXTI4(); | ||
| 205 | fn EXTI9_5(); | ||
| 206 | fn FLASH(); | ||
| 207 | fn FPU(); | ||
| 208 | fn I2C1_ER(); | ||
| 209 | fn I2C1_EV(); | ||
| 210 | fn I2C2_ER(); | ||
| 211 | fn I2C2_EV(); | ||
| 212 | fn I2C3_ER(); | ||
| 213 | fn I2C3_EV(); | ||
| 214 | fn I2C4_ER(); | ||
| 215 | fn I2C4_EV(); | ||
| 216 | fn LPTIM1(); | ||
| 217 | fn LPTIM2(); | ||
| 218 | fn LPUART1(); | ||
| 219 | fn PVD_PVM(); | ||
| 220 | fn QUADSPI(); | ||
| 221 | fn RCC(); | ||
| 222 | fn RNG(); | ||
| 223 | fn RTC_Alarm(); | ||
| 224 | fn RTC_WKUP(); | ||
| 225 | fn SAI1(); | ||
| 226 | fn SDMMC1(); | ||
| 227 | fn SPI1(); | ||
| 228 | fn SPI2(); | ||
| 229 | fn SPI3(); | ||
| 230 | fn TAMP_STAMP(); | ||
| 231 | fn TIM1_BRK_TIM15(); | ||
| 232 | fn TIM1_CC(); | ||
| 233 | fn TIM1_TRG_COM(); | ||
| 234 | fn TIM1_UP_TIM16(); | ||
| 235 | fn TIM2(); | ||
| 236 | fn TIM3(); | ||
| 237 | fn TIM6_DAC(); | ||
| 238 | fn TSC(); | ||
| 239 | fn UART4(); | ||
| 240 | fn USART1(); | ||
| 241 | fn USART2(); | ||
| 242 | fn USART3(); | ||
| 243 | fn USB(); | ||
| 244 | fn WWDG(); | ||
| 245 | } | ||
| 246 | pub union Vector { | ||
| 247 | _handler: unsafe extern "C" fn(), | ||
| 248 | _reserved: u32, | ||
| 249 | } | ||
| 250 | #[link_section = ".vector_table.interrupts"] | ||
| 251 | #[no_mangle] | ||
| 252 | pub static __INTERRUPTS: [Vector; 85] = [ | ||
| 253 | Vector { _handler: WWDG }, | ||
| 254 | Vector { _handler: PVD_PVM }, | ||
| 255 | Vector { | ||
| 256 | _handler: TAMP_STAMP, | ||
| 257 | }, | ||
| 258 | Vector { _handler: RTC_WKUP }, | ||
| 259 | Vector { _handler: FLASH }, | ||
| 260 | Vector { _handler: RCC }, | ||
| 261 | Vector { _handler: EXTI0 }, | ||
| 262 | Vector { _handler: EXTI1 }, | ||
| 263 | Vector { _handler: EXTI2 }, | ||
| 264 | Vector { _handler: EXTI3 }, | ||
| 265 | Vector { _handler: EXTI4 }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel1, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel2, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel3, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel4, | ||
| 277 | }, | ||
| 278 | Vector { | ||
| 279 | _handler: DMA1_Channel5, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: DMA1_Channel6, | ||
| 283 | }, | ||
| 284 | Vector { | ||
| 285 | _handler: DMA1_Channel7, | ||
| 286 | }, | ||
| 287 | Vector { _handler: ADC1 }, | ||
| 288 | Vector { _handler: CAN1_TX }, | ||
| 289 | Vector { _handler: CAN1_RX0 }, | ||
| 290 | Vector { _handler: CAN1_RX1 }, | ||
| 291 | Vector { _handler: CAN1_SCE }, | ||
| 292 | Vector { _handler: EXTI9_5 }, | ||
| 293 | Vector { | ||
| 294 | _handler: TIM1_BRK_TIM15, | ||
| 295 | }, | ||
| 296 | Vector { | ||
| 297 | _handler: TIM1_UP_TIM16, | ||
| 298 | }, | ||
| 299 | Vector { | ||
| 300 | _handler: TIM1_TRG_COM, | ||
| 301 | }, | ||
| 302 | Vector { _handler: TIM1_CC }, | ||
| 303 | Vector { _handler: TIM2 }, | ||
| 304 | Vector { _handler: TIM3 }, | ||
| 305 | Vector { _reserved: 0 }, | ||
| 306 | Vector { _handler: I2C1_EV }, | ||
| 307 | Vector { _handler: I2C1_ER }, | ||
| 308 | Vector { _handler: I2C2_EV }, | ||
| 309 | Vector { _handler: I2C2_ER }, | ||
| 310 | Vector { _handler: SPI1 }, | ||
| 311 | Vector { _handler: SPI2 }, | ||
| 312 | Vector { _handler: USART1 }, | ||
| 313 | Vector { _handler: USART2 }, | ||
| 314 | Vector { _handler: USART3 }, | ||
| 315 | Vector { | ||
| 316 | _handler: EXTI15_10, | ||
| 317 | }, | ||
| 318 | Vector { | ||
| 319 | _handler: RTC_Alarm, | ||
| 320 | }, | ||
| 321 | Vector { _reserved: 0 }, | ||
| 322 | Vector { _reserved: 0 }, | ||
| 323 | Vector { _reserved: 0 }, | ||
| 324 | Vector { _reserved: 0 }, | ||
| 325 | Vector { _reserved: 0 }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _reserved: 0 }, | ||
| 328 | Vector { _handler: SDMMC1 }, | ||
| 329 | Vector { _reserved: 0 }, | ||
| 330 | Vector { _handler: SPI3 }, | ||
| 331 | Vector { _handler: UART4 }, | ||
| 332 | Vector { _reserved: 0 }, | ||
| 333 | Vector { _handler: TIM6_DAC }, | ||
| 334 | Vector { _reserved: 0 }, | ||
| 335 | Vector { | ||
| 336 | _handler: DMA2_Channel1, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel2, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: DMA2_Channel3, | ||
| 343 | }, | ||
| 344 | Vector { | ||
| 345 | _handler: DMA2_Channel4, | ||
| 346 | }, | ||
| 347 | Vector { | ||
| 348 | _handler: DMA2_Channel5, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: DFSDM1_FLT0, | ||
| 352 | }, | ||
| 353 | Vector { | ||
| 354 | _handler: DFSDM1_FLT1, | ||
| 355 | }, | ||
| 356 | Vector { _reserved: 0 }, | ||
| 357 | Vector { _handler: COMP }, | ||
| 358 | Vector { _handler: LPTIM1 }, | ||
| 359 | Vector { _handler: LPTIM2 }, | ||
| 360 | Vector { _handler: USB }, | ||
| 361 | Vector { | ||
| 362 | _handler: DMA2_Channel6, | ||
| 363 | }, | ||
| 364 | Vector { | ||
| 365 | _handler: DMA2_Channel7, | ||
| 366 | }, | ||
| 367 | Vector { _handler: LPUART1 }, | ||
| 368 | Vector { _handler: QUADSPI }, | ||
| 369 | Vector { _handler: I2C3_EV }, | ||
| 370 | Vector { _handler: I2C3_ER }, | ||
| 371 | Vector { _handler: SAI1 }, | ||
| 372 | Vector { _reserved: 0 }, | ||
| 373 | Vector { _reserved: 0 }, | ||
| 374 | Vector { _handler: TSC }, | ||
| 375 | Vector { _reserved: 0 }, | ||
| 376 | Vector { _reserved: 0 }, | ||
| 377 | Vector { _handler: RNG }, | ||
| 378 | Vector { _handler: FPU }, | ||
| 379 | Vector { _handler: CRS }, | ||
| 380 | Vector { _handler: I2C4_EV }, | ||
| 381 | Vector { _handler: I2C4_ER }, | ||
| 382 | ]; | ||
| 383 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 384 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 385 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 386 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l452rc.rs b/embassy-stm32/src/chip/stm32l452rc.rs index 5b23cead2..05eaeda97 100644 --- a/embassy-stm32/src/chip/stm32l452rc.rs +++ b/embassy-stm32/src/chip/stm32l452rc.rs | |||
| @@ -1,18 +1,386 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, | 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, |
| 11 | RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, | 11 | RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, |
| 12 | USART1, USART2, USART3, USB, WWDG | 12 | UART4, USART1, USART2, USART3, USB, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DFSDM1_FLT0 = 61, | ||
| 35 | DFSDM1_FLT1 = 62, | ||
| 36 | DMA1_Channel1 = 11, | ||
| 37 | DMA1_Channel2 = 12, | ||
| 38 | DMA1_Channel3 = 13, | ||
| 39 | DMA1_Channel4 = 14, | ||
| 40 | DMA1_Channel5 = 15, | ||
| 41 | DMA1_Channel6 = 16, | ||
| 42 | DMA1_Channel7 = 17, | ||
| 43 | DMA2_Channel1 = 56, | ||
| 44 | DMA2_Channel2 = 57, | ||
| 45 | DMA2_Channel3 = 58, | ||
| 46 | DMA2_Channel4 = 59, | ||
| 47 | DMA2_Channel5 = 60, | ||
| 48 | DMA2_Channel6 = 68, | ||
| 49 | DMA2_Channel7 = 69, | ||
| 50 | EXTI0 = 6, | ||
| 51 | EXTI1 = 7, | ||
| 52 | EXTI15_10 = 40, | ||
| 53 | EXTI2 = 8, | ||
| 54 | EXTI3 = 9, | ||
| 55 | EXTI4 = 10, | ||
| 56 | EXTI9_5 = 23, | ||
| 57 | FLASH = 4, | ||
| 58 | FPU = 81, | ||
| 59 | I2C1_ER = 32, | ||
| 60 | I2C1_EV = 31, | ||
| 61 | I2C2_ER = 34, | ||
| 62 | I2C2_EV = 33, | ||
| 63 | I2C3_ER = 73, | ||
| 64 | I2C3_EV = 72, | ||
| 65 | I2C4_ER = 84, | ||
| 66 | I2C4_EV = 83, | ||
| 67 | LPTIM1 = 65, | ||
| 68 | LPTIM2 = 66, | ||
| 69 | LPUART1 = 70, | ||
| 70 | PVD_PVM = 1, | ||
| 71 | QUADSPI = 71, | ||
| 72 | RCC = 5, | ||
| 73 | RNG = 80, | ||
| 74 | RTC_Alarm = 41, | ||
| 75 | RTC_WKUP = 3, | ||
| 76 | SAI1 = 74, | ||
| 77 | SDMMC1 = 49, | ||
| 78 | SPI1 = 35, | ||
| 79 | SPI2 = 36, | ||
| 80 | SPI3 = 51, | ||
| 81 | TAMP_STAMP = 2, | ||
| 82 | TIM1_BRK_TIM15 = 24, | ||
| 83 | TIM1_CC = 27, | ||
| 84 | TIM1_TRG_COM = 26, | ||
| 85 | TIM1_UP_TIM16 = 25, | ||
| 86 | TIM2 = 28, | ||
| 87 | TIM3 = 29, | ||
| 88 | TIM6_DAC = 54, | ||
| 89 | TSC = 77, | ||
| 90 | UART4 = 52, | ||
| 91 | USART1 = 37, | ||
| 92 | USART2 = 38, | ||
| 93 | USART3 = 39, | ||
| 94 | USB = 67, | ||
| 95 | WWDG = 0, | ||
| 96 | } | ||
| 97 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 98 | #[inline(always)] | ||
| 99 | fn number(self) -> u16 { | ||
| 100 | self as u16 | ||
| 101 | } | ||
| 102 | } | ||
| 103 | |||
| 104 | declare!(ADC1); | ||
| 105 | declare!(CAN1_RX0); | ||
| 106 | declare!(CAN1_RX1); | ||
| 107 | declare!(CAN1_SCE); | ||
| 108 | declare!(CAN1_TX); | ||
| 109 | declare!(COMP); | ||
| 110 | declare!(CRS); | ||
| 111 | declare!(DFSDM1_FLT0); | ||
| 112 | declare!(DFSDM1_FLT1); | ||
| 113 | declare!(DMA1_Channel1); | ||
| 114 | declare!(DMA1_Channel2); | ||
| 115 | declare!(DMA1_Channel3); | ||
| 116 | declare!(DMA1_Channel4); | ||
| 117 | declare!(DMA1_Channel5); | ||
| 118 | declare!(DMA1_Channel6); | ||
| 119 | declare!(DMA1_Channel7); | ||
| 120 | declare!(DMA2_Channel1); | ||
| 121 | declare!(DMA2_Channel2); | ||
| 122 | declare!(DMA2_Channel3); | ||
| 123 | declare!(DMA2_Channel4); | ||
| 124 | declare!(DMA2_Channel5); | ||
| 125 | declare!(DMA2_Channel6); | ||
| 126 | declare!(DMA2_Channel7); | ||
| 127 | declare!(EXTI0); | ||
| 128 | declare!(EXTI1); | ||
| 129 | declare!(EXTI15_10); | ||
| 130 | declare!(EXTI2); | ||
| 131 | declare!(EXTI3); | ||
| 132 | declare!(EXTI4); | ||
| 133 | declare!(EXTI9_5); | ||
| 134 | declare!(FLASH); | ||
| 135 | declare!(FPU); | ||
| 136 | declare!(I2C1_ER); | ||
| 137 | declare!(I2C1_EV); | ||
| 138 | declare!(I2C2_ER); | ||
| 139 | declare!(I2C2_EV); | ||
| 140 | declare!(I2C3_ER); | ||
| 141 | declare!(I2C3_EV); | ||
| 142 | declare!(I2C4_ER); | ||
| 143 | declare!(I2C4_EV); | ||
| 144 | declare!(LPTIM1); | ||
| 145 | declare!(LPTIM2); | ||
| 146 | declare!(LPUART1); | ||
| 147 | declare!(PVD_PVM); | ||
| 148 | declare!(QUADSPI); | ||
| 149 | declare!(RCC); | ||
| 150 | declare!(RNG); | ||
| 151 | declare!(RTC_Alarm); | ||
| 152 | declare!(RTC_WKUP); | ||
| 153 | declare!(SAI1); | ||
| 154 | declare!(SDMMC1); | ||
| 155 | declare!(SPI1); | ||
| 156 | declare!(SPI2); | ||
| 157 | declare!(SPI3); | ||
| 158 | declare!(TAMP_STAMP); | ||
| 159 | declare!(TIM1_BRK_TIM15); | ||
| 160 | declare!(TIM1_CC); | ||
| 161 | declare!(TIM1_TRG_COM); | ||
| 162 | declare!(TIM1_UP_TIM16); | ||
| 163 | declare!(TIM2); | ||
| 164 | declare!(TIM3); | ||
| 165 | declare!(TIM6_DAC); | ||
| 166 | declare!(TSC); | ||
| 167 | declare!(UART4); | ||
| 168 | declare!(USART1); | ||
| 169 | declare!(USART2); | ||
| 170 | declare!(USART3); | ||
| 171 | declare!(USB); | ||
| 172 | declare!(WWDG); | ||
| 173 | } | ||
| 174 | mod interrupt_vector { | ||
| 175 | extern "C" { | ||
| 176 | fn ADC1(); | ||
| 177 | fn CAN1_RX0(); | ||
| 178 | fn CAN1_RX1(); | ||
| 179 | fn CAN1_SCE(); | ||
| 180 | fn CAN1_TX(); | ||
| 181 | fn COMP(); | ||
| 182 | fn CRS(); | ||
| 183 | fn DFSDM1_FLT0(); | ||
| 184 | fn DFSDM1_FLT1(); | ||
| 185 | fn DMA1_Channel1(); | ||
| 186 | fn DMA1_Channel2(); | ||
| 187 | fn DMA1_Channel3(); | ||
| 188 | fn DMA1_Channel4(); | ||
| 189 | fn DMA1_Channel5(); | ||
| 190 | fn DMA1_Channel6(); | ||
| 191 | fn DMA1_Channel7(); | ||
| 192 | fn DMA2_Channel1(); | ||
| 193 | fn DMA2_Channel2(); | ||
| 194 | fn DMA2_Channel3(); | ||
| 195 | fn DMA2_Channel4(); | ||
| 196 | fn DMA2_Channel5(); | ||
| 197 | fn DMA2_Channel6(); | ||
| 198 | fn DMA2_Channel7(); | ||
| 199 | fn EXTI0(); | ||
| 200 | fn EXTI1(); | ||
| 201 | fn EXTI15_10(); | ||
| 202 | fn EXTI2(); | ||
| 203 | fn EXTI3(); | ||
| 204 | fn EXTI4(); | ||
| 205 | fn EXTI9_5(); | ||
| 206 | fn FLASH(); | ||
| 207 | fn FPU(); | ||
| 208 | fn I2C1_ER(); | ||
| 209 | fn I2C1_EV(); | ||
| 210 | fn I2C2_ER(); | ||
| 211 | fn I2C2_EV(); | ||
| 212 | fn I2C3_ER(); | ||
| 213 | fn I2C3_EV(); | ||
| 214 | fn I2C4_ER(); | ||
| 215 | fn I2C4_EV(); | ||
| 216 | fn LPTIM1(); | ||
| 217 | fn LPTIM2(); | ||
| 218 | fn LPUART1(); | ||
| 219 | fn PVD_PVM(); | ||
| 220 | fn QUADSPI(); | ||
| 221 | fn RCC(); | ||
| 222 | fn RNG(); | ||
| 223 | fn RTC_Alarm(); | ||
| 224 | fn RTC_WKUP(); | ||
| 225 | fn SAI1(); | ||
| 226 | fn SDMMC1(); | ||
| 227 | fn SPI1(); | ||
| 228 | fn SPI2(); | ||
| 229 | fn SPI3(); | ||
| 230 | fn TAMP_STAMP(); | ||
| 231 | fn TIM1_BRK_TIM15(); | ||
| 232 | fn TIM1_CC(); | ||
| 233 | fn TIM1_TRG_COM(); | ||
| 234 | fn TIM1_UP_TIM16(); | ||
| 235 | fn TIM2(); | ||
| 236 | fn TIM3(); | ||
| 237 | fn TIM6_DAC(); | ||
| 238 | fn TSC(); | ||
| 239 | fn UART4(); | ||
| 240 | fn USART1(); | ||
| 241 | fn USART2(); | ||
| 242 | fn USART3(); | ||
| 243 | fn USB(); | ||
| 244 | fn WWDG(); | ||
| 245 | } | ||
| 246 | pub union Vector { | ||
| 247 | _handler: unsafe extern "C" fn(), | ||
| 248 | _reserved: u32, | ||
| 249 | } | ||
| 250 | #[link_section = ".vector_table.interrupts"] | ||
| 251 | #[no_mangle] | ||
| 252 | pub static __INTERRUPTS: [Vector; 85] = [ | ||
| 253 | Vector { _handler: WWDG }, | ||
| 254 | Vector { _handler: PVD_PVM }, | ||
| 255 | Vector { | ||
| 256 | _handler: TAMP_STAMP, | ||
| 257 | }, | ||
| 258 | Vector { _handler: RTC_WKUP }, | ||
| 259 | Vector { _handler: FLASH }, | ||
| 260 | Vector { _handler: RCC }, | ||
| 261 | Vector { _handler: EXTI0 }, | ||
| 262 | Vector { _handler: EXTI1 }, | ||
| 263 | Vector { _handler: EXTI2 }, | ||
| 264 | Vector { _handler: EXTI3 }, | ||
| 265 | Vector { _handler: EXTI4 }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel1, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel2, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel3, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel4, | ||
| 277 | }, | ||
| 278 | Vector { | ||
| 279 | _handler: DMA1_Channel5, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: DMA1_Channel6, | ||
| 283 | }, | ||
| 284 | Vector { | ||
| 285 | _handler: DMA1_Channel7, | ||
| 286 | }, | ||
| 287 | Vector { _handler: ADC1 }, | ||
| 288 | Vector { _handler: CAN1_TX }, | ||
| 289 | Vector { _handler: CAN1_RX0 }, | ||
| 290 | Vector { _handler: CAN1_RX1 }, | ||
| 291 | Vector { _handler: CAN1_SCE }, | ||
| 292 | Vector { _handler: EXTI9_5 }, | ||
| 293 | Vector { | ||
| 294 | _handler: TIM1_BRK_TIM15, | ||
| 295 | }, | ||
| 296 | Vector { | ||
| 297 | _handler: TIM1_UP_TIM16, | ||
| 298 | }, | ||
| 299 | Vector { | ||
| 300 | _handler: TIM1_TRG_COM, | ||
| 301 | }, | ||
| 302 | Vector { _handler: TIM1_CC }, | ||
| 303 | Vector { _handler: TIM2 }, | ||
| 304 | Vector { _handler: TIM3 }, | ||
| 305 | Vector { _reserved: 0 }, | ||
| 306 | Vector { _handler: I2C1_EV }, | ||
| 307 | Vector { _handler: I2C1_ER }, | ||
| 308 | Vector { _handler: I2C2_EV }, | ||
| 309 | Vector { _handler: I2C2_ER }, | ||
| 310 | Vector { _handler: SPI1 }, | ||
| 311 | Vector { _handler: SPI2 }, | ||
| 312 | Vector { _handler: USART1 }, | ||
| 313 | Vector { _handler: USART2 }, | ||
| 314 | Vector { _handler: USART3 }, | ||
| 315 | Vector { | ||
| 316 | _handler: EXTI15_10, | ||
| 317 | }, | ||
| 318 | Vector { | ||
| 319 | _handler: RTC_Alarm, | ||
| 320 | }, | ||
| 321 | Vector { _reserved: 0 }, | ||
| 322 | Vector { _reserved: 0 }, | ||
| 323 | Vector { _reserved: 0 }, | ||
| 324 | Vector { _reserved: 0 }, | ||
| 325 | Vector { _reserved: 0 }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _reserved: 0 }, | ||
| 328 | Vector { _handler: SDMMC1 }, | ||
| 329 | Vector { _reserved: 0 }, | ||
| 330 | Vector { _handler: SPI3 }, | ||
| 331 | Vector { _handler: UART4 }, | ||
| 332 | Vector { _reserved: 0 }, | ||
| 333 | Vector { _handler: TIM6_DAC }, | ||
| 334 | Vector { _reserved: 0 }, | ||
| 335 | Vector { | ||
| 336 | _handler: DMA2_Channel1, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel2, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: DMA2_Channel3, | ||
| 343 | }, | ||
| 344 | Vector { | ||
| 345 | _handler: DMA2_Channel4, | ||
| 346 | }, | ||
| 347 | Vector { | ||
| 348 | _handler: DMA2_Channel5, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: DFSDM1_FLT0, | ||
| 352 | }, | ||
| 353 | Vector { | ||
| 354 | _handler: DFSDM1_FLT1, | ||
| 355 | }, | ||
| 356 | Vector { _reserved: 0 }, | ||
| 357 | Vector { _handler: COMP }, | ||
| 358 | Vector { _handler: LPTIM1 }, | ||
| 359 | Vector { _handler: LPTIM2 }, | ||
| 360 | Vector { _handler: USB }, | ||
| 361 | Vector { | ||
| 362 | _handler: DMA2_Channel6, | ||
| 363 | }, | ||
| 364 | Vector { | ||
| 365 | _handler: DMA2_Channel7, | ||
| 366 | }, | ||
| 367 | Vector { _handler: LPUART1 }, | ||
| 368 | Vector { _handler: QUADSPI }, | ||
| 369 | Vector { _handler: I2C3_EV }, | ||
| 370 | Vector { _handler: I2C3_ER }, | ||
| 371 | Vector { _handler: SAI1 }, | ||
| 372 | Vector { _reserved: 0 }, | ||
| 373 | Vector { _reserved: 0 }, | ||
| 374 | Vector { _handler: TSC }, | ||
| 375 | Vector { _reserved: 0 }, | ||
| 376 | Vector { _reserved: 0 }, | ||
| 377 | Vector { _handler: RNG }, | ||
| 378 | Vector { _handler: FPU }, | ||
| 379 | Vector { _handler: CRS }, | ||
| 380 | Vector { _handler: I2C4_EV }, | ||
| 381 | Vector { _handler: I2C4_ER }, | ||
| 382 | ]; | ||
| 383 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 384 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 385 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 386 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l452re.rs b/embassy-stm32/src/chip/stm32l452re.rs index 5b23cead2..05eaeda97 100644 --- a/embassy-stm32/src/chip/stm32l452re.rs +++ b/embassy-stm32/src/chip/stm32l452re.rs | |||
| @@ -1,18 +1,386 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, | 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, |
| 11 | RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, | 11 | RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, |
| 12 | USART1, USART2, USART3, USB, WWDG | 12 | UART4, USART1, USART2, USART3, USB, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DFSDM1_FLT0 = 61, | ||
| 35 | DFSDM1_FLT1 = 62, | ||
| 36 | DMA1_Channel1 = 11, | ||
| 37 | DMA1_Channel2 = 12, | ||
| 38 | DMA1_Channel3 = 13, | ||
| 39 | DMA1_Channel4 = 14, | ||
| 40 | DMA1_Channel5 = 15, | ||
| 41 | DMA1_Channel6 = 16, | ||
| 42 | DMA1_Channel7 = 17, | ||
| 43 | DMA2_Channel1 = 56, | ||
| 44 | DMA2_Channel2 = 57, | ||
| 45 | DMA2_Channel3 = 58, | ||
| 46 | DMA2_Channel4 = 59, | ||
| 47 | DMA2_Channel5 = 60, | ||
| 48 | DMA2_Channel6 = 68, | ||
| 49 | DMA2_Channel7 = 69, | ||
| 50 | EXTI0 = 6, | ||
| 51 | EXTI1 = 7, | ||
| 52 | EXTI15_10 = 40, | ||
| 53 | EXTI2 = 8, | ||
| 54 | EXTI3 = 9, | ||
| 55 | EXTI4 = 10, | ||
| 56 | EXTI9_5 = 23, | ||
| 57 | FLASH = 4, | ||
| 58 | FPU = 81, | ||
| 59 | I2C1_ER = 32, | ||
| 60 | I2C1_EV = 31, | ||
| 61 | I2C2_ER = 34, | ||
| 62 | I2C2_EV = 33, | ||
| 63 | I2C3_ER = 73, | ||
| 64 | I2C3_EV = 72, | ||
| 65 | I2C4_ER = 84, | ||
| 66 | I2C4_EV = 83, | ||
| 67 | LPTIM1 = 65, | ||
| 68 | LPTIM2 = 66, | ||
| 69 | LPUART1 = 70, | ||
| 70 | PVD_PVM = 1, | ||
| 71 | QUADSPI = 71, | ||
| 72 | RCC = 5, | ||
| 73 | RNG = 80, | ||
| 74 | RTC_Alarm = 41, | ||
| 75 | RTC_WKUP = 3, | ||
| 76 | SAI1 = 74, | ||
| 77 | SDMMC1 = 49, | ||
| 78 | SPI1 = 35, | ||
| 79 | SPI2 = 36, | ||
| 80 | SPI3 = 51, | ||
| 81 | TAMP_STAMP = 2, | ||
| 82 | TIM1_BRK_TIM15 = 24, | ||
| 83 | TIM1_CC = 27, | ||
| 84 | TIM1_TRG_COM = 26, | ||
| 85 | TIM1_UP_TIM16 = 25, | ||
| 86 | TIM2 = 28, | ||
| 87 | TIM3 = 29, | ||
| 88 | TIM6_DAC = 54, | ||
| 89 | TSC = 77, | ||
| 90 | UART4 = 52, | ||
| 91 | USART1 = 37, | ||
| 92 | USART2 = 38, | ||
| 93 | USART3 = 39, | ||
| 94 | USB = 67, | ||
| 95 | WWDG = 0, | ||
| 96 | } | ||
| 97 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 98 | #[inline(always)] | ||
| 99 | fn number(self) -> u16 { | ||
| 100 | self as u16 | ||
| 101 | } | ||
| 102 | } | ||
| 103 | |||
| 104 | declare!(ADC1); | ||
| 105 | declare!(CAN1_RX0); | ||
| 106 | declare!(CAN1_RX1); | ||
| 107 | declare!(CAN1_SCE); | ||
| 108 | declare!(CAN1_TX); | ||
| 109 | declare!(COMP); | ||
| 110 | declare!(CRS); | ||
| 111 | declare!(DFSDM1_FLT0); | ||
| 112 | declare!(DFSDM1_FLT1); | ||
| 113 | declare!(DMA1_Channel1); | ||
| 114 | declare!(DMA1_Channel2); | ||
| 115 | declare!(DMA1_Channel3); | ||
| 116 | declare!(DMA1_Channel4); | ||
| 117 | declare!(DMA1_Channel5); | ||
| 118 | declare!(DMA1_Channel6); | ||
| 119 | declare!(DMA1_Channel7); | ||
| 120 | declare!(DMA2_Channel1); | ||
| 121 | declare!(DMA2_Channel2); | ||
| 122 | declare!(DMA2_Channel3); | ||
| 123 | declare!(DMA2_Channel4); | ||
| 124 | declare!(DMA2_Channel5); | ||
| 125 | declare!(DMA2_Channel6); | ||
| 126 | declare!(DMA2_Channel7); | ||
| 127 | declare!(EXTI0); | ||
| 128 | declare!(EXTI1); | ||
| 129 | declare!(EXTI15_10); | ||
| 130 | declare!(EXTI2); | ||
| 131 | declare!(EXTI3); | ||
| 132 | declare!(EXTI4); | ||
| 133 | declare!(EXTI9_5); | ||
| 134 | declare!(FLASH); | ||
| 135 | declare!(FPU); | ||
| 136 | declare!(I2C1_ER); | ||
| 137 | declare!(I2C1_EV); | ||
| 138 | declare!(I2C2_ER); | ||
| 139 | declare!(I2C2_EV); | ||
| 140 | declare!(I2C3_ER); | ||
| 141 | declare!(I2C3_EV); | ||
| 142 | declare!(I2C4_ER); | ||
| 143 | declare!(I2C4_EV); | ||
| 144 | declare!(LPTIM1); | ||
| 145 | declare!(LPTIM2); | ||
| 146 | declare!(LPUART1); | ||
| 147 | declare!(PVD_PVM); | ||
| 148 | declare!(QUADSPI); | ||
| 149 | declare!(RCC); | ||
| 150 | declare!(RNG); | ||
| 151 | declare!(RTC_Alarm); | ||
| 152 | declare!(RTC_WKUP); | ||
| 153 | declare!(SAI1); | ||
| 154 | declare!(SDMMC1); | ||
| 155 | declare!(SPI1); | ||
| 156 | declare!(SPI2); | ||
| 157 | declare!(SPI3); | ||
| 158 | declare!(TAMP_STAMP); | ||
| 159 | declare!(TIM1_BRK_TIM15); | ||
| 160 | declare!(TIM1_CC); | ||
| 161 | declare!(TIM1_TRG_COM); | ||
| 162 | declare!(TIM1_UP_TIM16); | ||
| 163 | declare!(TIM2); | ||
| 164 | declare!(TIM3); | ||
| 165 | declare!(TIM6_DAC); | ||
| 166 | declare!(TSC); | ||
| 167 | declare!(UART4); | ||
| 168 | declare!(USART1); | ||
| 169 | declare!(USART2); | ||
| 170 | declare!(USART3); | ||
| 171 | declare!(USB); | ||
| 172 | declare!(WWDG); | ||
| 173 | } | ||
| 174 | mod interrupt_vector { | ||
| 175 | extern "C" { | ||
| 176 | fn ADC1(); | ||
| 177 | fn CAN1_RX0(); | ||
| 178 | fn CAN1_RX1(); | ||
| 179 | fn CAN1_SCE(); | ||
| 180 | fn CAN1_TX(); | ||
| 181 | fn COMP(); | ||
| 182 | fn CRS(); | ||
| 183 | fn DFSDM1_FLT0(); | ||
| 184 | fn DFSDM1_FLT1(); | ||
| 185 | fn DMA1_Channel1(); | ||
| 186 | fn DMA1_Channel2(); | ||
| 187 | fn DMA1_Channel3(); | ||
| 188 | fn DMA1_Channel4(); | ||
| 189 | fn DMA1_Channel5(); | ||
| 190 | fn DMA1_Channel6(); | ||
| 191 | fn DMA1_Channel7(); | ||
| 192 | fn DMA2_Channel1(); | ||
| 193 | fn DMA2_Channel2(); | ||
| 194 | fn DMA2_Channel3(); | ||
| 195 | fn DMA2_Channel4(); | ||
| 196 | fn DMA2_Channel5(); | ||
| 197 | fn DMA2_Channel6(); | ||
| 198 | fn DMA2_Channel7(); | ||
| 199 | fn EXTI0(); | ||
| 200 | fn EXTI1(); | ||
| 201 | fn EXTI15_10(); | ||
| 202 | fn EXTI2(); | ||
| 203 | fn EXTI3(); | ||
| 204 | fn EXTI4(); | ||
| 205 | fn EXTI9_5(); | ||
| 206 | fn FLASH(); | ||
| 207 | fn FPU(); | ||
| 208 | fn I2C1_ER(); | ||
| 209 | fn I2C1_EV(); | ||
| 210 | fn I2C2_ER(); | ||
| 211 | fn I2C2_EV(); | ||
| 212 | fn I2C3_ER(); | ||
| 213 | fn I2C3_EV(); | ||
| 214 | fn I2C4_ER(); | ||
| 215 | fn I2C4_EV(); | ||
| 216 | fn LPTIM1(); | ||
| 217 | fn LPTIM2(); | ||
| 218 | fn LPUART1(); | ||
| 219 | fn PVD_PVM(); | ||
| 220 | fn QUADSPI(); | ||
| 221 | fn RCC(); | ||
| 222 | fn RNG(); | ||
| 223 | fn RTC_Alarm(); | ||
| 224 | fn RTC_WKUP(); | ||
| 225 | fn SAI1(); | ||
| 226 | fn SDMMC1(); | ||
| 227 | fn SPI1(); | ||
| 228 | fn SPI2(); | ||
| 229 | fn SPI3(); | ||
| 230 | fn TAMP_STAMP(); | ||
| 231 | fn TIM1_BRK_TIM15(); | ||
| 232 | fn TIM1_CC(); | ||
| 233 | fn TIM1_TRG_COM(); | ||
| 234 | fn TIM1_UP_TIM16(); | ||
| 235 | fn TIM2(); | ||
| 236 | fn TIM3(); | ||
| 237 | fn TIM6_DAC(); | ||
| 238 | fn TSC(); | ||
| 239 | fn UART4(); | ||
| 240 | fn USART1(); | ||
| 241 | fn USART2(); | ||
| 242 | fn USART3(); | ||
| 243 | fn USB(); | ||
| 244 | fn WWDG(); | ||
| 245 | } | ||
| 246 | pub union Vector { | ||
| 247 | _handler: unsafe extern "C" fn(), | ||
| 248 | _reserved: u32, | ||
| 249 | } | ||
| 250 | #[link_section = ".vector_table.interrupts"] | ||
| 251 | #[no_mangle] | ||
| 252 | pub static __INTERRUPTS: [Vector; 85] = [ | ||
| 253 | Vector { _handler: WWDG }, | ||
| 254 | Vector { _handler: PVD_PVM }, | ||
| 255 | Vector { | ||
| 256 | _handler: TAMP_STAMP, | ||
| 257 | }, | ||
| 258 | Vector { _handler: RTC_WKUP }, | ||
| 259 | Vector { _handler: FLASH }, | ||
| 260 | Vector { _handler: RCC }, | ||
| 261 | Vector { _handler: EXTI0 }, | ||
| 262 | Vector { _handler: EXTI1 }, | ||
| 263 | Vector { _handler: EXTI2 }, | ||
| 264 | Vector { _handler: EXTI3 }, | ||
| 265 | Vector { _handler: EXTI4 }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel1, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel2, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel3, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel4, | ||
| 277 | }, | ||
| 278 | Vector { | ||
| 279 | _handler: DMA1_Channel5, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: DMA1_Channel6, | ||
| 283 | }, | ||
| 284 | Vector { | ||
| 285 | _handler: DMA1_Channel7, | ||
| 286 | }, | ||
| 287 | Vector { _handler: ADC1 }, | ||
| 288 | Vector { _handler: CAN1_TX }, | ||
| 289 | Vector { _handler: CAN1_RX0 }, | ||
| 290 | Vector { _handler: CAN1_RX1 }, | ||
| 291 | Vector { _handler: CAN1_SCE }, | ||
| 292 | Vector { _handler: EXTI9_5 }, | ||
| 293 | Vector { | ||
| 294 | _handler: TIM1_BRK_TIM15, | ||
| 295 | }, | ||
| 296 | Vector { | ||
| 297 | _handler: TIM1_UP_TIM16, | ||
| 298 | }, | ||
| 299 | Vector { | ||
| 300 | _handler: TIM1_TRG_COM, | ||
| 301 | }, | ||
| 302 | Vector { _handler: TIM1_CC }, | ||
| 303 | Vector { _handler: TIM2 }, | ||
| 304 | Vector { _handler: TIM3 }, | ||
| 305 | Vector { _reserved: 0 }, | ||
| 306 | Vector { _handler: I2C1_EV }, | ||
| 307 | Vector { _handler: I2C1_ER }, | ||
| 308 | Vector { _handler: I2C2_EV }, | ||
| 309 | Vector { _handler: I2C2_ER }, | ||
| 310 | Vector { _handler: SPI1 }, | ||
| 311 | Vector { _handler: SPI2 }, | ||
| 312 | Vector { _handler: USART1 }, | ||
| 313 | Vector { _handler: USART2 }, | ||
| 314 | Vector { _handler: USART3 }, | ||
| 315 | Vector { | ||
| 316 | _handler: EXTI15_10, | ||
| 317 | }, | ||
| 318 | Vector { | ||
| 319 | _handler: RTC_Alarm, | ||
| 320 | }, | ||
| 321 | Vector { _reserved: 0 }, | ||
| 322 | Vector { _reserved: 0 }, | ||
| 323 | Vector { _reserved: 0 }, | ||
| 324 | Vector { _reserved: 0 }, | ||
| 325 | Vector { _reserved: 0 }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _reserved: 0 }, | ||
| 328 | Vector { _handler: SDMMC1 }, | ||
| 329 | Vector { _reserved: 0 }, | ||
| 330 | Vector { _handler: SPI3 }, | ||
| 331 | Vector { _handler: UART4 }, | ||
| 332 | Vector { _reserved: 0 }, | ||
| 333 | Vector { _handler: TIM6_DAC }, | ||
| 334 | Vector { _reserved: 0 }, | ||
| 335 | Vector { | ||
| 336 | _handler: DMA2_Channel1, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel2, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: DMA2_Channel3, | ||
| 343 | }, | ||
| 344 | Vector { | ||
| 345 | _handler: DMA2_Channel4, | ||
| 346 | }, | ||
| 347 | Vector { | ||
| 348 | _handler: DMA2_Channel5, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: DFSDM1_FLT0, | ||
| 352 | }, | ||
| 353 | Vector { | ||
| 354 | _handler: DFSDM1_FLT1, | ||
| 355 | }, | ||
| 356 | Vector { _reserved: 0 }, | ||
| 357 | Vector { _handler: COMP }, | ||
| 358 | Vector { _handler: LPTIM1 }, | ||
| 359 | Vector { _handler: LPTIM2 }, | ||
| 360 | Vector { _handler: USB }, | ||
| 361 | Vector { | ||
| 362 | _handler: DMA2_Channel6, | ||
| 363 | }, | ||
| 364 | Vector { | ||
| 365 | _handler: DMA2_Channel7, | ||
| 366 | }, | ||
| 367 | Vector { _handler: LPUART1 }, | ||
| 368 | Vector { _handler: QUADSPI }, | ||
| 369 | Vector { _handler: I2C3_EV }, | ||
| 370 | Vector { _handler: I2C3_ER }, | ||
| 371 | Vector { _handler: SAI1 }, | ||
| 372 | Vector { _reserved: 0 }, | ||
| 373 | Vector { _reserved: 0 }, | ||
| 374 | Vector { _handler: TSC }, | ||
| 375 | Vector { _reserved: 0 }, | ||
| 376 | Vector { _reserved: 0 }, | ||
| 377 | Vector { _handler: RNG }, | ||
| 378 | Vector { _handler: FPU }, | ||
| 379 | Vector { _handler: CRS }, | ||
| 380 | Vector { _handler: I2C4_EV }, | ||
| 381 | Vector { _handler: I2C4_ER }, | ||
| 382 | ]; | ||
| 383 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 384 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 385 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 386 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l452vc.rs b/embassy-stm32/src/chip/stm32l452vc.rs index 5b23cead2..05eaeda97 100644 --- a/embassy-stm32/src/chip/stm32l452vc.rs +++ b/embassy-stm32/src/chip/stm32l452vc.rs | |||
| @@ -1,18 +1,386 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, | 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, |
| 11 | RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, | 11 | RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, |
| 12 | USART1, USART2, USART3, USB, WWDG | 12 | UART4, USART1, USART2, USART3, USB, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DFSDM1_FLT0 = 61, | ||
| 35 | DFSDM1_FLT1 = 62, | ||
| 36 | DMA1_Channel1 = 11, | ||
| 37 | DMA1_Channel2 = 12, | ||
| 38 | DMA1_Channel3 = 13, | ||
| 39 | DMA1_Channel4 = 14, | ||
| 40 | DMA1_Channel5 = 15, | ||
| 41 | DMA1_Channel6 = 16, | ||
| 42 | DMA1_Channel7 = 17, | ||
| 43 | DMA2_Channel1 = 56, | ||
| 44 | DMA2_Channel2 = 57, | ||
| 45 | DMA2_Channel3 = 58, | ||
| 46 | DMA2_Channel4 = 59, | ||
| 47 | DMA2_Channel5 = 60, | ||
| 48 | DMA2_Channel6 = 68, | ||
| 49 | DMA2_Channel7 = 69, | ||
| 50 | EXTI0 = 6, | ||
| 51 | EXTI1 = 7, | ||
| 52 | EXTI15_10 = 40, | ||
| 53 | EXTI2 = 8, | ||
| 54 | EXTI3 = 9, | ||
| 55 | EXTI4 = 10, | ||
| 56 | EXTI9_5 = 23, | ||
| 57 | FLASH = 4, | ||
| 58 | FPU = 81, | ||
| 59 | I2C1_ER = 32, | ||
| 60 | I2C1_EV = 31, | ||
| 61 | I2C2_ER = 34, | ||
| 62 | I2C2_EV = 33, | ||
| 63 | I2C3_ER = 73, | ||
| 64 | I2C3_EV = 72, | ||
| 65 | I2C4_ER = 84, | ||
| 66 | I2C4_EV = 83, | ||
| 67 | LPTIM1 = 65, | ||
| 68 | LPTIM2 = 66, | ||
| 69 | LPUART1 = 70, | ||
| 70 | PVD_PVM = 1, | ||
| 71 | QUADSPI = 71, | ||
| 72 | RCC = 5, | ||
| 73 | RNG = 80, | ||
| 74 | RTC_Alarm = 41, | ||
| 75 | RTC_WKUP = 3, | ||
| 76 | SAI1 = 74, | ||
| 77 | SDMMC1 = 49, | ||
| 78 | SPI1 = 35, | ||
| 79 | SPI2 = 36, | ||
| 80 | SPI3 = 51, | ||
| 81 | TAMP_STAMP = 2, | ||
| 82 | TIM1_BRK_TIM15 = 24, | ||
| 83 | TIM1_CC = 27, | ||
| 84 | TIM1_TRG_COM = 26, | ||
| 85 | TIM1_UP_TIM16 = 25, | ||
| 86 | TIM2 = 28, | ||
| 87 | TIM3 = 29, | ||
| 88 | TIM6_DAC = 54, | ||
| 89 | TSC = 77, | ||
| 90 | UART4 = 52, | ||
| 91 | USART1 = 37, | ||
| 92 | USART2 = 38, | ||
| 93 | USART3 = 39, | ||
| 94 | USB = 67, | ||
| 95 | WWDG = 0, | ||
| 96 | } | ||
| 97 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 98 | #[inline(always)] | ||
| 99 | fn number(self) -> u16 { | ||
| 100 | self as u16 | ||
| 101 | } | ||
| 102 | } | ||
| 103 | |||
| 104 | declare!(ADC1); | ||
| 105 | declare!(CAN1_RX0); | ||
| 106 | declare!(CAN1_RX1); | ||
| 107 | declare!(CAN1_SCE); | ||
| 108 | declare!(CAN1_TX); | ||
| 109 | declare!(COMP); | ||
| 110 | declare!(CRS); | ||
| 111 | declare!(DFSDM1_FLT0); | ||
| 112 | declare!(DFSDM1_FLT1); | ||
| 113 | declare!(DMA1_Channel1); | ||
| 114 | declare!(DMA1_Channel2); | ||
| 115 | declare!(DMA1_Channel3); | ||
| 116 | declare!(DMA1_Channel4); | ||
| 117 | declare!(DMA1_Channel5); | ||
| 118 | declare!(DMA1_Channel6); | ||
| 119 | declare!(DMA1_Channel7); | ||
| 120 | declare!(DMA2_Channel1); | ||
| 121 | declare!(DMA2_Channel2); | ||
| 122 | declare!(DMA2_Channel3); | ||
| 123 | declare!(DMA2_Channel4); | ||
| 124 | declare!(DMA2_Channel5); | ||
| 125 | declare!(DMA2_Channel6); | ||
| 126 | declare!(DMA2_Channel7); | ||
| 127 | declare!(EXTI0); | ||
| 128 | declare!(EXTI1); | ||
| 129 | declare!(EXTI15_10); | ||
| 130 | declare!(EXTI2); | ||
| 131 | declare!(EXTI3); | ||
| 132 | declare!(EXTI4); | ||
| 133 | declare!(EXTI9_5); | ||
| 134 | declare!(FLASH); | ||
| 135 | declare!(FPU); | ||
| 136 | declare!(I2C1_ER); | ||
| 137 | declare!(I2C1_EV); | ||
| 138 | declare!(I2C2_ER); | ||
| 139 | declare!(I2C2_EV); | ||
| 140 | declare!(I2C3_ER); | ||
| 141 | declare!(I2C3_EV); | ||
| 142 | declare!(I2C4_ER); | ||
| 143 | declare!(I2C4_EV); | ||
| 144 | declare!(LPTIM1); | ||
| 145 | declare!(LPTIM2); | ||
| 146 | declare!(LPUART1); | ||
| 147 | declare!(PVD_PVM); | ||
| 148 | declare!(QUADSPI); | ||
| 149 | declare!(RCC); | ||
| 150 | declare!(RNG); | ||
| 151 | declare!(RTC_Alarm); | ||
| 152 | declare!(RTC_WKUP); | ||
| 153 | declare!(SAI1); | ||
| 154 | declare!(SDMMC1); | ||
| 155 | declare!(SPI1); | ||
| 156 | declare!(SPI2); | ||
| 157 | declare!(SPI3); | ||
| 158 | declare!(TAMP_STAMP); | ||
| 159 | declare!(TIM1_BRK_TIM15); | ||
| 160 | declare!(TIM1_CC); | ||
| 161 | declare!(TIM1_TRG_COM); | ||
| 162 | declare!(TIM1_UP_TIM16); | ||
| 163 | declare!(TIM2); | ||
| 164 | declare!(TIM3); | ||
| 165 | declare!(TIM6_DAC); | ||
| 166 | declare!(TSC); | ||
| 167 | declare!(UART4); | ||
| 168 | declare!(USART1); | ||
| 169 | declare!(USART2); | ||
| 170 | declare!(USART3); | ||
| 171 | declare!(USB); | ||
| 172 | declare!(WWDG); | ||
| 173 | } | ||
| 174 | mod interrupt_vector { | ||
| 175 | extern "C" { | ||
| 176 | fn ADC1(); | ||
| 177 | fn CAN1_RX0(); | ||
| 178 | fn CAN1_RX1(); | ||
| 179 | fn CAN1_SCE(); | ||
| 180 | fn CAN1_TX(); | ||
| 181 | fn COMP(); | ||
| 182 | fn CRS(); | ||
| 183 | fn DFSDM1_FLT0(); | ||
| 184 | fn DFSDM1_FLT1(); | ||
| 185 | fn DMA1_Channel1(); | ||
| 186 | fn DMA1_Channel2(); | ||
| 187 | fn DMA1_Channel3(); | ||
| 188 | fn DMA1_Channel4(); | ||
| 189 | fn DMA1_Channel5(); | ||
| 190 | fn DMA1_Channel6(); | ||
| 191 | fn DMA1_Channel7(); | ||
| 192 | fn DMA2_Channel1(); | ||
| 193 | fn DMA2_Channel2(); | ||
| 194 | fn DMA2_Channel3(); | ||
| 195 | fn DMA2_Channel4(); | ||
| 196 | fn DMA2_Channel5(); | ||
| 197 | fn DMA2_Channel6(); | ||
| 198 | fn DMA2_Channel7(); | ||
| 199 | fn EXTI0(); | ||
| 200 | fn EXTI1(); | ||
| 201 | fn EXTI15_10(); | ||
| 202 | fn EXTI2(); | ||
| 203 | fn EXTI3(); | ||
| 204 | fn EXTI4(); | ||
| 205 | fn EXTI9_5(); | ||
| 206 | fn FLASH(); | ||
| 207 | fn FPU(); | ||
| 208 | fn I2C1_ER(); | ||
| 209 | fn I2C1_EV(); | ||
| 210 | fn I2C2_ER(); | ||
| 211 | fn I2C2_EV(); | ||
| 212 | fn I2C3_ER(); | ||
| 213 | fn I2C3_EV(); | ||
| 214 | fn I2C4_ER(); | ||
| 215 | fn I2C4_EV(); | ||
| 216 | fn LPTIM1(); | ||
| 217 | fn LPTIM2(); | ||
| 218 | fn LPUART1(); | ||
| 219 | fn PVD_PVM(); | ||
| 220 | fn QUADSPI(); | ||
| 221 | fn RCC(); | ||
| 222 | fn RNG(); | ||
| 223 | fn RTC_Alarm(); | ||
| 224 | fn RTC_WKUP(); | ||
| 225 | fn SAI1(); | ||
| 226 | fn SDMMC1(); | ||
| 227 | fn SPI1(); | ||
| 228 | fn SPI2(); | ||
| 229 | fn SPI3(); | ||
| 230 | fn TAMP_STAMP(); | ||
| 231 | fn TIM1_BRK_TIM15(); | ||
| 232 | fn TIM1_CC(); | ||
| 233 | fn TIM1_TRG_COM(); | ||
| 234 | fn TIM1_UP_TIM16(); | ||
| 235 | fn TIM2(); | ||
| 236 | fn TIM3(); | ||
| 237 | fn TIM6_DAC(); | ||
| 238 | fn TSC(); | ||
| 239 | fn UART4(); | ||
| 240 | fn USART1(); | ||
| 241 | fn USART2(); | ||
| 242 | fn USART3(); | ||
| 243 | fn USB(); | ||
| 244 | fn WWDG(); | ||
| 245 | } | ||
| 246 | pub union Vector { | ||
| 247 | _handler: unsafe extern "C" fn(), | ||
| 248 | _reserved: u32, | ||
| 249 | } | ||
| 250 | #[link_section = ".vector_table.interrupts"] | ||
| 251 | #[no_mangle] | ||
| 252 | pub static __INTERRUPTS: [Vector; 85] = [ | ||
| 253 | Vector { _handler: WWDG }, | ||
| 254 | Vector { _handler: PVD_PVM }, | ||
| 255 | Vector { | ||
| 256 | _handler: TAMP_STAMP, | ||
| 257 | }, | ||
| 258 | Vector { _handler: RTC_WKUP }, | ||
| 259 | Vector { _handler: FLASH }, | ||
| 260 | Vector { _handler: RCC }, | ||
| 261 | Vector { _handler: EXTI0 }, | ||
| 262 | Vector { _handler: EXTI1 }, | ||
| 263 | Vector { _handler: EXTI2 }, | ||
| 264 | Vector { _handler: EXTI3 }, | ||
| 265 | Vector { _handler: EXTI4 }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel1, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel2, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel3, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel4, | ||
| 277 | }, | ||
| 278 | Vector { | ||
| 279 | _handler: DMA1_Channel5, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: DMA1_Channel6, | ||
| 283 | }, | ||
| 284 | Vector { | ||
| 285 | _handler: DMA1_Channel7, | ||
| 286 | }, | ||
| 287 | Vector { _handler: ADC1 }, | ||
| 288 | Vector { _handler: CAN1_TX }, | ||
| 289 | Vector { _handler: CAN1_RX0 }, | ||
| 290 | Vector { _handler: CAN1_RX1 }, | ||
| 291 | Vector { _handler: CAN1_SCE }, | ||
| 292 | Vector { _handler: EXTI9_5 }, | ||
| 293 | Vector { | ||
| 294 | _handler: TIM1_BRK_TIM15, | ||
| 295 | }, | ||
| 296 | Vector { | ||
| 297 | _handler: TIM1_UP_TIM16, | ||
| 298 | }, | ||
| 299 | Vector { | ||
| 300 | _handler: TIM1_TRG_COM, | ||
| 301 | }, | ||
| 302 | Vector { _handler: TIM1_CC }, | ||
| 303 | Vector { _handler: TIM2 }, | ||
| 304 | Vector { _handler: TIM3 }, | ||
| 305 | Vector { _reserved: 0 }, | ||
| 306 | Vector { _handler: I2C1_EV }, | ||
| 307 | Vector { _handler: I2C1_ER }, | ||
| 308 | Vector { _handler: I2C2_EV }, | ||
| 309 | Vector { _handler: I2C2_ER }, | ||
| 310 | Vector { _handler: SPI1 }, | ||
| 311 | Vector { _handler: SPI2 }, | ||
| 312 | Vector { _handler: USART1 }, | ||
| 313 | Vector { _handler: USART2 }, | ||
| 314 | Vector { _handler: USART3 }, | ||
| 315 | Vector { | ||
| 316 | _handler: EXTI15_10, | ||
| 317 | }, | ||
| 318 | Vector { | ||
| 319 | _handler: RTC_Alarm, | ||
| 320 | }, | ||
| 321 | Vector { _reserved: 0 }, | ||
| 322 | Vector { _reserved: 0 }, | ||
| 323 | Vector { _reserved: 0 }, | ||
| 324 | Vector { _reserved: 0 }, | ||
| 325 | Vector { _reserved: 0 }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _reserved: 0 }, | ||
| 328 | Vector { _handler: SDMMC1 }, | ||
| 329 | Vector { _reserved: 0 }, | ||
| 330 | Vector { _handler: SPI3 }, | ||
| 331 | Vector { _handler: UART4 }, | ||
| 332 | Vector { _reserved: 0 }, | ||
| 333 | Vector { _handler: TIM6_DAC }, | ||
| 334 | Vector { _reserved: 0 }, | ||
| 335 | Vector { | ||
| 336 | _handler: DMA2_Channel1, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel2, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: DMA2_Channel3, | ||
| 343 | }, | ||
| 344 | Vector { | ||
| 345 | _handler: DMA2_Channel4, | ||
| 346 | }, | ||
| 347 | Vector { | ||
| 348 | _handler: DMA2_Channel5, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: DFSDM1_FLT0, | ||
| 352 | }, | ||
| 353 | Vector { | ||
| 354 | _handler: DFSDM1_FLT1, | ||
| 355 | }, | ||
| 356 | Vector { _reserved: 0 }, | ||
| 357 | Vector { _handler: COMP }, | ||
| 358 | Vector { _handler: LPTIM1 }, | ||
| 359 | Vector { _handler: LPTIM2 }, | ||
| 360 | Vector { _handler: USB }, | ||
| 361 | Vector { | ||
| 362 | _handler: DMA2_Channel6, | ||
| 363 | }, | ||
| 364 | Vector { | ||
| 365 | _handler: DMA2_Channel7, | ||
| 366 | }, | ||
| 367 | Vector { _handler: LPUART1 }, | ||
| 368 | Vector { _handler: QUADSPI }, | ||
| 369 | Vector { _handler: I2C3_EV }, | ||
| 370 | Vector { _handler: I2C3_ER }, | ||
| 371 | Vector { _handler: SAI1 }, | ||
| 372 | Vector { _reserved: 0 }, | ||
| 373 | Vector { _reserved: 0 }, | ||
| 374 | Vector { _handler: TSC }, | ||
| 375 | Vector { _reserved: 0 }, | ||
| 376 | Vector { _reserved: 0 }, | ||
| 377 | Vector { _handler: RNG }, | ||
| 378 | Vector { _handler: FPU }, | ||
| 379 | Vector { _handler: CRS }, | ||
| 380 | Vector { _handler: I2C4_EV }, | ||
| 381 | Vector { _handler: I2C4_ER }, | ||
| 382 | ]; | ||
| 383 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 384 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 385 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 386 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l452ve.rs b/embassy-stm32/src/chip/stm32l452ve.rs index 5b23cead2..05eaeda97 100644 --- a/embassy-stm32/src/chip/stm32l452ve.rs +++ b/embassy-stm32/src/chip/stm32l452ve.rs | |||
| @@ -1,18 +1,386 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, |
| 5 | PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, | 5 | PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, |
| 6 | PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, | 6 | PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, |
| 7 | PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, | 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, |
| 8 | PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, | 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, |
| 9 | PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 10 | PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, | 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, |
| 11 | RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, | 11 | RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, |
| 12 | USART1, USART2, USART3, USB, WWDG | 12 | UART4, USART1, USART2, USART3, USB, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | CAN1_RX0 = 20, | ||
| 29 | CAN1_RX1 = 21, | ||
| 30 | CAN1_SCE = 22, | ||
| 31 | CAN1_TX = 19, | ||
| 32 | COMP = 64, | ||
| 33 | CRS = 82, | ||
| 34 | DFSDM1_FLT0 = 61, | ||
| 35 | DFSDM1_FLT1 = 62, | ||
| 36 | DMA1_Channel1 = 11, | ||
| 37 | DMA1_Channel2 = 12, | ||
| 38 | DMA1_Channel3 = 13, | ||
| 39 | DMA1_Channel4 = 14, | ||
| 40 | DMA1_Channel5 = 15, | ||
| 41 | DMA1_Channel6 = 16, | ||
| 42 | DMA1_Channel7 = 17, | ||
| 43 | DMA2_Channel1 = 56, | ||
| 44 | DMA2_Channel2 = 57, | ||
| 45 | DMA2_Channel3 = 58, | ||
| 46 | DMA2_Channel4 = 59, | ||
| 47 | DMA2_Channel5 = 60, | ||
| 48 | DMA2_Channel6 = 68, | ||
| 49 | DMA2_Channel7 = 69, | ||
| 50 | EXTI0 = 6, | ||
| 51 | EXTI1 = 7, | ||
| 52 | EXTI15_10 = 40, | ||
| 53 | EXTI2 = 8, | ||
| 54 | EXTI3 = 9, | ||
| 55 | EXTI4 = 10, | ||
| 56 | EXTI9_5 = 23, | ||
| 57 | FLASH = 4, | ||
| 58 | FPU = 81, | ||
| 59 | I2C1_ER = 32, | ||
| 60 | I2C1_EV = 31, | ||
| 61 | I2C2_ER = 34, | ||
| 62 | I2C2_EV = 33, | ||
| 63 | I2C3_ER = 73, | ||
| 64 | I2C3_EV = 72, | ||
| 65 | I2C4_ER = 84, | ||
| 66 | I2C4_EV = 83, | ||
| 67 | LPTIM1 = 65, | ||
| 68 | LPTIM2 = 66, | ||
| 69 | LPUART1 = 70, | ||
| 70 | PVD_PVM = 1, | ||
| 71 | QUADSPI = 71, | ||
| 72 | RCC = 5, | ||
| 73 | RNG = 80, | ||
| 74 | RTC_Alarm = 41, | ||
| 75 | RTC_WKUP = 3, | ||
| 76 | SAI1 = 74, | ||
| 77 | SDMMC1 = 49, | ||
| 78 | SPI1 = 35, | ||
| 79 | SPI2 = 36, | ||
| 80 | SPI3 = 51, | ||
| 81 | TAMP_STAMP = 2, | ||
| 82 | TIM1_BRK_TIM15 = 24, | ||
| 83 | TIM1_CC = 27, | ||
| 84 | TIM1_TRG_COM = 26, | ||
| 85 | TIM1_UP_TIM16 = 25, | ||
| 86 | TIM2 = 28, | ||
| 87 | TIM3 = 29, | ||
| 88 | TIM6_DAC = 54, | ||
| 89 | TSC = 77, | ||
| 90 | UART4 = 52, | ||
| 91 | USART1 = 37, | ||
| 92 | USART2 = 38, | ||
| 93 | USART3 = 39, | ||
| 94 | USB = 67, | ||
| 95 | WWDG = 0, | ||
| 96 | } | ||
| 97 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 98 | #[inline(always)] | ||
| 99 | fn number(self) -> u16 { | ||
| 100 | self as u16 | ||
| 101 | } | ||
| 102 | } | ||
| 103 | |||
| 104 | declare!(ADC1); | ||
| 105 | declare!(CAN1_RX0); | ||
| 106 | declare!(CAN1_RX1); | ||
| 107 | declare!(CAN1_SCE); | ||
| 108 | declare!(CAN1_TX); | ||
| 109 | declare!(COMP); | ||
| 110 | declare!(CRS); | ||
| 111 | declare!(DFSDM1_FLT0); | ||
| 112 | declare!(DFSDM1_FLT1); | ||
| 113 | declare!(DMA1_Channel1); | ||
| 114 | declare!(DMA1_Channel2); | ||
| 115 | declare!(DMA1_Channel3); | ||
| 116 | declare!(DMA1_Channel4); | ||
| 117 | declare!(DMA1_Channel5); | ||
| 118 | declare!(DMA1_Channel6); | ||
| 119 | declare!(DMA1_Channel7); | ||
| 120 | declare!(DMA2_Channel1); | ||
| 121 | declare!(DMA2_Channel2); | ||
| 122 | declare!(DMA2_Channel3); | ||
| 123 | declare!(DMA2_Channel4); | ||
| 124 | declare!(DMA2_Channel5); | ||
| 125 | declare!(DMA2_Channel6); | ||
| 126 | declare!(DMA2_Channel7); | ||
| 127 | declare!(EXTI0); | ||
| 128 | declare!(EXTI1); | ||
| 129 | declare!(EXTI15_10); | ||
| 130 | declare!(EXTI2); | ||
| 131 | declare!(EXTI3); | ||
| 132 | declare!(EXTI4); | ||
| 133 | declare!(EXTI9_5); | ||
| 134 | declare!(FLASH); | ||
| 135 | declare!(FPU); | ||
| 136 | declare!(I2C1_ER); | ||
| 137 | declare!(I2C1_EV); | ||
| 138 | declare!(I2C2_ER); | ||
| 139 | declare!(I2C2_EV); | ||
| 140 | declare!(I2C3_ER); | ||
| 141 | declare!(I2C3_EV); | ||
| 142 | declare!(I2C4_ER); | ||
| 143 | declare!(I2C4_EV); | ||
| 144 | declare!(LPTIM1); | ||
| 145 | declare!(LPTIM2); | ||
| 146 | declare!(LPUART1); | ||
| 147 | declare!(PVD_PVM); | ||
| 148 | declare!(QUADSPI); | ||
| 149 | declare!(RCC); | ||
| 150 | declare!(RNG); | ||
| 151 | declare!(RTC_Alarm); | ||
| 152 | declare!(RTC_WKUP); | ||
| 153 | declare!(SAI1); | ||
| 154 | declare!(SDMMC1); | ||
| 155 | declare!(SPI1); | ||
| 156 | declare!(SPI2); | ||
| 157 | declare!(SPI3); | ||
| 158 | declare!(TAMP_STAMP); | ||
| 159 | declare!(TIM1_BRK_TIM15); | ||
| 160 | declare!(TIM1_CC); | ||
| 161 | declare!(TIM1_TRG_COM); | ||
| 162 | declare!(TIM1_UP_TIM16); | ||
| 163 | declare!(TIM2); | ||
| 164 | declare!(TIM3); | ||
| 165 | declare!(TIM6_DAC); | ||
| 166 | declare!(TSC); | ||
| 167 | declare!(UART4); | ||
| 168 | declare!(USART1); | ||
| 169 | declare!(USART2); | ||
| 170 | declare!(USART3); | ||
| 171 | declare!(USB); | ||
| 172 | declare!(WWDG); | ||
| 173 | } | ||
| 174 | mod interrupt_vector { | ||
| 175 | extern "C" { | ||
| 176 | fn ADC1(); | ||
| 177 | fn CAN1_RX0(); | ||
| 178 | fn CAN1_RX1(); | ||
| 179 | fn CAN1_SCE(); | ||
| 180 | fn CAN1_TX(); | ||
| 181 | fn COMP(); | ||
| 182 | fn CRS(); | ||
| 183 | fn DFSDM1_FLT0(); | ||
| 184 | fn DFSDM1_FLT1(); | ||
| 185 | fn DMA1_Channel1(); | ||
| 186 | fn DMA1_Channel2(); | ||
| 187 | fn DMA1_Channel3(); | ||
| 188 | fn DMA1_Channel4(); | ||
| 189 | fn DMA1_Channel5(); | ||
| 190 | fn DMA1_Channel6(); | ||
| 191 | fn DMA1_Channel7(); | ||
| 192 | fn DMA2_Channel1(); | ||
| 193 | fn DMA2_Channel2(); | ||
| 194 | fn DMA2_Channel3(); | ||
| 195 | fn DMA2_Channel4(); | ||
| 196 | fn DMA2_Channel5(); | ||
| 197 | fn DMA2_Channel6(); | ||
| 198 | fn DMA2_Channel7(); | ||
| 199 | fn EXTI0(); | ||
| 200 | fn EXTI1(); | ||
| 201 | fn EXTI15_10(); | ||
| 202 | fn EXTI2(); | ||
| 203 | fn EXTI3(); | ||
| 204 | fn EXTI4(); | ||
| 205 | fn EXTI9_5(); | ||
| 206 | fn FLASH(); | ||
| 207 | fn FPU(); | ||
| 208 | fn I2C1_ER(); | ||
| 209 | fn I2C1_EV(); | ||
| 210 | fn I2C2_ER(); | ||
| 211 | fn I2C2_EV(); | ||
| 212 | fn I2C3_ER(); | ||
| 213 | fn I2C3_EV(); | ||
| 214 | fn I2C4_ER(); | ||
| 215 | fn I2C4_EV(); | ||
| 216 | fn LPTIM1(); | ||
| 217 | fn LPTIM2(); | ||
| 218 | fn LPUART1(); | ||
| 219 | fn PVD_PVM(); | ||
| 220 | fn QUADSPI(); | ||
| 221 | fn RCC(); | ||
| 222 | fn RNG(); | ||
| 223 | fn RTC_Alarm(); | ||
| 224 | fn RTC_WKUP(); | ||
| 225 | fn SAI1(); | ||
| 226 | fn SDMMC1(); | ||
| 227 | fn SPI1(); | ||
| 228 | fn SPI2(); | ||
| 229 | fn SPI3(); | ||
| 230 | fn TAMP_STAMP(); | ||
| 231 | fn TIM1_BRK_TIM15(); | ||
| 232 | fn TIM1_CC(); | ||
| 233 | fn TIM1_TRG_COM(); | ||
| 234 | fn TIM1_UP_TIM16(); | ||
| 235 | fn TIM2(); | ||
| 236 | fn TIM3(); | ||
| 237 | fn TIM6_DAC(); | ||
| 238 | fn TSC(); | ||
| 239 | fn UART4(); | ||
| 240 | fn USART1(); | ||
| 241 | fn USART2(); | ||
| 242 | fn USART3(); | ||
| 243 | fn USB(); | ||
| 244 | fn WWDG(); | ||
| 245 | } | ||
| 246 | pub union Vector { | ||
| 247 | _handler: unsafe extern "C" fn(), | ||
| 248 | _reserved: u32, | ||
| 249 | } | ||
| 250 | #[link_section = ".vector_table.interrupts"] | ||
| 251 | #[no_mangle] | ||
| 252 | pub static __INTERRUPTS: [Vector; 85] = [ | ||
| 253 | Vector { _handler: WWDG }, | ||
| 254 | Vector { _handler: PVD_PVM }, | ||
| 255 | Vector { | ||
| 256 | _handler: TAMP_STAMP, | ||
| 257 | }, | ||
| 258 | Vector { _handler: RTC_WKUP }, | ||
| 259 | Vector { _handler: FLASH }, | ||
| 260 | Vector { _handler: RCC }, | ||
| 261 | Vector { _handler: EXTI0 }, | ||
| 262 | Vector { _handler: EXTI1 }, | ||
| 263 | Vector { _handler: EXTI2 }, | ||
| 264 | Vector { _handler: EXTI3 }, | ||
| 265 | Vector { _handler: EXTI4 }, | ||
| 266 | Vector { | ||
| 267 | _handler: DMA1_Channel1, | ||
| 268 | }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel2, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel3, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel4, | ||
| 277 | }, | ||
| 278 | Vector { | ||
| 279 | _handler: DMA1_Channel5, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: DMA1_Channel6, | ||
| 283 | }, | ||
| 284 | Vector { | ||
| 285 | _handler: DMA1_Channel7, | ||
| 286 | }, | ||
| 287 | Vector { _handler: ADC1 }, | ||
| 288 | Vector { _handler: CAN1_TX }, | ||
| 289 | Vector { _handler: CAN1_RX0 }, | ||
| 290 | Vector { _handler: CAN1_RX1 }, | ||
| 291 | Vector { _handler: CAN1_SCE }, | ||
| 292 | Vector { _handler: EXTI9_5 }, | ||
| 293 | Vector { | ||
| 294 | _handler: TIM1_BRK_TIM15, | ||
| 295 | }, | ||
| 296 | Vector { | ||
| 297 | _handler: TIM1_UP_TIM16, | ||
| 298 | }, | ||
| 299 | Vector { | ||
| 300 | _handler: TIM1_TRG_COM, | ||
| 301 | }, | ||
| 302 | Vector { _handler: TIM1_CC }, | ||
| 303 | Vector { _handler: TIM2 }, | ||
| 304 | Vector { _handler: TIM3 }, | ||
| 305 | Vector { _reserved: 0 }, | ||
| 306 | Vector { _handler: I2C1_EV }, | ||
| 307 | Vector { _handler: I2C1_ER }, | ||
| 308 | Vector { _handler: I2C2_EV }, | ||
| 309 | Vector { _handler: I2C2_ER }, | ||
| 310 | Vector { _handler: SPI1 }, | ||
| 311 | Vector { _handler: SPI2 }, | ||
| 312 | Vector { _handler: USART1 }, | ||
| 313 | Vector { _handler: USART2 }, | ||
| 314 | Vector { _handler: USART3 }, | ||
| 315 | Vector { | ||
| 316 | _handler: EXTI15_10, | ||
| 317 | }, | ||
| 318 | Vector { | ||
| 319 | _handler: RTC_Alarm, | ||
| 320 | }, | ||
| 321 | Vector { _reserved: 0 }, | ||
| 322 | Vector { _reserved: 0 }, | ||
| 323 | Vector { _reserved: 0 }, | ||
| 324 | Vector { _reserved: 0 }, | ||
| 325 | Vector { _reserved: 0 }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _reserved: 0 }, | ||
| 328 | Vector { _handler: SDMMC1 }, | ||
| 329 | Vector { _reserved: 0 }, | ||
| 330 | Vector { _handler: SPI3 }, | ||
| 331 | Vector { _handler: UART4 }, | ||
| 332 | Vector { _reserved: 0 }, | ||
| 333 | Vector { _handler: TIM6_DAC }, | ||
| 334 | Vector { _reserved: 0 }, | ||
| 335 | Vector { | ||
| 336 | _handler: DMA2_Channel1, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel2, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: DMA2_Channel3, | ||
| 343 | }, | ||
| 344 | Vector { | ||
| 345 | _handler: DMA2_Channel4, | ||
| 346 | }, | ||
| 347 | Vector { | ||
| 348 | _handler: DMA2_Channel5, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: DFSDM1_FLT0, | ||
| 352 | }, | ||
| 353 | Vector { | ||
| 354 | _handler: DFSDM1_FLT1, | ||
| 355 | }, | ||
| 356 | Vector { _reserved: 0 }, | ||
| 357 | Vector { _handler: COMP }, | ||
| 358 | Vector { _handler: LPTIM1 }, | ||
| 359 | Vector { _handler: LPTIM2 }, | ||
| 360 | Vector { _handler: USB }, | ||
| 361 | Vector { | ||
| 362 | _handler: DMA2_Channel6, | ||
| 363 | }, | ||
| 364 | Vector { | ||
| 365 | _handler: DMA2_Channel7, | ||
| 366 | }, | ||
| 367 | Vector { _handler: LPUART1 }, | ||
| 368 | Vector { _handler: QUADSPI }, | ||
| 369 | Vector { _handler: I2C3_EV }, | ||
| 370 | Vector { _handler: I2C3_ER }, | ||
| 371 | Vector { _handler: SAI1 }, | ||
| 372 | Vector { _reserved: 0 }, | ||
| 373 | Vector { _reserved: 0 }, | ||
| 374 | Vector { _handler: TSC }, | ||
| 375 | Vector { _reserved: 0 }, | ||
| 376 | Vector { _reserved: 0 }, | ||
| 377 | Vector { _handler: RNG }, | ||
| 378 | Vector { _handler: FPU }, | ||
| 379 | Vector { _handler: CRS }, | ||
| 380 | Vector { _handler: I2C4_EV }, | ||
| 381 | Vector { _handler: I2C4_ER }, | ||
| 382 | ]; | ||
| 383 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 384 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 385 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 386 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l462ce.rs b/embassy-stm32/src/chip/stm32l462ce.rs index 2b8be5423..65b8842cd 100644 --- a/embassy-stm32/src/chip/stm32l462ce.rs +++ b/embassy-stm32/src/chip/stm32l462ce.rs | |||
| @@ -1,18 +1,389 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, | 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, |
| 5 | PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, | 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, |
| 6 | PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 9 | PE11, PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, | 10 | PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, |
| 11 | RNG, RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, | 11 | RCC, RNG, RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, |
| 12 | USART1, USART2, USART3, USB, WWDG | 12 | UART4, USART1, USART2, USART3, USB, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | AES = 79, | ||
| 29 | CAN1_RX0 = 20, | ||
| 30 | CAN1_RX1 = 21, | ||
| 31 | CAN1_SCE = 22, | ||
| 32 | CAN1_TX = 19, | ||
| 33 | COMP = 64, | ||
| 34 | CRS = 82, | ||
| 35 | DFSDM1_FLT0 = 61, | ||
| 36 | DFSDM1_FLT1 = 62, | ||
| 37 | DMA1_Channel1 = 11, | ||
| 38 | DMA1_Channel2 = 12, | ||
| 39 | DMA1_Channel3 = 13, | ||
| 40 | DMA1_Channel4 = 14, | ||
| 41 | DMA1_Channel5 = 15, | ||
| 42 | DMA1_Channel6 = 16, | ||
| 43 | DMA1_Channel7 = 17, | ||
| 44 | DMA2_Channel1 = 56, | ||
| 45 | DMA2_Channel2 = 57, | ||
| 46 | DMA2_Channel3 = 58, | ||
| 47 | DMA2_Channel4 = 59, | ||
| 48 | DMA2_Channel5 = 60, | ||
| 49 | DMA2_Channel6 = 68, | ||
| 50 | DMA2_Channel7 = 69, | ||
| 51 | EXTI0 = 6, | ||
| 52 | EXTI1 = 7, | ||
| 53 | EXTI15_10 = 40, | ||
| 54 | EXTI2 = 8, | ||
| 55 | EXTI3 = 9, | ||
| 56 | EXTI4 = 10, | ||
| 57 | EXTI9_5 = 23, | ||
| 58 | FLASH = 4, | ||
| 59 | FPU = 81, | ||
| 60 | I2C1_ER = 32, | ||
| 61 | I2C1_EV = 31, | ||
| 62 | I2C2_ER = 34, | ||
| 63 | I2C2_EV = 33, | ||
| 64 | I2C3_ER = 73, | ||
| 65 | I2C3_EV = 72, | ||
| 66 | I2C4_ER = 84, | ||
| 67 | I2C4_EV = 83, | ||
| 68 | LPTIM1 = 65, | ||
| 69 | LPTIM2 = 66, | ||
| 70 | LPUART1 = 70, | ||
| 71 | PVD_PVM = 1, | ||
| 72 | QUADSPI = 71, | ||
| 73 | RCC = 5, | ||
| 74 | RNG = 80, | ||
| 75 | RTC_Alarm = 41, | ||
| 76 | RTC_WKUP = 3, | ||
| 77 | SAI1 = 74, | ||
| 78 | SDMMC1 = 49, | ||
| 79 | SPI1 = 35, | ||
| 80 | SPI2 = 36, | ||
| 81 | SPI3 = 51, | ||
| 82 | TAMP_STAMP = 2, | ||
| 83 | TIM1_BRK_TIM15 = 24, | ||
| 84 | TIM1_CC = 27, | ||
| 85 | TIM1_TRG_COM = 26, | ||
| 86 | TIM1_UP_TIM16 = 25, | ||
| 87 | TIM2 = 28, | ||
| 88 | TIM3 = 29, | ||
| 89 | TIM6_DAC = 54, | ||
| 90 | TSC = 77, | ||
| 91 | UART4 = 52, | ||
| 92 | USART1 = 37, | ||
| 93 | USART2 = 38, | ||
| 94 | USART3 = 39, | ||
| 95 | USB = 67, | ||
| 96 | WWDG = 0, | ||
| 97 | } | ||
| 98 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 99 | #[inline(always)] | ||
| 100 | fn number(self) -> u16 { | ||
| 101 | self as u16 | ||
| 102 | } | ||
| 103 | } | ||
| 104 | |||
| 105 | declare!(ADC1); | ||
| 106 | declare!(AES); | ||
| 107 | declare!(CAN1_RX0); | ||
| 108 | declare!(CAN1_RX1); | ||
| 109 | declare!(CAN1_SCE); | ||
| 110 | declare!(CAN1_TX); | ||
| 111 | declare!(COMP); | ||
| 112 | declare!(CRS); | ||
| 113 | declare!(DFSDM1_FLT0); | ||
| 114 | declare!(DFSDM1_FLT1); | ||
| 115 | declare!(DMA1_Channel1); | ||
| 116 | declare!(DMA1_Channel2); | ||
| 117 | declare!(DMA1_Channel3); | ||
| 118 | declare!(DMA1_Channel4); | ||
| 119 | declare!(DMA1_Channel5); | ||
| 120 | declare!(DMA1_Channel6); | ||
| 121 | declare!(DMA1_Channel7); | ||
| 122 | declare!(DMA2_Channel1); | ||
| 123 | declare!(DMA2_Channel2); | ||
| 124 | declare!(DMA2_Channel3); | ||
| 125 | declare!(DMA2_Channel4); | ||
| 126 | declare!(DMA2_Channel5); | ||
| 127 | declare!(DMA2_Channel6); | ||
| 128 | declare!(DMA2_Channel7); | ||
| 129 | declare!(EXTI0); | ||
| 130 | declare!(EXTI1); | ||
| 131 | declare!(EXTI15_10); | ||
| 132 | declare!(EXTI2); | ||
| 133 | declare!(EXTI3); | ||
| 134 | declare!(EXTI4); | ||
| 135 | declare!(EXTI9_5); | ||
| 136 | declare!(FLASH); | ||
| 137 | declare!(FPU); | ||
| 138 | declare!(I2C1_ER); | ||
| 139 | declare!(I2C1_EV); | ||
| 140 | declare!(I2C2_ER); | ||
| 141 | declare!(I2C2_EV); | ||
| 142 | declare!(I2C3_ER); | ||
| 143 | declare!(I2C3_EV); | ||
| 144 | declare!(I2C4_ER); | ||
| 145 | declare!(I2C4_EV); | ||
| 146 | declare!(LPTIM1); | ||
| 147 | declare!(LPTIM2); | ||
| 148 | declare!(LPUART1); | ||
| 149 | declare!(PVD_PVM); | ||
| 150 | declare!(QUADSPI); | ||
| 151 | declare!(RCC); | ||
| 152 | declare!(RNG); | ||
| 153 | declare!(RTC_Alarm); | ||
| 154 | declare!(RTC_WKUP); | ||
| 155 | declare!(SAI1); | ||
| 156 | declare!(SDMMC1); | ||
| 157 | declare!(SPI1); | ||
| 158 | declare!(SPI2); | ||
| 159 | declare!(SPI3); | ||
| 160 | declare!(TAMP_STAMP); | ||
| 161 | declare!(TIM1_BRK_TIM15); | ||
| 162 | declare!(TIM1_CC); | ||
| 163 | declare!(TIM1_TRG_COM); | ||
| 164 | declare!(TIM1_UP_TIM16); | ||
| 165 | declare!(TIM2); | ||
| 166 | declare!(TIM3); | ||
| 167 | declare!(TIM6_DAC); | ||
| 168 | declare!(TSC); | ||
| 169 | declare!(UART4); | ||
| 170 | declare!(USART1); | ||
| 171 | declare!(USART2); | ||
| 172 | declare!(USART3); | ||
| 173 | declare!(USB); | ||
| 174 | declare!(WWDG); | ||
| 175 | } | ||
| 176 | mod interrupt_vector { | ||
| 177 | extern "C" { | ||
| 178 | fn ADC1(); | ||
| 179 | fn AES(); | ||
| 180 | fn CAN1_RX0(); | ||
| 181 | fn CAN1_RX1(); | ||
| 182 | fn CAN1_SCE(); | ||
| 183 | fn CAN1_TX(); | ||
| 184 | fn COMP(); | ||
| 185 | fn CRS(); | ||
| 186 | fn DFSDM1_FLT0(); | ||
| 187 | fn DFSDM1_FLT1(); | ||
| 188 | fn DMA1_Channel1(); | ||
| 189 | fn DMA1_Channel2(); | ||
| 190 | fn DMA1_Channel3(); | ||
| 191 | fn DMA1_Channel4(); | ||
| 192 | fn DMA1_Channel5(); | ||
| 193 | fn DMA1_Channel6(); | ||
| 194 | fn DMA1_Channel7(); | ||
| 195 | fn DMA2_Channel1(); | ||
| 196 | fn DMA2_Channel2(); | ||
| 197 | fn DMA2_Channel3(); | ||
| 198 | fn DMA2_Channel4(); | ||
| 199 | fn DMA2_Channel5(); | ||
| 200 | fn DMA2_Channel6(); | ||
| 201 | fn DMA2_Channel7(); | ||
| 202 | fn EXTI0(); | ||
| 203 | fn EXTI1(); | ||
| 204 | fn EXTI15_10(); | ||
| 205 | fn EXTI2(); | ||
| 206 | fn EXTI3(); | ||
| 207 | fn EXTI4(); | ||
| 208 | fn EXTI9_5(); | ||
| 209 | fn FLASH(); | ||
| 210 | fn FPU(); | ||
| 211 | fn I2C1_ER(); | ||
| 212 | fn I2C1_EV(); | ||
| 213 | fn I2C2_ER(); | ||
| 214 | fn I2C2_EV(); | ||
| 215 | fn I2C3_ER(); | ||
| 216 | fn I2C3_EV(); | ||
| 217 | fn I2C4_ER(); | ||
| 218 | fn I2C4_EV(); | ||
| 219 | fn LPTIM1(); | ||
| 220 | fn LPTIM2(); | ||
| 221 | fn LPUART1(); | ||
| 222 | fn PVD_PVM(); | ||
| 223 | fn QUADSPI(); | ||
| 224 | fn RCC(); | ||
| 225 | fn RNG(); | ||
| 226 | fn RTC_Alarm(); | ||
| 227 | fn RTC_WKUP(); | ||
| 228 | fn SAI1(); | ||
| 229 | fn SDMMC1(); | ||
| 230 | fn SPI1(); | ||
| 231 | fn SPI2(); | ||
| 232 | fn SPI3(); | ||
| 233 | fn TAMP_STAMP(); | ||
| 234 | fn TIM1_BRK_TIM15(); | ||
| 235 | fn TIM1_CC(); | ||
| 236 | fn TIM1_TRG_COM(); | ||
| 237 | fn TIM1_UP_TIM16(); | ||
| 238 | fn TIM2(); | ||
| 239 | fn TIM3(); | ||
| 240 | fn TIM6_DAC(); | ||
| 241 | fn TSC(); | ||
| 242 | fn UART4(); | ||
| 243 | fn USART1(); | ||
| 244 | fn USART2(); | ||
| 245 | fn USART3(); | ||
| 246 | fn USB(); | ||
| 247 | fn WWDG(); | ||
| 248 | } | ||
| 249 | pub union Vector { | ||
| 250 | _handler: unsafe extern "C" fn(), | ||
| 251 | _reserved: u32, | ||
| 252 | } | ||
| 253 | #[link_section = ".vector_table.interrupts"] | ||
| 254 | #[no_mangle] | ||
| 255 | pub static __INTERRUPTS: [Vector; 85] = [ | ||
| 256 | Vector { _handler: WWDG }, | ||
| 257 | Vector { _handler: PVD_PVM }, | ||
| 258 | Vector { | ||
| 259 | _handler: TAMP_STAMP, | ||
| 260 | }, | ||
| 261 | Vector { _handler: RTC_WKUP }, | ||
| 262 | Vector { _handler: FLASH }, | ||
| 263 | Vector { _handler: RCC }, | ||
| 264 | Vector { _handler: EXTI0 }, | ||
| 265 | Vector { _handler: EXTI1 }, | ||
| 266 | Vector { _handler: EXTI2 }, | ||
| 267 | Vector { _handler: EXTI3 }, | ||
| 268 | Vector { _handler: EXTI4 }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel1, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel2, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel3, | ||
| 277 | }, | ||
| 278 | Vector { | ||
| 279 | _handler: DMA1_Channel4, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: DMA1_Channel5, | ||
| 283 | }, | ||
| 284 | Vector { | ||
| 285 | _handler: DMA1_Channel6, | ||
| 286 | }, | ||
| 287 | Vector { | ||
| 288 | _handler: DMA1_Channel7, | ||
| 289 | }, | ||
| 290 | Vector { _handler: ADC1 }, | ||
| 291 | Vector { _handler: CAN1_TX }, | ||
| 292 | Vector { _handler: CAN1_RX0 }, | ||
| 293 | Vector { _handler: CAN1_RX1 }, | ||
| 294 | Vector { _handler: CAN1_SCE }, | ||
| 295 | Vector { _handler: EXTI9_5 }, | ||
| 296 | Vector { | ||
| 297 | _handler: TIM1_BRK_TIM15, | ||
| 298 | }, | ||
| 299 | Vector { | ||
| 300 | _handler: TIM1_UP_TIM16, | ||
| 301 | }, | ||
| 302 | Vector { | ||
| 303 | _handler: TIM1_TRG_COM, | ||
| 304 | }, | ||
| 305 | Vector { _handler: TIM1_CC }, | ||
| 306 | Vector { _handler: TIM2 }, | ||
| 307 | Vector { _handler: TIM3 }, | ||
| 308 | Vector { _reserved: 0 }, | ||
| 309 | Vector { _handler: I2C1_EV }, | ||
| 310 | Vector { _handler: I2C1_ER }, | ||
| 311 | Vector { _handler: I2C2_EV }, | ||
| 312 | Vector { _handler: I2C2_ER }, | ||
| 313 | Vector { _handler: SPI1 }, | ||
| 314 | Vector { _handler: SPI2 }, | ||
| 315 | Vector { _handler: USART1 }, | ||
| 316 | Vector { _handler: USART2 }, | ||
| 317 | Vector { _handler: USART3 }, | ||
| 318 | Vector { | ||
| 319 | _handler: EXTI15_10, | ||
| 320 | }, | ||
| 321 | Vector { | ||
| 322 | _handler: RTC_Alarm, | ||
| 323 | }, | ||
| 324 | Vector { _reserved: 0 }, | ||
| 325 | Vector { _reserved: 0 }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _reserved: 0 }, | ||
| 328 | Vector { _reserved: 0 }, | ||
| 329 | Vector { _reserved: 0 }, | ||
| 330 | Vector { _reserved: 0 }, | ||
| 331 | Vector { _handler: SDMMC1 }, | ||
| 332 | Vector { _reserved: 0 }, | ||
| 333 | Vector { _handler: SPI3 }, | ||
| 334 | Vector { _handler: UART4 }, | ||
| 335 | Vector { _reserved: 0 }, | ||
| 336 | Vector { _handler: TIM6_DAC }, | ||
| 337 | Vector { _reserved: 0 }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel1, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: DMA2_Channel2, | ||
| 343 | }, | ||
| 344 | Vector { | ||
| 345 | _handler: DMA2_Channel3, | ||
| 346 | }, | ||
| 347 | Vector { | ||
| 348 | _handler: DMA2_Channel4, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: DMA2_Channel5, | ||
| 352 | }, | ||
| 353 | Vector { | ||
| 354 | _handler: DFSDM1_FLT0, | ||
| 355 | }, | ||
| 356 | Vector { | ||
| 357 | _handler: DFSDM1_FLT1, | ||
| 358 | }, | ||
| 359 | Vector { _reserved: 0 }, | ||
| 360 | Vector { _handler: COMP }, | ||
| 361 | Vector { _handler: LPTIM1 }, | ||
| 362 | Vector { _handler: LPTIM2 }, | ||
| 363 | Vector { _handler: USB }, | ||
| 364 | Vector { | ||
| 365 | _handler: DMA2_Channel6, | ||
| 366 | }, | ||
| 367 | Vector { | ||
| 368 | _handler: DMA2_Channel7, | ||
| 369 | }, | ||
| 370 | Vector { _handler: LPUART1 }, | ||
| 371 | Vector { _handler: QUADSPI }, | ||
| 372 | Vector { _handler: I2C3_EV }, | ||
| 373 | Vector { _handler: I2C3_ER }, | ||
| 374 | Vector { _handler: SAI1 }, | ||
| 375 | Vector { _reserved: 0 }, | ||
| 376 | Vector { _reserved: 0 }, | ||
| 377 | Vector { _handler: TSC }, | ||
| 378 | Vector { _reserved: 0 }, | ||
| 379 | Vector { _handler: AES }, | ||
| 380 | Vector { _handler: RNG }, | ||
| 381 | Vector { _handler: FPU }, | ||
| 382 | Vector { _handler: CRS }, | ||
| 383 | Vector { _handler: I2C4_EV }, | ||
| 384 | Vector { _handler: I2C4_ER }, | ||
| 385 | ]; | ||
| 386 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 387 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 388 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 389 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l462re.rs b/embassy-stm32/src/chip/stm32l462re.rs index 40dbb9a04..4a4055b50 100644 --- a/embassy-stm32/src/chip/stm32l462re.rs +++ b/embassy-stm32/src/chip/stm32l462re.rs | |||
| @@ -1,18 +1,389 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, | 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, |
| 5 | PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, | 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, |
| 6 | PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 9 | PE11, PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, | 10 | PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, |
| 11 | RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, | 11 | RCC, RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, |
| 12 | UART4, USART1, USART2, USART3, USB, WWDG | 12 | TSC, UART4, USART1, USART2, USART3, USB, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | AES = 79, | ||
| 29 | CAN1_RX0 = 20, | ||
| 30 | CAN1_RX1 = 21, | ||
| 31 | CAN1_SCE = 22, | ||
| 32 | CAN1_TX = 19, | ||
| 33 | COMP = 64, | ||
| 34 | CRS = 82, | ||
| 35 | DFSDM1_FLT0 = 61, | ||
| 36 | DFSDM1_FLT1 = 62, | ||
| 37 | DMA1_Channel1 = 11, | ||
| 38 | DMA1_Channel2 = 12, | ||
| 39 | DMA1_Channel3 = 13, | ||
| 40 | DMA1_Channel4 = 14, | ||
| 41 | DMA1_Channel5 = 15, | ||
| 42 | DMA1_Channel6 = 16, | ||
| 43 | DMA1_Channel7 = 17, | ||
| 44 | DMA2_Channel1 = 56, | ||
| 45 | DMA2_Channel2 = 57, | ||
| 46 | DMA2_Channel3 = 58, | ||
| 47 | DMA2_Channel4 = 59, | ||
| 48 | DMA2_Channel5 = 60, | ||
| 49 | DMA2_Channel6 = 68, | ||
| 50 | DMA2_Channel7 = 69, | ||
| 51 | EXTI0 = 6, | ||
| 52 | EXTI1 = 7, | ||
| 53 | EXTI15_10 = 40, | ||
| 54 | EXTI2 = 8, | ||
| 55 | EXTI3 = 9, | ||
| 56 | EXTI4 = 10, | ||
| 57 | EXTI9_5 = 23, | ||
| 58 | FLASH = 4, | ||
| 59 | FPU = 81, | ||
| 60 | I2C1_ER = 32, | ||
| 61 | I2C1_EV = 31, | ||
| 62 | I2C2_ER = 34, | ||
| 63 | I2C2_EV = 33, | ||
| 64 | I2C3_ER = 73, | ||
| 65 | I2C3_EV = 72, | ||
| 66 | I2C4_ER = 84, | ||
| 67 | I2C4_EV = 83, | ||
| 68 | LPTIM1 = 65, | ||
| 69 | LPTIM2 = 66, | ||
| 70 | LPUART1 = 70, | ||
| 71 | PVD_PVM = 1, | ||
| 72 | QUADSPI = 71, | ||
| 73 | RCC = 5, | ||
| 74 | RNG = 80, | ||
| 75 | RTC_Alarm = 41, | ||
| 76 | RTC_WKUP = 3, | ||
| 77 | SAI1 = 74, | ||
| 78 | SDMMC1 = 49, | ||
| 79 | SPI1 = 35, | ||
| 80 | SPI2 = 36, | ||
| 81 | SPI3 = 51, | ||
| 82 | TAMP_STAMP = 2, | ||
| 83 | TIM1_BRK_TIM15 = 24, | ||
| 84 | TIM1_CC = 27, | ||
| 85 | TIM1_TRG_COM = 26, | ||
| 86 | TIM1_UP_TIM16 = 25, | ||
| 87 | TIM2 = 28, | ||
| 88 | TIM3 = 29, | ||
| 89 | TIM6_DAC = 54, | ||
| 90 | TSC = 77, | ||
| 91 | UART4 = 52, | ||
| 92 | USART1 = 37, | ||
| 93 | USART2 = 38, | ||
| 94 | USART3 = 39, | ||
| 95 | USB = 67, | ||
| 96 | WWDG = 0, | ||
| 97 | } | ||
| 98 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 99 | #[inline(always)] | ||
| 100 | fn number(self) -> u16 { | ||
| 101 | self as u16 | ||
| 102 | } | ||
| 103 | } | ||
| 104 | |||
| 105 | declare!(ADC1); | ||
| 106 | declare!(AES); | ||
| 107 | declare!(CAN1_RX0); | ||
| 108 | declare!(CAN1_RX1); | ||
| 109 | declare!(CAN1_SCE); | ||
| 110 | declare!(CAN1_TX); | ||
| 111 | declare!(COMP); | ||
| 112 | declare!(CRS); | ||
| 113 | declare!(DFSDM1_FLT0); | ||
| 114 | declare!(DFSDM1_FLT1); | ||
| 115 | declare!(DMA1_Channel1); | ||
| 116 | declare!(DMA1_Channel2); | ||
| 117 | declare!(DMA1_Channel3); | ||
| 118 | declare!(DMA1_Channel4); | ||
| 119 | declare!(DMA1_Channel5); | ||
| 120 | declare!(DMA1_Channel6); | ||
| 121 | declare!(DMA1_Channel7); | ||
| 122 | declare!(DMA2_Channel1); | ||
| 123 | declare!(DMA2_Channel2); | ||
| 124 | declare!(DMA2_Channel3); | ||
| 125 | declare!(DMA2_Channel4); | ||
| 126 | declare!(DMA2_Channel5); | ||
| 127 | declare!(DMA2_Channel6); | ||
| 128 | declare!(DMA2_Channel7); | ||
| 129 | declare!(EXTI0); | ||
| 130 | declare!(EXTI1); | ||
| 131 | declare!(EXTI15_10); | ||
| 132 | declare!(EXTI2); | ||
| 133 | declare!(EXTI3); | ||
| 134 | declare!(EXTI4); | ||
| 135 | declare!(EXTI9_5); | ||
| 136 | declare!(FLASH); | ||
| 137 | declare!(FPU); | ||
| 138 | declare!(I2C1_ER); | ||
| 139 | declare!(I2C1_EV); | ||
| 140 | declare!(I2C2_ER); | ||
| 141 | declare!(I2C2_EV); | ||
| 142 | declare!(I2C3_ER); | ||
| 143 | declare!(I2C3_EV); | ||
| 144 | declare!(I2C4_ER); | ||
| 145 | declare!(I2C4_EV); | ||
| 146 | declare!(LPTIM1); | ||
| 147 | declare!(LPTIM2); | ||
| 148 | declare!(LPUART1); | ||
| 149 | declare!(PVD_PVM); | ||
| 150 | declare!(QUADSPI); | ||
| 151 | declare!(RCC); | ||
| 152 | declare!(RNG); | ||
| 153 | declare!(RTC_Alarm); | ||
| 154 | declare!(RTC_WKUP); | ||
| 155 | declare!(SAI1); | ||
| 156 | declare!(SDMMC1); | ||
| 157 | declare!(SPI1); | ||
| 158 | declare!(SPI2); | ||
| 159 | declare!(SPI3); | ||
| 160 | declare!(TAMP_STAMP); | ||
| 161 | declare!(TIM1_BRK_TIM15); | ||
| 162 | declare!(TIM1_CC); | ||
| 163 | declare!(TIM1_TRG_COM); | ||
| 164 | declare!(TIM1_UP_TIM16); | ||
| 165 | declare!(TIM2); | ||
| 166 | declare!(TIM3); | ||
| 167 | declare!(TIM6_DAC); | ||
| 168 | declare!(TSC); | ||
| 169 | declare!(UART4); | ||
| 170 | declare!(USART1); | ||
| 171 | declare!(USART2); | ||
| 172 | declare!(USART3); | ||
| 173 | declare!(USB); | ||
| 174 | declare!(WWDG); | ||
| 175 | } | ||
| 176 | mod interrupt_vector { | ||
| 177 | extern "C" { | ||
| 178 | fn ADC1(); | ||
| 179 | fn AES(); | ||
| 180 | fn CAN1_RX0(); | ||
| 181 | fn CAN1_RX1(); | ||
| 182 | fn CAN1_SCE(); | ||
| 183 | fn CAN1_TX(); | ||
| 184 | fn COMP(); | ||
| 185 | fn CRS(); | ||
| 186 | fn DFSDM1_FLT0(); | ||
| 187 | fn DFSDM1_FLT1(); | ||
| 188 | fn DMA1_Channel1(); | ||
| 189 | fn DMA1_Channel2(); | ||
| 190 | fn DMA1_Channel3(); | ||
| 191 | fn DMA1_Channel4(); | ||
| 192 | fn DMA1_Channel5(); | ||
| 193 | fn DMA1_Channel6(); | ||
| 194 | fn DMA1_Channel7(); | ||
| 195 | fn DMA2_Channel1(); | ||
| 196 | fn DMA2_Channel2(); | ||
| 197 | fn DMA2_Channel3(); | ||
| 198 | fn DMA2_Channel4(); | ||
| 199 | fn DMA2_Channel5(); | ||
| 200 | fn DMA2_Channel6(); | ||
| 201 | fn DMA2_Channel7(); | ||
| 202 | fn EXTI0(); | ||
| 203 | fn EXTI1(); | ||
| 204 | fn EXTI15_10(); | ||
| 205 | fn EXTI2(); | ||
| 206 | fn EXTI3(); | ||
| 207 | fn EXTI4(); | ||
| 208 | fn EXTI9_5(); | ||
| 209 | fn FLASH(); | ||
| 210 | fn FPU(); | ||
| 211 | fn I2C1_ER(); | ||
| 212 | fn I2C1_EV(); | ||
| 213 | fn I2C2_ER(); | ||
| 214 | fn I2C2_EV(); | ||
| 215 | fn I2C3_ER(); | ||
| 216 | fn I2C3_EV(); | ||
| 217 | fn I2C4_ER(); | ||
| 218 | fn I2C4_EV(); | ||
| 219 | fn LPTIM1(); | ||
| 220 | fn LPTIM2(); | ||
| 221 | fn LPUART1(); | ||
| 222 | fn PVD_PVM(); | ||
| 223 | fn QUADSPI(); | ||
| 224 | fn RCC(); | ||
| 225 | fn RNG(); | ||
| 226 | fn RTC_Alarm(); | ||
| 227 | fn RTC_WKUP(); | ||
| 228 | fn SAI1(); | ||
| 229 | fn SDMMC1(); | ||
| 230 | fn SPI1(); | ||
| 231 | fn SPI2(); | ||
| 232 | fn SPI3(); | ||
| 233 | fn TAMP_STAMP(); | ||
| 234 | fn TIM1_BRK_TIM15(); | ||
| 235 | fn TIM1_CC(); | ||
| 236 | fn TIM1_TRG_COM(); | ||
| 237 | fn TIM1_UP_TIM16(); | ||
| 238 | fn TIM2(); | ||
| 239 | fn TIM3(); | ||
| 240 | fn TIM6_DAC(); | ||
| 241 | fn TSC(); | ||
| 242 | fn UART4(); | ||
| 243 | fn USART1(); | ||
| 244 | fn USART2(); | ||
| 245 | fn USART3(); | ||
| 246 | fn USB(); | ||
| 247 | fn WWDG(); | ||
| 248 | } | ||
| 249 | pub union Vector { | ||
| 250 | _handler: unsafe extern "C" fn(), | ||
| 251 | _reserved: u32, | ||
| 252 | } | ||
| 253 | #[link_section = ".vector_table.interrupts"] | ||
| 254 | #[no_mangle] | ||
| 255 | pub static __INTERRUPTS: [Vector; 85] = [ | ||
| 256 | Vector { _handler: WWDG }, | ||
| 257 | Vector { _handler: PVD_PVM }, | ||
| 258 | Vector { | ||
| 259 | _handler: TAMP_STAMP, | ||
| 260 | }, | ||
| 261 | Vector { _handler: RTC_WKUP }, | ||
| 262 | Vector { _handler: FLASH }, | ||
| 263 | Vector { _handler: RCC }, | ||
| 264 | Vector { _handler: EXTI0 }, | ||
| 265 | Vector { _handler: EXTI1 }, | ||
| 266 | Vector { _handler: EXTI2 }, | ||
| 267 | Vector { _handler: EXTI3 }, | ||
| 268 | Vector { _handler: EXTI4 }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel1, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel2, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel3, | ||
| 277 | }, | ||
| 278 | Vector { | ||
| 279 | _handler: DMA1_Channel4, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: DMA1_Channel5, | ||
| 283 | }, | ||
| 284 | Vector { | ||
| 285 | _handler: DMA1_Channel6, | ||
| 286 | }, | ||
| 287 | Vector { | ||
| 288 | _handler: DMA1_Channel7, | ||
| 289 | }, | ||
| 290 | Vector { _handler: ADC1 }, | ||
| 291 | Vector { _handler: CAN1_TX }, | ||
| 292 | Vector { _handler: CAN1_RX0 }, | ||
| 293 | Vector { _handler: CAN1_RX1 }, | ||
| 294 | Vector { _handler: CAN1_SCE }, | ||
| 295 | Vector { _handler: EXTI9_5 }, | ||
| 296 | Vector { | ||
| 297 | _handler: TIM1_BRK_TIM15, | ||
| 298 | }, | ||
| 299 | Vector { | ||
| 300 | _handler: TIM1_UP_TIM16, | ||
| 301 | }, | ||
| 302 | Vector { | ||
| 303 | _handler: TIM1_TRG_COM, | ||
| 304 | }, | ||
| 305 | Vector { _handler: TIM1_CC }, | ||
| 306 | Vector { _handler: TIM2 }, | ||
| 307 | Vector { _handler: TIM3 }, | ||
| 308 | Vector { _reserved: 0 }, | ||
| 309 | Vector { _handler: I2C1_EV }, | ||
| 310 | Vector { _handler: I2C1_ER }, | ||
| 311 | Vector { _handler: I2C2_EV }, | ||
| 312 | Vector { _handler: I2C2_ER }, | ||
| 313 | Vector { _handler: SPI1 }, | ||
| 314 | Vector { _handler: SPI2 }, | ||
| 315 | Vector { _handler: USART1 }, | ||
| 316 | Vector { _handler: USART2 }, | ||
| 317 | Vector { _handler: USART3 }, | ||
| 318 | Vector { | ||
| 319 | _handler: EXTI15_10, | ||
| 320 | }, | ||
| 321 | Vector { | ||
| 322 | _handler: RTC_Alarm, | ||
| 323 | }, | ||
| 324 | Vector { _reserved: 0 }, | ||
| 325 | Vector { _reserved: 0 }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _reserved: 0 }, | ||
| 328 | Vector { _reserved: 0 }, | ||
| 329 | Vector { _reserved: 0 }, | ||
| 330 | Vector { _reserved: 0 }, | ||
| 331 | Vector { _handler: SDMMC1 }, | ||
| 332 | Vector { _reserved: 0 }, | ||
| 333 | Vector { _handler: SPI3 }, | ||
| 334 | Vector { _handler: UART4 }, | ||
| 335 | Vector { _reserved: 0 }, | ||
| 336 | Vector { _handler: TIM6_DAC }, | ||
| 337 | Vector { _reserved: 0 }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel1, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: DMA2_Channel2, | ||
| 343 | }, | ||
| 344 | Vector { | ||
| 345 | _handler: DMA2_Channel3, | ||
| 346 | }, | ||
| 347 | Vector { | ||
| 348 | _handler: DMA2_Channel4, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: DMA2_Channel5, | ||
| 352 | }, | ||
| 353 | Vector { | ||
| 354 | _handler: DFSDM1_FLT0, | ||
| 355 | }, | ||
| 356 | Vector { | ||
| 357 | _handler: DFSDM1_FLT1, | ||
| 358 | }, | ||
| 359 | Vector { _reserved: 0 }, | ||
| 360 | Vector { _handler: COMP }, | ||
| 361 | Vector { _handler: LPTIM1 }, | ||
| 362 | Vector { _handler: LPTIM2 }, | ||
| 363 | Vector { _handler: USB }, | ||
| 364 | Vector { | ||
| 365 | _handler: DMA2_Channel6, | ||
| 366 | }, | ||
| 367 | Vector { | ||
| 368 | _handler: DMA2_Channel7, | ||
| 369 | }, | ||
| 370 | Vector { _handler: LPUART1 }, | ||
| 371 | Vector { _handler: QUADSPI }, | ||
| 372 | Vector { _handler: I2C3_EV }, | ||
| 373 | Vector { _handler: I2C3_ER }, | ||
| 374 | Vector { _handler: SAI1 }, | ||
| 375 | Vector { _reserved: 0 }, | ||
| 376 | Vector { _reserved: 0 }, | ||
| 377 | Vector { _handler: TSC }, | ||
| 378 | Vector { _reserved: 0 }, | ||
| 379 | Vector { _handler: AES }, | ||
| 380 | Vector { _handler: RNG }, | ||
| 381 | Vector { _handler: FPU }, | ||
| 382 | Vector { _handler: CRS }, | ||
| 383 | Vector { _handler: I2C4_EV }, | ||
| 384 | Vector { _handler: I2C4_ER }, | ||
| 385 | ]; | ||
| 386 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 387 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 388 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 389 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l462ve.rs b/embassy-stm32/src/chip/stm32l462ve.rs index 40dbb9a04..4a4055b50 100644 --- a/embassy-stm32/src/chip/stm32l462ve.rs +++ b/embassy-stm32/src/chip/stm32l462ve.rs | |||
| @@ -1,18 +1,389 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, | 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, |
| 5 | PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, | 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, |
| 6 | PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, | 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, |
| 7 | PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, | 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 9 | PE11, PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 10 | PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, | 10 | PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, |
| 11 | RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, | 11 | RCC, RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, |
| 12 | UART4, USART1, USART2, USART3, USB, WWDG | 12 | TSC, UART4, USART1, USART2, USART3, USB, WWDG |
| 13 | ); | 13 | ); |
| 14 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 15 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 14 | pub const GPIO_BASE: usize = 0x48000000; | 16 | pub const GPIO_BASE: usize = 0x48000000; |
| 15 | pub const GPIO_STRIDE: usize = 0x400; | 17 | pub const GPIO_STRIDE: usize = 0x400; |
| 18 | |||
| 19 | pub mod interrupt { | ||
| 20 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 21 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 22 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 23 | |||
| 24 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 25 | #[allow(non_camel_case_types)] | ||
| 26 | enum InterruptEnum { | ||
| 27 | ADC1 = 18, | ||
| 28 | AES = 79, | ||
| 29 | CAN1_RX0 = 20, | ||
| 30 | CAN1_RX1 = 21, | ||
| 31 | CAN1_SCE = 22, | ||
| 32 | CAN1_TX = 19, | ||
| 33 | COMP = 64, | ||
| 34 | CRS = 82, | ||
| 35 | DFSDM1_FLT0 = 61, | ||
| 36 | DFSDM1_FLT1 = 62, | ||
| 37 | DMA1_Channel1 = 11, | ||
| 38 | DMA1_Channel2 = 12, | ||
| 39 | DMA1_Channel3 = 13, | ||
| 40 | DMA1_Channel4 = 14, | ||
| 41 | DMA1_Channel5 = 15, | ||
| 42 | DMA1_Channel6 = 16, | ||
| 43 | DMA1_Channel7 = 17, | ||
| 44 | DMA2_Channel1 = 56, | ||
| 45 | DMA2_Channel2 = 57, | ||
| 46 | DMA2_Channel3 = 58, | ||
| 47 | DMA2_Channel4 = 59, | ||
| 48 | DMA2_Channel5 = 60, | ||
| 49 | DMA2_Channel6 = 68, | ||
| 50 | DMA2_Channel7 = 69, | ||
| 51 | EXTI0 = 6, | ||
| 52 | EXTI1 = 7, | ||
| 53 | EXTI15_10 = 40, | ||
| 54 | EXTI2 = 8, | ||
| 55 | EXTI3 = 9, | ||
| 56 | EXTI4 = 10, | ||
| 57 | EXTI9_5 = 23, | ||
| 58 | FLASH = 4, | ||
| 59 | FPU = 81, | ||
| 60 | I2C1_ER = 32, | ||
| 61 | I2C1_EV = 31, | ||
| 62 | I2C2_ER = 34, | ||
| 63 | I2C2_EV = 33, | ||
| 64 | I2C3_ER = 73, | ||
| 65 | I2C3_EV = 72, | ||
| 66 | I2C4_ER = 84, | ||
| 67 | I2C4_EV = 83, | ||
| 68 | LPTIM1 = 65, | ||
| 69 | LPTIM2 = 66, | ||
| 70 | LPUART1 = 70, | ||
| 71 | PVD_PVM = 1, | ||
| 72 | QUADSPI = 71, | ||
| 73 | RCC = 5, | ||
| 74 | RNG = 80, | ||
| 75 | RTC_Alarm = 41, | ||
| 76 | RTC_WKUP = 3, | ||
| 77 | SAI1 = 74, | ||
| 78 | SDMMC1 = 49, | ||
| 79 | SPI1 = 35, | ||
| 80 | SPI2 = 36, | ||
| 81 | SPI3 = 51, | ||
| 82 | TAMP_STAMP = 2, | ||
| 83 | TIM1_BRK_TIM15 = 24, | ||
| 84 | TIM1_CC = 27, | ||
| 85 | TIM1_TRG_COM = 26, | ||
| 86 | TIM1_UP_TIM16 = 25, | ||
| 87 | TIM2 = 28, | ||
| 88 | TIM3 = 29, | ||
| 89 | TIM6_DAC = 54, | ||
| 90 | TSC = 77, | ||
| 91 | UART4 = 52, | ||
| 92 | USART1 = 37, | ||
| 93 | USART2 = 38, | ||
| 94 | USART3 = 39, | ||
| 95 | USB = 67, | ||
| 96 | WWDG = 0, | ||
| 97 | } | ||
| 98 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 99 | #[inline(always)] | ||
| 100 | fn number(self) -> u16 { | ||
| 101 | self as u16 | ||
| 102 | } | ||
| 103 | } | ||
| 104 | |||
| 105 | declare!(ADC1); | ||
| 106 | declare!(AES); | ||
| 107 | declare!(CAN1_RX0); | ||
| 108 | declare!(CAN1_RX1); | ||
| 109 | declare!(CAN1_SCE); | ||
| 110 | declare!(CAN1_TX); | ||
| 111 | declare!(COMP); | ||
| 112 | declare!(CRS); | ||
| 113 | declare!(DFSDM1_FLT0); | ||
| 114 | declare!(DFSDM1_FLT1); | ||
| 115 | declare!(DMA1_Channel1); | ||
| 116 | declare!(DMA1_Channel2); | ||
| 117 | declare!(DMA1_Channel3); | ||
| 118 | declare!(DMA1_Channel4); | ||
| 119 | declare!(DMA1_Channel5); | ||
| 120 | declare!(DMA1_Channel6); | ||
| 121 | declare!(DMA1_Channel7); | ||
| 122 | declare!(DMA2_Channel1); | ||
| 123 | declare!(DMA2_Channel2); | ||
| 124 | declare!(DMA2_Channel3); | ||
| 125 | declare!(DMA2_Channel4); | ||
| 126 | declare!(DMA2_Channel5); | ||
| 127 | declare!(DMA2_Channel6); | ||
| 128 | declare!(DMA2_Channel7); | ||
| 129 | declare!(EXTI0); | ||
| 130 | declare!(EXTI1); | ||
| 131 | declare!(EXTI15_10); | ||
| 132 | declare!(EXTI2); | ||
| 133 | declare!(EXTI3); | ||
| 134 | declare!(EXTI4); | ||
| 135 | declare!(EXTI9_5); | ||
| 136 | declare!(FLASH); | ||
| 137 | declare!(FPU); | ||
| 138 | declare!(I2C1_ER); | ||
| 139 | declare!(I2C1_EV); | ||
| 140 | declare!(I2C2_ER); | ||
| 141 | declare!(I2C2_EV); | ||
| 142 | declare!(I2C3_ER); | ||
| 143 | declare!(I2C3_EV); | ||
| 144 | declare!(I2C4_ER); | ||
| 145 | declare!(I2C4_EV); | ||
| 146 | declare!(LPTIM1); | ||
| 147 | declare!(LPTIM2); | ||
| 148 | declare!(LPUART1); | ||
| 149 | declare!(PVD_PVM); | ||
| 150 | declare!(QUADSPI); | ||
| 151 | declare!(RCC); | ||
| 152 | declare!(RNG); | ||
| 153 | declare!(RTC_Alarm); | ||
| 154 | declare!(RTC_WKUP); | ||
| 155 | declare!(SAI1); | ||
| 156 | declare!(SDMMC1); | ||
| 157 | declare!(SPI1); | ||
| 158 | declare!(SPI2); | ||
| 159 | declare!(SPI3); | ||
| 160 | declare!(TAMP_STAMP); | ||
| 161 | declare!(TIM1_BRK_TIM15); | ||
| 162 | declare!(TIM1_CC); | ||
| 163 | declare!(TIM1_TRG_COM); | ||
| 164 | declare!(TIM1_UP_TIM16); | ||
| 165 | declare!(TIM2); | ||
| 166 | declare!(TIM3); | ||
| 167 | declare!(TIM6_DAC); | ||
| 168 | declare!(TSC); | ||
| 169 | declare!(UART4); | ||
| 170 | declare!(USART1); | ||
| 171 | declare!(USART2); | ||
| 172 | declare!(USART3); | ||
| 173 | declare!(USB); | ||
| 174 | declare!(WWDG); | ||
| 175 | } | ||
| 176 | mod interrupt_vector { | ||
| 177 | extern "C" { | ||
| 178 | fn ADC1(); | ||
| 179 | fn AES(); | ||
| 180 | fn CAN1_RX0(); | ||
| 181 | fn CAN1_RX1(); | ||
| 182 | fn CAN1_SCE(); | ||
| 183 | fn CAN1_TX(); | ||
| 184 | fn COMP(); | ||
| 185 | fn CRS(); | ||
| 186 | fn DFSDM1_FLT0(); | ||
| 187 | fn DFSDM1_FLT1(); | ||
| 188 | fn DMA1_Channel1(); | ||
| 189 | fn DMA1_Channel2(); | ||
| 190 | fn DMA1_Channel3(); | ||
| 191 | fn DMA1_Channel4(); | ||
| 192 | fn DMA1_Channel5(); | ||
| 193 | fn DMA1_Channel6(); | ||
| 194 | fn DMA1_Channel7(); | ||
| 195 | fn DMA2_Channel1(); | ||
| 196 | fn DMA2_Channel2(); | ||
| 197 | fn DMA2_Channel3(); | ||
| 198 | fn DMA2_Channel4(); | ||
| 199 | fn DMA2_Channel5(); | ||
| 200 | fn DMA2_Channel6(); | ||
| 201 | fn DMA2_Channel7(); | ||
| 202 | fn EXTI0(); | ||
| 203 | fn EXTI1(); | ||
| 204 | fn EXTI15_10(); | ||
| 205 | fn EXTI2(); | ||
| 206 | fn EXTI3(); | ||
| 207 | fn EXTI4(); | ||
| 208 | fn EXTI9_5(); | ||
| 209 | fn FLASH(); | ||
| 210 | fn FPU(); | ||
| 211 | fn I2C1_ER(); | ||
| 212 | fn I2C1_EV(); | ||
| 213 | fn I2C2_ER(); | ||
| 214 | fn I2C2_EV(); | ||
| 215 | fn I2C3_ER(); | ||
| 216 | fn I2C3_EV(); | ||
| 217 | fn I2C4_ER(); | ||
| 218 | fn I2C4_EV(); | ||
| 219 | fn LPTIM1(); | ||
| 220 | fn LPTIM2(); | ||
| 221 | fn LPUART1(); | ||
| 222 | fn PVD_PVM(); | ||
| 223 | fn QUADSPI(); | ||
| 224 | fn RCC(); | ||
| 225 | fn RNG(); | ||
| 226 | fn RTC_Alarm(); | ||
| 227 | fn RTC_WKUP(); | ||
| 228 | fn SAI1(); | ||
| 229 | fn SDMMC1(); | ||
| 230 | fn SPI1(); | ||
| 231 | fn SPI2(); | ||
| 232 | fn SPI3(); | ||
| 233 | fn TAMP_STAMP(); | ||
| 234 | fn TIM1_BRK_TIM15(); | ||
| 235 | fn TIM1_CC(); | ||
| 236 | fn TIM1_TRG_COM(); | ||
| 237 | fn TIM1_UP_TIM16(); | ||
| 238 | fn TIM2(); | ||
| 239 | fn TIM3(); | ||
| 240 | fn TIM6_DAC(); | ||
| 241 | fn TSC(); | ||
| 242 | fn UART4(); | ||
| 243 | fn USART1(); | ||
| 244 | fn USART2(); | ||
| 245 | fn USART3(); | ||
| 246 | fn USB(); | ||
| 247 | fn WWDG(); | ||
| 248 | } | ||
| 249 | pub union Vector { | ||
| 250 | _handler: unsafe extern "C" fn(), | ||
| 251 | _reserved: u32, | ||
| 252 | } | ||
| 253 | #[link_section = ".vector_table.interrupts"] | ||
| 254 | #[no_mangle] | ||
| 255 | pub static __INTERRUPTS: [Vector; 85] = [ | ||
| 256 | Vector { _handler: WWDG }, | ||
| 257 | Vector { _handler: PVD_PVM }, | ||
| 258 | Vector { | ||
| 259 | _handler: TAMP_STAMP, | ||
| 260 | }, | ||
| 261 | Vector { _handler: RTC_WKUP }, | ||
| 262 | Vector { _handler: FLASH }, | ||
| 263 | Vector { _handler: RCC }, | ||
| 264 | Vector { _handler: EXTI0 }, | ||
| 265 | Vector { _handler: EXTI1 }, | ||
| 266 | Vector { _handler: EXTI2 }, | ||
| 267 | Vector { _handler: EXTI3 }, | ||
| 268 | Vector { _handler: EXTI4 }, | ||
| 269 | Vector { | ||
| 270 | _handler: DMA1_Channel1, | ||
| 271 | }, | ||
| 272 | Vector { | ||
| 273 | _handler: DMA1_Channel2, | ||
| 274 | }, | ||
| 275 | Vector { | ||
| 276 | _handler: DMA1_Channel3, | ||
| 277 | }, | ||
| 278 | Vector { | ||
| 279 | _handler: DMA1_Channel4, | ||
| 280 | }, | ||
| 281 | Vector { | ||
| 282 | _handler: DMA1_Channel5, | ||
| 283 | }, | ||
| 284 | Vector { | ||
| 285 | _handler: DMA1_Channel6, | ||
| 286 | }, | ||
| 287 | Vector { | ||
| 288 | _handler: DMA1_Channel7, | ||
| 289 | }, | ||
| 290 | Vector { _handler: ADC1 }, | ||
| 291 | Vector { _handler: CAN1_TX }, | ||
| 292 | Vector { _handler: CAN1_RX0 }, | ||
| 293 | Vector { _handler: CAN1_RX1 }, | ||
| 294 | Vector { _handler: CAN1_SCE }, | ||
| 295 | Vector { _handler: EXTI9_5 }, | ||
| 296 | Vector { | ||
| 297 | _handler: TIM1_BRK_TIM15, | ||
| 298 | }, | ||
| 299 | Vector { | ||
| 300 | _handler: TIM1_UP_TIM16, | ||
| 301 | }, | ||
| 302 | Vector { | ||
| 303 | _handler: TIM1_TRG_COM, | ||
| 304 | }, | ||
| 305 | Vector { _handler: TIM1_CC }, | ||
| 306 | Vector { _handler: TIM2 }, | ||
| 307 | Vector { _handler: TIM3 }, | ||
| 308 | Vector { _reserved: 0 }, | ||
| 309 | Vector { _handler: I2C1_EV }, | ||
| 310 | Vector { _handler: I2C1_ER }, | ||
| 311 | Vector { _handler: I2C2_EV }, | ||
| 312 | Vector { _handler: I2C2_ER }, | ||
| 313 | Vector { _handler: SPI1 }, | ||
| 314 | Vector { _handler: SPI2 }, | ||
| 315 | Vector { _handler: USART1 }, | ||
| 316 | Vector { _handler: USART2 }, | ||
| 317 | Vector { _handler: USART3 }, | ||
| 318 | Vector { | ||
| 319 | _handler: EXTI15_10, | ||
| 320 | }, | ||
| 321 | Vector { | ||
| 322 | _handler: RTC_Alarm, | ||
| 323 | }, | ||
| 324 | Vector { _reserved: 0 }, | ||
| 325 | Vector { _reserved: 0 }, | ||
| 326 | Vector { _reserved: 0 }, | ||
| 327 | Vector { _reserved: 0 }, | ||
| 328 | Vector { _reserved: 0 }, | ||
| 329 | Vector { _reserved: 0 }, | ||
| 330 | Vector { _reserved: 0 }, | ||
| 331 | Vector { _handler: SDMMC1 }, | ||
| 332 | Vector { _reserved: 0 }, | ||
| 333 | Vector { _handler: SPI3 }, | ||
| 334 | Vector { _handler: UART4 }, | ||
| 335 | Vector { _reserved: 0 }, | ||
| 336 | Vector { _handler: TIM6_DAC }, | ||
| 337 | Vector { _reserved: 0 }, | ||
| 338 | Vector { | ||
| 339 | _handler: DMA2_Channel1, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: DMA2_Channel2, | ||
| 343 | }, | ||
| 344 | Vector { | ||
| 345 | _handler: DMA2_Channel3, | ||
| 346 | }, | ||
| 347 | Vector { | ||
| 348 | _handler: DMA2_Channel4, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: DMA2_Channel5, | ||
| 352 | }, | ||
| 353 | Vector { | ||
| 354 | _handler: DFSDM1_FLT0, | ||
| 355 | }, | ||
| 356 | Vector { | ||
| 357 | _handler: DFSDM1_FLT1, | ||
| 358 | }, | ||
| 359 | Vector { _reserved: 0 }, | ||
| 360 | Vector { _handler: COMP }, | ||
| 361 | Vector { _handler: LPTIM1 }, | ||
| 362 | Vector { _handler: LPTIM2 }, | ||
| 363 | Vector { _handler: USB }, | ||
| 364 | Vector { | ||
| 365 | _handler: DMA2_Channel6, | ||
| 366 | }, | ||
| 367 | Vector { | ||
| 368 | _handler: DMA2_Channel7, | ||
| 369 | }, | ||
| 370 | Vector { _handler: LPUART1 }, | ||
| 371 | Vector { _handler: QUADSPI }, | ||
| 372 | Vector { _handler: I2C3_EV }, | ||
| 373 | Vector { _handler: I2C3_ER }, | ||
| 374 | Vector { _handler: SAI1 }, | ||
| 375 | Vector { _reserved: 0 }, | ||
| 376 | Vector { _reserved: 0 }, | ||
| 377 | Vector { _handler: TSC }, | ||
| 378 | Vector { _reserved: 0 }, | ||
| 379 | Vector { _handler: AES }, | ||
| 380 | Vector { _handler: RNG }, | ||
| 381 | Vector { _handler: FPU }, | ||
| 382 | Vector { _handler: CRS }, | ||
| 383 | Vector { _handler: I2C4_EV }, | ||
| 384 | Vector { _handler: I2C4_ER }, | ||
| 385 | ]; | ||
| 386 | } | ||
| 16 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 387 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 17 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 388 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 18 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 389 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l471qe.rs b/embassy-stm32/src/chip/stm32l471qe.rs index 937127de9..192060c1f 100644 --- a/embassy-stm32/src/chip/stm32l471qe.rs +++ b/embassy-stm32/src/chip/stm32l471qe.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -13,8 +13,409 @@ peripherals!( | |||
| 13 | RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, | 13 | RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, |
| 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG | 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 17 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 16 | pub const GPIO_BASE: usize = 0x48000000; | 18 | pub const GPIO_BASE: usize = 0x48000000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 20 | |||
| 21 | pub mod interrupt { | ||
| 22 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 23 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 24 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 25 | |||
| 26 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 27 | #[allow(non_camel_case_types)] | ||
| 28 | enum InterruptEnum { | ||
| 29 | ADC1_2 = 18, | ||
| 30 | ADC3 = 47, | ||
| 31 | CAN1_RX0 = 20, | ||
| 32 | CAN1_RX1 = 21, | ||
| 33 | CAN1_SCE = 22, | ||
| 34 | CAN1_TX = 19, | ||
| 35 | COMP = 64, | ||
| 36 | DFSDM1_FLT0 = 61, | ||
| 37 | DFSDM1_FLT1 = 62, | ||
| 38 | DFSDM1_FLT2 = 63, | ||
| 39 | DFSDM1_FLT3 = 42, | ||
| 40 | DMA1_Channel1 = 11, | ||
| 41 | DMA1_Channel2 = 12, | ||
| 42 | DMA1_Channel3 = 13, | ||
| 43 | DMA1_Channel4 = 14, | ||
| 44 | DMA1_Channel5 = 15, | ||
| 45 | DMA1_Channel6 = 16, | ||
| 46 | DMA1_Channel7 = 17, | ||
| 47 | DMA2_Channel1 = 56, | ||
| 48 | DMA2_Channel2 = 57, | ||
| 49 | DMA2_Channel3 = 58, | ||
| 50 | DMA2_Channel4 = 59, | ||
| 51 | DMA2_Channel5 = 60, | ||
| 52 | DMA2_Channel6 = 68, | ||
| 53 | DMA2_Channel7 = 69, | ||
| 54 | EXTI0 = 6, | ||
| 55 | EXTI1 = 7, | ||
| 56 | EXTI15_10 = 40, | ||
| 57 | EXTI2 = 8, | ||
| 58 | EXTI3 = 9, | ||
| 59 | EXTI4 = 10, | ||
| 60 | EXTI9_5 = 23, | ||
| 61 | FLASH = 4, | ||
| 62 | FMC = 48, | ||
| 63 | FPU = 81, | ||
| 64 | I2C1_ER = 32, | ||
| 65 | I2C1_EV = 31, | ||
| 66 | I2C2_ER = 34, | ||
| 67 | I2C2_EV = 33, | ||
| 68 | I2C3_ER = 73, | ||
| 69 | I2C3_EV = 72, | ||
| 70 | LPTIM1 = 65, | ||
| 71 | LPTIM2 = 66, | ||
| 72 | LPUART1 = 70, | ||
| 73 | PVD_PVM = 1, | ||
| 74 | QUADSPI = 71, | ||
| 75 | RCC = 5, | ||
| 76 | RNG = 80, | ||
| 77 | RTC_Alarm = 41, | ||
| 78 | RTC_WKUP = 3, | ||
| 79 | SAI1 = 74, | ||
| 80 | SAI2 = 75, | ||
| 81 | SDMMC1 = 49, | ||
| 82 | SPI1 = 35, | ||
| 83 | SPI2 = 36, | ||
| 84 | SPI3 = 51, | ||
| 85 | SWPMI1 = 76, | ||
| 86 | TAMP_STAMP = 2, | ||
| 87 | TIM1_BRK_TIM15 = 24, | ||
| 88 | TIM1_CC = 27, | ||
| 89 | TIM1_TRG_COM_TIM17 = 26, | ||
| 90 | TIM1_UP_TIM16 = 25, | ||
| 91 | TIM2 = 28, | ||
| 92 | TIM3 = 29, | ||
| 93 | TIM4 = 30, | ||
| 94 | TIM5 = 50, | ||
| 95 | TIM6_DAC = 54, | ||
| 96 | TIM7 = 55, | ||
| 97 | TIM8_BRK = 43, | ||
| 98 | TIM8_CC = 46, | ||
| 99 | TIM8_TRG_COM = 45, | ||
| 100 | TIM8_UP = 44, | ||
| 101 | TSC = 77, | ||
| 102 | UART4 = 52, | ||
| 103 | UART5 = 53, | ||
| 104 | USART1 = 37, | ||
| 105 | USART2 = 38, | ||
| 106 | USART3 = 39, | ||
| 107 | WWDG = 0, | ||
| 108 | } | ||
| 109 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 110 | #[inline(always)] | ||
| 111 | fn number(self) -> u16 { | ||
| 112 | self as u16 | ||
| 113 | } | ||
| 114 | } | ||
| 115 | |||
| 116 | declare!(ADC1_2); | ||
| 117 | declare!(ADC3); | ||
| 118 | declare!(CAN1_RX0); | ||
| 119 | declare!(CAN1_RX1); | ||
| 120 | declare!(CAN1_SCE); | ||
| 121 | declare!(CAN1_TX); | ||
| 122 | declare!(COMP); | ||
| 123 | declare!(DFSDM1_FLT0); | ||
| 124 | declare!(DFSDM1_FLT1); | ||
| 125 | declare!(DFSDM1_FLT2); | ||
| 126 | declare!(DFSDM1_FLT3); | ||
| 127 | declare!(DMA1_Channel1); | ||
| 128 | declare!(DMA1_Channel2); | ||
| 129 | declare!(DMA1_Channel3); | ||
| 130 | declare!(DMA1_Channel4); | ||
| 131 | declare!(DMA1_Channel5); | ||
| 132 | declare!(DMA1_Channel6); | ||
| 133 | declare!(DMA1_Channel7); | ||
| 134 | declare!(DMA2_Channel1); | ||
| 135 | declare!(DMA2_Channel2); | ||
| 136 | declare!(DMA2_Channel3); | ||
| 137 | declare!(DMA2_Channel4); | ||
| 138 | declare!(DMA2_Channel5); | ||
| 139 | declare!(DMA2_Channel6); | ||
| 140 | declare!(DMA2_Channel7); | ||
| 141 | declare!(EXTI0); | ||
| 142 | declare!(EXTI1); | ||
| 143 | declare!(EXTI15_10); | ||
| 144 | declare!(EXTI2); | ||
| 145 | declare!(EXTI3); | ||
| 146 | declare!(EXTI4); | ||
| 147 | declare!(EXTI9_5); | ||
| 148 | declare!(FLASH); | ||
| 149 | declare!(FMC); | ||
| 150 | declare!(FPU); | ||
| 151 | declare!(I2C1_ER); | ||
| 152 | declare!(I2C1_EV); | ||
| 153 | declare!(I2C2_ER); | ||
| 154 | declare!(I2C2_EV); | ||
| 155 | declare!(I2C3_ER); | ||
| 156 | declare!(I2C3_EV); | ||
| 157 | declare!(LPTIM1); | ||
| 158 | declare!(LPTIM2); | ||
| 159 | declare!(LPUART1); | ||
| 160 | declare!(PVD_PVM); | ||
| 161 | declare!(QUADSPI); | ||
| 162 | declare!(RCC); | ||
| 163 | declare!(RNG); | ||
| 164 | declare!(RTC_Alarm); | ||
| 165 | declare!(RTC_WKUP); | ||
| 166 | declare!(SAI1); | ||
| 167 | declare!(SAI2); | ||
| 168 | declare!(SDMMC1); | ||
| 169 | declare!(SPI1); | ||
| 170 | declare!(SPI2); | ||
| 171 | declare!(SPI3); | ||
| 172 | declare!(SWPMI1); | ||
| 173 | declare!(TAMP_STAMP); | ||
| 174 | declare!(TIM1_BRK_TIM15); | ||
| 175 | declare!(TIM1_CC); | ||
| 176 | declare!(TIM1_TRG_COM_TIM17); | ||
| 177 | declare!(TIM1_UP_TIM16); | ||
| 178 | declare!(TIM2); | ||
| 179 | declare!(TIM3); | ||
| 180 | declare!(TIM4); | ||
| 181 | declare!(TIM5); | ||
| 182 | declare!(TIM6_DAC); | ||
| 183 | declare!(TIM7); | ||
| 184 | declare!(TIM8_BRK); | ||
| 185 | declare!(TIM8_CC); | ||
| 186 | declare!(TIM8_TRG_COM); | ||
| 187 | declare!(TIM8_UP); | ||
| 188 | declare!(TSC); | ||
| 189 | declare!(UART4); | ||
| 190 | declare!(UART5); | ||
| 191 | declare!(USART1); | ||
| 192 | declare!(USART2); | ||
| 193 | declare!(USART3); | ||
| 194 | declare!(WWDG); | ||
| 195 | } | ||
| 196 | mod interrupt_vector { | ||
| 197 | extern "C" { | ||
| 198 | fn ADC1_2(); | ||
| 199 | fn ADC3(); | ||
| 200 | fn CAN1_RX0(); | ||
| 201 | fn CAN1_RX1(); | ||
| 202 | fn CAN1_SCE(); | ||
| 203 | fn CAN1_TX(); | ||
| 204 | fn COMP(); | ||
| 205 | fn DFSDM1_FLT0(); | ||
| 206 | fn DFSDM1_FLT1(); | ||
| 207 | fn DFSDM1_FLT2(); | ||
| 208 | fn DFSDM1_FLT3(); | ||
| 209 | fn DMA1_Channel1(); | ||
| 210 | fn DMA1_Channel2(); | ||
| 211 | fn DMA1_Channel3(); | ||
| 212 | fn DMA1_Channel4(); | ||
| 213 | fn DMA1_Channel5(); | ||
| 214 | fn DMA1_Channel6(); | ||
| 215 | fn DMA1_Channel7(); | ||
| 216 | fn DMA2_Channel1(); | ||
| 217 | fn DMA2_Channel2(); | ||
| 218 | fn DMA2_Channel3(); | ||
| 219 | fn DMA2_Channel4(); | ||
| 220 | fn DMA2_Channel5(); | ||
| 221 | fn DMA2_Channel6(); | ||
| 222 | fn DMA2_Channel7(); | ||
| 223 | fn EXTI0(); | ||
| 224 | fn EXTI1(); | ||
| 225 | fn EXTI15_10(); | ||
| 226 | fn EXTI2(); | ||
| 227 | fn EXTI3(); | ||
| 228 | fn EXTI4(); | ||
| 229 | fn EXTI9_5(); | ||
| 230 | fn FLASH(); | ||
| 231 | fn FMC(); | ||
| 232 | fn FPU(); | ||
| 233 | fn I2C1_ER(); | ||
| 234 | fn I2C1_EV(); | ||
| 235 | fn I2C2_ER(); | ||
| 236 | fn I2C2_EV(); | ||
| 237 | fn I2C3_ER(); | ||
| 238 | fn I2C3_EV(); | ||
| 239 | fn LPTIM1(); | ||
| 240 | fn LPTIM2(); | ||
| 241 | fn LPUART1(); | ||
| 242 | fn PVD_PVM(); | ||
| 243 | fn QUADSPI(); | ||
| 244 | fn RCC(); | ||
| 245 | fn RNG(); | ||
| 246 | fn RTC_Alarm(); | ||
| 247 | fn RTC_WKUP(); | ||
| 248 | fn SAI1(); | ||
| 249 | fn SAI2(); | ||
| 250 | fn SDMMC1(); | ||
| 251 | fn SPI1(); | ||
| 252 | fn SPI2(); | ||
| 253 | fn SPI3(); | ||
| 254 | fn SWPMI1(); | ||
| 255 | fn TAMP_STAMP(); | ||
| 256 | fn TIM1_BRK_TIM15(); | ||
| 257 | fn TIM1_CC(); | ||
| 258 | fn TIM1_TRG_COM_TIM17(); | ||
| 259 | fn TIM1_UP_TIM16(); | ||
| 260 | fn TIM2(); | ||
| 261 | fn TIM3(); | ||
| 262 | fn TIM4(); | ||
| 263 | fn TIM5(); | ||
| 264 | fn TIM6_DAC(); | ||
| 265 | fn TIM7(); | ||
| 266 | fn TIM8_BRK(); | ||
| 267 | fn TIM8_CC(); | ||
| 268 | fn TIM8_TRG_COM(); | ||
| 269 | fn TIM8_UP(); | ||
| 270 | fn TSC(); | ||
| 271 | fn UART4(); | ||
| 272 | fn UART5(); | ||
| 273 | fn USART1(); | ||
| 274 | fn USART2(); | ||
| 275 | fn USART3(); | ||
| 276 | fn WWDG(); | ||
| 277 | } | ||
| 278 | pub union Vector { | ||
| 279 | _handler: unsafe extern "C" fn(), | ||
| 280 | _reserved: u32, | ||
| 281 | } | ||
| 282 | #[link_section = ".vector_table.interrupts"] | ||
| 283 | #[no_mangle] | ||
| 284 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 285 | Vector { _handler: WWDG }, | ||
| 286 | Vector { _handler: PVD_PVM }, | ||
| 287 | Vector { | ||
| 288 | _handler: TAMP_STAMP, | ||
| 289 | }, | ||
| 290 | Vector { _handler: RTC_WKUP }, | ||
| 291 | Vector { _handler: FLASH }, | ||
| 292 | Vector { _handler: RCC }, | ||
| 293 | Vector { _handler: EXTI0 }, | ||
| 294 | Vector { _handler: EXTI1 }, | ||
| 295 | Vector { _handler: EXTI2 }, | ||
| 296 | Vector { _handler: EXTI3 }, | ||
| 297 | Vector { _handler: EXTI4 }, | ||
| 298 | Vector { | ||
| 299 | _handler: DMA1_Channel1, | ||
| 300 | }, | ||
| 301 | Vector { | ||
| 302 | _handler: DMA1_Channel2, | ||
| 303 | }, | ||
| 304 | Vector { | ||
| 305 | _handler: DMA1_Channel3, | ||
| 306 | }, | ||
| 307 | Vector { | ||
| 308 | _handler: DMA1_Channel4, | ||
| 309 | }, | ||
| 310 | Vector { | ||
| 311 | _handler: DMA1_Channel5, | ||
| 312 | }, | ||
| 313 | Vector { | ||
| 314 | _handler: DMA1_Channel6, | ||
| 315 | }, | ||
| 316 | Vector { | ||
| 317 | _handler: DMA1_Channel7, | ||
| 318 | }, | ||
| 319 | Vector { _handler: ADC1_2 }, | ||
| 320 | Vector { _handler: CAN1_TX }, | ||
| 321 | Vector { _handler: CAN1_RX0 }, | ||
| 322 | Vector { _handler: CAN1_RX1 }, | ||
| 323 | Vector { _handler: CAN1_SCE }, | ||
| 324 | Vector { _handler: EXTI9_5 }, | ||
| 325 | Vector { | ||
| 326 | _handler: TIM1_BRK_TIM15, | ||
| 327 | }, | ||
| 328 | Vector { | ||
| 329 | _handler: TIM1_UP_TIM16, | ||
| 330 | }, | ||
| 331 | Vector { | ||
| 332 | _handler: TIM1_TRG_COM_TIM17, | ||
| 333 | }, | ||
| 334 | Vector { _handler: TIM1_CC }, | ||
| 335 | Vector { _handler: TIM2 }, | ||
| 336 | Vector { _handler: TIM3 }, | ||
| 337 | Vector { _handler: TIM4 }, | ||
| 338 | Vector { _handler: I2C1_EV }, | ||
| 339 | Vector { _handler: I2C1_ER }, | ||
| 340 | Vector { _handler: I2C2_EV }, | ||
| 341 | Vector { _handler: I2C2_ER }, | ||
| 342 | Vector { _handler: SPI1 }, | ||
| 343 | Vector { _handler: SPI2 }, | ||
| 344 | Vector { _handler: USART1 }, | ||
| 345 | Vector { _handler: USART2 }, | ||
| 346 | Vector { _handler: USART3 }, | ||
| 347 | Vector { | ||
| 348 | _handler: EXTI15_10, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: RTC_Alarm, | ||
| 352 | }, | ||
| 353 | Vector { | ||
| 354 | _handler: DFSDM1_FLT3, | ||
| 355 | }, | ||
| 356 | Vector { _handler: TIM8_BRK }, | ||
| 357 | Vector { _handler: TIM8_UP }, | ||
| 358 | Vector { | ||
| 359 | _handler: TIM8_TRG_COM, | ||
| 360 | }, | ||
| 361 | Vector { _handler: TIM8_CC }, | ||
| 362 | Vector { _handler: ADC3 }, | ||
| 363 | Vector { _handler: FMC }, | ||
| 364 | Vector { _handler: SDMMC1 }, | ||
| 365 | Vector { _handler: TIM5 }, | ||
| 366 | Vector { _handler: SPI3 }, | ||
| 367 | Vector { _handler: UART4 }, | ||
| 368 | Vector { _handler: UART5 }, | ||
| 369 | Vector { _handler: TIM6_DAC }, | ||
| 370 | Vector { _handler: TIM7 }, | ||
| 371 | Vector { | ||
| 372 | _handler: DMA2_Channel1, | ||
| 373 | }, | ||
| 374 | Vector { | ||
| 375 | _handler: DMA2_Channel2, | ||
| 376 | }, | ||
| 377 | Vector { | ||
| 378 | _handler: DMA2_Channel3, | ||
| 379 | }, | ||
| 380 | Vector { | ||
| 381 | _handler: DMA2_Channel4, | ||
| 382 | }, | ||
| 383 | Vector { | ||
| 384 | _handler: DMA2_Channel5, | ||
| 385 | }, | ||
| 386 | Vector { | ||
| 387 | _handler: DFSDM1_FLT0, | ||
| 388 | }, | ||
| 389 | Vector { | ||
| 390 | _handler: DFSDM1_FLT1, | ||
| 391 | }, | ||
| 392 | Vector { | ||
| 393 | _handler: DFSDM1_FLT2, | ||
| 394 | }, | ||
| 395 | Vector { _handler: COMP }, | ||
| 396 | Vector { _handler: LPTIM1 }, | ||
| 397 | Vector { _handler: LPTIM2 }, | ||
| 398 | Vector { _reserved: 0 }, | ||
| 399 | Vector { | ||
| 400 | _handler: DMA2_Channel6, | ||
| 401 | }, | ||
| 402 | Vector { | ||
| 403 | _handler: DMA2_Channel7, | ||
| 404 | }, | ||
| 405 | Vector { _handler: LPUART1 }, | ||
| 406 | Vector { _handler: QUADSPI }, | ||
| 407 | Vector { _handler: I2C3_EV }, | ||
| 408 | Vector { _handler: I2C3_ER }, | ||
| 409 | Vector { _handler: SAI1 }, | ||
| 410 | Vector { _handler: SAI2 }, | ||
| 411 | Vector { _handler: SWPMI1 }, | ||
| 412 | Vector { _handler: TSC }, | ||
| 413 | Vector { _reserved: 0 }, | ||
| 414 | Vector { _reserved: 0 }, | ||
| 415 | Vector { _handler: RNG }, | ||
| 416 | Vector { _handler: FPU }, | ||
| 417 | ]; | ||
| 418 | } | ||
| 18 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 419 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 19 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 420 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 20 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 421 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l471qg.rs b/embassy-stm32/src/chip/stm32l471qg.rs index 937127de9..192060c1f 100644 --- a/embassy-stm32/src/chip/stm32l471qg.rs +++ b/embassy-stm32/src/chip/stm32l471qg.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -13,8 +13,409 @@ peripherals!( | |||
| 13 | RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, | 13 | RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, |
| 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG | 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 17 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 16 | pub const GPIO_BASE: usize = 0x48000000; | 18 | pub const GPIO_BASE: usize = 0x48000000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 20 | |||
| 21 | pub mod interrupt { | ||
| 22 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 23 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 24 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 25 | |||
| 26 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 27 | #[allow(non_camel_case_types)] | ||
| 28 | enum InterruptEnum { | ||
| 29 | ADC1_2 = 18, | ||
| 30 | ADC3 = 47, | ||
| 31 | CAN1_RX0 = 20, | ||
| 32 | CAN1_RX1 = 21, | ||
| 33 | CAN1_SCE = 22, | ||
| 34 | CAN1_TX = 19, | ||
| 35 | COMP = 64, | ||
| 36 | DFSDM1_FLT0 = 61, | ||
| 37 | DFSDM1_FLT1 = 62, | ||
| 38 | DFSDM1_FLT2 = 63, | ||
| 39 | DFSDM1_FLT3 = 42, | ||
| 40 | DMA1_Channel1 = 11, | ||
| 41 | DMA1_Channel2 = 12, | ||
| 42 | DMA1_Channel3 = 13, | ||
| 43 | DMA1_Channel4 = 14, | ||
| 44 | DMA1_Channel5 = 15, | ||
| 45 | DMA1_Channel6 = 16, | ||
| 46 | DMA1_Channel7 = 17, | ||
| 47 | DMA2_Channel1 = 56, | ||
| 48 | DMA2_Channel2 = 57, | ||
| 49 | DMA2_Channel3 = 58, | ||
| 50 | DMA2_Channel4 = 59, | ||
| 51 | DMA2_Channel5 = 60, | ||
| 52 | DMA2_Channel6 = 68, | ||
| 53 | DMA2_Channel7 = 69, | ||
| 54 | EXTI0 = 6, | ||
| 55 | EXTI1 = 7, | ||
| 56 | EXTI15_10 = 40, | ||
| 57 | EXTI2 = 8, | ||
| 58 | EXTI3 = 9, | ||
| 59 | EXTI4 = 10, | ||
| 60 | EXTI9_5 = 23, | ||
| 61 | FLASH = 4, | ||
| 62 | FMC = 48, | ||
| 63 | FPU = 81, | ||
| 64 | I2C1_ER = 32, | ||
| 65 | I2C1_EV = 31, | ||
| 66 | I2C2_ER = 34, | ||
| 67 | I2C2_EV = 33, | ||
| 68 | I2C3_ER = 73, | ||
| 69 | I2C3_EV = 72, | ||
| 70 | LPTIM1 = 65, | ||
| 71 | LPTIM2 = 66, | ||
| 72 | LPUART1 = 70, | ||
| 73 | PVD_PVM = 1, | ||
| 74 | QUADSPI = 71, | ||
| 75 | RCC = 5, | ||
| 76 | RNG = 80, | ||
| 77 | RTC_Alarm = 41, | ||
| 78 | RTC_WKUP = 3, | ||
| 79 | SAI1 = 74, | ||
| 80 | SAI2 = 75, | ||
| 81 | SDMMC1 = 49, | ||
| 82 | SPI1 = 35, | ||
| 83 | SPI2 = 36, | ||
| 84 | SPI3 = 51, | ||
| 85 | SWPMI1 = 76, | ||
| 86 | TAMP_STAMP = 2, | ||
| 87 | TIM1_BRK_TIM15 = 24, | ||
| 88 | TIM1_CC = 27, | ||
| 89 | TIM1_TRG_COM_TIM17 = 26, | ||
| 90 | TIM1_UP_TIM16 = 25, | ||
| 91 | TIM2 = 28, | ||
| 92 | TIM3 = 29, | ||
| 93 | TIM4 = 30, | ||
| 94 | TIM5 = 50, | ||
| 95 | TIM6_DAC = 54, | ||
| 96 | TIM7 = 55, | ||
| 97 | TIM8_BRK = 43, | ||
| 98 | TIM8_CC = 46, | ||
| 99 | TIM8_TRG_COM = 45, | ||
| 100 | TIM8_UP = 44, | ||
| 101 | TSC = 77, | ||
| 102 | UART4 = 52, | ||
| 103 | UART5 = 53, | ||
| 104 | USART1 = 37, | ||
| 105 | USART2 = 38, | ||
| 106 | USART3 = 39, | ||
| 107 | WWDG = 0, | ||
| 108 | } | ||
| 109 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 110 | #[inline(always)] | ||
| 111 | fn number(self) -> u16 { | ||
| 112 | self as u16 | ||
| 113 | } | ||
| 114 | } | ||
| 115 | |||
| 116 | declare!(ADC1_2); | ||
| 117 | declare!(ADC3); | ||
| 118 | declare!(CAN1_RX0); | ||
| 119 | declare!(CAN1_RX1); | ||
| 120 | declare!(CAN1_SCE); | ||
| 121 | declare!(CAN1_TX); | ||
| 122 | declare!(COMP); | ||
| 123 | declare!(DFSDM1_FLT0); | ||
| 124 | declare!(DFSDM1_FLT1); | ||
| 125 | declare!(DFSDM1_FLT2); | ||
| 126 | declare!(DFSDM1_FLT3); | ||
| 127 | declare!(DMA1_Channel1); | ||
| 128 | declare!(DMA1_Channel2); | ||
| 129 | declare!(DMA1_Channel3); | ||
| 130 | declare!(DMA1_Channel4); | ||
| 131 | declare!(DMA1_Channel5); | ||
| 132 | declare!(DMA1_Channel6); | ||
| 133 | declare!(DMA1_Channel7); | ||
| 134 | declare!(DMA2_Channel1); | ||
| 135 | declare!(DMA2_Channel2); | ||
| 136 | declare!(DMA2_Channel3); | ||
| 137 | declare!(DMA2_Channel4); | ||
| 138 | declare!(DMA2_Channel5); | ||
| 139 | declare!(DMA2_Channel6); | ||
| 140 | declare!(DMA2_Channel7); | ||
| 141 | declare!(EXTI0); | ||
| 142 | declare!(EXTI1); | ||
| 143 | declare!(EXTI15_10); | ||
| 144 | declare!(EXTI2); | ||
| 145 | declare!(EXTI3); | ||
| 146 | declare!(EXTI4); | ||
| 147 | declare!(EXTI9_5); | ||
| 148 | declare!(FLASH); | ||
| 149 | declare!(FMC); | ||
| 150 | declare!(FPU); | ||
| 151 | declare!(I2C1_ER); | ||
| 152 | declare!(I2C1_EV); | ||
| 153 | declare!(I2C2_ER); | ||
| 154 | declare!(I2C2_EV); | ||
| 155 | declare!(I2C3_ER); | ||
| 156 | declare!(I2C3_EV); | ||
| 157 | declare!(LPTIM1); | ||
| 158 | declare!(LPTIM2); | ||
| 159 | declare!(LPUART1); | ||
| 160 | declare!(PVD_PVM); | ||
| 161 | declare!(QUADSPI); | ||
| 162 | declare!(RCC); | ||
| 163 | declare!(RNG); | ||
| 164 | declare!(RTC_Alarm); | ||
| 165 | declare!(RTC_WKUP); | ||
| 166 | declare!(SAI1); | ||
| 167 | declare!(SAI2); | ||
| 168 | declare!(SDMMC1); | ||
| 169 | declare!(SPI1); | ||
| 170 | declare!(SPI2); | ||
| 171 | declare!(SPI3); | ||
| 172 | declare!(SWPMI1); | ||
| 173 | declare!(TAMP_STAMP); | ||
| 174 | declare!(TIM1_BRK_TIM15); | ||
| 175 | declare!(TIM1_CC); | ||
| 176 | declare!(TIM1_TRG_COM_TIM17); | ||
| 177 | declare!(TIM1_UP_TIM16); | ||
| 178 | declare!(TIM2); | ||
| 179 | declare!(TIM3); | ||
| 180 | declare!(TIM4); | ||
| 181 | declare!(TIM5); | ||
| 182 | declare!(TIM6_DAC); | ||
| 183 | declare!(TIM7); | ||
| 184 | declare!(TIM8_BRK); | ||
| 185 | declare!(TIM8_CC); | ||
| 186 | declare!(TIM8_TRG_COM); | ||
| 187 | declare!(TIM8_UP); | ||
| 188 | declare!(TSC); | ||
| 189 | declare!(UART4); | ||
| 190 | declare!(UART5); | ||
| 191 | declare!(USART1); | ||
| 192 | declare!(USART2); | ||
| 193 | declare!(USART3); | ||
| 194 | declare!(WWDG); | ||
| 195 | } | ||
| 196 | mod interrupt_vector { | ||
| 197 | extern "C" { | ||
| 198 | fn ADC1_2(); | ||
| 199 | fn ADC3(); | ||
| 200 | fn CAN1_RX0(); | ||
| 201 | fn CAN1_RX1(); | ||
| 202 | fn CAN1_SCE(); | ||
| 203 | fn CAN1_TX(); | ||
| 204 | fn COMP(); | ||
| 205 | fn DFSDM1_FLT0(); | ||
| 206 | fn DFSDM1_FLT1(); | ||
| 207 | fn DFSDM1_FLT2(); | ||
| 208 | fn DFSDM1_FLT3(); | ||
| 209 | fn DMA1_Channel1(); | ||
| 210 | fn DMA1_Channel2(); | ||
| 211 | fn DMA1_Channel3(); | ||
| 212 | fn DMA1_Channel4(); | ||
| 213 | fn DMA1_Channel5(); | ||
| 214 | fn DMA1_Channel6(); | ||
| 215 | fn DMA1_Channel7(); | ||
| 216 | fn DMA2_Channel1(); | ||
| 217 | fn DMA2_Channel2(); | ||
| 218 | fn DMA2_Channel3(); | ||
| 219 | fn DMA2_Channel4(); | ||
| 220 | fn DMA2_Channel5(); | ||
| 221 | fn DMA2_Channel6(); | ||
| 222 | fn DMA2_Channel7(); | ||
| 223 | fn EXTI0(); | ||
| 224 | fn EXTI1(); | ||
| 225 | fn EXTI15_10(); | ||
| 226 | fn EXTI2(); | ||
| 227 | fn EXTI3(); | ||
| 228 | fn EXTI4(); | ||
| 229 | fn EXTI9_5(); | ||
| 230 | fn FLASH(); | ||
| 231 | fn FMC(); | ||
| 232 | fn FPU(); | ||
| 233 | fn I2C1_ER(); | ||
| 234 | fn I2C1_EV(); | ||
| 235 | fn I2C2_ER(); | ||
| 236 | fn I2C2_EV(); | ||
| 237 | fn I2C3_ER(); | ||
| 238 | fn I2C3_EV(); | ||
| 239 | fn LPTIM1(); | ||
| 240 | fn LPTIM2(); | ||
| 241 | fn LPUART1(); | ||
| 242 | fn PVD_PVM(); | ||
| 243 | fn QUADSPI(); | ||
| 244 | fn RCC(); | ||
| 245 | fn RNG(); | ||
| 246 | fn RTC_Alarm(); | ||
| 247 | fn RTC_WKUP(); | ||
| 248 | fn SAI1(); | ||
| 249 | fn SAI2(); | ||
| 250 | fn SDMMC1(); | ||
| 251 | fn SPI1(); | ||
| 252 | fn SPI2(); | ||
| 253 | fn SPI3(); | ||
| 254 | fn SWPMI1(); | ||
| 255 | fn TAMP_STAMP(); | ||
| 256 | fn TIM1_BRK_TIM15(); | ||
| 257 | fn TIM1_CC(); | ||
| 258 | fn TIM1_TRG_COM_TIM17(); | ||
| 259 | fn TIM1_UP_TIM16(); | ||
| 260 | fn TIM2(); | ||
| 261 | fn TIM3(); | ||
| 262 | fn TIM4(); | ||
| 263 | fn TIM5(); | ||
| 264 | fn TIM6_DAC(); | ||
| 265 | fn TIM7(); | ||
| 266 | fn TIM8_BRK(); | ||
| 267 | fn TIM8_CC(); | ||
| 268 | fn TIM8_TRG_COM(); | ||
| 269 | fn TIM8_UP(); | ||
| 270 | fn TSC(); | ||
| 271 | fn UART4(); | ||
| 272 | fn UART5(); | ||
| 273 | fn USART1(); | ||
| 274 | fn USART2(); | ||
| 275 | fn USART3(); | ||
| 276 | fn WWDG(); | ||
| 277 | } | ||
| 278 | pub union Vector { | ||
| 279 | _handler: unsafe extern "C" fn(), | ||
| 280 | _reserved: u32, | ||
| 281 | } | ||
| 282 | #[link_section = ".vector_table.interrupts"] | ||
| 283 | #[no_mangle] | ||
| 284 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 285 | Vector { _handler: WWDG }, | ||
| 286 | Vector { _handler: PVD_PVM }, | ||
| 287 | Vector { | ||
| 288 | _handler: TAMP_STAMP, | ||
| 289 | }, | ||
| 290 | Vector { _handler: RTC_WKUP }, | ||
| 291 | Vector { _handler: FLASH }, | ||
| 292 | Vector { _handler: RCC }, | ||
| 293 | Vector { _handler: EXTI0 }, | ||
| 294 | Vector { _handler: EXTI1 }, | ||
| 295 | Vector { _handler: EXTI2 }, | ||
| 296 | Vector { _handler: EXTI3 }, | ||
| 297 | Vector { _handler: EXTI4 }, | ||
| 298 | Vector { | ||
| 299 | _handler: DMA1_Channel1, | ||
| 300 | }, | ||
| 301 | Vector { | ||
| 302 | _handler: DMA1_Channel2, | ||
| 303 | }, | ||
| 304 | Vector { | ||
| 305 | _handler: DMA1_Channel3, | ||
| 306 | }, | ||
| 307 | Vector { | ||
| 308 | _handler: DMA1_Channel4, | ||
| 309 | }, | ||
| 310 | Vector { | ||
| 311 | _handler: DMA1_Channel5, | ||
| 312 | }, | ||
| 313 | Vector { | ||
| 314 | _handler: DMA1_Channel6, | ||
| 315 | }, | ||
| 316 | Vector { | ||
| 317 | _handler: DMA1_Channel7, | ||
| 318 | }, | ||
| 319 | Vector { _handler: ADC1_2 }, | ||
| 320 | Vector { _handler: CAN1_TX }, | ||
| 321 | Vector { _handler: CAN1_RX0 }, | ||
| 322 | Vector { _handler: CAN1_RX1 }, | ||
| 323 | Vector { _handler: CAN1_SCE }, | ||
| 324 | Vector { _handler: EXTI9_5 }, | ||
| 325 | Vector { | ||
| 326 | _handler: TIM1_BRK_TIM15, | ||
| 327 | }, | ||
| 328 | Vector { | ||
| 329 | _handler: TIM1_UP_TIM16, | ||
| 330 | }, | ||
| 331 | Vector { | ||
| 332 | _handler: TIM1_TRG_COM_TIM17, | ||
| 333 | }, | ||
| 334 | Vector { _handler: TIM1_CC }, | ||
| 335 | Vector { _handler: TIM2 }, | ||
| 336 | Vector { _handler: TIM3 }, | ||
| 337 | Vector { _handler: TIM4 }, | ||
| 338 | Vector { _handler: I2C1_EV }, | ||
| 339 | Vector { _handler: I2C1_ER }, | ||
| 340 | Vector { _handler: I2C2_EV }, | ||
| 341 | Vector { _handler: I2C2_ER }, | ||
| 342 | Vector { _handler: SPI1 }, | ||
| 343 | Vector { _handler: SPI2 }, | ||
| 344 | Vector { _handler: USART1 }, | ||
| 345 | Vector { _handler: USART2 }, | ||
| 346 | Vector { _handler: USART3 }, | ||
| 347 | Vector { | ||
| 348 | _handler: EXTI15_10, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: RTC_Alarm, | ||
| 352 | }, | ||
| 353 | Vector { | ||
| 354 | _handler: DFSDM1_FLT3, | ||
| 355 | }, | ||
| 356 | Vector { _handler: TIM8_BRK }, | ||
| 357 | Vector { _handler: TIM8_UP }, | ||
| 358 | Vector { | ||
| 359 | _handler: TIM8_TRG_COM, | ||
| 360 | }, | ||
| 361 | Vector { _handler: TIM8_CC }, | ||
| 362 | Vector { _handler: ADC3 }, | ||
| 363 | Vector { _handler: FMC }, | ||
| 364 | Vector { _handler: SDMMC1 }, | ||
| 365 | Vector { _handler: TIM5 }, | ||
| 366 | Vector { _handler: SPI3 }, | ||
| 367 | Vector { _handler: UART4 }, | ||
| 368 | Vector { _handler: UART5 }, | ||
| 369 | Vector { _handler: TIM6_DAC }, | ||
| 370 | Vector { _handler: TIM7 }, | ||
| 371 | Vector { | ||
| 372 | _handler: DMA2_Channel1, | ||
| 373 | }, | ||
| 374 | Vector { | ||
| 375 | _handler: DMA2_Channel2, | ||
| 376 | }, | ||
| 377 | Vector { | ||
| 378 | _handler: DMA2_Channel3, | ||
| 379 | }, | ||
| 380 | Vector { | ||
| 381 | _handler: DMA2_Channel4, | ||
| 382 | }, | ||
| 383 | Vector { | ||
| 384 | _handler: DMA2_Channel5, | ||
| 385 | }, | ||
| 386 | Vector { | ||
| 387 | _handler: DFSDM1_FLT0, | ||
| 388 | }, | ||
| 389 | Vector { | ||
| 390 | _handler: DFSDM1_FLT1, | ||
| 391 | }, | ||
| 392 | Vector { | ||
| 393 | _handler: DFSDM1_FLT2, | ||
| 394 | }, | ||
| 395 | Vector { _handler: COMP }, | ||
| 396 | Vector { _handler: LPTIM1 }, | ||
| 397 | Vector { _handler: LPTIM2 }, | ||
| 398 | Vector { _reserved: 0 }, | ||
| 399 | Vector { | ||
| 400 | _handler: DMA2_Channel6, | ||
| 401 | }, | ||
| 402 | Vector { | ||
| 403 | _handler: DMA2_Channel7, | ||
| 404 | }, | ||
| 405 | Vector { _handler: LPUART1 }, | ||
| 406 | Vector { _handler: QUADSPI }, | ||
| 407 | Vector { _handler: I2C3_EV }, | ||
| 408 | Vector { _handler: I2C3_ER }, | ||
| 409 | Vector { _handler: SAI1 }, | ||
| 410 | Vector { _handler: SAI2 }, | ||
| 411 | Vector { _handler: SWPMI1 }, | ||
| 412 | Vector { _handler: TSC }, | ||
| 413 | Vector { _reserved: 0 }, | ||
| 414 | Vector { _reserved: 0 }, | ||
| 415 | Vector { _handler: RNG }, | ||
| 416 | Vector { _handler: FPU }, | ||
| 417 | ]; | ||
| 418 | } | ||
| 18 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 419 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 19 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 420 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 20 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 421 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l471re.rs b/embassy-stm32/src/chip/stm32l471re.rs index 937127de9..192060c1f 100644 --- a/embassy-stm32/src/chip/stm32l471re.rs +++ b/embassy-stm32/src/chip/stm32l471re.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -13,8 +13,409 @@ peripherals!( | |||
| 13 | RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, | 13 | RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, |
| 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG | 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 17 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 16 | pub const GPIO_BASE: usize = 0x48000000; | 18 | pub const GPIO_BASE: usize = 0x48000000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 20 | |||
| 21 | pub mod interrupt { | ||
| 22 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 23 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 24 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 25 | |||
| 26 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 27 | #[allow(non_camel_case_types)] | ||
| 28 | enum InterruptEnum { | ||
| 29 | ADC1_2 = 18, | ||
| 30 | ADC3 = 47, | ||
| 31 | CAN1_RX0 = 20, | ||
| 32 | CAN1_RX1 = 21, | ||
| 33 | CAN1_SCE = 22, | ||
| 34 | CAN1_TX = 19, | ||
| 35 | COMP = 64, | ||
| 36 | DFSDM1_FLT0 = 61, | ||
| 37 | DFSDM1_FLT1 = 62, | ||
| 38 | DFSDM1_FLT2 = 63, | ||
| 39 | DFSDM1_FLT3 = 42, | ||
| 40 | DMA1_Channel1 = 11, | ||
| 41 | DMA1_Channel2 = 12, | ||
| 42 | DMA1_Channel3 = 13, | ||
| 43 | DMA1_Channel4 = 14, | ||
| 44 | DMA1_Channel5 = 15, | ||
| 45 | DMA1_Channel6 = 16, | ||
| 46 | DMA1_Channel7 = 17, | ||
| 47 | DMA2_Channel1 = 56, | ||
| 48 | DMA2_Channel2 = 57, | ||
| 49 | DMA2_Channel3 = 58, | ||
| 50 | DMA2_Channel4 = 59, | ||
| 51 | DMA2_Channel5 = 60, | ||
| 52 | DMA2_Channel6 = 68, | ||
| 53 | DMA2_Channel7 = 69, | ||
| 54 | EXTI0 = 6, | ||
| 55 | EXTI1 = 7, | ||
| 56 | EXTI15_10 = 40, | ||
| 57 | EXTI2 = 8, | ||
| 58 | EXTI3 = 9, | ||
| 59 | EXTI4 = 10, | ||
| 60 | EXTI9_5 = 23, | ||
| 61 | FLASH = 4, | ||
| 62 | FMC = 48, | ||
| 63 | FPU = 81, | ||
| 64 | I2C1_ER = 32, | ||
| 65 | I2C1_EV = 31, | ||
| 66 | I2C2_ER = 34, | ||
| 67 | I2C2_EV = 33, | ||
| 68 | I2C3_ER = 73, | ||
| 69 | I2C3_EV = 72, | ||
| 70 | LPTIM1 = 65, | ||
| 71 | LPTIM2 = 66, | ||
| 72 | LPUART1 = 70, | ||
| 73 | PVD_PVM = 1, | ||
| 74 | QUADSPI = 71, | ||
| 75 | RCC = 5, | ||
| 76 | RNG = 80, | ||
| 77 | RTC_Alarm = 41, | ||
| 78 | RTC_WKUP = 3, | ||
| 79 | SAI1 = 74, | ||
| 80 | SAI2 = 75, | ||
| 81 | SDMMC1 = 49, | ||
| 82 | SPI1 = 35, | ||
| 83 | SPI2 = 36, | ||
| 84 | SPI3 = 51, | ||
| 85 | SWPMI1 = 76, | ||
| 86 | TAMP_STAMP = 2, | ||
| 87 | TIM1_BRK_TIM15 = 24, | ||
| 88 | TIM1_CC = 27, | ||
| 89 | TIM1_TRG_COM_TIM17 = 26, | ||
| 90 | TIM1_UP_TIM16 = 25, | ||
| 91 | TIM2 = 28, | ||
| 92 | TIM3 = 29, | ||
| 93 | TIM4 = 30, | ||
| 94 | TIM5 = 50, | ||
| 95 | TIM6_DAC = 54, | ||
| 96 | TIM7 = 55, | ||
| 97 | TIM8_BRK = 43, | ||
| 98 | TIM8_CC = 46, | ||
| 99 | TIM8_TRG_COM = 45, | ||
| 100 | TIM8_UP = 44, | ||
| 101 | TSC = 77, | ||
| 102 | UART4 = 52, | ||
| 103 | UART5 = 53, | ||
| 104 | USART1 = 37, | ||
| 105 | USART2 = 38, | ||
| 106 | USART3 = 39, | ||
| 107 | WWDG = 0, | ||
| 108 | } | ||
| 109 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 110 | #[inline(always)] | ||
| 111 | fn number(self) -> u16 { | ||
| 112 | self as u16 | ||
| 113 | } | ||
| 114 | } | ||
| 115 | |||
| 116 | declare!(ADC1_2); | ||
| 117 | declare!(ADC3); | ||
| 118 | declare!(CAN1_RX0); | ||
| 119 | declare!(CAN1_RX1); | ||
| 120 | declare!(CAN1_SCE); | ||
| 121 | declare!(CAN1_TX); | ||
| 122 | declare!(COMP); | ||
| 123 | declare!(DFSDM1_FLT0); | ||
| 124 | declare!(DFSDM1_FLT1); | ||
| 125 | declare!(DFSDM1_FLT2); | ||
| 126 | declare!(DFSDM1_FLT3); | ||
| 127 | declare!(DMA1_Channel1); | ||
| 128 | declare!(DMA1_Channel2); | ||
| 129 | declare!(DMA1_Channel3); | ||
| 130 | declare!(DMA1_Channel4); | ||
| 131 | declare!(DMA1_Channel5); | ||
| 132 | declare!(DMA1_Channel6); | ||
| 133 | declare!(DMA1_Channel7); | ||
| 134 | declare!(DMA2_Channel1); | ||
| 135 | declare!(DMA2_Channel2); | ||
| 136 | declare!(DMA2_Channel3); | ||
| 137 | declare!(DMA2_Channel4); | ||
| 138 | declare!(DMA2_Channel5); | ||
| 139 | declare!(DMA2_Channel6); | ||
| 140 | declare!(DMA2_Channel7); | ||
| 141 | declare!(EXTI0); | ||
| 142 | declare!(EXTI1); | ||
| 143 | declare!(EXTI15_10); | ||
| 144 | declare!(EXTI2); | ||
| 145 | declare!(EXTI3); | ||
| 146 | declare!(EXTI4); | ||
| 147 | declare!(EXTI9_5); | ||
| 148 | declare!(FLASH); | ||
| 149 | declare!(FMC); | ||
| 150 | declare!(FPU); | ||
| 151 | declare!(I2C1_ER); | ||
| 152 | declare!(I2C1_EV); | ||
| 153 | declare!(I2C2_ER); | ||
| 154 | declare!(I2C2_EV); | ||
| 155 | declare!(I2C3_ER); | ||
| 156 | declare!(I2C3_EV); | ||
| 157 | declare!(LPTIM1); | ||
| 158 | declare!(LPTIM2); | ||
| 159 | declare!(LPUART1); | ||
| 160 | declare!(PVD_PVM); | ||
| 161 | declare!(QUADSPI); | ||
| 162 | declare!(RCC); | ||
| 163 | declare!(RNG); | ||
| 164 | declare!(RTC_Alarm); | ||
| 165 | declare!(RTC_WKUP); | ||
| 166 | declare!(SAI1); | ||
| 167 | declare!(SAI2); | ||
| 168 | declare!(SDMMC1); | ||
| 169 | declare!(SPI1); | ||
| 170 | declare!(SPI2); | ||
| 171 | declare!(SPI3); | ||
| 172 | declare!(SWPMI1); | ||
| 173 | declare!(TAMP_STAMP); | ||
| 174 | declare!(TIM1_BRK_TIM15); | ||
| 175 | declare!(TIM1_CC); | ||
| 176 | declare!(TIM1_TRG_COM_TIM17); | ||
| 177 | declare!(TIM1_UP_TIM16); | ||
| 178 | declare!(TIM2); | ||
| 179 | declare!(TIM3); | ||
| 180 | declare!(TIM4); | ||
| 181 | declare!(TIM5); | ||
| 182 | declare!(TIM6_DAC); | ||
| 183 | declare!(TIM7); | ||
| 184 | declare!(TIM8_BRK); | ||
| 185 | declare!(TIM8_CC); | ||
| 186 | declare!(TIM8_TRG_COM); | ||
| 187 | declare!(TIM8_UP); | ||
| 188 | declare!(TSC); | ||
| 189 | declare!(UART4); | ||
| 190 | declare!(UART5); | ||
| 191 | declare!(USART1); | ||
| 192 | declare!(USART2); | ||
| 193 | declare!(USART3); | ||
| 194 | declare!(WWDG); | ||
| 195 | } | ||
| 196 | mod interrupt_vector { | ||
| 197 | extern "C" { | ||
| 198 | fn ADC1_2(); | ||
| 199 | fn ADC3(); | ||
| 200 | fn CAN1_RX0(); | ||
| 201 | fn CAN1_RX1(); | ||
| 202 | fn CAN1_SCE(); | ||
| 203 | fn CAN1_TX(); | ||
| 204 | fn COMP(); | ||
| 205 | fn DFSDM1_FLT0(); | ||
| 206 | fn DFSDM1_FLT1(); | ||
| 207 | fn DFSDM1_FLT2(); | ||
| 208 | fn DFSDM1_FLT3(); | ||
| 209 | fn DMA1_Channel1(); | ||
| 210 | fn DMA1_Channel2(); | ||
| 211 | fn DMA1_Channel3(); | ||
| 212 | fn DMA1_Channel4(); | ||
| 213 | fn DMA1_Channel5(); | ||
| 214 | fn DMA1_Channel6(); | ||
| 215 | fn DMA1_Channel7(); | ||
| 216 | fn DMA2_Channel1(); | ||
| 217 | fn DMA2_Channel2(); | ||
| 218 | fn DMA2_Channel3(); | ||
| 219 | fn DMA2_Channel4(); | ||
| 220 | fn DMA2_Channel5(); | ||
| 221 | fn DMA2_Channel6(); | ||
| 222 | fn DMA2_Channel7(); | ||
| 223 | fn EXTI0(); | ||
| 224 | fn EXTI1(); | ||
| 225 | fn EXTI15_10(); | ||
| 226 | fn EXTI2(); | ||
| 227 | fn EXTI3(); | ||
| 228 | fn EXTI4(); | ||
| 229 | fn EXTI9_5(); | ||
| 230 | fn FLASH(); | ||
| 231 | fn FMC(); | ||
| 232 | fn FPU(); | ||
| 233 | fn I2C1_ER(); | ||
| 234 | fn I2C1_EV(); | ||
| 235 | fn I2C2_ER(); | ||
| 236 | fn I2C2_EV(); | ||
| 237 | fn I2C3_ER(); | ||
| 238 | fn I2C3_EV(); | ||
| 239 | fn LPTIM1(); | ||
| 240 | fn LPTIM2(); | ||
| 241 | fn LPUART1(); | ||
| 242 | fn PVD_PVM(); | ||
| 243 | fn QUADSPI(); | ||
| 244 | fn RCC(); | ||
| 245 | fn RNG(); | ||
| 246 | fn RTC_Alarm(); | ||
| 247 | fn RTC_WKUP(); | ||
| 248 | fn SAI1(); | ||
| 249 | fn SAI2(); | ||
| 250 | fn SDMMC1(); | ||
| 251 | fn SPI1(); | ||
| 252 | fn SPI2(); | ||
| 253 | fn SPI3(); | ||
| 254 | fn SWPMI1(); | ||
| 255 | fn TAMP_STAMP(); | ||
| 256 | fn TIM1_BRK_TIM15(); | ||
| 257 | fn TIM1_CC(); | ||
| 258 | fn TIM1_TRG_COM_TIM17(); | ||
| 259 | fn TIM1_UP_TIM16(); | ||
| 260 | fn TIM2(); | ||
| 261 | fn TIM3(); | ||
| 262 | fn TIM4(); | ||
| 263 | fn TIM5(); | ||
| 264 | fn TIM6_DAC(); | ||
| 265 | fn TIM7(); | ||
| 266 | fn TIM8_BRK(); | ||
| 267 | fn TIM8_CC(); | ||
| 268 | fn TIM8_TRG_COM(); | ||
| 269 | fn TIM8_UP(); | ||
| 270 | fn TSC(); | ||
| 271 | fn UART4(); | ||
| 272 | fn UART5(); | ||
| 273 | fn USART1(); | ||
| 274 | fn USART2(); | ||
| 275 | fn USART3(); | ||
| 276 | fn WWDG(); | ||
| 277 | } | ||
| 278 | pub union Vector { | ||
| 279 | _handler: unsafe extern "C" fn(), | ||
| 280 | _reserved: u32, | ||
| 281 | } | ||
| 282 | #[link_section = ".vector_table.interrupts"] | ||
| 283 | #[no_mangle] | ||
| 284 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 285 | Vector { _handler: WWDG }, | ||
| 286 | Vector { _handler: PVD_PVM }, | ||
| 287 | Vector { | ||
| 288 | _handler: TAMP_STAMP, | ||
| 289 | }, | ||
| 290 | Vector { _handler: RTC_WKUP }, | ||
| 291 | Vector { _handler: FLASH }, | ||
| 292 | Vector { _handler: RCC }, | ||
| 293 | Vector { _handler: EXTI0 }, | ||
| 294 | Vector { _handler: EXTI1 }, | ||
| 295 | Vector { _handler: EXTI2 }, | ||
| 296 | Vector { _handler: EXTI3 }, | ||
| 297 | Vector { _handler: EXTI4 }, | ||
| 298 | Vector { | ||
| 299 | _handler: DMA1_Channel1, | ||
| 300 | }, | ||
| 301 | Vector { | ||
| 302 | _handler: DMA1_Channel2, | ||
| 303 | }, | ||
| 304 | Vector { | ||
| 305 | _handler: DMA1_Channel3, | ||
| 306 | }, | ||
| 307 | Vector { | ||
| 308 | _handler: DMA1_Channel4, | ||
| 309 | }, | ||
| 310 | Vector { | ||
| 311 | _handler: DMA1_Channel5, | ||
| 312 | }, | ||
| 313 | Vector { | ||
| 314 | _handler: DMA1_Channel6, | ||
| 315 | }, | ||
| 316 | Vector { | ||
| 317 | _handler: DMA1_Channel7, | ||
| 318 | }, | ||
| 319 | Vector { _handler: ADC1_2 }, | ||
| 320 | Vector { _handler: CAN1_TX }, | ||
| 321 | Vector { _handler: CAN1_RX0 }, | ||
| 322 | Vector { _handler: CAN1_RX1 }, | ||
| 323 | Vector { _handler: CAN1_SCE }, | ||
| 324 | Vector { _handler: EXTI9_5 }, | ||
| 325 | Vector { | ||
| 326 | _handler: TIM1_BRK_TIM15, | ||
| 327 | }, | ||
| 328 | Vector { | ||
| 329 | _handler: TIM1_UP_TIM16, | ||
| 330 | }, | ||
| 331 | Vector { | ||
| 332 | _handler: TIM1_TRG_COM_TIM17, | ||
| 333 | }, | ||
| 334 | Vector { _handler: TIM1_CC }, | ||
| 335 | Vector { _handler: TIM2 }, | ||
| 336 | Vector { _handler: TIM3 }, | ||
| 337 | Vector { _handler: TIM4 }, | ||
| 338 | Vector { _handler: I2C1_EV }, | ||
| 339 | Vector { _handler: I2C1_ER }, | ||
| 340 | Vector { _handler: I2C2_EV }, | ||
| 341 | Vector { _handler: I2C2_ER }, | ||
| 342 | Vector { _handler: SPI1 }, | ||
| 343 | Vector { _handler: SPI2 }, | ||
| 344 | Vector { _handler: USART1 }, | ||
| 345 | Vector { _handler: USART2 }, | ||
| 346 | Vector { _handler: USART3 }, | ||
| 347 | Vector { | ||
| 348 | _handler: EXTI15_10, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: RTC_Alarm, | ||
| 352 | }, | ||
| 353 | Vector { | ||
| 354 | _handler: DFSDM1_FLT3, | ||
| 355 | }, | ||
| 356 | Vector { _handler: TIM8_BRK }, | ||
| 357 | Vector { _handler: TIM8_UP }, | ||
| 358 | Vector { | ||
| 359 | _handler: TIM8_TRG_COM, | ||
| 360 | }, | ||
| 361 | Vector { _handler: TIM8_CC }, | ||
| 362 | Vector { _handler: ADC3 }, | ||
| 363 | Vector { _handler: FMC }, | ||
| 364 | Vector { _handler: SDMMC1 }, | ||
| 365 | Vector { _handler: TIM5 }, | ||
| 366 | Vector { _handler: SPI3 }, | ||
| 367 | Vector { _handler: UART4 }, | ||
| 368 | Vector { _handler: UART5 }, | ||
| 369 | Vector { _handler: TIM6_DAC }, | ||
| 370 | Vector { _handler: TIM7 }, | ||
| 371 | Vector { | ||
| 372 | _handler: DMA2_Channel1, | ||
| 373 | }, | ||
| 374 | Vector { | ||
| 375 | _handler: DMA2_Channel2, | ||
| 376 | }, | ||
| 377 | Vector { | ||
| 378 | _handler: DMA2_Channel3, | ||
| 379 | }, | ||
| 380 | Vector { | ||
| 381 | _handler: DMA2_Channel4, | ||
| 382 | }, | ||
| 383 | Vector { | ||
| 384 | _handler: DMA2_Channel5, | ||
| 385 | }, | ||
| 386 | Vector { | ||
| 387 | _handler: DFSDM1_FLT0, | ||
| 388 | }, | ||
| 389 | Vector { | ||
| 390 | _handler: DFSDM1_FLT1, | ||
| 391 | }, | ||
| 392 | Vector { | ||
| 393 | _handler: DFSDM1_FLT2, | ||
| 394 | }, | ||
| 395 | Vector { _handler: COMP }, | ||
| 396 | Vector { _handler: LPTIM1 }, | ||
| 397 | Vector { _handler: LPTIM2 }, | ||
| 398 | Vector { _reserved: 0 }, | ||
| 399 | Vector { | ||
| 400 | _handler: DMA2_Channel6, | ||
| 401 | }, | ||
| 402 | Vector { | ||
| 403 | _handler: DMA2_Channel7, | ||
| 404 | }, | ||
| 405 | Vector { _handler: LPUART1 }, | ||
| 406 | Vector { _handler: QUADSPI }, | ||
| 407 | Vector { _handler: I2C3_EV }, | ||
| 408 | Vector { _handler: I2C3_ER }, | ||
| 409 | Vector { _handler: SAI1 }, | ||
| 410 | Vector { _handler: SAI2 }, | ||
| 411 | Vector { _handler: SWPMI1 }, | ||
| 412 | Vector { _handler: TSC }, | ||
| 413 | Vector { _reserved: 0 }, | ||
| 414 | Vector { _reserved: 0 }, | ||
| 415 | Vector { _handler: RNG }, | ||
| 416 | Vector { _handler: FPU }, | ||
| 417 | ]; | ||
| 418 | } | ||
| 18 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 419 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 19 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 420 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 20 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 421 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l471rg.rs b/embassy-stm32/src/chip/stm32l471rg.rs index 937127de9..192060c1f 100644 --- a/embassy-stm32/src/chip/stm32l471rg.rs +++ b/embassy-stm32/src/chip/stm32l471rg.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -13,8 +13,409 @@ peripherals!( | |||
| 13 | RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, | 13 | RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, |
| 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG | 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 17 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 16 | pub const GPIO_BASE: usize = 0x48000000; | 18 | pub const GPIO_BASE: usize = 0x48000000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 20 | |||
| 21 | pub mod interrupt { | ||
| 22 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 23 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 24 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 25 | |||
| 26 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 27 | #[allow(non_camel_case_types)] | ||
| 28 | enum InterruptEnum { | ||
| 29 | ADC1_2 = 18, | ||
| 30 | ADC3 = 47, | ||
| 31 | CAN1_RX0 = 20, | ||
| 32 | CAN1_RX1 = 21, | ||
| 33 | CAN1_SCE = 22, | ||
| 34 | CAN1_TX = 19, | ||
| 35 | COMP = 64, | ||
| 36 | DFSDM1_FLT0 = 61, | ||
| 37 | DFSDM1_FLT1 = 62, | ||
| 38 | DFSDM1_FLT2 = 63, | ||
| 39 | DFSDM1_FLT3 = 42, | ||
| 40 | DMA1_Channel1 = 11, | ||
| 41 | DMA1_Channel2 = 12, | ||
| 42 | DMA1_Channel3 = 13, | ||
| 43 | DMA1_Channel4 = 14, | ||
| 44 | DMA1_Channel5 = 15, | ||
| 45 | DMA1_Channel6 = 16, | ||
| 46 | DMA1_Channel7 = 17, | ||
| 47 | DMA2_Channel1 = 56, | ||
| 48 | DMA2_Channel2 = 57, | ||
| 49 | DMA2_Channel3 = 58, | ||
| 50 | DMA2_Channel4 = 59, | ||
| 51 | DMA2_Channel5 = 60, | ||
| 52 | DMA2_Channel6 = 68, | ||
| 53 | DMA2_Channel7 = 69, | ||
| 54 | EXTI0 = 6, | ||
| 55 | EXTI1 = 7, | ||
| 56 | EXTI15_10 = 40, | ||
| 57 | EXTI2 = 8, | ||
| 58 | EXTI3 = 9, | ||
| 59 | EXTI4 = 10, | ||
| 60 | EXTI9_5 = 23, | ||
| 61 | FLASH = 4, | ||
| 62 | FMC = 48, | ||
| 63 | FPU = 81, | ||
| 64 | I2C1_ER = 32, | ||
| 65 | I2C1_EV = 31, | ||
| 66 | I2C2_ER = 34, | ||
| 67 | I2C2_EV = 33, | ||
| 68 | I2C3_ER = 73, | ||
| 69 | I2C3_EV = 72, | ||
| 70 | LPTIM1 = 65, | ||
| 71 | LPTIM2 = 66, | ||
| 72 | LPUART1 = 70, | ||
| 73 | PVD_PVM = 1, | ||
| 74 | QUADSPI = 71, | ||
| 75 | RCC = 5, | ||
| 76 | RNG = 80, | ||
| 77 | RTC_Alarm = 41, | ||
| 78 | RTC_WKUP = 3, | ||
| 79 | SAI1 = 74, | ||
| 80 | SAI2 = 75, | ||
| 81 | SDMMC1 = 49, | ||
| 82 | SPI1 = 35, | ||
| 83 | SPI2 = 36, | ||
| 84 | SPI3 = 51, | ||
| 85 | SWPMI1 = 76, | ||
| 86 | TAMP_STAMP = 2, | ||
| 87 | TIM1_BRK_TIM15 = 24, | ||
| 88 | TIM1_CC = 27, | ||
| 89 | TIM1_TRG_COM_TIM17 = 26, | ||
| 90 | TIM1_UP_TIM16 = 25, | ||
| 91 | TIM2 = 28, | ||
| 92 | TIM3 = 29, | ||
| 93 | TIM4 = 30, | ||
| 94 | TIM5 = 50, | ||
| 95 | TIM6_DAC = 54, | ||
| 96 | TIM7 = 55, | ||
| 97 | TIM8_BRK = 43, | ||
| 98 | TIM8_CC = 46, | ||
| 99 | TIM8_TRG_COM = 45, | ||
| 100 | TIM8_UP = 44, | ||
| 101 | TSC = 77, | ||
| 102 | UART4 = 52, | ||
| 103 | UART5 = 53, | ||
| 104 | USART1 = 37, | ||
| 105 | USART2 = 38, | ||
| 106 | USART3 = 39, | ||
| 107 | WWDG = 0, | ||
| 108 | } | ||
| 109 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 110 | #[inline(always)] | ||
| 111 | fn number(self) -> u16 { | ||
| 112 | self as u16 | ||
| 113 | } | ||
| 114 | } | ||
| 115 | |||
| 116 | declare!(ADC1_2); | ||
| 117 | declare!(ADC3); | ||
| 118 | declare!(CAN1_RX0); | ||
| 119 | declare!(CAN1_RX1); | ||
| 120 | declare!(CAN1_SCE); | ||
| 121 | declare!(CAN1_TX); | ||
| 122 | declare!(COMP); | ||
| 123 | declare!(DFSDM1_FLT0); | ||
| 124 | declare!(DFSDM1_FLT1); | ||
| 125 | declare!(DFSDM1_FLT2); | ||
| 126 | declare!(DFSDM1_FLT3); | ||
| 127 | declare!(DMA1_Channel1); | ||
| 128 | declare!(DMA1_Channel2); | ||
| 129 | declare!(DMA1_Channel3); | ||
| 130 | declare!(DMA1_Channel4); | ||
| 131 | declare!(DMA1_Channel5); | ||
| 132 | declare!(DMA1_Channel6); | ||
| 133 | declare!(DMA1_Channel7); | ||
| 134 | declare!(DMA2_Channel1); | ||
| 135 | declare!(DMA2_Channel2); | ||
| 136 | declare!(DMA2_Channel3); | ||
| 137 | declare!(DMA2_Channel4); | ||
| 138 | declare!(DMA2_Channel5); | ||
| 139 | declare!(DMA2_Channel6); | ||
| 140 | declare!(DMA2_Channel7); | ||
| 141 | declare!(EXTI0); | ||
| 142 | declare!(EXTI1); | ||
| 143 | declare!(EXTI15_10); | ||
| 144 | declare!(EXTI2); | ||
| 145 | declare!(EXTI3); | ||
| 146 | declare!(EXTI4); | ||
| 147 | declare!(EXTI9_5); | ||
| 148 | declare!(FLASH); | ||
| 149 | declare!(FMC); | ||
| 150 | declare!(FPU); | ||
| 151 | declare!(I2C1_ER); | ||
| 152 | declare!(I2C1_EV); | ||
| 153 | declare!(I2C2_ER); | ||
| 154 | declare!(I2C2_EV); | ||
| 155 | declare!(I2C3_ER); | ||
| 156 | declare!(I2C3_EV); | ||
| 157 | declare!(LPTIM1); | ||
| 158 | declare!(LPTIM2); | ||
| 159 | declare!(LPUART1); | ||
| 160 | declare!(PVD_PVM); | ||
| 161 | declare!(QUADSPI); | ||
| 162 | declare!(RCC); | ||
| 163 | declare!(RNG); | ||
| 164 | declare!(RTC_Alarm); | ||
| 165 | declare!(RTC_WKUP); | ||
| 166 | declare!(SAI1); | ||
| 167 | declare!(SAI2); | ||
| 168 | declare!(SDMMC1); | ||
| 169 | declare!(SPI1); | ||
| 170 | declare!(SPI2); | ||
| 171 | declare!(SPI3); | ||
| 172 | declare!(SWPMI1); | ||
| 173 | declare!(TAMP_STAMP); | ||
| 174 | declare!(TIM1_BRK_TIM15); | ||
| 175 | declare!(TIM1_CC); | ||
| 176 | declare!(TIM1_TRG_COM_TIM17); | ||
| 177 | declare!(TIM1_UP_TIM16); | ||
| 178 | declare!(TIM2); | ||
| 179 | declare!(TIM3); | ||
| 180 | declare!(TIM4); | ||
| 181 | declare!(TIM5); | ||
| 182 | declare!(TIM6_DAC); | ||
| 183 | declare!(TIM7); | ||
| 184 | declare!(TIM8_BRK); | ||
| 185 | declare!(TIM8_CC); | ||
| 186 | declare!(TIM8_TRG_COM); | ||
| 187 | declare!(TIM8_UP); | ||
| 188 | declare!(TSC); | ||
| 189 | declare!(UART4); | ||
| 190 | declare!(UART5); | ||
| 191 | declare!(USART1); | ||
| 192 | declare!(USART2); | ||
| 193 | declare!(USART3); | ||
| 194 | declare!(WWDG); | ||
| 195 | } | ||
| 196 | mod interrupt_vector { | ||
| 197 | extern "C" { | ||
| 198 | fn ADC1_2(); | ||
| 199 | fn ADC3(); | ||
| 200 | fn CAN1_RX0(); | ||
| 201 | fn CAN1_RX1(); | ||
| 202 | fn CAN1_SCE(); | ||
| 203 | fn CAN1_TX(); | ||
| 204 | fn COMP(); | ||
| 205 | fn DFSDM1_FLT0(); | ||
| 206 | fn DFSDM1_FLT1(); | ||
| 207 | fn DFSDM1_FLT2(); | ||
| 208 | fn DFSDM1_FLT3(); | ||
| 209 | fn DMA1_Channel1(); | ||
| 210 | fn DMA1_Channel2(); | ||
| 211 | fn DMA1_Channel3(); | ||
| 212 | fn DMA1_Channel4(); | ||
| 213 | fn DMA1_Channel5(); | ||
| 214 | fn DMA1_Channel6(); | ||
| 215 | fn DMA1_Channel7(); | ||
| 216 | fn DMA2_Channel1(); | ||
| 217 | fn DMA2_Channel2(); | ||
| 218 | fn DMA2_Channel3(); | ||
| 219 | fn DMA2_Channel4(); | ||
| 220 | fn DMA2_Channel5(); | ||
| 221 | fn DMA2_Channel6(); | ||
| 222 | fn DMA2_Channel7(); | ||
| 223 | fn EXTI0(); | ||
| 224 | fn EXTI1(); | ||
| 225 | fn EXTI15_10(); | ||
| 226 | fn EXTI2(); | ||
| 227 | fn EXTI3(); | ||
| 228 | fn EXTI4(); | ||
| 229 | fn EXTI9_5(); | ||
| 230 | fn FLASH(); | ||
| 231 | fn FMC(); | ||
| 232 | fn FPU(); | ||
| 233 | fn I2C1_ER(); | ||
| 234 | fn I2C1_EV(); | ||
| 235 | fn I2C2_ER(); | ||
| 236 | fn I2C2_EV(); | ||
| 237 | fn I2C3_ER(); | ||
| 238 | fn I2C3_EV(); | ||
| 239 | fn LPTIM1(); | ||
| 240 | fn LPTIM2(); | ||
| 241 | fn LPUART1(); | ||
| 242 | fn PVD_PVM(); | ||
| 243 | fn QUADSPI(); | ||
| 244 | fn RCC(); | ||
| 245 | fn RNG(); | ||
| 246 | fn RTC_Alarm(); | ||
| 247 | fn RTC_WKUP(); | ||
| 248 | fn SAI1(); | ||
| 249 | fn SAI2(); | ||
| 250 | fn SDMMC1(); | ||
| 251 | fn SPI1(); | ||
| 252 | fn SPI2(); | ||
| 253 | fn SPI3(); | ||
| 254 | fn SWPMI1(); | ||
| 255 | fn TAMP_STAMP(); | ||
| 256 | fn TIM1_BRK_TIM15(); | ||
| 257 | fn TIM1_CC(); | ||
| 258 | fn TIM1_TRG_COM_TIM17(); | ||
| 259 | fn TIM1_UP_TIM16(); | ||
| 260 | fn TIM2(); | ||
| 261 | fn TIM3(); | ||
| 262 | fn TIM4(); | ||
| 263 | fn TIM5(); | ||
| 264 | fn TIM6_DAC(); | ||
| 265 | fn TIM7(); | ||
| 266 | fn TIM8_BRK(); | ||
| 267 | fn TIM8_CC(); | ||
| 268 | fn TIM8_TRG_COM(); | ||
| 269 | fn TIM8_UP(); | ||
| 270 | fn TSC(); | ||
| 271 | fn UART4(); | ||
| 272 | fn UART5(); | ||
| 273 | fn USART1(); | ||
| 274 | fn USART2(); | ||
| 275 | fn USART3(); | ||
| 276 | fn WWDG(); | ||
| 277 | } | ||
| 278 | pub union Vector { | ||
| 279 | _handler: unsafe extern "C" fn(), | ||
| 280 | _reserved: u32, | ||
| 281 | } | ||
| 282 | #[link_section = ".vector_table.interrupts"] | ||
| 283 | #[no_mangle] | ||
| 284 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 285 | Vector { _handler: WWDG }, | ||
| 286 | Vector { _handler: PVD_PVM }, | ||
| 287 | Vector { | ||
| 288 | _handler: TAMP_STAMP, | ||
| 289 | }, | ||
| 290 | Vector { _handler: RTC_WKUP }, | ||
| 291 | Vector { _handler: FLASH }, | ||
| 292 | Vector { _handler: RCC }, | ||
| 293 | Vector { _handler: EXTI0 }, | ||
| 294 | Vector { _handler: EXTI1 }, | ||
| 295 | Vector { _handler: EXTI2 }, | ||
| 296 | Vector { _handler: EXTI3 }, | ||
| 297 | Vector { _handler: EXTI4 }, | ||
| 298 | Vector { | ||
| 299 | _handler: DMA1_Channel1, | ||
| 300 | }, | ||
| 301 | Vector { | ||
| 302 | _handler: DMA1_Channel2, | ||
| 303 | }, | ||
| 304 | Vector { | ||
| 305 | _handler: DMA1_Channel3, | ||
| 306 | }, | ||
| 307 | Vector { | ||
| 308 | _handler: DMA1_Channel4, | ||
| 309 | }, | ||
| 310 | Vector { | ||
| 311 | _handler: DMA1_Channel5, | ||
| 312 | }, | ||
| 313 | Vector { | ||
| 314 | _handler: DMA1_Channel6, | ||
| 315 | }, | ||
| 316 | Vector { | ||
| 317 | _handler: DMA1_Channel7, | ||
| 318 | }, | ||
| 319 | Vector { _handler: ADC1_2 }, | ||
| 320 | Vector { _handler: CAN1_TX }, | ||
| 321 | Vector { _handler: CAN1_RX0 }, | ||
| 322 | Vector { _handler: CAN1_RX1 }, | ||
| 323 | Vector { _handler: CAN1_SCE }, | ||
| 324 | Vector { _handler: EXTI9_5 }, | ||
| 325 | Vector { | ||
| 326 | _handler: TIM1_BRK_TIM15, | ||
| 327 | }, | ||
| 328 | Vector { | ||
| 329 | _handler: TIM1_UP_TIM16, | ||
| 330 | }, | ||
| 331 | Vector { | ||
| 332 | _handler: TIM1_TRG_COM_TIM17, | ||
| 333 | }, | ||
| 334 | Vector { _handler: TIM1_CC }, | ||
| 335 | Vector { _handler: TIM2 }, | ||
| 336 | Vector { _handler: TIM3 }, | ||
| 337 | Vector { _handler: TIM4 }, | ||
| 338 | Vector { _handler: I2C1_EV }, | ||
| 339 | Vector { _handler: I2C1_ER }, | ||
| 340 | Vector { _handler: I2C2_EV }, | ||
| 341 | Vector { _handler: I2C2_ER }, | ||
| 342 | Vector { _handler: SPI1 }, | ||
| 343 | Vector { _handler: SPI2 }, | ||
| 344 | Vector { _handler: USART1 }, | ||
| 345 | Vector { _handler: USART2 }, | ||
| 346 | Vector { _handler: USART3 }, | ||
| 347 | Vector { | ||
| 348 | _handler: EXTI15_10, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: RTC_Alarm, | ||
| 352 | }, | ||
| 353 | Vector { | ||
| 354 | _handler: DFSDM1_FLT3, | ||
| 355 | }, | ||
| 356 | Vector { _handler: TIM8_BRK }, | ||
| 357 | Vector { _handler: TIM8_UP }, | ||
| 358 | Vector { | ||
| 359 | _handler: TIM8_TRG_COM, | ||
| 360 | }, | ||
| 361 | Vector { _handler: TIM8_CC }, | ||
| 362 | Vector { _handler: ADC3 }, | ||
| 363 | Vector { _handler: FMC }, | ||
| 364 | Vector { _handler: SDMMC1 }, | ||
| 365 | Vector { _handler: TIM5 }, | ||
| 366 | Vector { _handler: SPI3 }, | ||
| 367 | Vector { _handler: UART4 }, | ||
| 368 | Vector { _handler: UART5 }, | ||
| 369 | Vector { _handler: TIM6_DAC }, | ||
| 370 | Vector { _handler: TIM7 }, | ||
| 371 | Vector { | ||
| 372 | _handler: DMA2_Channel1, | ||
| 373 | }, | ||
| 374 | Vector { | ||
| 375 | _handler: DMA2_Channel2, | ||
| 376 | }, | ||
| 377 | Vector { | ||
| 378 | _handler: DMA2_Channel3, | ||
| 379 | }, | ||
| 380 | Vector { | ||
| 381 | _handler: DMA2_Channel4, | ||
| 382 | }, | ||
| 383 | Vector { | ||
| 384 | _handler: DMA2_Channel5, | ||
| 385 | }, | ||
| 386 | Vector { | ||
| 387 | _handler: DFSDM1_FLT0, | ||
| 388 | }, | ||
| 389 | Vector { | ||
| 390 | _handler: DFSDM1_FLT1, | ||
| 391 | }, | ||
| 392 | Vector { | ||
| 393 | _handler: DFSDM1_FLT2, | ||
| 394 | }, | ||
| 395 | Vector { _handler: COMP }, | ||
| 396 | Vector { _handler: LPTIM1 }, | ||
| 397 | Vector { _handler: LPTIM2 }, | ||
| 398 | Vector { _reserved: 0 }, | ||
| 399 | Vector { | ||
| 400 | _handler: DMA2_Channel6, | ||
| 401 | }, | ||
| 402 | Vector { | ||
| 403 | _handler: DMA2_Channel7, | ||
| 404 | }, | ||
| 405 | Vector { _handler: LPUART1 }, | ||
| 406 | Vector { _handler: QUADSPI }, | ||
| 407 | Vector { _handler: I2C3_EV }, | ||
| 408 | Vector { _handler: I2C3_ER }, | ||
| 409 | Vector { _handler: SAI1 }, | ||
| 410 | Vector { _handler: SAI2 }, | ||
| 411 | Vector { _handler: SWPMI1 }, | ||
| 412 | Vector { _handler: TSC }, | ||
| 413 | Vector { _reserved: 0 }, | ||
| 414 | Vector { _reserved: 0 }, | ||
| 415 | Vector { _handler: RNG }, | ||
| 416 | Vector { _handler: FPU }, | ||
| 417 | ]; | ||
| 418 | } | ||
| 18 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 419 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 19 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 420 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 20 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 421 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l471ve.rs b/embassy-stm32/src/chip/stm32l471ve.rs index 937127de9..192060c1f 100644 --- a/embassy-stm32/src/chip/stm32l471ve.rs +++ b/embassy-stm32/src/chip/stm32l471ve.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -13,8 +13,409 @@ peripherals!( | |||
| 13 | RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, | 13 | RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, |
| 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG | 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 17 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 16 | pub const GPIO_BASE: usize = 0x48000000; | 18 | pub const GPIO_BASE: usize = 0x48000000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 20 | |||
| 21 | pub mod interrupt { | ||
| 22 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 23 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 24 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 25 | |||
| 26 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 27 | #[allow(non_camel_case_types)] | ||
| 28 | enum InterruptEnum { | ||
| 29 | ADC1_2 = 18, | ||
| 30 | ADC3 = 47, | ||
| 31 | CAN1_RX0 = 20, | ||
| 32 | CAN1_RX1 = 21, | ||
| 33 | CAN1_SCE = 22, | ||
| 34 | CAN1_TX = 19, | ||
| 35 | COMP = 64, | ||
| 36 | DFSDM1_FLT0 = 61, | ||
| 37 | DFSDM1_FLT1 = 62, | ||
| 38 | DFSDM1_FLT2 = 63, | ||
| 39 | DFSDM1_FLT3 = 42, | ||
| 40 | DMA1_Channel1 = 11, | ||
| 41 | DMA1_Channel2 = 12, | ||
| 42 | DMA1_Channel3 = 13, | ||
| 43 | DMA1_Channel4 = 14, | ||
| 44 | DMA1_Channel5 = 15, | ||
| 45 | DMA1_Channel6 = 16, | ||
| 46 | DMA1_Channel7 = 17, | ||
| 47 | DMA2_Channel1 = 56, | ||
| 48 | DMA2_Channel2 = 57, | ||
| 49 | DMA2_Channel3 = 58, | ||
| 50 | DMA2_Channel4 = 59, | ||
| 51 | DMA2_Channel5 = 60, | ||
| 52 | DMA2_Channel6 = 68, | ||
| 53 | DMA2_Channel7 = 69, | ||
| 54 | EXTI0 = 6, | ||
| 55 | EXTI1 = 7, | ||
| 56 | EXTI15_10 = 40, | ||
| 57 | EXTI2 = 8, | ||
| 58 | EXTI3 = 9, | ||
| 59 | EXTI4 = 10, | ||
| 60 | EXTI9_5 = 23, | ||
| 61 | FLASH = 4, | ||
| 62 | FMC = 48, | ||
| 63 | FPU = 81, | ||
| 64 | I2C1_ER = 32, | ||
| 65 | I2C1_EV = 31, | ||
| 66 | I2C2_ER = 34, | ||
| 67 | I2C2_EV = 33, | ||
| 68 | I2C3_ER = 73, | ||
| 69 | I2C3_EV = 72, | ||
| 70 | LPTIM1 = 65, | ||
| 71 | LPTIM2 = 66, | ||
| 72 | LPUART1 = 70, | ||
| 73 | PVD_PVM = 1, | ||
| 74 | QUADSPI = 71, | ||
| 75 | RCC = 5, | ||
| 76 | RNG = 80, | ||
| 77 | RTC_Alarm = 41, | ||
| 78 | RTC_WKUP = 3, | ||
| 79 | SAI1 = 74, | ||
| 80 | SAI2 = 75, | ||
| 81 | SDMMC1 = 49, | ||
| 82 | SPI1 = 35, | ||
| 83 | SPI2 = 36, | ||
| 84 | SPI3 = 51, | ||
| 85 | SWPMI1 = 76, | ||
| 86 | TAMP_STAMP = 2, | ||
| 87 | TIM1_BRK_TIM15 = 24, | ||
| 88 | TIM1_CC = 27, | ||
| 89 | TIM1_TRG_COM_TIM17 = 26, | ||
| 90 | TIM1_UP_TIM16 = 25, | ||
| 91 | TIM2 = 28, | ||
| 92 | TIM3 = 29, | ||
| 93 | TIM4 = 30, | ||
| 94 | TIM5 = 50, | ||
| 95 | TIM6_DAC = 54, | ||
| 96 | TIM7 = 55, | ||
| 97 | TIM8_BRK = 43, | ||
| 98 | TIM8_CC = 46, | ||
| 99 | TIM8_TRG_COM = 45, | ||
| 100 | TIM8_UP = 44, | ||
| 101 | TSC = 77, | ||
| 102 | UART4 = 52, | ||
| 103 | UART5 = 53, | ||
| 104 | USART1 = 37, | ||
| 105 | USART2 = 38, | ||
| 106 | USART3 = 39, | ||
| 107 | WWDG = 0, | ||
| 108 | } | ||
| 109 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 110 | #[inline(always)] | ||
| 111 | fn number(self) -> u16 { | ||
| 112 | self as u16 | ||
| 113 | } | ||
| 114 | } | ||
| 115 | |||
| 116 | declare!(ADC1_2); | ||
| 117 | declare!(ADC3); | ||
| 118 | declare!(CAN1_RX0); | ||
| 119 | declare!(CAN1_RX1); | ||
| 120 | declare!(CAN1_SCE); | ||
| 121 | declare!(CAN1_TX); | ||
| 122 | declare!(COMP); | ||
| 123 | declare!(DFSDM1_FLT0); | ||
| 124 | declare!(DFSDM1_FLT1); | ||
| 125 | declare!(DFSDM1_FLT2); | ||
| 126 | declare!(DFSDM1_FLT3); | ||
| 127 | declare!(DMA1_Channel1); | ||
| 128 | declare!(DMA1_Channel2); | ||
| 129 | declare!(DMA1_Channel3); | ||
| 130 | declare!(DMA1_Channel4); | ||
| 131 | declare!(DMA1_Channel5); | ||
| 132 | declare!(DMA1_Channel6); | ||
| 133 | declare!(DMA1_Channel7); | ||
| 134 | declare!(DMA2_Channel1); | ||
| 135 | declare!(DMA2_Channel2); | ||
| 136 | declare!(DMA2_Channel3); | ||
| 137 | declare!(DMA2_Channel4); | ||
| 138 | declare!(DMA2_Channel5); | ||
| 139 | declare!(DMA2_Channel6); | ||
| 140 | declare!(DMA2_Channel7); | ||
| 141 | declare!(EXTI0); | ||
| 142 | declare!(EXTI1); | ||
| 143 | declare!(EXTI15_10); | ||
| 144 | declare!(EXTI2); | ||
| 145 | declare!(EXTI3); | ||
| 146 | declare!(EXTI4); | ||
| 147 | declare!(EXTI9_5); | ||
| 148 | declare!(FLASH); | ||
| 149 | declare!(FMC); | ||
| 150 | declare!(FPU); | ||
| 151 | declare!(I2C1_ER); | ||
| 152 | declare!(I2C1_EV); | ||
| 153 | declare!(I2C2_ER); | ||
| 154 | declare!(I2C2_EV); | ||
| 155 | declare!(I2C3_ER); | ||
| 156 | declare!(I2C3_EV); | ||
| 157 | declare!(LPTIM1); | ||
| 158 | declare!(LPTIM2); | ||
| 159 | declare!(LPUART1); | ||
| 160 | declare!(PVD_PVM); | ||
| 161 | declare!(QUADSPI); | ||
| 162 | declare!(RCC); | ||
| 163 | declare!(RNG); | ||
| 164 | declare!(RTC_Alarm); | ||
| 165 | declare!(RTC_WKUP); | ||
| 166 | declare!(SAI1); | ||
| 167 | declare!(SAI2); | ||
| 168 | declare!(SDMMC1); | ||
| 169 | declare!(SPI1); | ||
| 170 | declare!(SPI2); | ||
| 171 | declare!(SPI3); | ||
| 172 | declare!(SWPMI1); | ||
| 173 | declare!(TAMP_STAMP); | ||
| 174 | declare!(TIM1_BRK_TIM15); | ||
| 175 | declare!(TIM1_CC); | ||
| 176 | declare!(TIM1_TRG_COM_TIM17); | ||
| 177 | declare!(TIM1_UP_TIM16); | ||
| 178 | declare!(TIM2); | ||
| 179 | declare!(TIM3); | ||
| 180 | declare!(TIM4); | ||
| 181 | declare!(TIM5); | ||
| 182 | declare!(TIM6_DAC); | ||
| 183 | declare!(TIM7); | ||
| 184 | declare!(TIM8_BRK); | ||
| 185 | declare!(TIM8_CC); | ||
| 186 | declare!(TIM8_TRG_COM); | ||
| 187 | declare!(TIM8_UP); | ||
| 188 | declare!(TSC); | ||
| 189 | declare!(UART4); | ||
| 190 | declare!(UART5); | ||
| 191 | declare!(USART1); | ||
| 192 | declare!(USART2); | ||
| 193 | declare!(USART3); | ||
| 194 | declare!(WWDG); | ||
| 195 | } | ||
| 196 | mod interrupt_vector { | ||
| 197 | extern "C" { | ||
| 198 | fn ADC1_2(); | ||
| 199 | fn ADC3(); | ||
| 200 | fn CAN1_RX0(); | ||
| 201 | fn CAN1_RX1(); | ||
| 202 | fn CAN1_SCE(); | ||
| 203 | fn CAN1_TX(); | ||
| 204 | fn COMP(); | ||
| 205 | fn DFSDM1_FLT0(); | ||
| 206 | fn DFSDM1_FLT1(); | ||
| 207 | fn DFSDM1_FLT2(); | ||
| 208 | fn DFSDM1_FLT3(); | ||
| 209 | fn DMA1_Channel1(); | ||
| 210 | fn DMA1_Channel2(); | ||
| 211 | fn DMA1_Channel3(); | ||
| 212 | fn DMA1_Channel4(); | ||
| 213 | fn DMA1_Channel5(); | ||
| 214 | fn DMA1_Channel6(); | ||
| 215 | fn DMA1_Channel7(); | ||
| 216 | fn DMA2_Channel1(); | ||
| 217 | fn DMA2_Channel2(); | ||
| 218 | fn DMA2_Channel3(); | ||
| 219 | fn DMA2_Channel4(); | ||
| 220 | fn DMA2_Channel5(); | ||
| 221 | fn DMA2_Channel6(); | ||
| 222 | fn DMA2_Channel7(); | ||
| 223 | fn EXTI0(); | ||
| 224 | fn EXTI1(); | ||
| 225 | fn EXTI15_10(); | ||
| 226 | fn EXTI2(); | ||
| 227 | fn EXTI3(); | ||
| 228 | fn EXTI4(); | ||
| 229 | fn EXTI9_5(); | ||
| 230 | fn FLASH(); | ||
| 231 | fn FMC(); | ||
| 232 | fn FPU(); | ||
| 233 | fn I2C1_ER(); | ||
| 234 | fn I2C1_EV(); | ||
| 235 | fn I2C2_ER(); | ||
| 236 | fn I2C2_EV(); | ||
| 237 | fn I2C3_ER(); | ||
| 238 | fn I2C3_EV(); | ||
| 239 | fn LPTIM1(); | ||
| 240 | fn LPTIM2(); | ||
| 241 | fn LPUART1(); | ||
| 242 | fn PVD_PVM(); | ||
| 243 | fn QUADSPI(); | ||
| 244 | fn RCC(); | ||
| 245 | fn RNG(); | ||
| 246 | fn RTC_Alarm(); | ||
| 247 | fn RTC_WKUP(); | ||
| 248 | fn SAI1(); | ||
| 249 | fn SAI2(); | ||
| 250 | fn SDMMC1(); | ||
| 251 | fn SPI1(); | ||
| 252 | fn SPI2(); | ||
| 253 | fn SPI3(); | ||
| 254 | fn SWPMI1(); | ||
| 255 | fn TAMP_STAMP(); | ||
| 256 | fn TIM1_BRK_TIM15(); | ||
| 257 | fn TIM1_CC(); | ||
| 258 | fn TIM1_TRG_COM_TIM17(); | ||
| 259 | fn TIM1_UP_TIM16(); | ||
| 260 | fn TIM2(); | ||
| 261 | fn TIM3(); | ||
| 262 | fn TIM4(); | ||
| 263 | fn TIM5(); | ||
| 264 | fn TIM6_DAC(); | ||
| 265 | fn TIM7(); | ||
| 266 | fn TIM8_BRK(); | ||
| 267 | fn TIM8_CC(); | ||
| 268 | fn TIM8_TRG_COM(); | ||
| 269 | fn TIM8_UP(); | ||
| 270 | fn TSC(); | ||
| 271 | fn UART4(); | ||
| 272 | fn UART5(); | ||
| 273 | fn USART1(); | ||
| 274 | fn USART2(); | ||
| 275 | fn USART3(); | ||
| 276 | fn WWDG(); | ||
| 277 | } | ||
| 278 | pub union Vector { | ||
| 279 | _handler: unsafe extern "C" fn(), | ||
| 280 | _reserved: u32, | ||
| 281 | } | ||
| 282 | #[link_section = ".vector_table.interrupts"] | ||
| 283 | #[no_mangle] | ||
| 284 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 285 | Vector { _handler: WWDG }, | ||
| 286 | Vector { _handler: PVD_PVM }, | ||
| 287 | Vector { | ||
| 288 | _handler: TAMP_STAMP, | ||
| 289 | }, | ||
| 290 | Vector { _handler: RTC_WKUP }, | ||
| 291 | Vector { _handler: FLASH }, | ||
| 292 | Vector { _handler: RCC }, | ||
| 293 | Vector { _handler: EXTI0 }, | ||
| 294 | Vector { _handler: EXTI1 }, | ||
| 295 | Vector { _handler: EXTI2 }, | ||
| 296 | Vector { _handler: EXTI3 }, | ||
| 297 | Vector { _handler: EXTI4 }, | ||
| 298 | Vector { | ||
| 299 | _handler: DMA1_Channel1, | ||
| 300 | }, | ||
| 301 | Vector { | ||
| 302 | _handler: DMA1_Channel2, | ||
| 303 | }, | ||
| 304 | Vector { | ||
| 305 | _handler: DMA1_Channel3, | ||
| 306 | }, | ||
| 307 | Vector { | ||
| 308 | _handler: DMA1_Channel4, | ||
| 309 | }, | ||
| 310 | Vector { | ||
| 311 | _handler: DMA1_Channel5, | ||
| 312 | }, | ||
| 313 | Vector { | ||
| 314 | _handler: DMA1_Channel6, | ||
| 315 | }, | ||
| 316 | Vector { | ||
| 317 | _handler: DMA1_Channel7, | ||
| 318 | }, | ||
| 319 | Vector { _handler: ADC1_2 }, | ||
| 320 | Vector { _handler: CAN1_TX }, | ||
| 321 | Vector { _handler: CAN1_RX0 }, | ||
| 322 | Vector { _handler: CAN1_RX1 }, | ||
| 323 | Vector { _handler: CAN1_SCE }, | ||
| 324 | Vector { _handler: EXTI9_5 }, | ||
| 325 | Vector { | ||
| 326 | _handler: TIM1_BRK_TIM15, | ||
| 327 | }, | ||
| 328 | Vector { | ||
| 329 | _handler: TIM1_UP_TIM16, | ||
| 330 | }, | ||
| 331 | Vector { | ||
| 332 | _handler: TIM1_TRG_COM_TIM17, | ||
| 333 | }, | ||
| 334 | Vector { _handler: TIM1_CC }, | ||
| 335 | Vector { _handler: TIM2 }, | ||
| 336 | Vector { _handler: TIM3 }, | ||
| 337 | Vector { _handler: TIM4 }, | ||
| 338 | Vector { _handler: I2C1_EV }, | ||
| 339 | Vector { _handler: I2C1_ER }, | ||
| 340 | Vector { _handler: I2C2_EV }, | ||
| 341 | Vector { _handler: I2C2_ER }, | ||
| 342 | Vector { _handler: SPI1 }, | ||
| 343 | Vector { _handler: SPI2 }, | ||
| 344 | Vector { _handler: USART1 }, | ||
| 345 | Vector { _handler: USART2 }, | ||
| 346 | Vector { _handler: USART3 }, | ||
| 347 | Vector { | ||
| 348 | _handler: EXTI15_10, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: RTC_Alarm, | ||
| 352 | }, | ||
| 353 | Vector { | ||
| 354 | _handler: DFSDM1_FLT3, | ||
| 355 | }, | ||
| 356 | Vector { _handler: TIM8_BRK }, | ||
| 357 | Vector { _handler: TIM8_UP }, | ||
| 358 | Vector { | ||
| 359 | _handler: TIM8_TRG_COM, | ||
| 360 | }, | ||
| 361 | Vector { _handler: TIM8_CC }, | ||
| 362 | Vector { _handler: ADC3 }, | ||
| 363 | Vector { _handler: FMC }, | ||
| 364 | Vector { _handler: SDMMC1 }, | ||
| 365 | Vector { _handler: TIM5 }, | ||
| 366 | Vector { _handler: SPI3 }, | ||
| 367 | Vector { _handler: UART4 }, | ||
| 368 | Vector { _handler: UART5 }, | ||
| 369 | Vector { _handler: TIM6_DAC }, | ||
| 370 | Vector { _handler: TIM7 }, | ||
| 371 | Vector { | ||
| 372 | _handler: DMA2_Channel1, | ||
| 373 | }, | ||
| 374 | Vector { | ||
| 375 | _handler: DMA2_Channel2, | ||
| 376 | }, | ||
| 377 | Vector { | ||
| 378 | _handler: DMA2_Channel3, | ||
| 379 | }, | ||
| 380 | Vector { | ||
| 381 | _handler: DMA2_Channel4, | ||
| 382 | }, | ||
| 383 | Vector { | ||
| 384 | _handler: DMA2_Channel5, | ||
| 385 | }, | ||
| 386 | Vector { | ||
| 387 | _handler: DFSDM1_FLT0, | ||
| 388 | }, | ||
| 389 | Vector { | ||
| 390 | _handler: DFSDM1_FLT1, | ||
| 391 | }, | ||
| 392 | Vector { | ||
| 393 | _handler: DFSDM1_FLT2, | ||
| 394 | }, | ||
| 395 | Vector { _handler: COMP }, | ||
| 396 | Vector { _handler: LPTIM1 }, | ||
| 397 | Vector { _handler: LPTIM2 }, | ||
| 398 | Vector { _reserved: 0 }, | ||
| 399 | Vector { | ||
| 400 | _handler: DMA2_Channel6, | ||
| 401 | }, | ||
| 402 | Vector { | ||
| 403 | _handler: DMA2_Channel7, | ||
| 404 | }, | ||
| 405 | Vector { _handler: LPUART1 }, | ||
| 406 | Vector { _handler: QUADSPI }, | ||
| 407 | Vector { _handler: I2C3_EV }, | ||
| 408 | Vector { _handler: I2C3_ER }, | ||
| 409 | Vector { _handler: SAI1 }, | ||
| 410 | Vector { _handler: SAI2 }, | ||
| 411 | Vector { _handler: SWPMI1 }, | ||
| 412 | Vector { _handler: TSC }, | ||
| 413 | Vector { _reserved: 0 }, | ||
| 414 | Vector { _reserved: 0 }, | ||
| 415 | Vector { _handler: RNG }, | ||
| 416 | Vector { _handler: FPU }, | ||
| 417 | ]; | ||
| 418 | } | ||
| 18 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 419 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 19 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 420 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 20 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 421 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l471vg.rs b/embassy-stm32/src/chip/stm32l471vg.rs index 937127de9..192060c1f 100644 --- a/embassy-stm32/src/chip/stm32l471vg.rs +++ b/embassy-stm32/src/chip/stm32l471vg.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -13,8 +13,409 @@ peripherals!( | |||
| 13 | RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, | 13 | RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, |
| 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG | 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 17 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 16 | pub const GPIO_BASE: usize = 0x48000000; | 18 | pub const GPIO_BASE: usize = 0x48000000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 20 | |||
| 21 | pub mod interrupt { | ||
| 22 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 23 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 24 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 25 | |||
| 26 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 27 | #[allow(non_camel_case_types)] | ||
| 28 | enum InterruptEnum { | ||
| 29 | ADC1_2 = 18, | ||
| 30 | ADC3 = 47, | ||
| 31 | CAN1_RX0 = 20, | ||
| 32 | CAN1_RX1 = 21, | ||
| 33 | CAN1_SCE = 22, | ||
| 34 | CAN1_TX = 19, | ||
| 35 | COMP = 64, | ||
| 36 | DFSDM1_FLT0 = 61, | ||
| 37 | DFSDM1_FLT1 = 62, | ||
| 38 | DFSDM1_FLT2 = 63, | ||
| 39 | DFSDM1_FLT3 = 42, | ||
| 40 | DMA1_Channel1 = 11, | ||
| 41 | DMA1_Channel2 = 12, | ||
| 42 | DMA1_Channel3 = 13, | ||
| 43 | DMA1_Channel4 = 14, | ||
| 44 | DMA1_Channel5 = 15, | ||
| 45 | DMA1_Channel6 = 16, | ||
| 46 | DMA1_Channel7 = 17, | ||
| 47 | DMA2_Channel1 = 56, | ||
| 48 | DMA2_Channel2 = 57, | ||
| 49 | DMA2_Channel3 = 58, | ||
| 50 | DMA2_Channel4 = 59, | ||
| 51 | DMA2_Channel5 = 60, | ||
| 52 | DMA2_Channel6 = 68, | ||
| 53 | DMA2_Channel7 = 69, | ||
| 54 | EXTI0 = 6, | ||
| 55 | EXTI1 = 7, | ||
| 56 | EXTI15_10 = 40, | ||
| 57 | EXTI2 = 8, | ||
| 58 | EXTI3 = 9, | ||
| 59 | EXTI4 = 10, | ||
| 60 | EXTI9_5 = 23, | ||
| 61 | FLASH = 4, | ||
| 62 | FMC = 48, | ||
| 63 | FPU = 81, | ||
| 64 | I2C1_ER = 32, | ||
| 65 | I2C1_EV = 31, | ||
| 66 | I2C2_ER = 34, | ||
| 67 | I2C2_EV = 33, | ||
| 68 | I2C3_ER = 73, | ||
| 69 | I2C3_EV = 72, | ||
| 70 | LPTIM1 = 65, | ||
| 71 | LPTIM2 = 66, | ||
| 72 | LPUART1 = 70, | ||
| 73 | PVD_PVM = 1, | ||
| 74 | QUADSPI = 71, | ||
| 75 | RCC = 5, | ||
| 76 | RNG = 80, | ||
| 77 | RTC_Alarm = 41, | ||
| 78 | RTC_WKUP = 3, | ||
| 79 | SAI1 = 74, | ||
| 80 | SAI2 = 75, | ||
| 81 | SDMMC1 = 49, | ||
| 82 | SPI1 = 35, | ||
| 83 | SPI2 = 36, | ||
| 84 | SPI3 = 51, | ||
| 85 | SWPMI1 = 76, | ||
| 86 | TAMP_STAMP = 2, | ||
| 87 | TIM1_BRK_TIM15 = 24, | ||
| 88 | TIM1_CC = 27, | ||
| 89 | TIM1_TRG_COM_TIM17 = 26, | ||
| 90 | TIM1_UP_TIM16 = 25, | ||
| 91 | TIM2 = 28, | ||
| 92 | TIM3 = 29, | ||
| 93 | TIM4 = 30, | ||
| 94 | TIM5 = 50, | ||
| 95 | TIM6_DAC = 54, | ||
| 96 | TIM7 = 55, | ||
| 97 | TIM8_BRK = 43, | ||
| 98 | TIM8_CC = 46, | ||
| 99 | TIM8_TRG_COM = 45, | ||
| 100 | TIM8_UP = 44, | ||
| 101 | TSC = 77, | ||
| 102 | UART4 = 52, | ||
| 103 | UART5 = 53, | ||
| 104 | USART1 = 37, | ||
| 105 | USART2 = 38, | ||
| 106 | USART3 = 39, | ||
| 107 | WWDG = 0, | ||
| 108 | } | ||
| 109 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 110 | #[inline(always)] | ||
| 111 | fn number(self) -> u16 { | ||
| 112 | self as u16 | ||
| 113 | } | ||
| 114 | } | ||
| 115 | |||
| 116 | declare!(ADC1_2); | ||
| 117 | declare!(ADC3); | ||
| 118 | declare!(CAN1_RX0); | ||
| 119 | declare!(CAN1_RX1); | ||
| 120 | declare!(CAN1_SCE); | ||
| 121 | declare!(CAN1_TX); | ||
| 122 | declare!(COMP); | ||
| 123 | declare!(DFSDM1_FLT0); | ||
| 124 | declare!(DFSDM1_FLT1); | ||
| 125 | declare!(DFSDM1_FLT2); | ||
| 126 | declare!(DFSDM1_FLT3); | ||
| 127 | declare!(DMA1_Channel1); | ||
| 128 | declare!(DMA1_Channel2); | ||
| 129 | declare!(DMA1_Channel3); | ||
| 130 | declare!(DMA1_Channel4); | ||
| 131 | declare!(DMA1_Channel5); | ||
| 132 | declare!(DMA1_Channel6); | ||
| 133 | declare!(DMA1_Channel7); | ||
| 134 | declare!(DMA2_Channel1); | ||
| 135 | declare!(DMA2_Channel2); | ||
| 136 | declare!(DMA2_Channel3); | ||
| 137 | declare!(DMA2_Channel4); | ||
| 138 | declare!(DMA2_Channel5); | ||
| 139 | declare!(DMA2_Channel6); | ||
| 140 | declare!(DMA2_Channel7); | ||
| 141 | declare!(EXTI0); | ||
| 142 | declare!(EXTI1); | ||
| 143 | declare!(EXTI15_10); | ||
| 144 | declare!(EXTI2); | ||
| 145 | declare!(EXTI3); | ||
| 146 | declare!(EXTI4); | ||
| 147 | declare!(EXTI9_5); | ||
| 148 | declare!(FLASH); | ||
| 149 | declare!(FMC); | ||
| 150 | declare!(FPU); | ||
| 151 | declare!(I2C1_ER); | ||
| 152 | declare!(I2C1_EV); | ||
| 153 | declare!(I2C2_ER); | ||
| 154 | declare!(I2C2_EV); | ||
| 155 | declare!(I2C3_ER); | ||
| 156 | declare!(I2C3_EV); | ||
| 157 | declare!(LPTIM1); | ||
| 158 | declare!(LPTIM2); | ||
| 159 | declare!(LPUART1); | ||
| 160 | declare!(PVD_PVM); | ||
| 161 | declare!(QUADSPI); | ||
| 162 | declare!(RCC); | ||
| 163 | declare!(RNG); | ||
| 164 | declare!(RTC_Alarm); | ||
| 165 | declare!(RTC_WKUP); | ||
| 166 | declare!(SAI1); | ||
| 167 | declare!(SAI2); | ||
| 168 | declare!(SDMMC1); | ||
| 169 | declare!(SPI1); | ||
| 170 | declare!(SPI2); | ||
| 171 | declare!(SPI3); | ||
| 172 | declare!(SWPMI1); | ||
| 173 | declare!(TAMP_STAMP); | ||
| 174 | declare!(TIM1_BRK_TIM15); | ||
| 175 | declare!(TIM1_CC); | ||
| 176 | declare!(TIM1_TRG_COM_TIM17); | ||
| 177 | declare!(TIM1_UP_TIM16); | ||
| 178 | declare!(TIM2); | ||
| 179 | declare!(TIM3); | ||
| 180 | declare!(TIM4); | ||
| 181 | declare!(TIM5); | ||
| 182 | declare!(TIM6_DAC); | ||
| 183 | declare!(TIM7); | ||
| 184 | declare!(TIM8_BRK); | ||
| 185 | declare!(TIM8_CC); | ||
| 186 | declare!(TIM8_TRG_COM); | ||
| 187 | declare!(TIM8_UP); | ||
| 188 | declare!(TSC); | ||
| 189 | declare!(UART4); | ||
| 190 | declare!(UART5); | ||
| 191 | declare!(USART1); | ||
| 192 | declare!(USART2); | ||
| 193 | declare!(USART3); | ||
| 194 | declare!(WWDG); | ||
| 195 | } | ||
| 196 | mod interrupt_vector { | ||
| 197 | extern "C" { | ||
| 198 | fn ADC1_2(); | ||
| 199 | fn ADC3(); | ||
| 200 | fn CAN1_RX0(); | ||
| 201 | fn CAN1_RX1(); | ||
| 202 | fn CAN1_SCE(); | ||
| 203 | fn CAN1_TX(); | ||
| 204 | fn COMP(); | ||
| 205 | fn DFSDM1_FLT0(); | ||
| 206 | fn DFSDM1_FLT1(); | ||
| 207 | fn DFSDM1_FLT2(); | ||
| 208 | fn DFSDM1_FLT3(); | ||
| 209 | fn DMA1_Channel1(); | ||
| 210 | fn DMA1_Channel2(); | ||
| 211 | fn DMA1_Channel3(); | ||
| 212 | fn DMA1_Channel4(); | ||
| 213 | fn DMA1_Channel5(); | ||
| 214 | fn DMA1_Channel6(); | ||
| 215 | fn DMA1_Channel7(); | ||
| 216 | fn DMA2_Channel1(); | ||
| 217 | fn DMA2_Channel2(); | ||
| 218 | fn DMA2_Channel3(); | ||
| 219 | fn DMA2_Channel4(); | ||
| 220 | fn DMA2_Channel5(); | ||
| 221 | fn DMA2_Channel6(); | ||
| 222 | fn DMA2_Channel7(); | ||
| 223 | fn EXTI0(); | ||
| 224 | fn EXTI1(); | ||
| 225 | fn EXTI15_10(); | ||
| 226 | fn EXTI2(); | ||
| 227 | fn EXTI3(); | ||
| 228 | fn EXTI4(); | ||
| 229 | fn EXTI9_5(); | ||
| 230 | fn FLASH(); | ||
| 231 | fn FMC(); | ||
| 232 | fn FPU(); | ||
| 233 | fn I2C1_ER(); | ||
| 234 | fn I2C1_EV(); | ||
| 235 | fn I2C2_ER(); | ||
| 236 | fn I2C2_EV(); | ||
| 237 | fn I2C3_ER(); | ||
| 238 | fn I2C3_EV(); | ||
| 239 | fn LPTIM1(); | ||
| 240 | fn LPTIM2(); | ||
| 241 | fn LPUART1(); | ||
| 242 | fn PVD_PVM(); | ||
| 243 | fn QUADSPI(); | ||
| 244 | fn RCC(); | ||
| 245 | fn RNG(); | ||
| 246 | fn RTC_Alarm(); | ||
| 247 | fn RTC_WKUP(); | ||
| 248 | fn SAI1(); | ||
| 249 | fn SAI2(); | ||
| 250 | fn SDMMC1(); | ||
| 251 | fn SPI1(); | ||
| 252 | fn SPI2(); | ||
| 253 | fn SPI3(); | ||
| 254 | fn SWPMI1(); | ||
| 255 | fn TAMP_STAMP(); | ||
| 256 | fn TIM1_BRK_TIM15(); | ||
| 257 | fn TIM1_CC(); | ||
| 258 | fn TIM1_TRG_COM_TIM17(); | ||
| 259 | fn TIM1_UP_TIM16(); | ||
| 260 | fn TIM2(); | ||
| 261 | fn TIM3(); | ||
| 262 | fn TIM4(); | ||
| 263 | fn TIM5(); | ||
| 264 | fn TIM6_DAC(); | ||
| 265 | fn TIM7(); | ||
| 266 | fn TIM8_BRK(); | ||
| 267 | fn TIM8_CC(); | ||
| 268 | fn TIM8_TRG_COM(); | ||
| 269 | fn TIM8_UP(); | ||
| 270 | fn TSC(); | ||
| 271 | fn UART4(); | ||
| 272 | fn UART5(); | ||
| 273 | fn USART1(); | ||
| 274 | fn USART2(); | ||
| 275 | fn USART3(); | ||
| 276 | fn WWDG(); | ||
| 277 | } | ||
| 278 | pub union Vector { | ||
| 279 | _handler: unsafe extern "C" fn(), | ||
| 280 | _reserved: u32, | ||
| 281 | } | ||
| 282 | #[link_section = ".vector_table.interrupts"] | ||
| 283 | #[no_mangle] | ||
| 284 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 285 | Vector { _handler: WWDG }, | ||
| 286 | Vector { _handler: PVD_PVM }, | ||
| 287 | Vector { | ||
| 288 | _handler: TAMP_STAMP, | ||
| 289 | }, | ||
| 290 | Vector { _handler: RTC_WKUP }, | ||
| 291 | Vector { _handler: FLASH }, | ||
| 292 | Vector { _handler: RCC }, | ||
| 293 | Vector { _handler: EXTI0 }, | ||
| 294 | Vector { _handler: EXTI1 }, | ||
| 295 | Vector { _handler: EXTI2 }, | ||
| 296 | Vector { _handler: EXTI3 }, | ||
| 297 | Vector { _handler: EXTI4 }, | ||
| 298 | Vector { | ||
| 299 | _handler: DMA1_Channel1, | ||
| 300 | }, | ||
| 301 | Vector { | ||
| 302 | _handler: DMA1_Channel2, | ||
| 303 | }, | ||
| 304 | Vector { | ||
| 305 | _handler: DMA1_Channel3, | ||
| 306 | }, | ||
| 307 | Vector { | ||
| 308 | _handler: DMA1_Channel4, | ||
| 309 | }, | ||
| 310 | Vector { | ||
| 311 | _handler: DMA1_Channel5, | ||
| 312 | }, | ||
| 313 | Vector { | ||
| 314 | _handler: DMA1_Channel6, | ||
| 315 | }, | ||
| 316 | Vector { | ||
| 317 | _handler: DMA1_Channel7, | ||
| 318 | }, | ||
| 319 | Vector { _handler: ADC1_2 }, | ||
| 320 | Vector { _handler: CAN1_TX }, | ||
| 321 | Vector { _handler: CAN1_RX0 }, | ||
| 322 | Vector { _handler: CAN1_RX1 }, | ||
| 323 | Vector { _handler: CAN1_SCE }, | ||
| 324 | Vector { _handler: EXTI9_5 }, | ||
| 325 | Vector { | ||
| 326 | _handler: TIM1_BRK_TIM15, | ||
| 327 | }, | ||
| 328 | Vector { | ||
| 329 | _handler: TIM1_UP_TIM16, | ||
| 330 | }, | ||
| 331 | Vector { | ||
| 332 | _handler: TIM1_TRG_COM_TIM17, | ||
| 333 | }, | ||
| 334 | Vector { _handler: TIM1_CC }, | ||
| 335 | Vector { _handler: TIM2 }, | ||
| 336 | Vector { _handler: TIM3 }, | ||
| 337 | Vector { _handler: TIM4 }, | ||
| 338 | Vector { _handler: I2C1_EV }, | ||
| 339 | Vector { _handler: I2C1_ER }, | ||
| 340 | Vector { _handler: I2C2_EV }, | ||
| 341 | Vector { _handler: I2C2_ER }, | ||
| 342 | Vector { _handler: SPI1 }, | ||
| 343 | Vector { _handler: SPI2 }, | ||
| 344 | Vector { _handler: USART1 }, | ||
| 345 | Vector { _handler: USART2 }, | ||
| 346 | Vector { _handler: USART3 }, | ||
| 347 | Vector { | ||
| 348 | _handler: EXTI15_10, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: RTC_Alarm, | ||
| 352 | }, | ||
| 353 | Vector { | ||
| 354 | _handler: DFSDM1_FLT3, | ||
| 355 | }, | ||
| 356 | Vector { _handler: TIM8_BRK }, | ||
| 357 | Vector { _handler: TIM8_UP }, | ||
| 358 | Vector { | ||
| 359 | _handler: TIM8_TRG_COM, | ||
| 360 | }, | ||
| 361 | Vector { _handler: TIM8_CC }, | ||
| 362 | Vector { _handler: ADC3 }, | ||
| 363 | Vector { _handler: FMC }, | ||
| 364 | Vector { _handler: SDMMC1 }, | ||
| 365 | Vector { _handler: TIM5 }, | ||
| 366 | Vector { _handler: SPI3 }, | ||
| 367 | Vector { _handler: UART4 }, | ||
| 368 | Vector { _handler: UART5 }, | ||
| 369 | Vector { _handler: TIM6_DAC }, | ||
| 370 | Vector { _handler: TIM7 }, | ||
| 371 | Vector { | ||
| 372 | _handler: DMA2_Channel1, | ||
| 373 | }, | ||
| 374 | Vector { | ||
| 375 | _handler: DMA2_Channel2, | ||
| 376 | }, | ||
| 377 | Vector { | ||
| 378 | _handler: DMA2_Channel3, | ||
| 379 | }, | ||
| 380 | Vector { | ||
| 381 | _handler: DMA2_Channel4, | ||
| 382 | }, | ||
| 383 | Vector { | ||
| 384 | _handler: DMA2_Channel5, | ||
| 385 | }, | ||
| 386 | Vector { | ||
| 387 | _handler: DFSDM1_FLT0, | ||
| 388 | }, | ||
| 389 | Vector { | ||
| 390 | _handler: DFSDM1_FLT1, | ||
| 391 | }, | ||
| 392 | Vector { | ||
| 393 | _handler: DFSDM1_FLT2, | ||
| 394 | }, | ||
| 395 | Vector { _handler: COMP }, | ||
| 396 | Vector { _handler: LPTIM1 }, | ||
| 397 | Vector { _handler: LPTIM2 }, | ||
| 398 | Vector { _reserved: 0 }, | ||
| 399 | Vector { | ||
| 400 | _handler: DMA2_Channel6, | ||
| 401 | }, | ||
| 402 | Vector { | ||
| 403 | _handler: DMA2_Channel7, | ||
| 404 | }, | ||
| 405 | Vector { _handler: LPUART1 }, | ||
| 406 | Vector { _handler: QUADSPI }, | ||
| 407 | Vector { _handler: I2C3_EV }, | ||
| 408 | Vector { _handler: I2C3_ER }, | ||
| 409 | Vector { _handler: SAI1 }, | ||
| 410 | Vector { _handler: SAI2 }, | ||
| 411 | Vector { _handler: SWPMI1 }, | ||
| 412 | Vector { _handler: TSC }, | ||
| 413 | Vector { _reserved: 0 }, | ||
| 414 | Vector { _reserved: 0 }, | ||
| 415 | Vector { _handler: RNG }, | ||
| 416 | Vector { _handler: FPU }, | ||
| 417 | ]; | ||
| 418 | } | ||
| 18 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 419 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 19 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 420 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 20 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 421 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l471ze.rs b/embassy-stm32/src/chip/stm32l471ze.rs index 937127de9..192060c1f 100644 --- a/embassy-stm32/src/chip/stm32l471ze.rs +++ b/embassy-stm32/src/chip/stm32l471ze.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -13,8 +13,409 @@ peripherals!( | |||
| 13 | RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, | 13 | RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, |
| 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG | 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 17 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 16 | pub const GPIO_BASE: usize = 0x48000000; | 18 | pub const GPIO_BASE: usize = 0x48000000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 20 | |||
| 21 | pub mod interrupt { | ||
| 22 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 23 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 24 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 25 | |||
| 26 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 27 | #[allow(non_camel_case_types)] | ||
| 28 | enum InterruptEnum { | ||
| 29 | ADC1_2 = 18, | ||
| 30 | ADC3 = 47, | ||
| 31 | CAN1_RX0 = 20, | ||
| 32 | CAN1_RX1 = 21, | ||
| 33 | CAN1_SCE = 22, | ||
| 34 | CAN1_TX = 19, | ||
| 35 | COMP = 64, | ||
| 36 | DFSDM1_FLT0 = 61, | ||
| 37 | DFSDM1_FLT1 = 62, | ||
| 38 | DFSDM1_FLT2 = 63, | ||
| 39 | DFSDM1_FLT3 = 42, | ||
| 40 | DMA1_Channel1 = 11, | ||
| 41 | DMA1_Channel2 = 12, | ||
| 42 | DMA1_Channel3 = 13, | ||
| 43 | DMA1_Channel4 = 14, | ||
| 44 | DMA1_Channel5 = 15, | ||
| 45 | DMA1_Channel6 = 16, | ||
| 46 | DMA1_Channel7 = 17, | ||
| 47 | DMA2_Channel1 = 56, | ||
| 48 | DMA2_Channel2 = 57, | ||
| 49 | DMA2_Channel3 = 58, | ||
| 50 | DMA2_Channel4 = 59, | ||
| 51 | DMA2_Channel5 = 60, | ||
| 52 | DMA2_Channel6 = 68, | ||
| 53 | DMA2_Channel7 = 69, | ||
| 54 | EXTI0 = 6, | ||
| 55 | EXTI1 = 7, | ||
| 56 | EXTI15_10 = 40, | ||
| 57 | EXTI2 = 8, | ||
| 58 | EXTI3 = 9, | ||
| 59 | EXTI4 = 10, | ||
| 60 | EXTI9_5 = 23, | ||
| 61 | FLASH = 4, | ||
| 62 | FMC = 48, | ||
| 63 | FPU = 81, | ||
| 64 | I2C1_ER = 32, | ||
| 65 | I2C1_EV = 31, | ||
| 66 | I2C2_ER = 34, | ||
| 67 | I2C2_EV = 33, | ||
| 68 | I2C3_ER = 73, | ||
| 69 | I2C3_EV = 72, | ||
| 70 | LPTIM1 = 65, | ||
| 71 | LPTIM2 = 66, | ||
| 72 | LPUART1 = 70, | ||
| 73 | PVD_PVM = 1, | ||
| 74 | QUADSPI = 71, | ||
| 75 | RCC = 5, | ||
| 76 | RNG = 80, | ||
| 77 | RTC_Alarm = 41, | ||
| 78 | RTC_WKUP = 3, | ||
| 79 | SAI1 = 74, | ||
| 80 | SAI2 = 75, | ||
| 81 | SDMMC1 = 49, | ||
| 82 | SPI1 = 35, | ||
| 83 | SPI2 = 36, | ||
| 84 | SPI3 = 51, | ||
| 85 | SWPMI1 = 76, | ||
| 86 | TAMP_STAMP = 2, | ||
| 87 | TIM1_BRK_TIM15 = 24, | ||
| 88 | TIM1_CC = 27, | ||
| 89 | TIM1_TRG_COM_TIM17 = 26, | ||
| 90 | TIM1_UP_TIM16 = 25, | ||
| 91 | TIM2 = 28, | ||
| 92 | TIM3 = 29, | ||
| 93 | TIM4 = 30, | ||
| 94 | TIM5 = 50, | ||
| 95 | TIM6_DAC = 54, | ||
| 96 | TIM7 = 55, | ||
| 97 | TIM8_BRK = 43, | ||
| 98 | TIM8_CC = 46, | ||
| 99 | TIM8_TRG_COM = 45, | ||
| 100 | TIM8_UP = 44, | ||
| 101 | TSC = 77, | ||
| 102 | UART4 = 52, | ||
| 103 | UART5 = 53, | ||
| 104 | USART1 = 37, | ||
| 105 | USART2 = 38, | ||
| 106 | USART3 = 39, | ||
| 107 | WWDG = 0, | ||
| 108 | } | ||
| 109 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 110 | #[inline(always)] | ||
| 111 | fn number(self) -> u16 { | ||
| 112 | self as u16 | ||
| 113 | } | ||
| 114 | } | ||
| 115 | |||
| 116 | declare!(ADC1_2); | ||
| 117 | declare!(ADC3); | ||
| 118 | declare!(CAN1_RX0); | ||
| 119 | declare!(CAN1_RX1); | ||
| 120 | declare!(CAN1_SCE); | ||
| 121 | declare!(CAN1_TX); | ||
| 122 | declare!(COMP); | ||
| 123 | declare!(DFSDM1_FLT0); | ||
| 124 | declare!(DFSDM1_FLT1); | ||
| 125 | declare!(DFSDM1_FLT2); | ||
| 126 | declare!(DFSDM1_FLT3); | ||
| 127 | declare!(DMA1_Channel1); | ||
| 128 | declare!(DMA1_Channel2); | ||
| 129 | declare!(DMA1_Channel3); | ||
| 130 | declare!(DMA1_Channel4); | ||
| 131 | declare!(DMA1_Channel5); | ||
| 132 | declare!(DMA1_Channel6); | ||
| 133 | declare!(DMA1_Channel7); | ||
| 134 | declare!(DMA2_Channel1); | ||
| 135 | declare!(DMA2_Channel2); | ||
| 136 | declare!(DMA2_Channel3); | ||
| 137 | declare!(DMA2_Channel4); | ||
| 138 | declare!(DMA2_Channel5); | ||
| 139 | declare!(DMA2_Channel6); | ||
| 140 | declare!(DMA2_Channel7); | ||
| 141 | declare!(EXTI0); | ||
| 142 | declare!(EXTI1); | ||
| 143 | declare!(EXTI15_10); | ||
| 144 | declare!(EXTI2); | ||
| 145 | declare!(EXTI3); | ||
| 146 | declare!(EXTI4); | ||
| 147 | declare!(EXTI9_5); | ||
| 148 | declare!(FLASH); | ||
| 149 | declare!(FMC); | ||
| 150 | declare!(FPU); | ||
| 151 | declare!(I2C1_ER); | ||
| 152 | declare!(I2C1_EV); | ||
| 153 | declare!(I2C2_ER); | ||
| 154 | declare!(I2C2_EV); | ||
| 155 | declare!(I2C3_ER); | ||
| 156 | declare!(I2C3_EV); | ||
| 157 | declare!(LPTIM1); | ||
| 158 | declare!(LPTIM2); | ||
| 159 | declare!(LPUART1); | ||
| 160 | declare!(PVD_PVM); | ||
| 161 | declare!(QUADSPI); | ||
| 162 | declare!(RCC); | ||
| 163 | declare!(RNG); | ||
| 164 | declare!(RTC_Alarm); | ||
| 165 | declare!(RTC_WKUP); | ||
| 166 | declare!(SAI1); | ||
| 167 | declare!(SAI2); | ||
| 168 | declare!(SDMMC1); | ||
| 169 | declare!(SPI1); | ||
| 170 | declare!(SPI2); | ||
| 171 | declare!(SPI3); | ||
| 172 | declare!(SWPMI1); | ||
| 173 | declare!(TAMP_STAMP); | ||
| 174 | declare!(TIM1_BRK_TIM15); | ||
| 175 | declare!(TIM1_CC); | ||
| 176 | declare!(TIM1_TRG_COM_TIM17); | ||
| 177 | declare!(TIM1_UP_TIM16); | ||
| 178 | declare!(TIM2); | ||
| 179 | declare!(TIM3); | ||
| 180 | declare!(TIM4); | ||
| 181 | declare!(TIM5); | ||
| 182 | declare!(TIM6_DAC); | ||
| 183 | declare!(TIM7); | ||
| 184 | declare!(TIM8_BRK); | ||
| 185 | declare!(TIM8_CC); | ||
| 186 | declare!(TIM8_TRG_COM); | ||
| 187 | declare!(TIM8_UP); | ||
| 188 | declare!(TSC); | ||
| 189 | declare!(UART4); | ||
| 190 | declare!(UART5); | ||
| 191 | declare!(USART1); | ||
| 192 | declare!(USART2); | ||
| 193 | declare!(USART3); | ||
| 194 | declare!(WWDG); | ||
| 195 | } | ||
| 196 | mod interrupt_vector { | ||
| 197 | extern "C" { | ||
| 198 | fn ADC1_2(); | ||
| 199 | fn ADC3(); | ||
| 200 | fn CAN1_RX0(); | ||
| 201 | fn CAN1_RX1(); | ||
| 202 | fn CAN1_SCE(); | ||
| 203 | fn CAN1_TX(); | ||
| 204 | fn COMP(); | ||
| 205 | fn DFSDM1_FLT0(); | ||
| 206 | fn DFSDM1_FLT1(); | ||
| 207 | fn DFSDM1_FLT2(); | ||
| 208 | fn DFSDM1_FLT3(); | ||
| 209 | fn DMA1_Channel1(); | ||
| 210 | fn DMA1_Channel2(); | ||
| 211 | fn DMA1_Channel3(); | ||
| 212 | fn DMA1_Channel4(); | ||
| 213 | fn DMA1_Channel5(); | ||
| 214 | fn DMA1_Channel6(); | ||
| 215 | fn DMA1_Channel7(); | ||
| 216 | fn DMA2_Channel1(); | ||
| 217 | fn DMA2_Channel2(); | ||
| 218 | fn DMA2_Channel3(); | ||
| 219 | fn DMA2_Channel4(); | ||
| 220 | fn DMA2_Channel5(); | ||
| 221 | fn DMA2_Channel6(); | ||
| 222 | fn DMA2_Channel7(); | ||
| 223 | fn EXTI0(); | ||
| 224 | fn EXTI1(); | ||
| 225 | fn EXTI15_10(); | ||
| 226 | fn EXTI2(); | ||
| 227 | fn EXTI3(); | ||
| 228 | fn EXTI4(); | ||
| 229 | fn EXTI9_5(); | ||
| 230 | fn FLASH(); | ||
| 231 | fn FMC(); | ||
| 232 | fn FPU(); | ||
| 233 | fn I2C1_ER(); | ||
| 234 | fn I2C1_EV(); | ||
| 235 | fn I2C2_ER(); | ||
| 236 | fn I2C2_EV(); | ||
| 237 | fn I2C3_ER(); | ||
| 238 | fn I2C3_EV(); | ||
| 239 | fn LPTIM1(); | ||
| 240 | fn LPTIM2(); | ||
| 241 | fn LPUART1(); | ||
| 242 | fn PVD_PVM(); | ||
| 243 | fn QUADSPI(); | ||
| 244 | fn RCC(); | ||
| 245 | fn RNG(); | ||
| 246 | fn RTC_Alarm(); | ||
| 247 | fn RTC_WKUP(); | ||
| 248 | fn SAI1(); | ||
| 249 | fn SAI2(); | ||
| 250 | fn SDMMC1(); | ||
| 251 | fn SPI1(); | ||
| 252 | fn SPI2(); | ||
| 253 | fn SPI3(); | ||
| 254 | fn SWPMI1(); | ||
| 255 | fn TAMP_STAMP(); | ||
| 256 | fn TIM1_BRK_TIM15(); | ||
| 257 | fn TIM1_CC(); | ||
| 258 | fn TIM1_TRG_COM_TIM17(); | ||
| 259 | fn TIM1_UP_TIM16(); | ||
| 260 | fn TIM2(); | ||
| 261 | fn TIM3(); | ||
| 262 | fn TIM4(); | ||
| 263 | fn TIM5(); | ||
| 264 | fn TIM6_DAC(); | ||
| 265 | fn TIM7(); | ||
| 266 | fn TIM8_BRK(); | ||
| 267 | fn TIM8_CC(); | ||
| 268 | fn TIM8_TRG_COM(); | ||
| 269 | fn TIM8_UP(); | ||
| 270 | fn TSC(); | ||
| 271 | fn UART4(); | ||
| 272 | fn UART5(); | ||
| 273 | fn USART1(); | ||
| 274 | fn USART2(); | ||
| 275 | fn USART3(); | ||
| 276 | fn WWDG(); | ||
| 277 | } | ||
| 278 | pub union Vector { | ||
| 279 | _handler: unsafe extern "C" fn(), | ||
| 280 | _reserved: u32, | ||
| 281 | } | ||
| 282 | #[link_section = ".vector_table.interrupts"] | ||
| 283 | #[no_mangle] | ||
| 284 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 285 | Vector { _handler: WWDG }, | ||
| 286 | Vector { _handler: PVD_PVM }, | ||
| 287 | Vector { | ||
| 288 | _handler: TAMP_STAMP, | ||
| 289 | }, | ||
| 290 | Vector { _handler: RTC_WKUP }, | ||
| 291 | Vector { _handler: FLASH }, | ||
| 292 | Vector { _handler: RCC }, | ||
| 293 | Vector { _handler: EXTI0 }, | ||
| 294 | Vector { _handler: EXTI1 }, | ||
| 295 | Vector { _handler: EXTI2 }, | ||
| 296 | Vector { _handler: EXTI3 }, | ||
| 297 | Vector { _handler: EXTI4 }, | ||
| 298 | Vector { | ||
| 299 | _handler: DMA1_Channel1, | ||
| 300 | }, | ||
| 301 | Vector { | ||
| 302 | _handler: DMA1_Channel2, | ||
| 303 | }, | ||
| 304 | Vector { | ||
| 305 | _handler: DMA1_Channel3, | ||
| 306 | }, | ||
| 307 | Vector { | ||
| 308 | _handler: DMA1_Channel4, | ||
| 309 | }, | ||
| 310 | Vector { | ||
| 311 | _handler: DMA1_Channel5, | ||
| 312 | }, | ||
| 313 | Vector { | ||
| 314 | _handler: DMA1_Channel6, | ||
| 315 | }, | ||
| 316 | Vector { | ||
| 317 | _handler: DMA1_Channel7, | ||
| 318 | }, | ||
| 319 | Vector { _handler: ADC1_2 }, | ||
| 320 | Vector { _handler: CAN1_TX }, | ||
| 321 | Vector { _handler: CAN1_RX0 }, | ||
| 322 | Vector { _handler: CAN1_RX1 }, | ||
| 323 | Vector { _handler: CAN1_SCE }, | ||
| 324 | Vector { _handler: EXTI9_5 }, | ||
| 325 | Vector { | ||
| 326 | _handler: TIM1_BRK_TIM15, | ||
| 327 | }, | ||
| 328 | Vector { | ||
| 329 | _handler: TIM1_UP_TIM16, | ||
| 330 | }, | ||
| 331 | Vector { | ||
| 332 | _handler: TIM1_TRG_COM_TIM17, | ||
| 333 | }, | ||
| 334 | Vector { _handler: TIM1_CC }, | ||
| 335 | Vector { _handler: TIM2 }, | ||
| 336 | Vector { _handler: TIM3 }, | ||
| 337 | Vector { _handler: TIM4 }, | ||
| 338 | Vector { _handler: I2C1_EV }, | ||
| 339 | Vector { _handler: I2C1_ER }, | ||
| 340 | Vector { _handler: I2C2_EV }, | ||
| 341 | Vector { _handler: I2C2_ER }, | ||
| 342 | Vector { _handler: SPI1 }, | ||
| 343 | Vector { _handler: SPI2 }, | ||
| 344 | Vector { _handler: USART1 }, | ||
| 345 | Vector { _handler: USART2 }, | ||
| 346 | Vector { _handler: USART3 }, | ||
| 347 | Vector { | ||
| 348 | _handler: EXTI15_10, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: RTC_Alarm, | ||
| 352 | }, | ||
| 353 | Vector { | ||
| 354 | _handler: DFSDM1_FLT3, | ||
| 355 | }, | ||
| 356 | Vector { _handler: TIM8_BRK }, | ||
| 357 | Vector { _handler: TIM8_UP }, | ||
| 358 | Vector { | ||
| 359 | _handler: TIM8_TRG_COM, | ||
| 360 | }, | ||
| 361 | Vector { _handler: TIM8_CC }, | ||
| 362 | Vector { _handler: ADC3 }, | ||
| 363 | Vector { _handler: FMC }, | ||
| 364 | Vector { _handler: SDMMC1 }, | ||
| 365 | Vector { _handler: TIM5 }, | ||
| 366 | Vector { _handler: SPI3 }, | ||
| 367 | Vector { _handler: UART4 }, | ||
| 368 | Vector { _handler: UART5 }, | ||
| 369 | Vector { _handler: TIM6_DAC }, | ||
| 370 | Vector { _handler: TIM7 }, | ||
| 371 | Vector { | ||
| 372 | _handler: DMA2_Channel1, | ||
| 373 | }, | ||
| 374 | Vector { | ||
| 375 | _handler: DMA2_Channel2, | ||
| 376 | }, | ||
| 377 | Vector { | ||
| 378 | _handler: DMA2_Channel3, | ||
| 379 | }, | ||
| 380 | Vector { | ||
| 381 | _handler: DMA2_Channel4, | ||
| 382 | }, | ||
| 383 | Vector { | ||
| 384 | _handler: DMA2_Channel5, | ||
| 385 | }, | ||
| 386 | Vector { | ||
| 387 | _handler: DFSDM1_FLT0, | ||
| 388 | }, | ||
| 389 | Vector { | ||
| 390 | _handler: DFSDM1_FLT1, | ||
| 391 | }, | ||
| 392 | Vector { | ||
| 393 | _handler: DFSDM1_FLT2, | ||
| 394 | }, | ||
| 395 | Vector { _handler: COMP }, | ||
| 396 | Vector { _handler: LPTIM1 }, | ||
| 397 | Vector { _handler: LPTIM2 }, | ||
| 398 | Vector { _reserved: 0 }, | ||
| 399 | Vector { | ||
| 400 | _handler: DMA2_Channel6, | ||
| 401 | }, | ||
| 402 | Vector { | ||
| 403 | _handler: DMA2_Channel7, | ||
| 404 | }, | ||
| 405 | Vector { _handler: LPUART1 }, | ||
| 406 | Vector { _handler: QUADSPI }, | ||
| 407 | Vector { _handler: I2C3_EV }, | ||
| 408 | Vector { _handler: I2C3_ER }, | ||
| 409 | Vector { _handler: SAI1 }, | ||
| 410 | Vector { _handler: SAI2 }, | ||
| 411 | Vector { _handler: SWPMI1 }, | ||
| 412 | Vector { _handler: TSC }, | ||
| 413 | Vector { _reserved: 0 }, | ||
| 414 | Vector { _reserved: 0 }, | ||
| 415 | Vector { _handler: RNG }, | ||
| 416 | Vector { _handler: FPU }, | ||
| 417 | ]; | ||
| 418 | } | ||
| 18 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 419 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 19 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 420 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 20 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 421 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l471zg.rs b/embassy-stm32/src/chip/stm32l471zg.rs index 937127de9..192060c1f 100644 --- a/embassy-stm32/src/chip/stm32l471zg.rs +++ b/embassy-stm32/src/chip/stm32l471zg.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -13,8 +13,409 @@ peripherals!( | |||
| 13 | RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, | 13 | RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, |
| 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG | 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG |
| 15 | ); | 15 | ); |
| 16 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 17 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 16 | pub const GPIO_BASE: usize = 0x48000000; | 18 | pub const GPIO_BASE: usize = 0x48000000; |
| 17 | pub const GPIO_STRIDE: usize = 0x400; | 19 | pub const GPIO_STRIDE: usize = 0x400; |
| 20 | |||
| 21 | pub mod interrupt { | ||
| 22 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 23 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 24 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 25 | |||
| 26 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 27 | #[allow(non_camel_case_types)] | ||
| 28 | enum InterruptEnum { | ||
| 29 | ADC1_2 = 18, | ||
| 30 | ADC3 = 47, | ||
| 31 | CAN1_RX0 = 20, | ||
| 32 | CAN1_RX1 = 21, | ||
| 33 | CAN1_SCE = 22, | ||
| 34 | CAN1_TX = 19, | ||
| 35 | COMP = 64, | ||
| 36 | DFSDM1_FLT0 = 61, | ||
| 37 | DFSDM1_FLT1 = 62, | ||
| 38 | DFSDM1_FLT2 = 63, | ||
| 39 | DFSDM1_FLT3 = 42, | ||
| 40 | DMA1_Channel1 = 11, | ||
| 41 | DMA1_Channel2 = 12, | ||
| 42 | DMA1_Channel3 = 13, | ||
| 43 | DMA1_Channel4 = 14, | ||
| 44 | DMA1_Channel5 = 15, | ||
| 45 | DMA1_Channel6 = 16, | ||
| 46 | DMA1_Channel7 = 17, | ||
| 47 | DMA2_Channel1 = 56, | ||
| 48 | DMA2_Channel2 = 57, | ||
| 49 | DMA2_Channel3 = 58, | ||
| 50 | DMA2_Channel4 = 59, | ||
| 51 | DMA2_Channel5 = 60, | ||
| 52 | DMA2_Channel6 = 68, | ||
| 53 | DMA2_Channel7 = 69, | ||
| 54 | EXTI0 = 6, | ||
| 55 | EXTI1 = 7, | ||
| 56 | EXTI15_10 = 40, | ||
| 57 | EXTI2 = 8, | ||
| 58 | EXTI3 = 9, | ||
| 59 | EXTI4 = 10, | ||
| 60 | EXTI9_5 = 23, | ||
| 61 | FLASH = 4, | ||
| 62 | FMC = 48, | ||
| 63 | FPU = 81, | ||
| 64 | I2C1_ER = 32, | ||
| 65 | I2C1_EV = 31, | ||
| 66 | I2C2_ER = 34, | ||
| 67 | I2C2_EV = 33, | ||
| 68 | I2C3_ER = 73, | ||
| 69 | I2C3_EV = 72, | ||
| 70 | LPTIM1 = 65, | ||
| 71 | LPTIM2 = 66, | ||
| 72 | LPUART1 = 70, | ||
| 73 | PVD_PVM = 1, | ||
| 74 | QUADSPI = 71, | ||
| 75 | RCC = 5, | ||
| 76 | RNG = 80, | ||
| 77 | RTC_Alarm = 41, | ||
| 78 | RTC_WKUP = 3, | ||
| 79 | SAI1 = 74, | ||
| 80 | SAI2 = 75, | ||
| 81 | SDMMC1 = 49, | ||
| 82 | SPI1 = 35, | ||
| 83 | SPI2 = 36, | ||
| 84 | SPI3 = 51, | ||
| 85 | SWPMI1 = 76, | ||
| 86 | TAMP_STAMP = 2, | ||
| 87 | TIM1_BRK_TIM15 = 24, | ||
| 88 | TIM1_CC = 27, | ||
| 89 | TIM1_TRG_COM_TIM17 = 26, | ||
| 90 | TIM1_UP_TIM16 = 25, | ||
| 91 | TIM2 = 28, | ||
| 92 | TIM3 = 29, | ||
| 93 | TIM4 = 30, | ||
| 94 | TIM5 = 50, | ||
| 95 | TIM6_DAC = 54, | ||
| 96 | TIM7 = 55, | ||
| 97 | TIM8_BRK = 43, | ||
| 98 | TIM8_CC = 46, | ||
| 99 | TIM8_TRG_COM = 45, | ||
| 100 | TIM8_UP = 44, | ||
| 101 | TSC = 77, | ||
| 102 | UART4 = 52, | ||
| 103 | UART5 = 53, | ||
| 104 | USART1 = 37, | ||
| 105 | USART2 = 38, | ||
| 106 | USART3 = 39, | ||
| 107 | WWDG = 0, | ||
| 108 | } | ||
| 109 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 110 | #[inline(always)] | ||
| 111 | fn number(self) -> u16 { | ||
| 112 | self as u16 | ||
| 113 | } | ||
| 114 | } | ||
| 115 | |||
| 116 | declare!(ADC1_2); | ||
| 117 | declare!(ADC3); | ||
| 118 | declare!(CAN1_RX0); | ||
| 119 | declare!(CAN1_RX1); | ||
| 120 | declare!(CAN1_SCE); | ||
| 121 | declare!(CAN1_TX); | ||
| 122 | declare!(COMP); | ||
| 123 | declare!(DFSDM1_FLT0); | ||
| 124 | declare!(DFSDM1_FLT1); | ||
| 125 | declare!(DFSDM1_FLT2); | ||
| 126 | declare!(DFSDM1_FLT3); | ||
| 127 | declare!(DMA1_Channel1); | ||
| 128 | declare!(DMA1_Channel2); | ||
| 129 | declare!(DMA1_Channel3); | ||
| 130 | declare!(DMA1_Channel4); | ||
| 131 | declare!(DMA1_Channel5); | ||
| 132 | declare!(DMA1_Channel6); | ||
| 133 | declare!(DMA1_Channel7); | ||
| 134 | declare!(DMA2_Channel1); | ||
| 135 | declare!(DMA2_Channel2); | ||
| 136 | declare!(DMA2_Channel3); | ||
| 137 | declare!(DMA2_Channel4); | ||
| 138 | declare!(DMA2_Channel5); | ||
| 139 | declare!(DMA2_Channel6); | ||
| 140 | declare!(DMA2_Channel7); | ||
| 141 | declare!(EXTI0); | ||
| 142 | declare!(EXTI1); | ||
| 143 | declare!(EXTI15_10); | ||
| 144 | declare!(EXTI2); | ||
| 145 | declare!(EXTI3); | ||
| 146 | declare!(EXTI4); | ||
| 147 | declare!(EXTI9_5); | ||
| 148 | declare!(FLASH); | ||
| 149 | declare!(FMC); | ||
| 150 | declare!(FPU); | ||
| 151 | declare!(I2C1_ER); | ||
| 152 | declare!(I2C1_EV); | ||
| 153 | declare!(I2C2_ER); | ||
| 154 | declare!(I2C2_EV); | ||
| 155 | declare!(I2C3_ER); | ||
| 156 | declare!(I2C3_EV); | ||
| 157 | declare!(LPTIM1); | ||
| 158 | declare!(LPTIM2); | ||
| 159 | declare!(LPUART1); | ||
| 160 | declare!(PVD_PVM); | ||
| 161 | declare!(QUADSPI); | ||
| 162 | declare!(RCC); | ||
| 163 | declare!(RNG); | ||
| 164 | declare!(RTC_Alarm); | ||
| 165 | declare!(RTC_WKUP); | ||
| 166 | declare!(SAI1); | ||
| 167 | declare!(SAI2); | ||
| 168 | declare!(SDMMC1); | ||
| 169 | declare!(SPI1); | ||
| 170 | declare!(SPI2); | ||
| 171 | declare!(SPI3); | ||
| 172 | declare!(SWPMI1); | ||
| 173 | declare!(TAMP_STAMP); | ||
| 174 | declare!(TIM1_BRK_TIM15); | ||
| 175 | declare!(TIM1_CC); | ||
| 176 | declare!(TIM1_TRG_COM_TIM17); | ||
| 177 | declare!(TIM1_UP_TIM16); | ||
| 178 | declare!(TIM2); | ||
| 179 | declare!(TIM3); | ||
| 180 | declare!(TIM4); | ||
| 181 | declare!(TIM5); | ||
| 182 | declare!(TIM6_DAC); | ||
| 183 | declare!(TIM7); | ||
| 184 | declare!(TIM8_BRK); | ||
| 185 | declare!(TIM8_CC); | ||
| 186 | declare!(TIM8_TRG_COM); | ||
| 187 | declare!(TIM8_UP); | ||
| 188 | declare!(TSC); | ||
| 189 | declare!(UART4); | ||
| 190 | declare!(UART5); | ||
| 191 | declare!(USART1); | ||
| 192 | declare!(USART2); | ||
| 193 | declare!(USART3); | ||
| 194 | declare!(WWDG); | ||
| 195 | } | ||
| 196 | mod interrupt_vector { | ||
| 197 | extern "C" { | ||
| 198 | fn ADC1_2(); | ||
| 199 | fn ADC3(); | ||
| 200 | fn CAN1_RX0(); | ||
| 201 | fn CAN1_RX1(); | ||
| 202 | fn CAN1_SCE(); | ||
| 203 | fn CAN1_TX(); | ||
| 204 | fn COMP(); | ||
| 205 | fn DFSDM1_FLT0(); | ||
| 206 | fn DFSDM1_FLT1(); | ||
| 207 | fn DFSDM1_FLT2(); | ||
| 208 | fn DFSDM1_FLT3(); | ||
| 209 | fn DMA1_Channel1(); | ||
| 210 | fn DMA1_Channel2(); | ||
| 211 | fn DMA1_Channel3(); | ||
| 212 | fn DMA1_Channel4(); | ||
| 213 | fn DMA1_Channel5(); | ||
| 214 | fn DMA1_Channel6(); | ||
| 215 | fn DMA1_Channel7(); | ||
| 216 | fn DMA2_Channel1(); | ||
| 217 | fn DMA2_Channel2(); | ||
| 218 | fn DMA2_Channel3(); | ||
| 219 | fn DMA2_Channel4(); | ||
| 220 | fn DMA2_Channel5(); | ||
| 221 | fn DMA2_Channel6(); | ||
| 222 | fn DMA2_Channel7(); | ||
| 223 | fn EXTI0(); | ||
| 224 | fn EXTI1(); | ||
| 225 | fn EXTI15_10(); | ||
| 226 | fn EXTI2(); | ||
| 227 | fn EXTI3(); | ||
| 228 | fn EXTI4(); | ||
| 229 | fn EXTI9_5(); | ||
| 230 | fn FLASH(); | ||
| 231 | fn FMC(); | ||
| 232 | fn FPU(); | ||
| 233 | fn I2C1_ER(); | ||
| 234 | fn I2C1_EV(); | ||
| 235 | fn I2C2_ER(); | ||
| 236 | fn I2C2_EV(); | ||
| 237 | fn I2C3_ER(); | ||
| 238 | fn I2C3_EV(); | ||
| 239 | fn LPTIM1(); | ||
| 240 | fn LPTIM2(); | ||
| 241 | fn LPUART1(); | ||
| 242 | fn PVD_PVM(); | ||
| 243 | fn QUADSPI(); | ||
| 244 | fn RCC(); | ||
| 245 | fn RNG(); | ||
| 246 | fn RTC_Alarm(); | ||
| 247 | fn RTC_WKUP(); | ||
| 248 | fn SAI1(); | ||
| 249 | fn SAI2(); | ||
| 250 | fn SDMMC1(); | ||
| 251 | fn SPI1(); | ||
| 252 | fn SPI2(); | ||
| 253 | fn SPI3(); | ||
| 254 | fn SWPMI1(); | ||
| 255 | fn TAMP_STAMP(); | ||
| 256 | fn TIM1_BRK_TIM15(); | ||
| 257 | fn TIM1_CC(); | ||
| 258 | fn TIM1_TRG_COM_TIM17(); | ||
| 259 | fn TIM1_UP_TIM16(); | ||
| 260 | fn TIM2(); | ||
| 261 | fn TIM3(); | ||
| 262 | fn TIM4(); | ||
| 263 | fn TIM5(); | ||
| 264 | fn TIM6_DAC(); | ||
| 265 | fn TIM7(); | ||
| 266 | fn TIM8_BRK(); | ||
| 267 | fn TIM8_CC(); | ||
| 268 | fn TIM8_TRG_COM(); | ||
| 269 | fn TIM8_UP(); | ||
| 270 | fn TSC(); | ||
| 271 | fn UART4(); | ||
| 272 | fn UART5(); | ||
| 273 | fn USART1(); | ||
| 274 | fn USART2(); | ||
| 275 | fn USART3(); | ||
| 276 | fn WWDG(); | ||
| 277 | } | ||
| 278 | pub union Vector { | ||
| 279 | _handler: unsafe extern "C" fn(), | ||
| 280 | _reserved: u32, | ||
| 281 | } | ||
| 282 | #[link_section = ".vector_table.interrupts"] | ||
| 283 | #[no_mangle] | ||
| 284 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 285 | Vector { _handler: WWDG }, | ||
| 286 | Vector { _handler: PVD_PVM }, | ||
| 287 | Vector { | ||
| 288 | _handler: TAMP_STAMP, | ||
| 289 | }, | ||
| 290 | Vector { _handler: RTC_WKUP }, | ||
| 291 | Vector { _handler: FLASH }, | ||
| 292 | Vector { _handler: RCC }, | ||
| 293 | Vector { _handler: EXTI0 }, | ||
| 294 | Vector { _handler: EXTI1 }, | ||
| 295 | Vector { _handler: EXTI2 }, | ||
| 296 | Vector { _handler: EXTI3 }, | ||
| 297 | Vector { _handler: EXTI4 }, | ||
| 298 | Vector { | ||
| 299 | _handler: DMA1_Channel1, | ||
| 300 | }, | ||
| 301 | Vector { | ||
| 302 | _handler: DMA1_Channel2, | ||
| 303 | }, | ||
| 304 | Vector { | ||
| 305 | _handler: DMA1_Channel3, | ||
| 306 | }, | ||
| 307 | Vector { | ||
| 308 | _handler: DMA1_Channel4, | ||
| 309 | }, | ||
| 310 | Vector { | ||
| 311 | _handler: DMA1_Channel5, | ||
| 312 | }, | ||
| 313 | Vector { | ||
| 314 | _handler: DMA1_Channel6, | ||
| 315 | }, | ||
| 316 | Vector { | ||
| 317 | _handler: DMA1_Channel7, | ||
| 318 | }, | ||
| 319 | Vector { _handler: ADC1_2 }, | ||
| 320 | Vector { _handler: CAN1_TX }, | ||
| 321 | Vector { _handler: CAN1_RX0 }, | ||
| 322 | Vector { _handler: CAN1_RX1 }, | ||
| 323 | Vector { _handler: CAN1_SCE }, | ||
| 324 | Vector { _handler: EXTI9_5 }, | ||
| 325 | Vector { | ||
| 326 | _handler: TIM1_BRK_TIM15, | ||
| 327 | }, | ||
| 328 | Vector { | ||
| 329 | _handler: TIM1_UP_TIM16, | ||
| 330 | }, | ||
| 331 | Vector { | ||
| 332 | _handler: TIM1_TRG_COM_TIM17, | ||
| 333 | }, | ||
| 334 | Vector { _handler: TIM1_CC }, | ||
| 335 | Vector { _handler: TIM2 }, | ||
| 336 | Vector { _handler: TIM3 }, | ||
| 337 | Vector { _handler: TIM4 }, | ||
| 338 | Vector { _handler: I2C1_EV }, | ||
| 339 | Vector { _handler: I2C1_ER }, | ||
| 340 | Vector { _handler: I2C2_EV }, | ||
| 341 | Vector { _handler: I2C2_ER }, | ||
| 342 | Vector { _handler: SPI1 }, | ||
| 343 | Vector { _handler: SPI2 }, | ||
| 344 | Vector { _handler: USART1 }, | ||
| 345 | Vector { _handler: USART2 }, | ||
| 346 | Vector { _handler: USART3 }, | ||
| 347 | Vector { | ||
| 348 | _handler: EXTI15_10, | ||
| 349 | }, | ||
| 350 | Vector { | ||
| 351 | _handler: RTC_Alarm, | ||
| 352 | }, | ||
| 353 | Vector { | ||
| 354 | _handler: DFSDM1_FLT3, | ||
| 355 | }, | ||
| 356 | Vector { _handler: TIM8_BRK }, | ||
| 357 | Vector { _handler: TIM8_UP }, | ||
| 358 | Vector { | ||
| 359 | _handler: TIM8_TRG_COM, | ||
| 360 | }, | ||
| 361 | Vector { _handler: TIM8_CC }, | ||
| 362 | Vector { _handler: ADC3 }, | ||
| 363 | Vector { _handler: FMC }, | ||
| 364 | Vector { _handler: SDMMC1 }, | ||
| 365 | Vector { _handler: TIM5 }, | ||
| 366 | Vector { _handler: SPI3 }, | ||
| 367 | Vector { _handler: UART4 }, | ||
| 368 | Vector { _handler: UART5 }, | ||
| 369 | Vector { _handler: TIM6_DAC }, | ||
| 370 | Vector { _handler: TIM7 }, | ||
| 371 | Vector { | ||
| 372 | _handler: DMA2_Channel1, | ||
| 373 | }, | ||
| 374 | Vector { | ||
| 375 | _handler: DMA2_Channel2, | ||
| 376 | }, | ||
| 377 | Vector { | ||
| 378 | _handler: DMA2_Channel3, | ||
| 379 | }, | ||
| 380 | Vector { | ||
| 381 | _handler: DMA2_Channel4, | ||
| 382 | }, | ||
| 383 | Vector { | ||
| 384 | _handler: DMA2_Channel5, | ||
| 385 | }, | ||
| 386 | Vector { | ||
| 387 | _handler: DFSDM1_FLT0, | ||
| 388 | }, | ||
| 389 | Vector { | ||
| 390 | _handler: DFSDM1_FLT1, | ||
| 391 | }, | ||
| 392 | Vector { | ||
| 393 | _handler: DFSDM1_FLT2, | ||
| 394 | }, | ||
| 395 | Vector { _handler: COMP }, | ||
| 396 | Vector { _handler: LPTIM1 }, | ||
| 397 | Vector { _handler: LPTIM2 }, | ||
| 398 | Vector { _reserved: 0 }, | ||
| 399 | Vector { | ||
| 400 | _handler: DMA2_Channel6, | ||
| 401 | }, | ||
| 402 | Vector { | ||
| 403 | _handler: DMA2_Channel7, | ||
| 404 | }, | ||
| 405 | Vector { _handler: LPUART1 }, | ||
| 406 | Vector { _handler: QUADSPI }, | ||
| 407 | Vector { _handler: I2C3_EV }, | ||
| 408 | Vector { _handler: I2C3_ER }, | ||
| 409 | Vector { _handler: SAI1 }, | ||
| 410 | Vector { _handler: SAI2 }, | ||
| 411 | Vector { _handler: SWPMI1 }, | ||
| 412 | Vector { _handler: TSC }, | ||
| 413 | Vector { _reserved: 0 }, | ||
| 414 | Vector { _reserved: 0 }, | ||
| 415 | Vector { _handler: RNG }, | ||
| 416 | Vector { _handler: FPU }, | ||
| 417 | ]; | ||
| 418 | } | ||
| 18 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 419 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 19 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 420 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 20 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 421 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l475rc.rs b/embassy-stm32/src/chip/stm32l475rc.rs index 774df143c..7a818be15 100644 --- a/embassy-stm32/src/chip/stm32l475rc.rs +++ b/embassy-stm32/src/chip/stm32l475rc.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,8 +14,412 @@ peripherals!( | |||
| 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, | 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, |
| 15 | WWDG | 15 | WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DFSDM1_FLT0 = 61, | ||
| 38 | DFSDM1_FLT1 = 62, | ||
| 39 | DFSDM1_FLT2 = 63, | ||
| 40 | DFSDM1_FLT3 = 42, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | EXTI0 = 6, | ||
| 56 | EXTI1 = 7, | ||
| 57 | EXTI15_10 = 40, | ||
| 58 | EXTI2 = 8, | ||
| 59 | EXTI3 = 9, | ||
| 60 | EXTI4 = 10, | ||
| 61 | EXTI9_5 = 23, | ||
| 62 | FLASH = 4, | ||
| 63 | FMC = 48, | ||
| 64 | FPU = 81, | ||
| 65 | I2C1_ER = 32, | ||
| 66 | I2C1_EV = 31, | ||
| 67 | I2C2_ER = 34, | ||
| 68 | I2C2_EV = 33, | ||
| 69 | I2C3_ER = 73, | ||
| 70 | I2C3_EV = 72, | ||
| 71 | LPTIM1 = 65, | ||
| 72 | LPTIM2 = 66, | ||
| 73 | LPUART1 = 70, | ||
| 74 | OTG_FS = 67, | ||
| 75 | PVD_PVM = 1, | ||
| 76 | QUADSPI = 71, | ||
| 77 | RCC = 5, | ||
| 78 | RNG = 80, | ||
| 79 | RTC_Alarm = 41, | ||
| 80 | RTC_WKUP = 3, | ||
| 81 | SAI1 = 74, | ||
| 82 | SAI2 = 75, | ||
| 83 | SDMMC1 = 49, | ||
| 84 | SPI1 = 35, | ||
| 85 | SPI2 = 36, | ||
| 86 | SPI3 = 51, | ||
| 87 | SWPMI1 = 76, | ||
| 88 | TAMP_STAMP = 2, | ||
| 89 | TIM1_BRK_TIM15 = 24, | ||
| 90 | TIM1_CC = 27, | ||
| 91 | TIM1_TRG_COM_TIM17 = 26, | ||
| 92 | TIM1_UP_TIM16 = 25, | ||
| 93 | TIM2 = 28, | ||
| 94 | TIM3 = 29, | ||
| 95 | TIM4 = 30, | ||
| 96 | TIM5 = 50, | ||
| 97 | TIM6_DAC = 54, | ||
| 98 | TIM7 = 55, | ||
| 99 | TIM8_BRK = 43, | ||
| 100 | TIM8_CC = 46, | ||
| 101 | TIM8_TRG_COM = 45, | ||
| 102 | TIM8_UP = 44, | ||
| 103 | TSC = 77, | ||
| 104 | UART4 = 52, | ||
| 105 | UART5 = 53, | ||
| 106 | USART1 = 37, | ||
| 107 | USART2 = 38, | ||
| 108 | USART3 = 39, | ||
| 109 | WWDG = 0, | ||
| 110 | } | ||
| 111 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 112 | #[inline(always)] | ||
| 113 | fn number(self) -> u16 { | ||
| 114 | self as u16 | ||
| 115 | } | ||
| 116 | } | ||
| 117 | |||
| 118 | declare!(ADC1_2); | ||
| 119 | declare!(ADC3); | ||
| 120 | declare!(CAN1_RX0); | ||
| 121 | declare!(CAN1_RX1); | ||
| 122 | declare!(CAN1_SCE); | ||
| 123 | declare!(CAN1_TX); | ||
| 124 | declare!(COMP); | ||
| 125 | declare!(DFSDM1_FLT0); | ||
| 126 | declare!(DFSDM1_FLT1); | ||
| 127 | declare!(DFSDM1_FLT2); | ||
| 128 | declare!(DFSDM1_FLT3); | ||
| 129 | declare!(DMA1_Channel1); | ||
| 130 | declare!(DMA1_Channel2); | ||
| 131 | declare!(DMA1_Channel3); | ||
| 132 | declare!(DMA1_Channel4); | ||
| 133 | declare!(DMA1_Channel5); | ||
| 134 | declare!(DMA1_Channel6); | ||
| 135 | declare!(DMA1_Channel7); | ||
| 136 | declare!(DMA2_Channel1); | ||
| 137 | declare!(DMA2_Channel2); | ||
| 138 | declare!(DMA2_Channel3); | ||
| 139 | declare!(DMA2_Channel4); | ||
| 140 | declare!(DMA2_Channel5); | ||
| 141 | declare!(DMA2_Channel6); | ||
| 142 | declare!(DMA2_Channel7); | ||
| 143 | declare!(EXTI0); | ||
| 144 | declare!(EXTI1); | ||
| 145 | declare!(EXTI15_10); | ||
| 146 | declare!(EXTI2); | ||
| 147 | declare!(EXTI3); | ||
| 148 | declare!(EXTI4); | ||
| 149 | declare!(EXTI9_5); | ||
| 150 | declare!(FLASH); | ||
| 151 | declare!(FMC); | ||
| 152 | declare!(FPU); | ||
| 153 | declare!(I2C1_ER); | ||
| 154 | declare!(I2C1_EV); | ||
| 155 | declare!(I2C2_ER); | ||
| 156 | declare!(I2C2_EV); | ||
| 157 | declare!(I2C3_ER); | ||
| 158 | declare!(I2C3_EV); | ||
| 159 | declare!(LPTIM1); | ||
| 160 | declare!(LPTIM2); | ||
| 161 | declare!(LPUART1); | ||
| 162 | declare!(OTG_FS); | ||
| 163 | declare!(PVD_PVM); | ||
| 164 | declare!(QUADSPI); | ||
| 165 | declare!(RCC); | ||
| 166 | declare!(RNG); | ||
| 167 | declare!(RTC_Alarm); | ||
| 168 | declare!(RTC_WKUP); | ||
| 169 | declare!(SAI1); | ||
| 170 | declare!(SAI2); | ||
| 171 | declare!(SDMMC1); | ||
| 172 | declare!(SPI1); | ||
| 173 | declare!(SPI2); | ||
| 174 | declare!(SPI3); | ||
| 175 | declare!(SWPMI1); | ||
| 176 | declare!(TAMP_STAMP); | ||
| 177 | declare!(TIM1_BRK_TIM15); | ||
| 178 | declare!(TIM1_CC); | ||
| 179 | declare!(TIM1_TRG_COM_TIM17); | ||
| 180 | declare!(TIM1_UP_TIM16); | ||
| 181 | declare!(TIM2); | ||
| 182 | declare!(TIM3); | ||
| 183 | declare!(TIM4); | ||
| 184 | declare!(TIM5); | ||
| 185 | declare!(TIM6_DAC); | ||
| 186 | declare!(TIM7); | ||
| 187 | declare!(TIM8_BRK); | ||
| 188 | declare!(TIM8_CC); | ||
| 189 | declare!(TIM8_TRG_COM); | ||
| 190 | declare!(TIM8_UP); | ||
| 191 | declare!(TSC); | ||
| 192 | declare!(UART4); | ||
| 193 | declare!(UART5); | ||
| 194 | declare!(USART1); | ||
| 195 | declare!(USART2); | ||
| 196 | declare!(USART3); | ||
| 197 | declare!(WWDG); | ||
| 198 | } | ||
| 199 | mod interrupt_vector { | ||
| 200 | extern "C" { | ||
| 201 | fn ADC1_2(); | ||
| 202 | fn ADC3(); | ||
| 203 | fn CAN1_RX0(); | ||
| 204 | fn CAN1_RX1(); | ||
| 205 | fn CAN1_SCE(); | ||
| 206 | fn CAN1_TX(); | ||
| 207 | fn COMP(); | ||
| 208 | fn DFSDM1_FLT0(); | ||
| 209 | fn DFSDM1_FLT1(); | ||
| 210 | fn DFSDM1_FLT2(); | ||
| 211 | fn DFSDM1_FLT3(); | ||
| 212 | fn DMA1_Channel1(); | ||
| 213 | fn DMA1_Channel2(); | ||
| 214 | fn DMA1_Channel3(); | ||
| 215 | fn DMA1_Channel4(); | ||
| 216 | fn DMA1_Channel5(); | ||
| 217 | fn DMA1_Channel6(); | ||
| 218 | fn DMA1_Channel7(); | ||
| 219 | fn DMA2_Channel1(); | ||
| 220 | fn DMA2_Channel2(); | ||
| 221 | fn DMA2_Channel3(); | ||
| 222 | fn DMA2_Channel4(); | ||
| 223 | fn DMA2_Channel5(); | ||
| 224 | fn DMA2_Channel6(); | ||
| 225 | fn DMA2_Channel7(); | ||
| 226 | fn EXTI0(); | ||
| 227 | fn EXTI1(); | ||
| 228 | fn EXTI15_10(); | ||
| 229 | fn EXTI2(); | ||
| 230 | fn EXTI3(); | ||
| 231 | fn EXTI4(); | ||
| 232 | fn EXTI9_5(); | ||
| 233 | fn FLASH(); | ||
| 234 | fn FMC(); | ||
| 235 | fn FPU(); | ||
| 236 | fn I2C1_ER(); | ||
| 237 | fn I2C1_EV(); | ||
| 238 | fn I2C2_ER(); | ||
| 239 | fn I2C2_EV(); | ||
| 240 | fn I2C3_ER(); | ||
| 241 | fn I2C3_EV(); | ||
| 242 | fn LPTIM1(); | ||
| 243 | fn LPTIM2(); | ||
| 244 | fn LPUART1(); | ||
| 245 | fn OTG_FS(); | ||
| 246 | fn PVD_PVM(); | ||
| 247 | fn QUADSPI(); | ||
| 248 | fn RCC(); | ||
| 249 | fn RNG(); | ||
| 250 | fn RTC_Alarm(); | ||
| 251 | fn RTC_WKUP(); | ||
| 252 | fn SAI1(); | ||
| 253 | fn SAI2(); | ||
| 254 | fn SDMMC1(); | ||
| 255 | fn SPI1(); | ||
| 256 | fn SPI2(); | ||
| 257 | fn SPI3(); | ||
| 258 | fn SWPMI1(); | ||
| 259 | fn TAMP_STAMP(); | ||
| 260 | fn TIM1_BRK_TIM15(); | ||
| 261 | fn TIM1_CC(); | ||
| 262 | fn TIM1_TRG_COM_TIM17(); | ||
| 263 | fn TIM1_UP_TIM16(); | ||
| 264 | fn TIM2(); | ||
| 265 | fn TIM3(); | ||
| 266 | fn TIM4(); | ||
| 267 | fn TIM5(); | ||
| 268 | fn TIM6_DAC(); | ||
| 269 | fn TIM7(); | ||
| 270 | fn TIM8_BRK(); | ||
| 271 | fn TIM8_CC(); | ||
| 272 | fn TIM8_TRG_COM(); | ||
| 273 | fn TIM8_UP(); | ||
| 274 | fn TSC(); | ||
| 275 | fn UART4(); | ||
| 276 | fn UART5(); | ||
| 277 | fn USART1(); | ||
| 278 | fn USART2(); | ||
| 279 | fn USART3(); | ||
| 280 | fn WWDG(); | ||
| 281 | } | ||
| 282 | pub union Vector { | ||
| 283 | _handler: unsafe extern "C" fn(), | ||
| 284 | _reserved: u32, | ||
| 285 | } | ||
| 286 | #[link_section = ".vector_table.interrupts"] | ||
| 287 | #[no_mangle] | ||
| 288 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 289 | Vector { _handler: WWDG }, | ||
| 290 | Vector { _handler: PVD_PVM }, | ||
| 291 | Vector { | ||
| 292 | _handler: TAMP_STAMP, | ||
| 293 | }, | ||
| 294 | Vector { _handler: RTC_WKUP }, | ||
| 295 | Vector { _handler: FLASH }, | ||
| 296 | Vector { _handler: RCC }, | ||
| 297 | Vector { _handler: EXTI0 }, | ||
| 298 | Vector { _handler: EXTI1 }, | ||
| 299 | Vector { _handler: EXTI2 }, | ||
| 300 | Vector { _handler: EXTI3 }, | ||
| 301 | Vector { _handler: EXTI4 }, | ||
| 302 | Vector { | ||
| 303 | _handler: DMA1_Channel1, | ||
| 304 | }, | ||
| 305 | Vector { | ||
| 306 | _handler: DMA1_Channel2, | ||
| 307 | }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel3, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel4, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel5, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel6, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel7, | ||
| 322 | }, | ||
| 323 | Vector { _handler: ADC1_2 }, | ||
| 324 | Vector { _handler: CAN1_TX }, | ||
| 325 | Vector { _handler: CAN1_RX0 }, | ||
| 326 | Vector { _handler: CAN1_RX1 }, | ||
| 327 | Vector { _handler: CAN1_SCE }, | ||
| 328 | Vector { _handler: EXTI9_5 }, | ||
| 329 | Vector { | ||
| 330 | _handler: TIM1_BRK_TIM15, | ||
| 331 | }, | ||
| 332 | Vector { | ||
| 333 | _handler: TIM1_UP_TIM16, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_TRG_COM_TIM17, | ||
| 337 | }, | ||
| 338 | Vector { _handler: TIM1_CC }, | ||
| 339 | Vector { _handler: TIM2 }, | ||
| 340 | Vector { _handler: TIM3 }, | ||
| 341 | Vector { _handler: TIM4 }, | ||
| 342 | Vector { _handler: I2C1_EV }, | ||
| 343 | Vector { _handler: I2C1_ER }, | ||
| 344 | Vector { _handler: I2C2_EV }, | ||
| 345 | Vector { _handler: I2C2_ER }, | ||
| 346 | Vector { _handler: SPI1 }, | ||
| 347 | Vector { _handler: SPI2 }, | ||
| 348 | Vector { _handler: USART1 }, | ||
| 349 | Vector { _handler: USART2 }, | ||
| 350 | Vector { _handler: USART3 }, | ||
| 351 | Vector { | ||
| 352 | _handler: EXTI15_10, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: RTC_Alarm, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: DFSDM1_FLT3, | ||
| 359 | }, | ||
| 360 | Vector { _handler: TIM8_BRK }, | ||
| 361 | Vector { _handler: TIM8_UP }, | ||
| 362 | Vector { | ||
| 363 | _handler: TIM8_TRG_COM, | ||
| 364 | }, | ||
| 365 | Vector { _handler: TIM8_CC }, | ||
| 366 | Vector { _handler: ADC3 }, | ||
| 367 | Vector { _handler: FMC }, | ||
| 368 | Vector { _handler: SDMMC1 }, | ||
| 369 | Vector { _handler: TIM5 }, | ||
| 370 | Vector { _handler: SPI3 }, | ||
| 371 | Vector { _handler: UART4 }, | ||
| 372 | Vector { _handler: UART5 }, | ||
| 373 | Vector { _handler: TIM6_DAC }, | ||
| 374 | Vector { _handler: TIM7 }, | ||
| 375 | Vector { | ||
| 376 | _handler: DMA2_Channel1, | ||
| 377 | }, | ||
| 378 | Vector { | ||
| 379 | _handler: DMA2_Channel2, | ||
| 380 | }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel3, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel4, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel5, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DFSDM1_FLT0, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DFSDM1_FLT1, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT2, | ||
| 398 | }, | ||
| 399 | Vector { _handler: COMP }, | ||
| 400 | Vector { _handler: LPTIM1 }, | ||
| 401 | Vector { _handler: LPTIM2 }, | ||
| 402 | Vector { _handler: OTG_FS }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel6, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel7, | ||
| 408 | }, | ||
| 409 | Vector { _handler: LPUART1 }, | ||
| 410 | Vector { _handler: QUADSPI }, | ||
| 411 | Vector { _handler: I2C3_EV }, | ||
| 412 | Vector { _handler: I2C3_ER }, | ||
| 413 | Vector { _handler: SAI1 }, | ||
| 414 | Vector { _handler: SAI2 }, | ||
| 415 | Vector { _handler: SWPMI1 }, | ||
| 416 | Vector { _handler: TSC }, | ||
| 417 | Vector { _reserved: 0 }, | ||
| 418 | Vector { _reserved: 0 }, | ||
| 419 | Vector { _handler: RNG }, | ||
| 420 | Vector { _handler: FPU }, | ||
| 421 | ]; | ||
| 422 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 423 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 424 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 425 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l475re.rs b/embassy-stm32/src/chip/stm32l475re.rs index 774df143c..7a818be15 100644 --- a/embassy-stm32/src/chip/stm32l475re.rs +++ b/embassy-stm32/src/chip/stm32l475re.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,8 +14,412 @@ peripherals!( | |||
| 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, | 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, |
| 15 | WWDG | 15 | WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DFSDM1_FLT0 = 61, | ||
| 38 | DFSDM1_FLT1 = 62, | ||
| 39 | DFSDM1_FLT2 = 63, | ||
| 40 | DFSDM1_FLT3 = 42, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | EXTI0 = 6, | ||
| 56 | EXTI1 = 7, | ||
| 57 | EXTI15_10 = 40, | ||
| 58 | EXTI2 = 8, | ||
| 59 | EXTI3 = 9, | ||
| 60 | EXTI4 = 10, | ||
| 61 | EXTI9_5 = 23, | ||
| 62 | FLASH = 4, | ||
| 63 | FMC = 48, | ||
| 64 | FPU = 81, | ||
| 65 | I2C1_ER = 32, | ||
| 66 | I2C1_EV = 31, | ||
| 67 | I2C2_ER = 34, | ||
| 68 | I2C2_EV = 33, | ||
| 69 | I2C3_ER = 73, | ||
| 70 | I2C3_EV = 72, | ||
| 71 | LPTIM1 = 65, | ||
| 72 | LPTIM2 = 66, | ||
| 73 | LPUART1 = 70, | ||
| 74 | OTG_FS = 67, | ||
| 75 | PVD_PVM = 1, | ||
| 76 | QUADSPI = 71, | ||
| 77 | RCC = 5, | ||
| 78 | RNG = 80, | ||
| 79 | RTC_Alarm = 41, | ||
| 80 | RTC_WKUP = 3, | ||
| 81 | SAI1 = 74, | ||
| 82 | SAI2 = 75, | ||
| 83 | SDMMC1 = 49, | ||
| 84 | SPI1 = 35, | ||
| 85 | SPI2 = 36, | ||
| 86 | SPI3 = 51, | ||
| 87 | SWPMI1 = 76, | ||
| 88 | TAMP_STAMP = 2, | ||
| 89 | TIM1_BRK_TIM15 = 24, | ||
| 90 | TIM1_CC = 27, | ||
| 91 | TIM1_TRG_COM_TIM17 = 26, | ||
| 92 | TIM1_UP_TIM16 = 25, | ||
| 93 | TIM2 = 28, | ||
| 94 | TIM3 = 29, | ||
| 95 | TIM4 = 30, | ||
| 96 | TIM5 = 50, | ||
| 97 | TIM6_DAC = 54, | ||
| 98 | TIM7 = 55, | ||
| 99 | TIM8_BRK = 43, | ||
| 100 | TIM8_CC = 46, | ||
| 101 | TIM8_TRG_COM = 45, | ||
| 102 | TIM8_UP = 44, | ||
| 103 | TSC = 77, | ||
| 104 | UART4 = 52, | ||
| 105 | UART5 = 53, | ||
| 106 | USART1 = 37, | ||
| 107 | USART2 = 38, | ||
| 108 | USART3 = 39, | ||
| 109 | WWDG = 0, | ||
| 110 | } | ||
| 111 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 112 | #[inline(always)] | ||
| 113 | fn number(self) -> u16 { | ||
| 114 | self as u16 | ||
| 115 | } | ||
| 116 | } | ||
| 117 | |||
| 118 | declare!(ADC1_2); | ||
| 119 | declare!(ADC3); | ||
| 120 | declare!(CAN1_RX0); | ||
| 121 | declare!(CAN1_RX1); | ||
| 122 | declare!(CAN1_SCE); | ||
| 123 | declare!(CAN1_TX); | ||
| 124 | declare!(COMP); | ||
| 125 | declare!(DFSDM1_FLT0); | ||
| 126 | declare!(DFSDM1_FLT1); | ||
| 127 | declare!(DFSDM1_FLT2); | ||
| 128 | declare!(DFSDM1_FLT3); | ||
| 129 | declare!(DMA1_Channel1); | ||
| 130 | declare!(DMA1_Channel2); | ||
| 131 | declare!(DMA1_Channel3); | ||
| 132 | declare!(DMA1_Channel4); | ||
| 133 | declare!(DMA1_Channel5); | ||
| 134 | declare!(DMA1_Channel6); | ||
| 135 | declare!(DMA1_Channel7); | ||
| 136 | declare!(DMA2_Channel1); | ||
| 137 | declare!(DMA2_Channel2); | ||
| 138 | declare!(DMA2_Channel3); | ||
| 139 | declare!(DMA2_Channel4); | ||
| 140 | declare!(DMA2_Channel5); | ||
| 141 | declare!(DMA2_Channel6); | ||
| 142 | declare!(DMA2_Channel7); | ||
| 143 | declare!(EXTI0); | ||
| 144 | declare!(EXTI1); | ||
| 145 | declare!(EXTI15_10); | ||
| 146 | declare!(EXTI2); | ||
| 147 | declare!(EXTI3); | ||
| 148 | declare!(EXTI4); | ||
| 149 | declare!(EXTI9_5); | ||
| 150 | declare!(FLASH); | ||
| 151 | declare!(FMC); | ||
| 152 | declare!(FPU); | ||
| 153 | declare!(I2C1_ER); | ||
| 154 | declare!(I2C1_EV); | ||
| 155 | declare!(I2C2_ER); | ||
| 156 | declare!(I2C2_EV); | ||
| 157 | declare!(I2C3_ER); | ||
| 158 | declare!(I2C3_EV); | ||
| 159 | declare!(LPTIM1); | ||
| 160 | declare!(LPTIM2); | ||
| 161 | declare!(LPUART1); | ||
| 162 | declare!(OTG_FS); | ||
| 163 | declare!(PVD_PVM); | ||
| 164 | declare!(QUADSPI); | ||
| 165 | declare!(RCC); | ||
| 166 | declare!(RNG); | ||
| 167 | declare!(RTC_Alarm); | ||
| 168 | declare!(RTC_WKUP); | ||
| 169 | declare!(SAI1); | ||
| 170 | declare!(SAI2); | ||
| 171 | declare!(SDMMC1); | ||
| 172 | declare!(SPI1); | ||
| 173 | declare!(SPI2); | ||
| 174 | declare!(SPI3); | ||
| 175 | declare!(SWPMI1); | ||
| 176 | declare!(TAMP_STAMP); | ||
| 177 | declare!(TIM1_BRK_TIM15); | ||
| 178 | declare!(TIM1_CC); | ||
| 179 | declare!(TIM1_TRG_COM_TIM17); | ||
| 180 | declare!(TIM1_UP_TIM16); | ||
| 181 | declare!(TIM2); | ||
| 182 | declare!(TIM3); | ||
| 183 | declare!(TIM4); | ||
| 184 | declare!(TIM5); | ||
| 185 | declare!(TIM6_DAC); | ||
| 186 | declare!(TIM7); | ||
| 187 | declare!(TIM8_BRK); | ||
| 188 | declare!(TIM8_CC); | ||
| 189 | declare!(TIM8_TRG_COM); | ||
| 190 | declare!(TIM8_UP); | ||
| 191 | declare!(TSC); | ||
| 192 | declare!(UART4); | ||
| 193 | declare!(UART5); | ||
| 194 | declare!(USART1); | ||
| 195 | declare!(USART2); | ||
| 196 | declare!(USART3); | ||
| 197 | declare!(WWDG); | ||
| 198 | } | ||
| 199 | mod interrupt_vector { | ||
| 200 | extern "C" { | ||
| 201 | fn ADC1_2(); | ||
| 202 | fn ADC3(); | ||
| 203 | fn CAN1_RX0(); | ||
| 204 | fn CAN1_RX1(); | ||
| 205 | fn CAN1_SCE(); | ||
| 206 | fn CAN1_TX(); | ||
| 207 | fn COMP(); | ||
| 208 | fn DFSDM1_FLT0(); | ||
| 209 | fn DFSDM1_FLT1(); | ||
| 210 | fn DFSDM1_FLT2(); | ||
| 211 | fn DFSDM1_FLT3(); | ||
| 212 | fn DMA1_Channel1(); | ||
| 213 | fn DMA1_Channel2(); | ||
| 214 | fn DMA1_Channel3(); | ||
| 215 | fn DMA1_Channel4(); | ||
| 216 | fn DMA1_Channel5(); | ||
| 217 | fn DMA1_Channel6(); | ||
| 218 | fn DMA1_Channel7(); | ||
| 219 | fn DMA2_Channel1(); | ||
| 220 | fn DMA2_Channel2(); | ||
| 221 | fn DMA2_Channel3(); | ||
| 222 | fn DMA2_Channel4(); | ||
| 223 | fn DMA2_Channel5(); | ||
| 224 | fn DMA2_Channel6(); | ||
| 225 | fn DMA2_Channel7(); | ||
| 226 | fn EXTI0(); | ||
| 227 | fn EXTI1(); | ||
| 228 | fn EXTI15_10(); | ||
| 229 | fn EXTI2(); | ||
| 230 | fn EXTI3(); | ||
| 231 | fn EXTI4(); | ||
| 232 | fn EXTI9_5(); | ||
| 233 | fn FLASH(); | ||
| 234 | fn FMC(); | ||
| 235 | fn FPU(); | ||
| 236 | fn I2C1_ER(); | ||
| 237 | fn I2C1_EV(); | ||
| 238 | fn I2C2_ER(); | ||
| 239 | fn I2C2_EV(); | ||
| 240 | fn I2C3_ER(); | ||
| 241 | fn I2C3_EV(); | ||
| 242 | fn LPTIM1(); | ||
| 243 | fn LPTIM2(); | ||
| 244 | fn LPUART1(); | ||
| 245 | fn OTG_FS(); | ||
| 246 | fn PVD_PVM(); | ||
| 247 | fn QUADSPI(); | ||
| 248 | fn RCC(); | ||
| 249 | fn RNG(); | ||
| 250 | fn RTC_Alarm(); | ||
| 251 | fn RTC_WKUP(); | ||
| 252 | fn SAI1(); | ||
| 253 | fn SAI2(); | ||
| 254 | fn SDMMC1(); | ||
| 255 | fn SPI1(); | ||
| 256 | fn SPI2(); | ||
| 257 | fn SPI3(); | ||
| 258 | fn SWPMI1(); | ||
| 259 | fn TAMP_STAMP(); | ||
| 260 | fn TIM1_BRK_TIM15(); | ||
| 261 | fn TIM1_CC(); | ||
| 262 | fn TIM1_TRG_COM_TIM17(); | ||
| 263 | fn TIM1_UP_TIM16(); | ||
| 264 | fn TIM2(); | ||
| 265 | fn TIM3(); | ||
| 266 | fn TIM4(); | ||
| 267 | fn TIM5(); | ||
| 268 | fn TIM6_DAC(); | ||
| 269 | fn TIM7(); | ||
| 270 | fn TIM8_BRK(); | ||
| 271 | fn TIM8_CC(); | ||
| 272 | fn TIM8_TRG_COM(); | ||
| 273 | fn TIM8_UP(); | ||
| 274 | fn TSC(); | ||
| 275 | fn UART4(); | ||
| 276 | fn UART5(); | ||
| 277 | fn USART1(); | ||
| 278 | fn USART2(); | ||
| 279 | fn USART3(); | ||
| 280 | fn WWDG(); | ||
| 281 | } | ||
| 282 | pub union Vector { | ||
| 283 | _handler: unsafe extern "C" fn(), | ||
| 284 | _reserved: u32, | ||
| 285 | } | ||
| 286 | #[link_section = ".vector_table.interrupts"] | ||
| 287 | #[no_mangle] | ||
| 288 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 289 | Vector { _handler: WWDG }, | ||
| 290 | Vector { _handler: PVD_PVM }, | ||
| 291 | Vector { | ||
| 292 | _handler: TAMP_STAMP, | ||
| 293 | }, | ||
| 294 | Vector { _handler: RTC_WKUP }, | ||
| 295 | Vector { _handler: FLASH }, | ||
| 296 | Vector { _handler: RCC }, | ||
| 297 | Vector { _handler: EXTI0 }, | ||
| 298 | Vector { _handler: EXTI1 }, | ||
| 299 | Vector { _handler: EXTI2 }, | ||
| 300 | Vector { _handler: EXTI3 }, | ||
| 301 | Vector { _handler: EXTI4 }, | ||
| 302 | Vector { | ||
| 303 | _handler: DMA1_Channel1, | ||
| 304 | }, | ||
| 305 | Vector { | ||
| 306 | _handler: DMA1_Channel2, | ||
| 307 | }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel3, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel4, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel5, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel6, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel7, | ||
| 322 | }, | ||
| 323 | Vector { _handler: ADC1_2 }, | ||
| 324 | Vector { _handler: CAN1_TX }, | ||
| 325 | Vector { _handler: CAN1_RX0 }, | ||
| 326 | Vector { _handler: CAN1_RX1 }, | ||
| 327 | Vector { _handler: CAN1_SCE }, | ||
| 328 | Vector { _handler: EXTI9_5 }, | ||
| 329 | Vector { | ||
| 330 | _handler: TIM1_BRK_TIM15, | ||
| 331 | }, | ||
| 332 | Vector { | ||
| 333 | _handler: TIM1_UP_TIM16, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_TRG_COM_TIM17, | ||
| 337 | }, | ||
| 338 | Vector { _handler: TIM1_CC }, | ||
| 339 | Vector { _handler: TIM2 }, | ||
| 340 | Vector { _handler: TIM3 }, | ||
| 341 | Vector { _handler: TIM4 }, | ||
| 342 | Vector { _handler: I2C1_EV }, | ||
| 343 | Vector { _handler: I2C1_ER }, | ||
| 344 | Vector { _handler: I2C2_EV }, | ||
| 345 | Vector { _handler: I2C2_ER }, | ||
| 346 | Vector { _handler: SPI1 }, | ||
| 347 | Vector { _handler: SPI2 }, | ||
| 348 | Vector { _handler: USART1 }, | ||
| 349 | Vector { _handler: USART2 }, | ||
| 350 | Vector { _handler: USART3 }, | ||
| 351 | Vector { | ||
| 352 | _handler: EXTI15_10, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: RTC_Alarm, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: DFSDM1_FLT3, | ||
| 359 | }, | ||
| 360 | Vector { _handler: TIM8_BRK }, | ||
| 361 | Vector { _handler: TIM8_UP }, | ||
| 362 | Vector { | ||
| 363 | _handler: TIM8_TRG_COM, | ||
| 364 | }, | ||
| 365 | Vector { _handler: TIM8_CC }, | ||
| 366 | Vector { _handler: ADC3 }, | ||
| 367 | Vector { _handler: FMC }, | ||
| 368 | Vector { _handler: SDMMC1 }, | ||
| 369 | Vector { _handler: TIM5 }, | ||
| 370 | Vector { _handler: SPI3 }, | ||
| 371 | Vector { _handler: UART4 }, | ||
| 372 | Vector { _handler: UART5 }, | ||
| 373 | Vector { _handler: TIM6_DAC }, | ||
| 374 | Vector { _handler: TIM7 }, | ||
| 375 | Vector { | ||
| 376 | _handler: DMA2_Channel1, | ||
| 377 | }, | ||
| 378 | Vector { | ||
| 379 | _handler: DMA2_Channel2, | ||
| 380 | }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel3, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel4, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel5, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DFSDM1_FLT0, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DFSDM1_FLT1, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT2, | ||
| 398 | }, | ||
| 399 | Vector { _handler: COMP }, | ||
| 400 | Vector { _handler: LPTIM1 }, | ||
| 401 | Vector { _handler: LPTIM2 }, | ||
| 402 | Vector { _handler: OTG_FS }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel6, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel7, | ||
| 408 | }, | ||
| 409 | Vector { _handler: LPUART1 }, | ||
| 410 | Vector { _handler: QUADSPI }, | ||
| 411 | Vector { _handler: I2C3_EV }, | ||
| 412 | Vector { _handler: I2C3_ER }, | ||
| 413 | Vector { _handler: SAI1 }, | ||
| 414 | Vector { _handler: SAI2 }, | ||
| 415 | Vector { _handler: SWPMI1 }, | ||
| 416 | Vector { _handler: TSC }, | ||
| 417 | Vector { _reserved: 0 }, | ||
| 418 | Vector { _reserved: 0 }, | ||
| 419 | Vector { _handler: RNG }, | ||
| 420 | Vector { _handler: FPU }, | ||
| 421 | ]; | ||
| 422 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 423 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 424 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 425 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l475rg.rs b/embassy-stm32/src/chip/stm32l475rg.rs index 774df143c..7a818be15 100644 --- a/embassy-stm32/src/chip/stm32l475rg.rs +++ b/embassy-stm32/src/chip/stm32l475rg.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,8 +14,412 @@ peripherals!( | |||
| 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, | 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, |
| 15 | WWDG | 15 | WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DFSDM1_FLT0 = 61, | ||
| 38 | DFSDM1_FLT1 = 62, | ||
| 39 | DFSDM1_FLT2 = 63, | ||
| 40 | DFSDM1_FLT3 = 42, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | EXTI0 = 6, | ||
| 56 | EXTI1 = 7, | ||
| 57 | EXTI15_10 = 40, | ||
| 58 | EXTI2 = 8, | ||
| 59 | EXTI3 = 9, | ||
| 60 | EXTI4 = 10, | ||
| 61 | EXTI9_5 = 23, | ||
| 62 | FLASH = 4, | ||
| 63 | FMC = 48, | ||
| 64 | FPU = 81, | ||
| 65 | I2C1_ER = 32, | ||
| 66 | I2C1_EV = 31, | ||
| 67 | I2C2_ER = 34, | ||
| 68 | I2C2_EV = 33, | ||
| 69 | I2C3_ER = 73, | ||
| 70 | I2C3_EV = 72, | ||
| 71 | LPTIM1 = 65, | ||
| 72 | LPTIM2 = 66, | ||
| 73 | LPUART1 = 70, | ||
| 74 | OTG_FS = 67, | ||
| 75 | PVD_PVM = 1, | ||
| 76 | QUADSPI = 71, | ||
| 77 | RCC = 5, | ||
| 78 | RNG = 80, | ||
| 79 | RTC_Alarm = 41, | ||
| 80 | RTC_WKUP = 3, | ||
| 81 | SAI1 = 74, | ||
| 82 | SAI2 = 75, | ||
| 83 | SDMMC1 = 49, | ||
| 84 | SPI1 = 35, | ||
| 85 | SPI2 = 36, | ||
| 86 | SPI3 = 51, | ||
| 87 | SWPMI1 = 76, | ||
| 88 | TAMP_STAMP = 2, | ||
| 89 | TIM1_BRK_TIM15 = 24, | ||
| 90 | TIM1_CC = 27, | ||
| 91 | TIM1_TRG_COM_TIM17 = 26, | ||
| 92 | TIM1_UP_TIM16 = 25, | ||
| 93 | TIM2 = 28, | ||
| 94 | TIM3 = 29, | ||
| 95 | TIM4 = 30, | ||
| 96 | TIM5 = 50, | ||
| 97 | TIM6_DAC = 54, | ||
| 98 | TIM7 = 55, | ||
| 99 | TIM8_BRK = 43, | ||
| 100 | TIM8_CC = 46, | ||
| 101 | TIM8_TRG_COM = 45, | ||
| 102 | TIM8_UP = 44, | ||
| 103 | TSC = 77, | ||
| 104 | UART4 = 52, | ||
| 105 | UART5 = 53, | ||
| 106 | USART1 = 37, | ||
| 107 | USART2 = 38, | ||
| 108 | USART3 = 39, | ||
| 109 | WWDG = 0, | ||
| 110 | } | ||
| 111 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 112 | #[inline(always)] | ||
| 113 | fn number(self) -> u16 { | ||
| 114 | self as u16 | ||
| 115 | } | ||
| 116 | } | ||
| 117 | |||
| 118 | declare!(ADC1_2); | ||
| 119 | declare!(ADC3); | ||
| 120 | declare!(CAN1_RX0); | ||
| 121 | declare!(CAN1_RX1); | ||
| 122 | declare!(CAN1_SCE); | ||
| 123 | declare!(CAN1_TX); | ||
| 124 | declare!(COMP); | ||
| 125 | declare!(DFSDM1_FLT0); | ||
| 126 | declare!(DFSDM1_FLT1); | ||
| 127 | declare!(DFSDM1_FLT2); | ||
| 128 | declare!(DFSDM1_FLT3); | ||
| 129 | declare!(DMA1_Channel1); | ||
| 130 | declare!(DMA1_Channel2); | ||
| 131 | declare!(DMA1_Channel3); | ||
| 132 | declare!(DMA1_Channel4); | ||
| 133 | declare!(DMA1_Channel5); | ||
| 134 | declare!(DMA1_Channel6); | ||
| 135 | declare!(DMA1_Channel7); | ||
| 136 | declare!(DMA2_Channel1); | ||
| 137 | declare!(DMA2_Channel2); | ||
| 138 | declare!(DMA2_Channel3); | ||
| 139 | declare!(DMA2_Channel4); | ||
| 140 | declare!(DMA2_Channel5); | ||
| 141 | declare!(DMA2_Channel6); | ||
| 142 | declare!(DMA2_Channel7); | ||
| 143 | declare!(EXTI0); | ||
| 144 | declare!(EXTI1); | ||
| 145 | declare!(EXTI15_10); | ||
| 146 | declare!(EXTI2); | ||
| 147 | declare!(EXTI3); | ||
| 148 | declare!(EXTI4); | ||
| 149 | declare!(EXTI9_5); | ||
| 150 | declare!(FLASH); | ||
| 151 | declare!(FMC); | ||
| 152 | declare!(FPU); | ||
| 153 | declare!(I2C1_ER); | ||
| 154 | declare!(I2C1_EV); | ||
| 155 | declare!(I2C2_ER); | ||
| 156 | declare!(I2C2_EV); | ||
| 157 | declare!(I2C3_ER); | ||
| 158 | declare!(I2C3_EV); | ||
| 159 | declare!(LPTIM1); | ||
| 160 | declare!(LPTIM2); | ||
| 161 | declare!(LPUART1); | ||
| 162 | declare!(OTG_FS); | ||
| 163 | declare!(PVD_PVM); | ||
| 164 | declare!(QUADSPI); | ||
| 165 | declare!(RCC); | ||
| 166 | declare!(RNG); | ||
| 167 | declare!(RTC_Alarm); | ||
| 168 | declare!(RTC_WKUP); | ||
| 169 | declare!(SAI1); | ||
| 170 | declare!(SAI2); | ||
| 171 | declare!(SDMMC1); | ||
| 172 | declare!(SPI1); | ||
| 173 | declare!(SPI2); | ||
| 174 | declare!(SPI3); | ||
| 175 | declare!(SWPMI1); | ||
| 176 | declare!(TAMP_STAMP); | ||
| 177 | declare!(TIM1_BRK_TIM15); | ||
| 178 | declare!(TIM1_CC); | ||
| 179 | declare!(TIM1_TRG_COM_TIM17); | ||
| 180 | declare!(TIM1_UP_TIM16); | ||
| 181 | declare!(TIM2); | ||
| 182 | declare!(TIM3); | ||
| 183 | declare!(TIM4); | ||
| 184 | declare!(TIM5); | ||
| 185 | declare!(TIM6_DAC); | ||
| 186 | declare!(TIM7); | ||
| 187 | declare!(TIM8_BRK); | ||
| 188 | declare!(TIM8_CC); | ||
| 189 | declare!(TIM8_TRG_COM); | ||
| 190 | declare!(TIM8_UP); | ||
| 191 | declare!(TSC); | ||
| 192 | declare!(UART4); | ||
| 193 | declare!(UART5); | ||
| 194 | declare!(USART1); | ||
| 195 | declare!(USART2); | ||
| 196 | declare!(USART3); | ||
| 197 | declare!(WWDG); | ||
| 198 | } | ||
| 199 | mod interrupt_vector { | ||
| 200 | extern "C" { | ||
| 201 | fn ADC1_2(); | ||
| 202 | fn ADC3(); | ||
| 203 | fn CAN1_RX0(); | ||
| 204 | fn CAN1_RX1(); | ||
| 205 | fn CAN1_SCE(); | ||
| 206 | fn CAN1_TX(); | ||
| 207 | fn COMP(); | ||
| 208 | fn DFSDM1_FLT0(); | ||
| 209 | fn DFSDM1_FLT1(); | ||
| 210 | fn DFSDM1_FLT2(); | ||
| 211 | fn DFSDM1_FLT3(); | ||
| 212 | fn DMA1_Channel1(); | ||
| 213 | fn DMA1_Channel2(); | ||
| 214 | fn DMA1_Channel3(); | ||
| 215 | fn DMA1_Channel4(); | ||
| 216 | fn DMA1_Channel5(); | ||
| 217 | fn DMA1_Channel6(); | ||
| 218 | fn DMA1_Channel7(); | ||
| 219 | fn DMA2_Channel1(); | ||
| 220 | fn DMA2_Channel2(); | ||
| 221 | fn DMA2_Channel3(); | ||
| 222 | fn DMA2_Channel4(); | ||
| 223 | fn DMA2_Channel5(); | ||
| 224 | fn DMA2_Channel6(); | ||
| 225 | fn DMA2_Channel7(); | ||
| 226 | fn EXTI0(); | ||
| 227 | fn EXTI1(); | ||
| 228 | fn EXTI15_10(); | ||
| 229 | fn EXTI2(); | ||
| 230 | fn EXTI3(); | ||
| 231 | fn EXTI4(); | ||
| 232 | fn EXTI9_5(); | ||
| 233 | fn FLASH(); | ||
| 234 | fn FMC(); | ||
| 235 | fn FPU(); | ||
| 236 | fn I2C1_ER(); | ||
| 237 | fn I2C1_EV(); | ||
| 238 | fn I2C2_ER(); | ||
| 239 | fn I2C2_EV(); | ||
| 240 | fn I2C3_ER(); | ||
| 241 | fn I2C3_EV(); | ||
| 242 | fn LPTIM1(); | ||
| 243 | fn LPTIM2(); | ||
| 244 | fn LPUART1(); | ||
| 245 | fn OTG_FS(); | ||
| 246 | fn PVD_PVM(); | ||
| 247 | fn QUADSPI(); | ||
| 248 | fn RCC(); | ||
| 249 | fn RNG(); | ||
| 250 | fn RTC_Alarm(); | ||
| 251 | fn RTC_WKUP(); | ||
| 252 | fn SAI1(); | ||
| 253 | fn SAI2(); | ||
| 254 | fn SDMMC1(); | ||
| 255 | fn SPI1(); | ||
| 256 | fn SPI2(); | ||
| 257 | fn SPI3(); | ||
| 258 | fn SWPMI1(); | ||
| 259 | fn TAMP_STAMP(); | ||
| 260 | fn TIM1_BRK_TIM15(); | ||
| 261 | fn TIM1_CC(); | ||
| 262 | fn TIM1_TRG_COM_TIM17(); | ||
| 263 | fn TIM1_UP_TIM16(); | ||
| 264 | fn TIM2(); | ||
| 265 | fn TIM3(); | ||
| 266 | fn TIM4(); | ||
| 267 | fn TIM5(); | ||
| 268 | fn TIM6_DAC(); | ||
| 269 | fn TIM7(); | ||
| 270 | fn TIM8_BRK(); | ||
| 271 | fn TIM8_CC(); | ||
| 272 | fn TIM8_TRG_COM(); | ||
| 273 | fn TIM8_UP(); | ||
| 274 | fn TSC(); | ||
| 275 | fn UART4(); | ||
| 276 | fn UART5(); | ||
| 277 | fn USART1(); | ||
| 278 | fn USART2(); | ||
| 279 | fn USART3(); | ||
| 280 | fn WWDG(); | ||
| 281 | } | ||
| 282 | pub union Vector { | ||
| 283 | _handler: unsafe extern "C" fn(), | ||
| 284 | _reserved: u32, | ||
| 285 | } | ||
| 286 | #[link_section = ".vector_table.interrupts"] | ||
| 287 | #[no_mangle] | ||
| 288 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 289 | Vector { _handler: WWDG }, | ||
| 290 | Vector { _handler: PVD_PVM }, | ||
| 291 | Vector { | ||
| 292 | _handler: TAMP_STAMP, | ||
| 293 | }, | ||
| 294 | Vector { _handler: RTC_WKUP }, | ||
| 295 | Vector { _handler: FLASH }, | ||
| 296 | Vector { _handler: RCC }, | ||
| 297 | Vector { _handler: EXTI0 }, | ||
| 298 | Vector { _handler: EXTI1 }, | ||
| 299 | Vector { _handler: EXTI2 }, | ||
| 300 | Vector { _handler: EXTI3 }, | ||
| 301 | Vector { _handler: EXTI4 }, | ||
| 302 | Vector { | ||
| 303 | _handler: DMA1_Channel1, | ||
| 304 | }, | ||
| 305 | Vector { | ||
| 306 | _handler: DMA1_Channel2, | ||
| 307 | }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel3, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel4, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel5, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel6, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel7, | ||
| 322 | }, | ||
| 323 | Vector { _handler: ADC1_2 }, | ||
| 324 | Vector { _handler: CAN1_TX }, | ||
| 325 | Vector { _handler: CAN1_RX0 }, | ||
| 326 | Vector { _handler: CAN1_RX1 }, | ||
| 327 | Vector { _handler: CAN1_SCE }, | ||
| 328 | Vector { _handler: EXTI9_5 }, | ||
| 329 | Vector { | ||
| 330 | _handler: TIM1_BRK_TIM15, | ||
| 331 | }, | ||
| 332 | Vector { | ||
| 333 | _handler: TIM1_UP_TIM16, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_TRG_COM_TIM17, | ||
| 337 | }, | ||
| 338 | Vector { _handler: TIM1_CC }, | ||
| 339 | Vector { _handler: TIM2 }, | ||
| 340 | Vector { _handler: TIM3 }, | ||
| 341 | Vector { _handler: TIM4 }, | ||
| 342 | Vector { _handler: I2C1_EV }, | ||
| 343 | Vector { _handler: I2C1_ER }, | ||
| 344 | Vector { _handler: I2C2_EV }, | ||
| 345 | Vector { _handler: I2C2_ER }, | ||
| 346 | Vector { _handler: SPI1 }, | ||
| 347 | Vector { _handler: SPI2 }, | ||
| 348 | Vector { _handler: USART1 }, | ||
| 349 | Vector { _handler: USART2 }, | ||
| 350 | Vector { _handler: USART3 }, | ||
| 351 | Vector { | ||
| 352 | _handler: EXTI15_10, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: RTC_Alarm, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: DFSDM1_FLT3, | ||
| 359 | }, | ||
| 360 | Vector { _handler: TIM8_BRK }, | ||
| 361 | Vector { _handler: TIM8_UP }, | ||
| 362 | Vector { | ||
| 363 | _handler: TIM8_TRG_COM, | ||
| 364 | }, | ||
| 365 | Vector { _handler: TIM8_CC }, | ||
| 366 | Vector { _handler: ADC3 }, | ||
| 367 | Vector { _handler: FMC }, | ||
| 368 | Vector { _handler: SDMMC1 }, | ||
| 369 | Vector { _handler: TIM5 }, | ||
| 370 | Vector { _handler: SPI3 }, | ||
| 371 | Vector { _handler: UART4 }, | ||
| 372 | Vector { _handler: UART5 }, | ||
| 373 | Vector { _handler: TIM6_DAC }, | ||
| 374 | Vector { _handler: TIM7 }, | ||
| 375 | Vector { | ||
| 376 | _handler: DMA2_Channel1, | ||
| 377 | }, | ||
| 378 | Vector { | ||
| 379 | _handler: DMA2_Channel2, | ||
| 380 | }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel3, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel4, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel5, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DFSDM1_FLT0, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DFSDM1_FLT1, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT2, | ||
| 398 | }, | ||
| 399 | Vector { _handler: COMP }, | ||
| 400 | Vector { _handler: LPTIM1 }, | ||
| 401 | Vector { _handler: LPTIM2 }, | ||
| 402 | Vector { _handler: OTG_FS }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel6, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel7, | ||
| 408 | }, | ||
| 409 | Vector { _handler: LPUART1 }, | ||
| 410 | Vector { _handler: QUADSPI }, | ||
| 411 | Vector { _handler: I2C3_EV }, | ||
| 412 | Vector { _handler: I2C3_ER }, | ||
| 413 | Vector { _handler: SAI1 }, | ||
| 414 | Vector { _handler: SAI2 }, | ||
| 415 | Vector { _handler: SWPMI1 }, | ||
| 416 | Vector { _handler: TSC }, | ||
| 417 | Vector { _reserved: 0 }, | ||
| 418 | Vector { _reserved: 0 }, | ||
| 419 | Vector { _handler: RNG }, | ||
| 420 | Vector { _handler: FPU }, | ||
| 421 | ]; | ||
| 422 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 423 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 424 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 425 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l475vc.rs b/embassy-stm32/src/chip/stm32l475vc.rs index 774df143c..7a818be15 100644 --- a/embassy-stm32/src/chip/stm32l475vc.rs +++ b/embassy-stm32/src/chip/stm32l475vc.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,8 +14,412 @@ peripherals!( | |||
| 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, | 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, |
| 15 | WWDG | 15 | WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DFSDM1_FLT0 = 61, | ||
| 38 | DFSDM1_FLT1 = 62, | ||
| 39 | DFSDM1_FLT2 = 63, | ||
| 40 | DFSDM1_FLT3 = 42, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | EXTI0 = 6, | ||
| 56 | EXTI1 = 7, | ||
| 57 | EXTI15_10 = 40, | ||
| 58 | EXTI2 = 8, | ||
| 59 | EXTI3 = 9, | ||
| 60 | EXTI4 = 10, | ||
| 61 | EXTI9_5 = 23, | ||
| 62 | FLASH = 4, | ||
| 63 | FMC = 48, | ||
| 64 | FPU = 81, | ||
| 65 | I2C1_ER = 32, | ||
| 66 | I2C1_EV = 31, | ||
| 67 | I2C2_ER = 34, | ||
| 68 | I2C2_EV = 33, | ||
| 69 | I2C3_ER = 73, | ||
| 70 | I2C3_EV = 72, | ||
| 71 | LPTIM1 = 65, | ||
| 72 | LPTIM2 = 66, | ||
| 73 | LPUART1 = 70, | ||
| 74 | OTG_FS = 67, | ||
| 75 | PVD_PVM = 1, | ||
| 76 | QUADSPI = 71, | ||
| 77 | RCC = 5, | ||
| 78 | RNG = 80, | ||
| 79 | RTC_Alarm = 41, | ||
| 80 | RTC_WKUP = 3, | ||
| 81 | SAI1 = 74, | ||
| 82 | SAI2 = 75, | ||
| 83 | SDMMC1 = 49, | ||
| 84 | SPI1 = 35, | ||
| 85 | SPI2 = 36, | ||
| 86 | SPI3 = 51, | ||
| 87 | SWPMI1 = 76, | ||
| 88 | TAMP_STAMP = 2, | ||
| 89 | TIM1_BRK_TIM15 = 24, | ||
| 90 | TIM1_CC = 27, | ||
| 91 | TIM1_TRG_COM_TIM17 = 26, | ||
| 92 | TIM1_UP_TIM16 = 25, | ||
| 93 | TIM2 = 28, | ||
| 94 | TIM3 = 29, | ||
| 95 | TIM4 = 30, | ||
| 96 | TIM5 = 50, | ||
| 97 | TIM6_DAC = 54, | ||
| 98 | TIM7 = 55, | ||
| 99 | TIM8_BRK = 43, | ||
| 100 | TIM8_CC = 46, | ||
| 101 | TIM8_TRG_COM = 45, | ||
| 102 | TIM8_UP = 44, | ||
| 103 | TSC = 77, | ||
| 104 | UART4 = 52, | ||
| 105 | UART5 = 53, | ||
| 106 | USART1 = 37, | ||
| 107 | USART2 = 38, | ||
| 108 | USART3 = 39, | ||
| 109 | WWDG = 0, | ||
| 110 | } | ||
| 111 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 112 | #[inline(always)] | ||
| 113 | fn number(self) -> u16 { | ||
| 114 | self as u16 | ||
| 115 | } | ||
| 116 | } | ||
| 117 | |||
| 118 | declare!(ADC1_2); | ||
| 119 | declare!(ADC3); | ||
| 120 | declare!(CAN1_RX0); | ||
| 121 | declare!(CAN1_RX1); | ||
| 122 | declare!(CAN1_SCE); | ||
| 123 | declare!(CAN1_TX); | ||
| 124 | declare!(COMP); | ||
| 125 | declare!(DFSDM1_FLT0); | ||
| 126 | declare!(DFSDM1_FLT1); | ||
| 127 | declare!(DFSDM1_FLT2); | ||
| 128 | declare!(DFSDM1_FLT3); | ||
| 129 | declare!(DMA1_Channel1); | ||
| 130 | declare!(DMA1_Channel2); | ||
| 131 | declare!(DMA1_Channel3); | ||
| 132 | declare!(DMA1_Channel4); | ||
| 133 | declare!(DMA1_Channel5); | ||
| 134 | declare!(DMA1_Channel6); | ||
| 135 | declare!(DMA1_Channel7); | ||
| 136 | declare!(DMA2_Channel1); | ||
| 137 | declare!(DMA2_Channel2); | ||
| 138 | declare!(DMA2_Channel3); | ||
| 139 | declare!(DMA2_Channel4); | ||
| 140 | declare!(DMA2_Channel5); | ||
| 141 | declare!(DMA2_Channel6); | ||
| 142 | declare!(DMA2_Channel7); | ||
| 143 | declare!(EXTI0); | ||
| 144 | declare!(EXTI1); | ||
| 145 | declare!(EXTI15_10); | ||
| 146 | declare!(EXTI2); | ||
| 147 | declare!(EXTI3); | ||
| 148 | declare!(EXTI4); | ||
| 149 | declare!(EXTI9_5); | ||
| 150 | declare!(FLASH); | ||
| 151 | declare!(FMC); | ||
| 152 | declare!(FPU); | ||
| 153 | declare!(I2C1_ER); | ||
| 154 | declare!(I2C1_EV); | ||
| 155 | declare!(I2C2_ER); | ||
| 156 | declare!(I2C2_EV); | ||
| 157 | declare!(I2C3_ER); | ||
| 158 | declare!(I2C3_EV); | ||
| 159 | declare!(LPTIM1); | ||
| 160 | declare!(LPTIM2); | ||
| 161 | declare!(LPUART1); | ||
| 162 | declare!(OTG_FS); | ||
| 163 | declare!(PVD_PVM); | ||
| 164 | declare!(QUADSPI); | ||
| 165 | declare!(RCC); | ||
| 166 | declare!(RNG); | ||
| 167 | declare!(RTC_Alarm); | ||
| 168 | declare!(RTC_WKUP); | ||
| 169 | declare!(SAI1); | ||
| 170 | declare!(SAI2); | ||
| 171 | declare!(SDMMC1); | ||
| 172 | declare!(SPI1); | ||
| 173 | declare!(SPI2); | ||
| 174 | declare!(SPI3); | ||
| 175 | declare!(SWPMI1); | ||
| 176 | declare!(TAMP_STAMP); | ||
| 177 | declare!(TIM1_BRK_TIM15); | ||
| 178 | declare!(TIM1_CC); | ||
| 179 | declare!(TIM1_TRG_COM_TIM17); | ||
| 180 | declare!(TIM1_UP_TIM16); | ||
| 181 | declare!(TIM2); | ||
| 182 | declare!(TIM3); | ||
| 183 | declare!(TIM4); | ||
| 184 | declare!(TIM5); | ||
| 185 | declare!(TIM6_DAC); | ||
| 186 | declare!(TIM7); | ||
| 187 | declare!(TIM8_BRK); | ||
| 188 | declare!(TIM8_CC); | ||
| 189 | declare!(TIM8_TRG_COM); | ||
| 190 | declare!(TIM8_UP); | ||
| 191 | declare!(TSC); | ||
| 192 | declare!(UART4); | ||
| 193 | declare!(UART5); | ||
| 194 | declare!(USART1); | ||
| 195 | declare!(USART2); | ||
| 196 | declare!(USART3); | ||
| 197 | declare!(WWDG); | ||
| 198 | } | ||
| 199 | mod interrupt_vector { | ||
| 200 | extern "C" { | ||
| 201 | fn ADC1_2(); | ||
| 202 | fn ADC3(); | ||
| 203 | fn CAN1_RX0(); | ||
| 204 | fn CAN1_RX1(); | ||
| 205 | fn CAN1_SCE(); | ||
| 206 | fn CAN1_TX(); | ||
| 207 | fn COMP(); | ||
| 208 | fn DFSDM1_FLT0(); | ||
| 209 | fn DFSDM1_FLT1(); | ||
| 210 | fn DFSDM1_FLT2(); | ||
| 211 | fn DFSDM1_FLT3(); | ||
| 212 | fn DMA1_Channel1(); | ||
| 213 | fn DMA1_Channel2(); | ||
| 214 | fn DMA1_Channel3(); | ||
| 215 | fn DMA1_Channel4(); | ||
| 216 | fn DMA1_Channel5(); | ||
| 217 | fn DMA1_Channel6(); | ||
| 218 | fn DMA1_Channel7(); | ||
| 219 | fn DMA2_Channel1(); | ||
| 220 | fn DMA2_Channel2(); | ||
| 221 | fn DMA2_Channel3(); | ||
| 222 | fn DMA2_Channel4(); | ||
| 223 | fn DMA2_Channel5(); | ||
| 224 | fn DMA2_Channel6(); | ||
| 225 | fn DMA2_Channel7(); | ||
| 226 | fn EXTI0(); | ||
| 227 | fn EXTI1(); | ||
| 228 | fn EXTI15_10(); | ||
| 229 | fn EXTI2(); | ||
| 230 | fn EXTI3(); | ||
| 231 | fn EXTI4(); | ||
| 232 | fn EXTI9_5(); | ||
| 233 | fn FLASH(); | ||
| 234 | fn FMC(); | ||
| 235 | fn FPU(); | ||
| 236 | fn I2C1_ER(); | ||
| 237 | fn I2C1_EV(); | ||
| 238 | fn I2C2_ER(); | ||
| 239 | fn I2C2_EV(); | ||
| 240 | fn I2C3_ER(); | ||
| 241 | fn I2C3_EV(); | ||
| 242 | fn LPTIM1(); | ||
| 243 | fn LPTIM2(); | ||
| 244 | fn LPUART1(); | ||
| 245 | fn OTG_FS(); | ||
| 246 | fn PVD_PVM(); | ||
| 247 | fn QUADSPI(); | ||
| 248 | fn RCC(); | ||
| 249 | fn RNG(); | ||
| 250 | fn RTC_Alarm(); | ||
| 251 | fn RTC_WKUP(); | ||
| 252 | fn SAI1(); | ||
| 253 | fn SAI2(); | ||
| 254 | fn SDMMC1(); | ||
| 255 | fn SPI1(); | ||
| 256 | fn SPI2(); | ||
| 257 | fn SPI3(); | ||
| 258 | fn SWPMI1(); | ||
| 259 | fn TAMP_STAMP(); | ||
| 260 | fn TIM1_BRK_TIM15(); | ||
| 261 | fn TIM1_CC(); | ||
| 262 | fn TIM1_TRG_COM_TIM17(); | ||
| 263 | fn TIM1_UP_TIM16(); | ||
| 264 | fn TIM2(); | ||
| 265 | fn TIM3(); | ||
| 266 | fn TIM4(); | ||
| 267 | fn TIM5(); | ||
| 268 | fn TIM6_DAC(); | ||
| 269 | fn TIM7(); | ||
| 270 | fn TIM8_BRK(); | ||
| 271 | fn TIM8_CC(); | ||
| 272 | fn TIM8_TRG_COM(); | ||
| 273 | fn TIM8_UP(); | ||
| 274 | fn TSC(); | ||
| 275 | fn UART4(); | ||
| 276 | fn UART5(); | ||
| 277 | fn USART1(); | ||
| 278 | fn USART2(); | ||
| 279 | fn USART3(); | ||
| 280 | fn WWDG(); | ||
| 281 | } | ||
| 282 | pub union Vector { | ||
| 283 | _handler: unsafe extern "C" fn(), | ||
| 284 | _reserved: u32, | ||
| 285 | } | ||
| 286 | #[link_section = ".vector_table.interrupts"] | ||
| 287 | #[no_mangle] | ||
| 288 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 289 | Vector { _handler: WWDG }, | ||
| 290 | Vector { _handler: PVD_PVM }, | ||
| 291 | Vector { | ||
| 292 | _handler: TAMP_STAMP, | ||
| 293 | }, | ||
| 294 | Vector { _handler: RTC_WKUP }, | ||
| 295 | Vector { _handler: FLASH }, | ||
| 296 | Vector { _handler: RCC }, | ||
| 297 | Vector { _handler: EXTI0 }, | ||
| 298 | Vector { _handler: EXTI1 }, | ||
| 299 | Vector { _handler: EXTI2 }, | ||
| 300 | Vector { _handler: EXTI3 }, | ||
| 301 | Vector { _handler: EXTI4 }, | ||
| 302 | Vector { | ||
| 303 | _handler: DMA1_Channel1, | ||
| 304 | }, | ||
| 305 | Vector { | ||
| 306 | _handler: DMA1_Channel2, | ||
| 307 | }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel3, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel4, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel5, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel6, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel7, | ||
| 322 | }, | ||
| 323 | Vector { _handler: ADC1_2 }, | ||
| 324 | Vector { _handler: CAN1_TX }, | ||
| 325 | Vector { _handler: CAN1_RX0 }, | ||
| 326 | Vector { _handler: CAN1_RX1 }, | ||
| 327 | Vector { _handler: CAN1_SCE }, | ||
| 328 | Vector { _handler: EXTI9_5 }, | ||
| 329 | Vector { | ||
| 330 | _handler: TIM1_BRK_TIM15, | ||
| 331 | }, | ||
| 332 | Vector { | ||
| 333 | _handler: TIM1_UP_TIM16, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_TRG_COM_TIM17, | ||
| 337 | }, | ||
| 338 | Vector { _handler: TIM1_CC }, | ||
| 339 | Vector { _handler: TIM2 }, | ||
| 340 | Vector { _handler: TIM3 }, | ||
| 341 | Vector { _handler: TIM4 }, | ||
| 342 | Vector { _handler: I2C1_EV }, | ||
| 343 | Vector { _handler: I2C1_ER }, | ||
| 344 | Vector { _handler: I2C2_EV }, | ||
| 345 | Vector { _handler: I2C2_ER }, | ||
| 346 | Vector { _handler: SPI1 }, | ||
| 347 | Vector { _handler: SPI2 }, | ||
| 348 | Vector { _handler: USART1 }, | ||
| 349 | Vector { _handler: USART2 }, | ||
| 350 | Vector { _handler: USART3 }, | ||
| 351 | Vector { | ||
| 352 | _handler: EXTI15_10, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: RTC_Alarm, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: DFSDM1_FLT3, | ||
| 359 | }, | ||
| 360 | Vector { _handler: TIM8_BRK }, | ||
| 361 | Vector { _handler: TIM8_UP }, | ||
| 362 | Vector { | ||
| 363 | _handler: TIM8_TRG_COM, | ||
| 364 | }, | ||
| 365 | Vector { _handler: TIM8_CC }, | ||
| 366 | Vector { _handler: ADC3 }, | ||
| 367 | Vector { _handler: FMC }, | ||
| 368 | Vector { _handler: SDMMC1 }, | ||
| 369 | Vector { _handler: TIM5 }, | ||
| 370 | Vector { _handler: SPI3 }, | ||
| 371 | Vector { _handler: UART4 }, | ||
| 372 | Vector { _handler: UART5 }, | ||
| 373 | Vector { _handler: TIM6_DAC }, | ||
| 374 | Vector { _handler: TIM7 }, | ||
| 375 | Vector { | ||
| 376 | _handler: DMA2_Channel1, | ||
| 377 | }, | ||
| 378 | Vector { | ||
| 379 | _handler: DMA2_Channel2, | ||
| 380 | }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel3, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel4, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel5, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DFSDM1_FLT0, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DFSDM1_FLT1, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT2, | ||
| 398 | }, | ||
| 399 | Vector { _handler: COMP }, | ||
| 400 | Vector { _handler: LPTIM1 }, | ||
| 401 | Vector { _handler: LPTIM2 }, | ||
| 402 | Vector { _handler: OTG_FS }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel6, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel7, | ||
| 408 | }, | ||
| 409 | Vector { _handler: LPUART1 }, | ||
| 410 | Vector { _handler: QUADSPI }, | ||
| 411 | Vector { _handler: I2C3_EV }, | ||
| 412 | Vector { _handler: I2C3_ER }, | ||
| 413 | Vector { _handler: SAI1 }, | ||
| 414 | Vector { _handler: SAI2 }, | ||
| 415 | Vector { _handler: SWPMI1 }, | ||
| 416 | Vector { _handler: TSC }, | ||
| 417 | Vector { _reserved: 0 }, | ||
| 418 | Vector { _reserved: 0 }, | ||
| 419 | Vector { _handler: RNG }, | ||
| 420 | Vector { _handler: FPU }, | ||
| 421 | ]; | ||
| 422 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 423 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 424 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 425 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l475ve.rs b/embassy-stm32/src/chip/stm32l475ve.rs index 774df143c..7a818be15 100644 --- a/embassy-stm32/src/chip/stm32l475ve.rs +++ b/embassy-stm32/src/chip/stm32l475ve.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,8 +14,412 @@ peripherals!( | |||
| 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, | 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, |
| 15 | WWDG | 15 | WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DFSDM1_FLT0 = 61, | ||
| 38 | DFSDM1_FLT1 = 62, | ||
| 39 | DFSDM1_FLT2 = 63, | ||
| 40 | DFSDM1_FLT3 = 42, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | EXTI0 = 6, | ||
| 56 | EXTI1 = 7, | ||
| 57 | EXTI15_10 = 40, | ||
| 58 | EXTI2 = 8, | ||
| 59 | EXTI3 = 9, | ||
| 60 | EXTI4 = 10, | ||
| 61 | EXTI9_5 = 23, | ||
| 62 | FLASH = 4, | ||
| 63 | FMC = 48, | ||
| 64 | FPU = 81, | ||
| 65 | I2C1_ER = 32, | ||
| 66 | I2C1_EV = 31, | ||
| 67 | I2C2_ER = 34, | ||
| 68 | I2C2_EV = 33, | ||
| 69 | I2C3_ER = 73, | ||
| 70 | I2C3_EV = 72, | ||
| 71 | LPTIM1 = 65, | ||
| 72 | LPTIM2 = 66, | ||
| 73 | LPUART1 = 70, | ||
| 74 | OTG_FS = 67, | ||
| 75 | PVD_PVM = 1, | ||
| 76 | QUADSPI = 71, | ||
| 77 | RCC = 5, | ||
| 78 | RNG = 80, | ||
| 79 | RTC_Alarm = 41, | ||
| 80 | RTC_WKUP = 3, | ||
| 81 | SAI1 = 74, | ||
| 82 | SAI2 = 75, | ||
| 83 | SDMMC1 = 49, | ||
| 84 | SPI1 = 35, | ||
| 85 | SPI2 = 36, | ||
| 86 | SPI3 = 51, | ||
| 87 | SWPMI1 = 76, | ||
| 88 | TAMP_STAMP = 2, | ||
| 89 | TIM1_BRK_TIM15 = 24, | ||
| 90 | TIM1_CC = 27, | ||
| 91 | TIM1_TRG_COM_TIM17 = 26, | ||
| 92 | TIM1_UP_TIM16 = 25, | ||
| 93 | TIM2 = 28, | ||
| 94 | TIM3 = 29, | ||
| 95 | TIM4 = 30, | ||
| 96 | TIM5 = 50, | ||
| 97 | TIM6_DAC = 54, | ||
| 98 | TIM7 = 55, | ||
| 99 | TIM8_BRK = 43, | ||
| 100 | TIM8_CC = 46, | ||
| 101 | TIM8_TRG_COM = 45, | ||
| 102 | TIM8_UP = 44, | ||
| 103 | TSC = 77, | ||
| 104 | UART4 = 52, | ||
| 105 | UART5 = 53, | ||
| 106 | USART1 = 37, | ||
| 107 | USART2 = 38, | ||
| 108 | USART3 = 39, | ||
| 109 | WWDG = 0, | ||
| 110 | } | ||
| 111 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 112 | #[inline(always)] | ||
| 113 | fn number(self) -> u16 { | ||
| 114 | self as u16 | ||
| 115 | } | ||
| 116 | } | ||
| 117 | |||
| 118 | declare!(ADC1_2); | ||
| 119 | declare!(ADC3); | ||
| 120 | declare!(CAN1_RX0); | ||
| 121 | declare!(CAN1_RX1); | ||
| 122 | declare!(CAN1_SCE); | ||
| 123 | declare!(CAN1_TX); | ||
| 124 | declare!(COMP); | ||
| 125 | declare!(DFSDM1_FLT0); | ||
| 126 | declare!(DFSDM1_FLT1); | ||
| 127 | declare!(DFSDM1_FLT2); | ||
| 128 | declare!(DFSDM1_FLT3); | ||
| 129 | declare!(DMA1_Channel1); | ||
| 130 | declare!(DMA1_Channel2); | ||
| 131 | declare!(DMA1_Channel3); | ||
| 132 | declare!(DMA1_Channel4); | ||
| 133 | declare!(DMA1_Channel5); | ||
| 134 | declare!(DMA1_Channel6); | ||
| 135 | declare!(DMA1_Channel7); | ||
| 136 | declare!(DMA2_Channel1); | ||
| 137 | declare!(DMA2_Channel2); | ||
| 138 | declare!(DMA2_Channel3); | ||
| 139 | declare!(DMA2_Channel4); | ||
| 140 | declare!(DMA2_Channel5); | ||
| 141 | declare!(DMA2_Channel6); | ||
| 142 | declare!(DMA2_Channel7); | ||
| 143 | declare!(EXTI0); | ||
| 144 | declare!(EXTI1); | ||
| 145 | declare!(EXTI15_10); | ||
| 146 | declare!(EXTI2); | ||
| 147 | declare!(EXTI3); | ||
| 148 | declare!(EXTI4); | ||
| 149 | declare!(EXTI9_5); | ||
| 150 | declare!(FLASH); | ||
| 151 | declare!(FMC); | ||
| 152 | declare!(FPU); | ||
| 153 | declare!(I2C1_ER); | ||
| 154 | declare!(I2C1_EV); | ||
| 155 | declare!(I2C2_ER); | ||
| 156 | declare!(I2C2_EV); | ||
| 157 | declare!(I2C3_ER); | ||
| 158 | declare!(I2C3_EV); | ||
| 159 | declare!(LPTIM1); | ||
| 160 | declare!(LPTIM2); | ||
| 161 | declare!(LPUART1); | ||
| 162 | declare!(OTG_FS); | ||
| 163 | declare!(PVD_PVM); | ||
| 164 | declare!(QUADSPI); | ||
| 165 | declare!(RCC); | ||
| 166 | declare!(RNG); | ||
| 167 | declare!(RTC_Alarm); | ||
| 168 | declare!(RTC_WKUP); | ||
| 169 | declare!(SAI1); | ||
| 170 | declare!(SAI2); | ||
| 171 | declare!(SDMMC1); | ||
| 172 | declare!(SPI1); | ||
| 173 | declare!(SPI2); | ||
| 174 | declare!(SPI3); | ||
| 175 | declare!(SWPMI1); | ||
| 176 | declare!(TAMP_STAMP); | ||
| 177 | declare!(TIM1_BRK_TIM15); | ||
| 178 | declare!(TIM1_CC); | ||
| 179 | declare!(TIM1_TRG_COM_TIM17); | ||
| 180 | declare!(TIM1_UP_TIM16); | ||
| 181 | declare!(TIM2); | ||
| 182 | declare!(TIM3); | ||
| 183 | declare!(TIM4); | ||
| 184 | declare!(TIM5); | ||
| 185 | declare!(TIM6_DAC); | ||
| 186 | declare!(TIM7); | ||
| 187 | declare!(TIM8_BRK); | ||
| 188 | declare!(TIM8_CC); | ||
| 189 | declare!(TIM8_TRG_COM); | ||
| 190 | declare!(TIM8_UP); | ||
| 191 | declare!(TSC); | ||
| 192 | declare!(UART4); | ||
| 193 | declare!(UART5); | ||
| 194 | declare!(USART1); | ||
| 195 | declare!(USART2); | ||
| 196 | declare!(USART3); | ||
| 197 | declare!(WWDG); | ||
| 198 | } | ||
| 199 | mod interrupt_vector { | ||
| 200 | extern "C" { | ||
| 201 | fn ADC1_2(); | ||
| 202 | fn ADC3(); | ||
| 203 | fn CAN1_RX0(); | ||
| 204 | fn CAN1_RX1(); | ||
| 205 | fn CAN1_SCE(); | ||
| 206 | fn CAN1_TX(); | ||
| 207 | fn COMP(); | ||
| 208 | fn DFSDM1_FLT0(); | ||
| 209 | fn DFSDM1_FLT1(); | ||
| 210 | fn DFSDM1_FLT2(); | ||
| 211 | fn DFSDM1_FLT3(); | ||
| 212 | fn DMA1_Channel1(); | ||
| 213 | fn DMA1_Channel2(); | ||
| 214 | fn DMA1_Channel3(); | ||
| 215 | fn DMA1_Channel4(); | ||
| 216 | fn DMA1_Channel5(); | ||
| 217 | fn DMA1_Channel6(); | ||
| 218 | fn DMA1_Channel7(); | ||
| 219 | fn DMA2_Channel1(); | ||
| 220 | fn DMA2_Channel2(); | ||
| 221 | fn DMA2_Channel3(); | ||
| 222 | fn DMA2_Channel4(); | ||
| 223 | fn DMA2_Channel5(); | ||
| 224 | fn DMA2_Channel6(); | ||
| 225 | fn DMA2_Channel7(); | ||
| 226 | fn EXTI0(); | ||
| 227 | fn EXTI1(); | ||
| 228 | fn EXTI15_10(); | ||
| 229 | fn EXTI2(); | ||
| 230 | fn EXTI3(); | ||
| 231 | fn EXTI4(); | ||
| 232 | fn EXTI9_5(); | ||
| 233 | fn FLASH(); | ||
| 234 | fn FMC(); | ||
| 235 | fn FPU(); | ||
| 236 | fn I2C1_ER(); | ||
| 237 | fn I2C1_EV(); | ||
| 238 | fn I2C2_ER(); | ||
| 239 | fn I2C2_EV(); | ||
| 240 | fn I2C3_ER(); | ||
| 241 | fn I2C3_EV(); | ||
| 242 | fn LPTIM1(); | ||
| 243 | fn LPTIM2(); | ||
| 244 | fn LPUART1(); | ||
| 245 | fn OTG_FS(); | ||
| 246 | fn PVD_PVM(); | ||
| 247 | fn QUADSPI(); | ||
| 248 | fn RCC(); | ||
| 249 | fn RNG(); | ||
| 250 | fn RTC_Alarm(); | ||
| 251 | fn RTC_WKUP(); | ||
| 252 | fn SAI1(); | ||
| 253 | fn SAI2(); | ||
| 254 | fn SDMMC1(); | ||
| 255 | fn SPI1(); | ||
| 256 | fn SPI2(); | ||
| 257 | fn SPI3(); | ||
| 258 | fn SWPMI1(); | ||
| 259 | fn TAMP_STAMP(); | ||
| 260 | fn TIM1_BRK_TIM15(); | ||
| 261 | fn TIM1_CC(); | ||
| 262 | fn TIM1_TRG_COM_TIM17(); | ||
| 263 | fn TIM1_UP_TIM16(); | ||
| 264 | fn TIM2(); | ||
| 265 | fn TIM3(); | ||
| 266 | fn TIM4(); | ||
| 267 | fn TIM5(); | ||
| 268 | fn TIM6_DAC(); | ||
| 269 | fn TIM7(); | ||
| 270 | fn TIM8_BRK(); | ||
| 271 | fn TIM8_CC(); | ||
| 272 | fn TIM8_TRG_COM(); | ||
| 273 | fn TIM8_UP(); | ||
| 274 | fn TSC(); | ||
| 275 | fn UART4(); | ||
| 276 | fn UART5(); | ||
| 277 | fn USART1(); | ||
| 278 | fn USART2(); | ||
| 279 | fn USART3(); | ||
| 280 | fn WWDG(); | ||
| 281 | } | ||
| 282 | pub union Vector { | ||
| 283 | _handler: unsafe extern "C" fn(), | ||
| 284 | _reserved: u32, | ||
| 285 | } | ||
| 286 | #[link_section = ".vector_table.interrupts"] | ||
| 287 | #[no_mangle] | ||
| 288 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 289 | Vector { _handler: WWDG }, | ||
| 290 | Vector { _handler: PVD_PVM }, | ||
| 291 | Vector { | ||
| 292 | _handler: TAMP_STAMP, | ||
| 293 | }, | ||
| 294 | Vector { _handler: RTC_WKUP }, | ||
| 295 | Vector { _handler: FLASH }, | ||
| 296 | Vector { _handler: RCC }, | ||
| 297 | Vector { _handler: EXTI0 }, | ||
| 298 | Vector { _handler: EXTI1 }, | ||
| 299 | Vector { _handler: EXTI2 }, | ||
| 300 | Vector { _handler: EXTI3 }, | ||
| 301 | Vector { _handler: EXTI4 }, | ||
| 302 | Vector { | ||
| 303 | _handler: DMA1_Channel1, | ||
| 304 | }, | ||
| 305 | Vector { | ||
| 306 | _handler: DMA1_Channel2, | ||
| 307 | }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel3, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel4, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel5, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel6, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel7, | ||
| 322 | }, | ||
| 323 | Vector { _handler: ADC1_2 }, | ||
| 324 | Vector { _handler: CAN1_TX }, | ||
| 325 | Vector { _handler: CAN1_RX0 }, | ||
| 326 | Vector { _handler: CAN1_RX1 }, | ||
| 327 | Vector { _handler: CAN1_SCE }, | ||
| 328 | Vector { _handler: EXTI9_5 }, | ||
| 329 | Vector { | ||
| 330 | _handler: TIM1_BRK_TIM15, | ||
| 331 | }, | ||
| 332 | Vector { | ||
| 333 | _handler: TIM1_UP_TIM16, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_TRG_COM_TIM17, | ||
| 337 | }, | ||
| 338 | Vector { _handler: TIM1_CC }, | ||
| 339 | Vector { _handler: TIM2 }, | ||
| 340 | Vector { _handler: TIM3 }, | ||
| 341 | Vector { _handler: TIM4 }, | ||
| 342 | Vector { _handler: I2C1_EV }, | ||
| 343 | Vector { _handler: I2C1_ER }, | ||
| 344 | Vector { _handler: I2C2_EV }, | ||
| 345 | Vector { _handler: I2C2_ER }, | ||
| 346 | Vector { _handler: SPI1 }, | ||
| 347 | Vector { _handler: SPI2 }, | ||
| 348 | Vector { _handler: USART1 }, | ||
| 349 | Vector { _handler: USART2 }, | ||
| 350 | Vector { _handler: USART3 }, | ||
| 351 | Vector { | ||
| 352 | _handler: EXTI15_10, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: RTC_Alarm, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: DFSDM1_FLT3, | ||
| 359 | }, | ||
| 360 | Vector { _handler: TIM8_BRK }, | ||
| 361 | Vector { _handler: TIM8_UP }, | ||
| 362 | Vector { | ||
| 363 | _handler: TIM8_TRG_COM, | ||
| 364 | }, | ||
| 365 | Vector { _handler: TIM8_CC }, | ||
| 366 | Vector { _handler: ADC3 }, | ||
| 367 | Vector { _handler: FMC }, | ||
| 368 | Vector { _handler: SDMMC1 }, | ||
| 369 | Vector { _handler: TIM5 }, | ||
| 370 | Vector { _handler: SPI3 }, | ||
| 371 | Vector { _handler: UART4 }, | ||
| 372 | Vector { _handler: UART5 }, | ||
| 373 | Vector { _handler: TIM6_DAC }, | ||
| 374 | Vector { _handler: TIM7 }, | ||
| 375 | Vector { | ||
| 376 | _handler: DMA2_Channel1, | ||
| 377 | }, | ||
| 378 | Vector { | ||
| 379 | _handler: DMA2_Channel2, | ||
| 380 | }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel3, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel4, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel5, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DFSDM1_FLT0, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DFSDM1_FLT1, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT2, | ||
| 398 | }, | ||
| 399 | Vector { _handler: COMP }, | ||
| 400 | Vector { _handler: LPTIM1 }, | ||
| 401 | Vector { _handler: LPTIM2 }, | ||
| 402 | Vector { _handler: OTG_FS }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel6, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel7, | ||
| 408 | }, | ||
| 409 | Vector { _handler: LPUART1 }, | ||
| 410 | Vector { _handler: QUADSPI }, | ||
| 411 | Vector { _handler: I2C3_EV }, | ||
| 412 | Vector { _handler: I2C3_ER }, | ||
| 413 | Vector { _handler: SAI1 }, | ||
| 414 | Vector { _handler: SAI2 }, | ||
| 415 | Vector { _handler: SWPMI1 }, | ||
| 416 | Vector { _handler: TSC }, | ||
| 417 | Vector { _reserved: 0 }, | ||
| 418 | Vector { _reserved: 0 }, | ||
| 419 | Vector { _handler: RNG }, | ||
| 420 | Vector { _handler: FPU }, | ||
| 421 | ]; | ||
| 422 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 423 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 424 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 425 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l475vg.rs b/embassy-stm32/src/chip/stm32l475vg.rs index 774df143c..7a818be15 100644 --- a/embassy-stm32/src/chip/stm32l475vg.rs +++ b/embassy-stm32/src/chip/stm32l475vg.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,8 +14,412 @@ peripherals!( | |||
| 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, | 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, |
| 15 | WWDG | 15 | WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DFSDM1_FLT0 = 61, | ||
| 38 | DFSDM1_FLT1 = 62, | ||
| 39 | DFSDM1_FLT2 = 63, | ||
| 40 | DFSDM1_FLT3 = 42, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | EXTI0 = 6, | ||
| 56 | EXTI1 = 7, | ||
| 57 | EXTI15_10 = 40, | ||
| 58 | EXTI2 = 8, | ||
| 59 | EXTI3 = 9, | ||
| 60 | EXTI4 = 10, | ||
| 61 | EXTI9_5 = 23, | ||
| 62 | FLASH = 4, | ||
| 63 | FMC = 48, | ||
| 64 | FPU = 81, | ||
| 65 | I2C1_ER = 32, | ||
| 66 | I2C1_EV = 31, | ||
| 67 | I2C2_ER = 34, | ||
| 68 | I2C2_EV = 33, | ||
| 69 | I2C3_ER = 73, | ||
| 70 | I2C3_EV = 72, | ||
| 71 | LPTIM1 = 65, | ||
| 72 | LPTIM2 = 66, | ||
| 73 | LPUART1 = 70, | ||
| 74 | OTG_FS = 67, | ||
| 75 | PVD_PVM = 1, | ||
| 76 | QUADSPI = 71, | ||
| 77 | RCC = 5, | ||
| 78 | RNG = 80, | ||
| 79 | RTC_Alarm = 41, | ||
| 80 | RTC_WKUP = 3, | ||
| 81 | SAI1 = 74, | ||
| 82 | SAI2 = 75, | ||
| 83 | SDMMC1 = 49, | ||
| 84 | SPI1 = 35, | ||
| 85 | SPI2 = 36, | ||
| 86 | SPI3 = 51, | ||
| 87 | SWPMI1 = 76, | ||
| 88 | TAMP_STAMP = 2, | ||
| 89 | TIM1_BRK_TIM15 = 24, | ||
| 90 | TIM1_CC = 27, | ||
| 91 | TIM1_TRG_COM_TIM17 = 26, | ||
| 92 | TIM1_UP_TIM16 = 25, | ||
| 93 | TIM2 = 28, | ||
| 94 | TIM3 = 29, | ||
| 95 | TIM4 = 30, | ||
| 96 | TIM5 = 50, | ||
| 97 | TIM6_DAC = 54, | ||
| 98 | TIM7 = 55, | ||
| 99 | TIM8_BRK = 43, | ||
| 100 | TIM8_CC = 46, | ||
| 101 | TIM8_TRG_COM = 45, | ||
| 102 | TIM8_UP = 44, | ||
| 103 | TSC = 77, | ||
| 104 | UART4 = 52, | ||
| 105 | UART5 = 53, | ||
| 106 | USART1 = 37, | ||
| 107 | USART2 = 38, | ||
| 108 | USART3 = 39, | ||
| 109 | WWDG = 0, | ||
| 110 | } | ||
| 111 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 112 | #[inline(always)] | ||
| 113 | fn number(self) -> u16 { | ||
| 114 | self as u16 | ||
| 115 | } | ||
| 116 | } | ||
| 117 | |||
| 118 | declare!(ADC1_2); | ||
| 119 | declare!(ADC3); | ||
| 120 | declare!(CAN1_RX0); | ||
| 121 | declare!(CAN1_RX1); | ||
| 122 | declare!(CAN1_SCE); | ||
| 123 | declare!(CAN1_TX); | ||
| 124 | declare!(COMP); | ||
| 125 | declare!(DFSDM1_FLT0); | ||
| 126 | declare!(DFSDM1_FLT1); | ||
| 127 | declare!(DFSDM1_FLT2); | ||
| 128 | declare!(DFSDM1_FLT3); | ||
| 129 | declare!(DMA1_Channel1); | ||
| 130 | declare!(DMA1_Channel2); | ||
| 131 | declare!(DMA1_Channel3); | ||
| 132 | declare!(DMA1_Channel4); | ||
| 133 | declare!(DMA1_Channel5); | ||
| 134 | declare!(DMA1_Channel6); | ||
| 135 | declare!(DMA1_Channel7); | ||
| 136 | declare!(DMA2_Channel1); | ||
| 137 | declare!(DMA2_Channel2); | ||
| 138 | declare!(DMA2_Channel3); | ||
| 139 | declare!(DMA2_Channel4); | ||
| 140 | declare!(DMA2_Channel5); | ||
| 141 | declare!(DMA2_Channel6); | ||
| 142 | declare!(DMA2_Channel7); | ||
| 143 | declare!(EXTI0); | ||
| 144 | declare!(EXTI1); | ||
| 145 | declare!(EXTI15_10); | ||
| 146 | declare!(EXTI2); | ||
| 147 | declare!(EXTI3); | ||
| 148 | declare!(EXTI4); | ||
| 149 | declare!(EXTI9_5); | ||
| 150 | declare!(FLASH); | ||
| 151 | declare!(FMC); | ||
| 152 | declare!(FPU); | ||
| 153 | declare!(I2C1_ER); | ||
| 154 | declare!(I2C1_EV); | ||
| 155 | declare!(I2C2_ER); | ||
| 156 | declare!(I2C2_EV); | ||
| 157 | declare!(I2C3_ER); | ||
| 158 | declare!(I2C3_EV); | ||
| 159 | declare!(LPTIM1); | ||
| 160 | declare!(LPTIM2); | ||
| 161 | declare!(LPUART1); | ||
| 162 | declare!(OTG_FS); | ||
| 163 | declare!(PVD_PVM); | ||
| 164 | declare!(QUADSPI); | ||
| 165 | declare!(RCC); | ||
| 166 | declare!(RNG); | ||
| 167 | declare!(RTC_Alarm); | ||
| 168 | declare!(RTC_WKUP); | ||
| 169 | declare!(SAI1); | ||
| 170 | declare!(SAI2); | ||
| 171 | declare!(SDMMC1); | ||
| 172 | declare!(SPI1); | ||
| 173 | declare!(SPI2); | ||
| 174 | declare!(SPI3); | ||
| 175 | declare!(SWPMI1); | ||
| 176 | declare!(TAMP_STAMP); | ||
| 177 | declare!(TIM1_BRK_TIM15); | ||
| 178 | declare!(TIM1_CC); | ||
| 179 | declare!(TIM1_TRG_COM_TIM17); | ||
| 180 | declare!(TIM1_UP_TIM16); | ||
| 181 | declare!(TIM2); | ||
| 182 | declare!(TIM3); | ||
| 183 | declare!(TIM4); | ||
| 184 | declare!(TIM5); | ||
| 185 | declare!(TIM6_DAC); | ||
| 186 | declare!(TIM7); | ||
| 187 | declare!(TIM8_BRK); | ||
| 188 | declare!(TIM8_CC); | ||
| 189 | declare!(TIM8_TRG_COM); | ||
| 190 | declare!(TIM8_UP); | ||
| 191 | declare!(TSC); | ||
| 192 | declare!(UART4); | ||
| 193 | declare!(UART5); | ||
| 194 | declare!(USART1); | ||
| 195 | declare!(USART2); | ||
| 196 | declare!(USART3); | ||
| 197 | declare!(WWDG); | ||
| 198 | } | ||
| 199 | mod interrupt_vector { | ||
| 200 | extern "C" { | ||
| 201 | fn ADC1_2(); | ||
| 202 | fn ADC3(); | ||
| 203 | fn CAN1_RX0(); | ||
| 204 | fn CAN1_RX1(); | ||
| 205 | fn CAN1_SCE(); | ||
| 206 | fn CAN1_TX(); | ||
| 207 | fn COMP(); | ||
| 208 | fn DFSDM1_FLT0(); | ||
| 209 | fn DFSDM1_FLT1(); | ||
| 210 | fn DFSDM1_FLT2(); | ||
| 211 | fn DFSDM1_FLT3(); | ||
| 212 | fn DMA1_Channel1(); | ||
| 213 | fn DMA1_Channel2(); | ||
| 214 | fn DMA1_Channel3(); | ||
| 215 | fn DMA1_Channel4(); | ||
| 216 | fn DMA1_Channel5(); | ||
| 217 | fn DMA1_Channel6(); | ||
| 218 | fn DMA1_Channel7(); | ||
| 219 | fn DMA2_Channel1(); | ||
| 220 | fn DMA2_Channel2(); | ||
| 221 | fn DMA2_Channel3(); | ||
| 222 | fn DMA2_Channel4(); | ||
| 223 | fn DMA2_Channel5(); | ||
| 224 | fn DMA2_Channel6(); | ||
| 225 | fn DMA2_Channel7(); | ||
| 226 | fn EXTI0(); | ||
| 227 | fn EXTI1(); | ||
| 228 | fn EXTI15_10(); | ||
| 229 | fn EXTI2(); | ||
| 230 | fn EXTI3(); | ||
| 231 | fn EXTI4(); | ||
| 232 | fn EXTI9_5(); | ||
| 233 | fn FLASH(); | ||
| 234 | fn FMC(); | ||
| 235 | fn FPU(); | ||
| 236 | fn I2C1_ER(); | ||
| 237 | fn I2C1_EV(); | ||
| 238 | fn I2C2_ER(); | ||
| 239 | fn I2C2_EV(); | ||
| 240 | fn I2C3_ER(); | ||
| 241 | fn I2C3_EV(); | ||
| 242 | fn LPTIM1(); | ||
| 243 | fn LPTIM2(); | ||
| 244 | fn LPUART1(); | ||
| 245 | fn OTG_FS(); | ||
| 246 | fn PVD_PVM(); | ||
| 247 | fn QUADSPI(); | ||
| 248 | fn RCC(); | ||
| 249 | fn RNG(); | ||
| 250 | fn RTC_Alarm(); | ||
| 251 | fn RTC_WKUP(); | ||
| 252 | fn SAI1(); | ||
| 253 | fn SAI2(); | ||
| 254 | fn SDMMC1(); | ||
| 255 | fn SPI1(); | ||
| 256 | fn SPI2(); | ||
| 257 | fn SPI3(); | ||
| 258 | fn SWPMI1(); | ||
| 259 | fn TAMP_STAMP(); | ||
| 260 | fn TIM1_BRK_TIM15(); | ||
| 261 | fn TIM1_CC(); | ||
| 262 | fn TIM1_TRG_COM_TIM17(); | ||
| 263 | fn TIM1_UP_TIM16(); | ||
| 264 | fn TIM2(); | ||
| 265 | fn TIM3(); | ||
| 266 | fn TIM4(); | ||
| 267 | fn TIM5(); | ||
| 268 | fn TIM6_DAC(); | ||
| 269 | fn TIM7(); | ||
| 270 | fn TIM8_BRK(); | ||
| 271 | fn TIM8_CC(); | ||
| 272 | fn TIM8_TRG_COM(); | ||
| 273 | fn TIM8_UP(); | ||
| 274 | fn TSC(); | ||
| 275 | fn UART4(); | ||
| 276 | fn UART5(); | ||
| 277 | fn USART1(); | ||
| 278 | fn USART2(); | ||
| 279 | fn USART3(); | ||
| 280 | fn WWDG(); | ||
| 281 | } | ||
| 282 | pub union Vector { | ||
| 283 | _handler: unsafe extern "C" fn(), | ||
| 284 | _reserved: u32, | ||
| 285 | } | ||
| 286 | #[link_section = ".vector_table.interrupts"] | ||
| 287 | #[no_mangle] | ||
| 288 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 289 | Vector { _handler: WWDG }, | ||
| 290 | Vector { _handler: PVD_PVM }, | ||
| 291 | Vector { | ||
| 292 | _handler: TAMP_STAMP, | ||
| 293 | }, | ||
| 294 | Vector { _handler: RTC_WKUP }, | ||
| 295 | Vector { _handler: FLASH }, | ||
| 296 | Vector { _handler: RCC }, | ||
| 297 | Vector { _handler: EXTI0 }, | ||
| 298 | Vector { _handler: EXTI1 }, | ||
| 299 | Vector { _handler: EXTI2 }, | ||
| 300 | Vector { _handler: EXTI3 }, | ||
| 301 | Vector { _handler: EXTI4 }, | ||
| 302 | Vector { | ||
| 303 | _handler: DMA1_Channel1, | ||
| 304 | }, | ||
| 305 | Vector { | ||
| 306 | _handler: DMA1_Channel2, | ||
| 307 | }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel3, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel4, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel5, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel6, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel7, | ||
| 322 | }, | ||
| 323 | Vector { _handler: ADC1_2 }, | ||
| 324 | Vector { _handler: CAN1_TX }, | ||
| 325 | Vector { _handler: CAN1_RX0 }, | ||
| 326 | Vector { _handler: CAN1_RX1 }, | ||
| 327 | Vector { _handler: CAN1_SCE }, | ||
| 328 | Vector { _handler: EXTI9_5 }, | ||
| 329 | Vector { | ||
| 330 | _handler: TIM1_BRK_TIM15, | ||
| 331 | }, | ||
| 332 | Vector { | ||
| 333 | _handler: TIM1_UP_TIM16, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_TRG_COM_TIM17, | ||
| 337 | }, | ||
| 338 | Vector { _handler: TIM1_CC }, | ||
| 339 | Vector { _handler: TIM2 }, | ||
| 340 | Vector { _handler: TIM3 }, | ||
| 341 | Vector { _handler: TIM4 }, | ||
| 342 | Vector { _handler: I2C1_EV }, | ||
| 343 | Vector { _handler: I2C1_ER }, | ||
| 344 | Vector { _handler: I2C2_EV }, | ||
| 345 | Vector { _handler: I2C2_ER }, | ||
| 346 | Vector { _handler: SPI1 }, | ||
| 347 | Vector { _handler: SPI2 }, | ||
| 348 | Vector { _handler: USART1 }, | ||
| 349 | Vector { _handler: USART2 }, | ||
| 350 | Vector { _handler: USART3 }, | ||
| 351 | Vector { | ||
| 352 | _handler: EXTI15_10, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: RTC_Alarm, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: DFSDM1_FLT3, | ||
| 359 | }, | ||
| 360 | Vector { _handler: TIM8_BRK }, | ||
| 361 | Vector { _handler: TIM8_UP }, | ||
| 362 | Vector { | ||
| 363 | _handler: TIM8_TRG_COM, | ||
| 364 | }, | ||
| 365 | Vector { _handler: TIM8_CC }, | ||
| 366 | Vector { _handler: ADC3 }, | ||
| 367 | Vector { _handler: FMC }, | ||
| 368 | Vector { _handler: SDMMC1 }, | ||
| 369 | Vector { _handler: TIM5 }, | ||
| 370 | Vector { _handler: SPI3 }, | ||
| 371 | Vector { _handler: UART4 }, | ||
| 372 | Vector { _handler: UART5 }, | ||
| 373 | Vector { _handler: TIM6_DAC }, | ||
| 374 | Vector { _handler: TIM7 }, | ||
| 375 | Vector { | ||
| 376 | _handler: DMA2_Channel1, | ||
| 377 | }, | ||
| 378 | Vector { | ||
| 379 | _handler: DMA2_Channel2, | ||
| 380 | }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel3, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel4, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel5, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DFSDM1_FLT0, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DFSDM1_FLT1, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT2, | ||
| 398 | }, | ||
| 399 | Vector { _handler: COMP }, | ||
| 400 | Vector { _handler: LPTIM1 }, | ||
| 401 | Vector { _handler: LPTIM2 }, | ||
| 402 | Vector { _handler: OTG_FS }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel6, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel7, | ||
| 408 | }, | ||
| 409 | Vector { _handler: LPUART1 }, | ||
| 410 | Vector { _handler: QUADSPI }, | ||
| 411 | Vector { _handler: I2C3_EV }, | ||
| 412 | Vector { _handler: I2C3_ER }, | ||
| 413 | Vector { _handler: SAI1 }, | ||
| 414 | Vector { _handler: SAI2 }, | ||
| 415 | Vector { _handler: SWPMI1 }, | ||
| 416 | Vector { _handler: TSC }, | ||
| 417 | Vector { _reserved: 0 }, | ||
| 418 | Vector { _reserved: 0 }, | ||
| 419 | Vector { _handler: RNG }, | ||
| 420 | Vector { _handler: FPU }, | ||
| 421 | ]; | ||
| 422 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 423 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 424 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 425 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l476je.rs b/embassy-stm32/src/chip/stm32l476je.rs index ce07466a5..d5b271290 100644 --- a/embassy-stm32/src/chip/stm32l476je.rs +++ b/embassy-stm32/src/chip/stm32l476je.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,8 +14,415 @@ peripherals!( | |||
| 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, | 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, |
| 15 | USB_OTG_FS, WWDG | 15 | USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DFSDM1_FLT0 = 61, | ||
| 38 | DFSDM1_FLT1 = 62, | ||
| 39 | DFSDM1_FLT2 = 63, | ||
| 40 | DFSDM1_FLT3 = 42, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | EXTI0 = 6, | ||
| 56 | EXTI1 = 7, | ||
| 57 | EXTI15_10 = 40, | ||
| 58 | EXTI2 = 8, | ||
| 59 | EXTI3 = 9, | ||
| 60 | EXTI4 = 10, | ||
| 61 | EXTI9_5 = 23, | ||
| 62 | FLASH = 4, | ||
| 63 | FMC = 48, | ||
| 64 | FPU = 81, | ||
| 65 | I2C1_ER = 32, | ||
| 66 | I2C1_EV = 31, | ||
| 67 | I2C2_ER = 34, | ||
| 68 | I2C2_EV = 33, | ||
| 69 | I2C3_ER = 73, | ||
| 70 | I2C3_EV = 72, | ||
| 71 | LCD = 78, | ||
| 72 | LPTIM1 = 65, | ||
| 73 | LPTIM2 = 66, | ||
| 74 | LPUART1 = 70, | ||
| 75 | OTG_FS = 67, | ||
| 76 | PVD_PVM = 1, | ||
| 77 | QUADSPI = 71, | ||
| 78 | RCC = 5, | ||
| 79 | RNG = 80, | ||
| 80 | RTC_Alarm = 41, | ||
| 81 | RTC_WKUP = 3, | ||
| 82 | SAI1 = 74, | ||
| 83 | SAI2 = 75, | ||
| 84 | SDMMC1 = 49, | ||
| 85 | SPI1 = 35, | ||
| 86 | SPI2 = 36, | ||
| 87 | SPI3 = 51, | ||
| 88 | SWPMI1 = 76, | ||
| 89 | TAMP_STAMP = 2, | ||
| 90 | TIM1_BRK_TIM15 = 24, | ||
| 91 | TIM1_CC = 27, | ||
| 92 | TIM1_TRG_COM_TIM17 = 26, | ||
| 93 | TIM1_UP_TIM16 = 25, | ||
| 94 | TIM2 = 28, | ||
| 95 | TIM3 = 29, | ||
| 96 | TIM4 = 30, | ||
| 97 | TIM5 = 50, | ||
| 98 | TIM6_DAC = 54, | ||
| 99 | TIM7 = 55, | ||
| 100 | TIM8_BRK = 43, | ||
| 101 | TIM8_CC = 46, | ||
| 102 | TIM8_TRG_COM = 45, | ||
| 103 | TIM8_UP = 44, | ||
| 104 | TSC = 77, | ||
| 105 | UART4 = 52, | ||
| 106 | UART5 = 53, | ||
| 107 | USART1 = 37, | ||
| 108 | USART2 = 38, | ||
| 109 | USART3 = 39, | ||
| 110 | WWDG = 0, | ||
| 111 | } | ||
| 112 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 113 | #[inline(always)] | ||
| 114 | fn number(self) -> u16 { | ||
| 115 | self as u16 | ||
| 116 | } | ||
| 117 | } | ||
| 118 | |||
| 119 | declare!(ADC1_2); | ||
| 120 | declare!(ADC3); | ||
| 121 | declare!(CAN1_RX0); | ||
| 122 | declare!(CAN1_RX1); | ||
| 123 | declare!(CAN1_SCE); | ||
| 124 | declare!(CAN1_TX); | ||
| 125 | declare!(COMP); | ||
| 126 | declare!(DFSDM1_FLT0); | ||
| 127 | declare!(DFSDM1_FLT1); | ||
| 128 | declare!(DFSDM1_FLT2); | ||
| 129 | declare!(DFSDM1_FLT3); | ||
| 130 | declare!(DMA1_Channel1); | ||
| 131 | declare!(DMA1_Channel2); | ||
| 132 | declare!(DMA1_Channel3); | ||
| 133 | declare!(DMA1_Channel4); | ||
| 134 | declare!(DMA1_Channel5); | ||
| 135 | declare!(DMA1_Channel6); | ||
| 136 | declare!(DMA1_Channel7); | ||
| 137 | declare!(DMA2_Channel1); | ||
| 138 | declare!(DMA2_Channel2); | ||
| 139 | declare!(DMA2_Channel3); | ||
| 140 | declare!(DMA2_Channel4); | ||
| 141 | declare!(DMA2_Channel5); | ||
| 142 | declare!(DMA2_Channel6); | ||
| 143 | declare!(DMA2_Channel7); | ||
| 144 | declare!(EXTI0); | ||
| 145 | declare!(EXTI1); | ||
| 146 | declare!(EXTI15_10); | ||
| 147 | declare!(EXTI2); | ||
| 148 | declare!(EXTI3); | ||
| 149 | declare!(EXTI4); | ||
| 150 | declare!(EXTI9_5); | ||
| 151 | declare!(FLASH); | ||
| 152 | declare!(FMC); | ||
| 153 | declare!(FPU); | ||
| 154 | declare!(I2C1_ER); | ||
| 155 | declare!(I2C1_EV); | ||
| 156 | declare!(I2C2_ER); | ||
| 157 | declare!(I2C2_EV); | ||
| 158 | declare!(I2C3_ER); | ||
| 159 | declare!(I2C3_EV); | ||
| 160 | declare!(LCD); | ||
| 161 | declare!(LPTIM1); | ||
| 162 | declare!(LPTIM2); | ||
| 163 | declare!(LPUART1); | ||
| 164 | declare!(OTG_FS); | ||
| 165 | declare!(PVD_PVM); | ||
| 166 | declare!(QUADSPI); | ||
| 167 | declare!(RCC); | ||
| 168 | declare!(RNG); | ||
| 169 | declare!(RTC_Alarm); | ||
| 170 | declare!(RTC_WKUP); | ||
| 171 | declare!(SAI1); | ||
| 172 | declare!(SAI2); | ||
| 173 | declare!(SDMMC1); | ||
| 174 | declare!(SPI1); | ||
| 175 | declare!(SPI2); | ||
| 176 | declare!(SPI3); | ||
| 177 | declare!(SWPMI1); | ||
| 178 | declare!(TAMP_STAMP); | ||
| 179 | declare!(TIM1_BRK_TIM15); | ||
| 180 | declare!(TIM1_CC); | ||
| 181 | declare!(TIM1_TRG_COM_TIM17); | ||
| 182 | declare!(TIM1_UP_TIM16); | ||
| 183 | declare!(TIM2); | ||
| 184 | declare!(TIM3); | ||
| 185 | declare!(TIM4); | ||
| 186 | declare!(TIM5); | ||
| 187 | declare!(TIM6_DAC); | ||
| 188 | declare!(TIM7); | ||
| 189 | declare!(TIM8_BRK); | ||
| 190 | declare!(TIM8_CC); | ||
| 191 | declare!(TIM8_TRG_COM); | ||
| 192 | declare!(TIM8_UP); | ||
| 193 | declare!(TSC); | ||
| 194 | declare!(UART4); | ||
| 195 | declare!(UART5); | ||
| 196 | declare!(USART1); | ||
| 197 | declare!(USART2); | ||
| 198 | declare!(USART3); | ||
| 199 | declare!(WWDG); | ||
| 200 | } | ||
| 201 | mod interrupt_vector { | ||
| 202 | extern "C" { | ||
| 203 | fn ADC1_2(); | ||
| 204 | fn ADC3(); | ||
| 205 | fn CAN1_RX0(); | ||
| 206 | fn CAN1_RX1(); | ||
| 207 | fn CAN1_SCE(); | ||
| 208 | fn CAN1_TX(); | ||
| 209 | fn COMP(); | ||
| 210 | fn DFSDM1_FLT0(); | ||
| 211 | fn DFSDM1_FLT1(); | ||
| 212 | fn DFSDM1_FLT2(); | ||
| 213 | fn DFSDM1_FLT3(); | ||
| 214 | fn DMA1_Channel1(); | ||
| 215 | fn DMA1_Channel2(); | ||
| 216 | fn DMA1_Channel3(); | ||
| 217 | fn DMA1_Channel4(); | ||
| 218 | fn DMA1_Channel5(); | ||
| 219 | fn DMA1_Channel6(); | ||
| 220 | fn DMA1_Channel7(); | ||
| 221 | fn DMA2_Channel1(); | ||
| 222 | fn DMA2_Channel2(); | ||
| 223 | fn DMA2_Channel3(); | ||
| 224 | fn DMA2_Channel4(); | ||
| 225 | fn DMA2_Channel5(); | ||
| 226 | fn DMA2_Channel6(); | ||
| 227 | fn DMA2_Channel7(); | ||
| 228 | fn EXTI0(); | ||
| 229 | fn EXTI1(); | ||
| 230 | fn EXTI15_10(); | ||
| 231 | fn EXTI2(); | ||
| 232 | fn EXTI3(); | ||
| 233 | fn EXTI4(); | ||
| 234 | fn EXTI9_5(); | ||
| 235 | fn FLASH(); | ||
| 236 | fn FMC(); | ||
| 237 | fn FPU(); | ||
| 238 | fn I2C1_ER(); | ||
| 239 | fn I2C1_EV(); | ||
| 240 | fn I2C2_ER(); | ||
| 241 | fn I2C2_EV(); | ||
| 242 | fn I2C3_ER(); | ||
| 243 | fn I2C3_EV(); | ||
| 244 | fn LCD(); | ||
| 245 | fn LPTIM1(); | ||
| 246 | fn LPTIM2(); | ||
| 247 | fn LPUART1(); | ||
| 248 | fn OTG_FS(); | ||
| 249 | fn PVD_PVM(); | ||
| 250 | fn QUADSPI(); | ||
| 251 | fn RCC(); | ||
| 252 | fn RNG(); | ||
| 253 | fn RTC_Alarm(); | ||
| 254 | fn RTC_WKUP(); | ||
| 255 | fn SAI1(); | ||
| 256 | fn SAI2(); | ||
| 257 | fn SDMMC1(); | ||
| 258 | fn SPI1(); | ||
| 259 | fn SPI2(); | ||
| 260 | fn SPI3(); | ||
| 261 | fn SWPMI1(); | ||
| 262 | fn TAMP_STAMP(); | ||
| 263 | fn TIM1_BRK_TIM15(); | ||
| 264 | fn TIM1_CC(); | ||
| 265 | fn TIM1_TRG_COM_TIM17(); | ||
| 266 | fn TIM1_UP_TIM16(); | ||
| 267 | fn TIM2(); | ||
| 268 | fn TIM3(); | ||
| 269 | fn TIM4(); | ||
| 270 | fn TIM5(); | ||
| 271 | fn TIM6_DAC(); | ||
| 272 | fn TIM7(); | ||
| 273 | fn TIM8_BRK(); | ||
| 274 | fn TIM8_CC(); | ||
| 275 | fn TIM8_TRG_COM(); | ||
| 276 | fn TIM8_UP(); | ||
| 277 | fn TSC(); | ||
| 278 | fn UART4(); | ||
| 279 | fn UART5(); | ||
| 280 | fn USART1(); | ||
| 281 | fn USART2(); | ||
| 282 | fn USART3(); | ||
| 283 | fn WWDG(); | ||
| 284 | } | ||
| 285 | pub union Vector { | ||
| 286 | _handler: unsafe extern "C" fn(), | ||
| 287 | _reserved: u32, | ||
| 288 | } | ||
| 289 | #[link_section = ".vector_table.interrupts"] | ||
| 290 | #[no_mangle] | ||
| 291 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 292 | Vector { _handler: WWDG }, | ||
| 293 | Vector { _handler: PVD_PVM }, | ||
| 294 | Vector { | ||
| 295 | _handler: TAMP_STAMP, | ||
| 296 | }, | ||
| 297 | Vector { _handler: RTC_WKUP }, | ||
| 298 | Vector { _handler: FLASH }, | ||
| 299 | Vector { _handler: RCC }, | ||
| 300 | Vector { _handler: EXTI0 }, | ||
| 301 | Vector { _handler: EXTI1 }, | ||
| 302 | Vector { _handler: EXTI2 }, | ||
| 303 | Vector { _handler: EXTI3 }, | ||
| 304 | Vector { _handler: EXTI4 }, | ||
| 305 | Vector { | ||
| 306 | _handler: DMA1_Channel1, | ||
| 307 | }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel2, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel3, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel4, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel5, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel6, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA1_Channel7, | ||
| 325 | }, | ||
| 326 | Vector { _handler: ADC1_2 }, | ||
| 327 | Vector { _handler: CAN1_TX }, | ||
| 328 | Vector { _handler: CAN1_RX0 }, | ||
| 329 | Vector { _handler: CAN1_RX1 }, | ||
| 330 | Vector { _handler: CAN1_SCE }, | ||
| 331 | Vector { _handler: EXTI9_5 }, | ||
| 332 | Vector { | ||
| 333 | _handler: TIM1_BRK_TIM15, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_UP_TIM16, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: TIM1_TRG_COM_TIM17, | ||
| 340 | }, | ||
| 341 | Vector { _handler: TIM1_CC }, | ||
| 342 | Vector { _handler: TIM2 }, | ||
| 343 | Vector { _handler: TIM3 }, | ||
| 344 | Vector { _handler: TIM4 }, | ||
| 345 | Vector { _handler: I2C1_EV }, | ||
| 346 | Vector { _handler: I2C1_ER }, | ||
| 347 | Vector { _handler: I2C2_EV }, | ||
| 348 | Vector { _handler: I2C2_ER }, | ||
| 349 | Vector { _handler: SPI1 }, | ||
| 350 | Vector { _handler: SPI2 }, | ||
| 351 | Vector { _handler: USART1 }, | ||
| 352 | Vector { _handler: USART2 }, | ||
| 353 | Vector { _handler: USART3 }, | ||
| 354 | Vector { | ||
| 355 | _handler: EXTI15_10, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: RTC_Alarm, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: DFSDM1_FLT3, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM8_BRK }, | ||
| 364 | Vector { _handler: TIM8_UP }, | ||
| 365 | Vector { | ||
| 366 | _handler: TIM8_TRG_COM, | ||
| 367 | }, | ||
| 368 | Vector { _handler: TIM8_CC }, | ||
| 369 | Vector { _handler: ADC3 }, | ||
| 370 | Vector { _handler: FMC }, | ||
| 371 | Vector { _handler: SDMMC1 }, | ||
| 372 | Vector { _handler: TIM5 }, | ||
| 373 | Vector { _handler: SPI3 }, | ||
| 374 | Vector { _handler: UART4 }, | ||
| 375 | Vector { _handler: UART5 }, | ||
| 376 | Vector { _handler: TIM6_DAC }, | ||
| 377 | Vector { _handler: TIM7 }, | ||
| 378 | Vector { | ||
| 379 | _handler: DMA2_Channel1, | ||
| 380 | }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel2, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel3, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel4, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DMA2_Channel5, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DFSDM1_FLT0, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT1, | ||
| 398 | }, | ||
| 399 | Vector { | ||
| 400 | _handler: DFSDM1_FLT2, | ||
| 401 | }, | ||
| 402 | Vector { _handler: COMP }, | ||
| 403 | Vector { _handler: LPTIM1 }, | ||
| 404 | Vector { _handler: LPTIM2 }, | ||
| 405 | Vector { _handler: OTG_FS }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel6, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel7, | ||
| 411 | }, | ||
| 412 | Vector { _handler: LPUART1 }, | ||
| 413 | Vector { _handler: QUADSPI }, | ||
| 414 | Vector { _handler: I2C3_EV }, | ||
| 415 | Vector { _handler: I2C3_ER }, | ||
| 416 | Vector { _handler: SAI1 }, | ||
| 417 | Vector { _handler: SAI2 }, | ||
| 418 | Vector { _handler: SWPMI1 }, | ||
| 419 | Vector { _handler: TSC }, | ||
| 420 | Vector { _handler: LCD }, | ||
| 421 | Vector { _reserved: 0 }, | ||
| 422 | Vector { _handler: RNG }, | ||
| 423 | Vector { _handler: FPU }, | ||
| 424 | ]; | ||
| 425 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 426 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 427 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 428 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l476jg.rs b/embassy-stm32/src/chip/stm32l476jg.rs index ce07466a5..d5b271290 100644 --- a/embassy-stm32/src/chip/stm32l476jg.rs +++ b/embassy-stm32/src/chip/stm32l476jg.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,8 +14,415 @@ peripherals!( | |||
| 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, | 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, |
| 15 | USB_OTG_FS, WWDG | 15 | USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DFSDM1_FLT0 = 61, | ||
| 38 | DFSDM1_FLT1 = 62, | ||
| 39 | DFSDM1_FLT2 = 63, | ||
| 40 | DFSDM1_FLT3 = 42, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | EXTI0 = 6, | ||
| 56 | EXTI1 = 7, | ||
| 57 | EXTI15_10 = 40, | ||
| 58 | EXTI2 = 8, | ||
| 59 | EXTI3 = 9, | ||
| 60 | EXTI4 = 10, | ||
| 61 | EXTI9_5 = 23, | ||
| 62 | FLASH = 4, | ||
| 63 | FMC = 48, | ||
| 64 | FPU = 81, | ||
| 65 | I2C1_ER = 32, | ||
| 66 | I2C1_EV = 31, | ||
| 67 | I2C2_ER = 34, | ||
| 68 | I2C2_EV = 33, | ||
| 69 | I2C3_ER = 73, | ||
| 70 | I2C3_EV = 72, | ||
| 71 | LCD = 78, | ||
| 72 | LPTIM1 = 65, | ||
| 73 | LPTIM2 = 66, | ||
| 74 | LPUART1 = 70, | ||
| 75 | OTG_FS = 67, | ||
| 76 | PVD_PVM = 1, | ||
| 77 | QUADSPI = 71, | ||
| 78 | RCC = 5, | ||
| 79 | RNG = 80, | ||
| 80 | RTC_Alarm = 41, | ||
| 81 | RTC_WKUP = 3, | ||
| 82 | SAI1 = 74, | ||
| 83 | SAI2 = 75, | ||
| 84 | SDMMC1 = 49, | ||
| 85 | SPI1 = 35, | ||
| 86 | SPI2 = 36, | ||
| 87 | SPI3 = 51, | ||
| 88 | SWPMI1 = 76, | ||
| 89 | TAMP_STAMP = 2, | ||
| 90 | TIM1_BRK_TIM15 = 24, | ||
| 91 | TIM1_CC = 27, | ||
| 92 | TIM1_TRG_COM_TIM17 = 26, | ||
| 93 | TIM1_UP_TIM16 = 25, | ||
| 94 | TIM2 = 28, | ||
| 95 | TIM3 = 29, | ||
| 96 | TIM4 = 30, | ||
| 97 | TIM5 = 50, | ||
| 98 | TIM6_DAC = 54, | ||
| 99 | TIM7 = 55, | ||
| 100 | TIM8_BRK = 43, | ||
| 101 | TIM8_CC = 46, | ||
| 102 | TIM8_TRG_COM = 45, | ||
| 103 | TIM8_UP = 44, | ||
| 104 | TSC = 77, | ||
| 105 | UART4 = 52, | ||
| 106 | UART5 = 53, | ||
| 107 | USART1 = 37, | ||
| 108 | USART2 = 38, | ||
| 109 | USART3 = 39, | ||
| 110 | WWDG = 0, | ||
| 111 | } | ||
| 112 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 113 | #[inline(always)] | ||
| 114 | fn number(self) -> u16 { | ||
| 115 | self as u16 | ||
| 116 | } | ||
| 117 | } | ||
| 118 | |||
| 119 | declare!(ADC1_2); | ||
| 120 | declare!(ADC3); | ||
| 121 | declare!(CAN1_RX0); | ||
| 122 | declare!(CAN1_RX1); | ||
| 123 | declare!(CAN1_SCE); | ||
| 124 | declare!(CAN1_TX); | ||
| 125 | declare!(COMP); | ||
| 126 | declare!(DFSDM1_FLT0); | ||
| 127 | declare!(DFSDM1_FLT1); | ||
| 128 | declare!(DFSDM1_FLT2); | ||
| 129 | declare!(DFSDM1_FLT3); | ||
| 130 | declare!(DMA1_Channel1); | ||
| 131 | declare!(DMA1_Channel2); | ||
| 132 | declare!(DMA1_Channel3); | ||
| 133 | declare!(DMA1_Channel4); | ||
| 134 | declare!(DMA1_Channel5); | ||
| 135 | declare!(DMA1_Channel6); | ||
| 136 | declare!(DMA1_Channel7); | ||
| 137 | declare!(DMA2_Channel1); | ||
| 138 | declare!(DMA2_Channel2); | ||
| 139 | declare!(DMA2_Channel3); | ||
| 140 | declare!(DMA2_Channel4); | ||
| 141 | declare!(DMA2_Channel5); | ||
| 142 | declare!(DMA2_Channel6); | ||
| 143 | declare!(DMA2_Channel7); | ||
| 144 | declare!(EXTI0); | ||
| 145 | declare!(EXTI1); | ||
| 146 | declare!(EXTI15_10); | ||
| 147 | declare!(EXTI2); | ||
| 148 | declare!(EXTI3); | ||
| 149 | declare!(EXTI4); | ||
| 150 | declare!(EXTI9_5); | ||
| 151 | declare!(FLASH); | ||
| 152 | declare!(FMC); | ||
| 153 | declare!(FPU); | ||
| 154 | declare!(I2C1_ER); | ||
| 155 | declare!(I2C1_EV); | ||
| 156 | declare!(I2C2_ER); | ||
| 157 | declare!(I2C2_EV); | ||
| 158 | declare!(I2C3_ER); | ||
| 159 | declare!(I2C3_EV); | ||
| 160 | declare!(LCD); | ||
| 161 | declare!(LPTIM1); | ||
| 162 | declare!(LPTIM2); | ||
| 163 | declare!(LPUART1); | ||
| 164 | declare!(OTG_FS); | ||
| 165 | declare!(PVD_PVM); | ||
| 166 | declare!(QUADSPI); | ||
| 167 | declare!(RCC); | ||
| 168 | declare!(RNG); | ||
| 169 | declare!(RTC_Alarm); | ||
| 170 | declare!(RTC_WKUP); | ||
| 171 | declare!(SAI1); | ||
| 172 | declare!(SAI2); | ||
| 173 | declare!(SDMMC1); | ||
| 174 | declare!(SPI1); | ||
| 175 | declare!(SPI2); | ||
| 176 | declare!(SPI3); | ||
| 177 | declare!(SWPMI1); | ||
| 178 | declare!(TAMP_STAMP); | ||
| 179 | declare!(TIM1_BRK_TIM15); | ||
| 180 | declare!(TIM1_CC); | ||
| 181 | declare!(TIM1_TRG_COM_TIM17); | ||
| 182 | declare!(TIM1_UP_TIM16); | ||
| 183 | declare!(TIM2); | ||
| 184 | declare!(TIM3); | ||
| 185 | declare!(TIM4); | ||
| 186 | declare!(TIM5); | ||
| 187 | declare!(TIM6_DAC); | ||
| 188 | declare!(TIM7); | ||
| 189 | declare!(TIM8_BRK); | ||
| 190 | declare!(TIM8_CC); | ||
| 191 | declare!(TIM8_TRG_COM); | ||
| 192 | declare!(TIM8_UP); | ||
| 193 | declare!(TSC); | ||
| 194 | declare!(UART4); | ||
| 195 | declare!(UART5); | ||
| 196 | declare!(USART1); | ||
| 197 | declare!(USART2); | ||
| 198 | declare!(USART3); | ||
| 199 | declare!(WWDG); | ||
| 200 | } | ||
| 201 | mod interrupt_vector { | ||
| 202 | extern "C" { | ||
| 203 | fn ADC1_2(); | ||
| 204 | fn ADC3(); | ||
| 205 | fn CAN1_RX0(); | ||
| 206 | fn CAN1_RX1(); | ||
| 207 | fn CAN1_SCE(); | ||
| 208 | fn CAN1_TX(); | ||
| 209 | fn COMP(); | ||
| 210 | fn DFSDM1_FLT0(); | ||
| 211 | fn DFSDM1_FLT1(); | ||
| 212 | fn DFSDM1_FLT2(); | ||
| 213 | fn DFSDM1_FLT3(); | ||
| 214 | fn DMA1_Channel1(); | ||
| 215 | fn DMA1_Channel2(); | ||
| 216 | fn DMA1_Channel3(); | ||
| 217 | fn DMA1_Channel4(); | ||
| 218 | fn DMA1_Channel5(); | ||
| 219 | fn DMA1_Channel6(); | ||
| 220 | fn DMA1_Channel7(); | ||
| 221 | fn DMA2_Channel1(); | ||
| 222 | fn DMA2_Channel2(); | ||
| 223 | fn DMA2_Channel3(); | ||
| 224 | fn DMA2_Channel4(); | ||
| 225 | fn DMA2_Channel5(); | ||
| 226 | fn DMA2_Channel6(); | ||
| 227 | fn DMA2_Channel7(); | ||
| 228 | fn EXTI0(); | ||
| 229 | fn EXTI1(); | ||
| 230 | fn EXTI15_10(); | ||
| 231 | fn EXTI2(); | ||
| 232 | fn EXTI3(); | ||
| 233 | fn EXTI4(); | ||
| 234 | fn EXTI9_5(); | ||
| 235 | fn FLASH(); | ||
| 236 | fn FMC(); | ||
| 237 | fn FPU(); | ||
| 238 | fn I2C1_ER(); | ||
| 239 | fn I2C1_EV(); | ||
| 240 | fn I2C2_ER(); | ||
| 241 | fn I2C2_EV(); | ||
| 242 | fn I2C3_ER(); | ||
| 243 | fn I2C3_EV(); | ||
| 244 | fn LCD(); | ||
| 245 | fn LPTIM1(); | ||
| 246 | fn LPTIM2(); | ||
| 247 | fn LPUART1(); | ||
| 248 | fn OTG_FS(); | ||
| 249 | fn PVD_PVM(); | ||
| 250 | fn QUADSPI(); | ||
| 251 | fn RCC(); | ||
| 252 | fn RNG(); | ||
| 253 | fn RTC_Alarm(); | ||
| 254 | fn RTC_WKUP(); | ||
| 255 | fn SAI1(); | ||
| 256 | fn SAI2(); | ||
| 257 | fn SDMMC1(); | ||
| 258 | fn SPI1(); | ||
| 259 | fn SPI2(); | ||
| 260 | fn SPI3(); | ||
| 261 | fn SWPMI1(); | ||
| 262 | fn TAMP_STAMP(); | ||
| 263 | fn TIM1_BRK_TIM15(); | ||
| 264 | fn TIM1_CC(); | ||
| 265 | fn TIM1_TRG_COM_TIM17(); | ||
| 266 | fn TIM1_UP_TIM16(); | ||
| 267 | fn TIM2(); | ||
| 268 | fn TIM3(); | ||
| 269 | fn TIM4(); | ||
| 270 | fn TIM5(); | ||
| 271 | fn TIM6_DAC(); | ||
| 272 | fn TIM7(); | ||
| 273 | fn TIM8_BRK(); | ||
| 274 | fn TIM8_CC(); | ||
| 275 | fn TIM8_TRG_COM(); | ||
| 276 | fn TIM8_UP(); | ||
| 277 | fn TSC(); | ||
| 278 | fn UART4(); | ||
| 279 | fn UART5(); | ||
| 280 | fn USART1(); | ||
| 281 | fn USART2(); | ||
| 282 | fn USART3(); | ||
| 283 | fn WWDG(); | ||
| 284 | } | ||
| 285 | pub union Vector { | ||
| 286 | _handler: unsafe extern "C" fn(), | ||
| 287 | _reserved: u32, | ||
| 288 | } | ||
| 289 | #[link_section = ".vector_table.interrupts"] | ||
| 290 | #[no_mangle] | ||
| 291 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 292 | Vector { _handler: WWDG }, | ||
| 293 | Vector { _handler: PVD_PVM }, | ||
| 294 | Vector { | ||
| 295 | _handler: TAMP_STAMP, | ||
| 296 | }, | ||
| 297 | Vector { _handler: RTC_WKUP }, | ||
| 298 | Vector { _handler: FLASH }, | ||
| 299 | Vector { _handler: RCC }, | ||
| 300 | Vector { _handler: EXTI0 }, | ||
| 301 | Vector { _handler: EXTI1 }, | ||
| 302 | Vector { _handler: EXTI2 }, | ||
| 303 | Vector { _handler: EXTI3 }, | ||
| 304 | Vector { _handler: EXTI4 }, | ||
| 305 | Vector { | ||
| 306 | _handler: DMA1_Channel1, | ||
| 307 | }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel2, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel3, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel4, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel5, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel6, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA1_Channel7, | ||
| 325 | }, | ||
| 326 | Vector { _handler: ADC1_2 }, | ||
| 327 | Vector { _handler: CAN1_TX }, | ||
| 328 | Vector { _handler: CAN1_RX0 }, | ||
| 329 | Vector { _handler: CAN1_RX1 }, | ||
| 330 | Vector { _handler: CAN1_SCE }, | ||
| 331 | Vector { _handler: EXTI9_5 }, | ||
| 332 | Vector { | ||
| 333 | _handler: TIM1_BRK_TIM15, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_UP_TIM16, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: TIM1_TRG_COM_TIM17, | ||
| 340 | }, | ||
| 341 | Vector { _handler: TIM1_CC }, | ||
| 342 | Vector { _handler: TIM2 }, | ||
| 343 | Vector { _handler: TIM3 }, | ||
| 344 | Vector { _handler: TIM4 }, | ||
| 345 | Vector { _handler: I2C1_EV }, | ||
| 346 | Vector { _handler: I2C1_ER }, | ||
| 347 | Vector { _handler: I2C2_EV }, | ||
| 348 | Vector { _handler: I2C2_ER }, | ||
| 349 | Vector { _handler: SPI1 }, | ||
| 350 | Vector { _handler: SPI2 }, | ||
| 351 | Vector { _handler: USART1 }, | ||
| 352 | Vector { _handler: USART2 }, | ||
| 353 | Vector { _handler: USART3 }, | ||
| 354 | Vector { | ||
| 355 | _handler: EXTI15_10, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: RTC_Alarm, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: DFSDM1_FLT3, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM8_BRK }, | ||
| 364 | Vector { _handler: TIM8_UP }, | ||
| 365 | Vector { | ||
| 366 | _handler: TIM8_TRG_COM, | ||
| 367 | }, | ||
| 368 | Vector { _handler: TIM8_CC }, | ||
| 369 | Vector { _handler: ADC3 }, | ||
| 370 | Vector { _handler: FMC }, | ||
| 371 | Vector { _handler: SDMMC1 }, | ||
| 372 | Vector { _handler: TIM5 }, | ||
| 373 | Vector { _handler: SPI3 }, | ||
| 374 | Vector { _handler: UART4 }, | ||
| 375 | Vector { _handler: UART5 }, | ||
| 376 | Vector { _handler: TIM6_DAC }, | ||
| 377 | Vector { _handler: TIM7 }, | ||
| 378 | Vector { | ||
| 379 | _handler: DMA2_Channel1, | ||
| 380 | }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel2, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel3, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel4, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DMA2_Channel5, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DFSDM1_FLT0, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT1, | ||
| 398 | }, | ||
| 399 | Vector { | ||
| 400 | _handler: DFSDM1_FLT2, | ||
| 401 | }, | ||
| 402 | Vector { _handler: COMP }, | ||
| 403 | Vector { _handler: LPTIM1 }, | ||
| 404 | Vector { _handler: LPTIM2 }, | ||
| 405 | Vector { _handler: OTG_FS }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel6, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel7, | ||
| 411 | }, | ||
| 412 | Vector { _handler: LPUART1 }, | ||
| 413 | Vector { _handler: QUADSPI }, | ||
| 414 | Vector { _handler: I2C3_EV }, | ||
| 415 | Vector { _handler: I2C3_ER }, | ||
| 416 | Vector { _handler: SAI1 }, | ||
| 417 | Vector { _handler: SAI2 }, | ||
| 418 | Vector { _handler: SWPMI1 }, | ||
| 419 | Vector { _handler: TSC }, | ||
| 420 | Vector { _handler: LCD }, | ||
| 421 | Vector { _reserved: 0 }, | ||
| 422 | Vector { _handler: RNG }, | ||
| 423 | Vector { _handler: FPU }, | ||
| 424 | ]; | ||
| 425 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 426 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 427 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 428 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l476me.rs b/embassy-stm32/src/chip/stm32l476me.rs index ce07466a5..d5b271290 100644 --- a/embassy-stm32/src/chip/stm32l476me.rs +++ b/embassy-stm32/src/chip/stm32l476me.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,8 +14,415 @@ peripherals!( | |||
| 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, | 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, |
| 15 | USB_OTG_FS, WWDG | 15 | USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DFSDM1_FLT0 = 61, | ||
| 38 | DFSDM1_FLT1 = 62, | ||
| 39 | DFSDM1_FLT2 = 63, | ||
| 40 | DFSDM1_FLT3 = 42, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | EXTI0 = 6, | ||
| 56 | EXTI1 = 7, | ||
| 57 | EXTI15_10 = 40, | ||
| 58 | EXTI2 = 8, | ||
| 59 | EXTI3 = 9, | ||
| 60 | EXTI4 = 10, | ||
| 61 | EXTI9_5 = 23, | ||
| 62 | FLASH = 4, | ||
| 63 | FMC = 48, | ||
| 64 | FPU = 81, | ||
| 65 | I2C1_ER = 32, | ||
| 66 | I2C1_EV = 31, | ||
| 67 | I2C2_ER = 34, | ||
| 68 | I2C2_EV = 33, | ||
| 69 | I2C3_ER = 73, | ||
| 70 | I2C3_EV = 72, | ||
| 71 | LCD = 78, | ||
| 72 | LPTIM1 = 65, | ||
| 73 | LPTIM2 = 66, | ||
| 74 | LPUART1 = 70, | ||
| 75 | OTG_FS = 67, | ||
| 76 | PVD_PVM = 1, | ||
| 77 | QUADSPI = 71, | ||
| 78 | RCC = 5, | ||
| 79 | RNG = 80, | ||
| 80 | RTC_Alarm = 41, | ||
| 81 | RTC_WKUP = 3, | ||
| 82 | SAI1 = 74, | ||
| 83 | SAI2 = 75, | ||
| 84 | SDMMC1 = 49, | ||
| 85 | SPI1 = 35, | ||
| 86 | SPI2 = 36, | ||
| 87 | SPI3 = 51, | ||
| 88 | SWPMI1 = 76, | ||
| 89 | TAMP_STAMP = 2, | ||
| 90 | TIM1_BRK_TIM15 = 24, | ||
| 91 | TIM1_CC = 27, | ||
| 92 | TIM1_TRG_COM_TIM17 = 26, | ||
| 93 | TIM1_UP_TIM16 = 25, | ||
| 94 | TIM2 = 28, | ||
| 95 | TIM3 = 29, | ||
| 96 | TIM4 = 30, | ||
| 97 | TIM5 = 50, | ||
| 98 | TIM6_DAC = 54, | ||
| 99 | TIM7 = 55, | ||
| 100 | TIM8_BRK = 43, | ||
| 101 | TIM8_CC = 46, | ||
| 102 | TIM8_TRG_COM = 45, | ||
| 103 | TIM8_UP = 44, | ||
| 104 | TSC = 77, | ||
| 105 | UART4 = 52, | ||
| 106 | UART5 = 53, | ||
| 107 | USART1 = 37, | ||
| 108 | USART2 = 38, | ||
| 109 | USART3 = 39, | ||
| 110 | WWDG = 0, | ||
| 111 | } | ||
| 112 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 113 | #[inline(always)] | ||
| 114 | fn number(self) -> u16 { | ||
| 115 | self as u16 | ||
| 116 | } | ||
| 117 | } | ||
| 118 | |||
| 119 | declare!(ADC1_2); | ||
| 120 | declare!(ADC3); | ||
| 121 | declare!(CAN1_RX0); | ||
| 122 | declare!(CAN1_RX1); | ||
| 123 | declare!(CAN1_SCE); | ||
| 124 | declare!(CAN1_TX); | ||
| 125 | declare!(COMP); | ||
| 126 | declare!(DFSDM1_FLT0); | ||
| 127 | declare!(DFSDM1_FLT1); | ||
| 128 | declare!(DFSDM1_FLT2); | ||
| 129 | declare!(DFSDM1_FLT3); | ||
| 130 | declare!(DMA1_Channel1); | ||
| 131 | declare!(DMA1_Channel2); | ||
| 132 | declare!(DMA1_Channel3); | ||
| 133 | declare!(DMA1_Channel4); | ||
| 134 | declare!(DMA1_Channel5); | ||
| 135 | declare!(DMA1_Channel6); | ||
| 136 | declare!(DMA1_Channel7); | ||
| 137 | declare!(DMA2_Channel1); | ||
| 138 | declare!(DMA2_Channel2); | ||
| 139 | declare!(DMA2_Channel3); | ||
| 140 | declare!(DMA2_Channel4); | ||
| 141 | declare!(DMA2_Channel5); | ||
| 142 | declare!(DMA2_Channel6); | ||
| 143 | declare!(DMA2_Channel7); | ||
| 144 | declare!(EXTI0); | ||
| 145 | declare!(EXTI1); | ||
| 146 | declare!(EXTI15_10); | ||
| 147 | declare!(EXTI2); | ||
| 148 | declare!(EXTI3); | ||
| 149 | declare!(EXTI4); | ||
| 150 | declare!(EXTI9_5); | ||
| 151 | declare!(FLASH); | ||
| 152 | declare!(FMC); | ||
| 153 | declare!(FPU); | ||
| 154 | declare!(I2C1_ER); | ||
| 155 | declare!(I2C1_EV); | ||
| 156 | declare!(I2C2_ER); | ||
| 157 | declare!(I2C2_EV); | ||
| 158 | declare!(I2C3_ER); | ||
| 159 | declare!(I2C3_EV); | ||
| 160 | declare!(LCD); | ||
| 161 | declare!(LPTIM1); | ||
| 162 | declare!(LPTIM2); | ||
| 163 | declare!(LPUART1); | ||
| 164 | declare!(OTG_FS); | ||
| 165 | declare!(PVD_PVM); | ||
| 166 | declare!(QUADSPI); | ||
| 167 | declare!(RCC); | ||
| 168 | declare!(RNG); | ||
| 169 | declare!(RTC_Alarm); | ||
| 170 | declare!(RTC_WKUP); | ||
| 171 | declare!(SAI1); | ||
| 172 | declare!(SAI2); | ||
| 173 | declare!(SDMMC1); | ||
| 174 | declare!(SPI1); | ||
| 175 | declare!(SPI2); | ||
| 176 | declare!(SPI3); | ||
| 177 | declare!(SWPMI1); | ||
| 178 | declare!(TAMP_STAMP); | ||
| 179 | declare!(TIM1_BRK_TIM15); | ||
| 180 | declare!(TIM1_CC); | ||
| 181 | declare!(TIM1_TRG_COM_TIM17); | ||
| 182 | declare!(TIM1_UP_TIM16); | ||
| 183 | declare!(TIM2); | ||
| 184 | declare!(TIM3); | ||
| 185 | declare!(TIM4); | ||
| 186 | declare!(TIM5); | ||
| 187 | declare!(TIM6_DAC); | ||
| 188 | declare!(TIM7); | ||
| 189 | declare!(TIM8_BRK); | ||
| 190 | declare!(TIM8_CC); | ||
| 191 | declare!(TIM8_TRG_COM); | ||
| 192 | declare!(TIM8_UP); | ||
| 193 | declare!(TSC); | ||
| 194 | declare!(UART4); | ||
| 195 | declare!(UART5); | ||
| 196 | declare!(USART1); | ||
| 197 | declare!(USART2); | ||
| 198 | declare!(USART3); | ||
| 199 | declare!(WWDG); | ||
| 200 | } | ||
| 201 | mod interrupt_vector { | ||
| 202 | extern "C" { | ||
| 203 | fn ADC1_2(); | ||
| 204 | fn ADC3(); | ||
| 205 | fn CAN1_RX0(); | ||
| 206 | fn CAN1_RX1(); | ||
| 207 | fn CAN1_SCE(); | ||
| 208 | fn CAN1_TX(); | ||
| 209 | fn COMP(); | ||
| 210 | fn DFSDM1_FLT0(); | ||
| 211 | fn DFSDM1_FLT1(); | ||
| 212 | fn DFSDM1_FLT2(); | ||
| 213 | fn DFSDM1_FLT3(); | ||
| 214 | fn DMA1_Channel1(); | ||
| 215 | fn DMA1_Channel2(); | ||
| 216 | fn DMA1_Channel3(); | ||
| 217 | fn DMA1_Channel4(); | ||
| 218 | fn DMA1_Channel5(); | ||
| 219 | fn DMA1_Channel6(); | ||
| 220 | fn DMA1_Channel7(); | ||
| 221 | fn DMA2_Channel1(); | ||
| 222 | fn DMA2_Channel2(); | ||
| 223 | fn DMA2_Channel3(); | ||
| 224 | fn DMA2_Channel4(); | ||
| 225 | fn DMA2_Channel5(); | ||
| 226 | fn DMA2_Channel6(); | ||
| 227 | fn DMA2_Channel7(); | ||
| 228 | fn EXTI0(); | ||
| 229 | fn EXTI1(); | ||
| 230 | fn EXTI15_10(); | ||
| 231 | fn EXTI2(); | ||
| 232 | fn EXTI3(); | ||
| 233 | fn EXTI4(); | ||
| 234 | fn EXTI9_5(); | ||
| 235 | fn FLASH(); | ||
| 236 | fn FMC(); | ||
| 237 | fn FPU(); | ||
| 238 | fn I2C1_ER(); | ||
| 239 | fn I2C1_EV(); | ||
| 240 | fn I2C2_ER(); | ||
| 241 | fn I2C2_EV(); | ||
| 242 | fn I2C3_ER(); | ||
| 243 | fn I2C3_EV(); | ||
| 244 | fn LCD(); | ||
| 245 | fn LPTIM1(); | ||
| 246 | fn LPTIM2(); | ||
| 247 | fn LPUART1(); | ||
| 248 | fn OTG_FS(); | ||
| 249 | fn PVD_PVM(); | ||
| 250 | fn QUADSPI(); | ||
| 251 | fn RCC(); | ||
| 252 | fn RNG(); | ||
| 253 | fn RTC_Alarm(); | ||
| 254 | fn RTC_WKUP(); | ||
| 255 | fn SAI1(); | ||
| 256 | fn SAI2(); | ||
| 257 | fn SDMMC1(); | ||
| 258 | fn SPI1(); | ||
| 259 | fn SPI2(); | ||
| 260 | fn SPI3(); | ||
| 261 | fn SWPMI1(); | ||
| 262 | fn TAMP_STAMP(); | ||
| 263 | fn TIM1_BRK_TIM15(); | ||
| 264 | fn TIM1_CC(); | ||
| 265 | fn TIM1_TRG_COM_TIM17(); | ||
| 266 | fn TIM1_UP_TIM16(); | ||
| 267 | fn TIM2(); | ||
| 268 | fn TIM3(); | ||
| 269 | fn TIM4(); | ||
| 270 | fn TIM5(); | ||
| 271 | fn TIM6_DAC(); | ||
| 272 | fn TIM7(); | ||
| 273 | fn TIM8_BRK(); | ||
| 274 | fn TIM8_CC(); | ||
| 275 | fn TIM8_TRG_COM(); | ||
| 276 | fn TIM8_UP(); | ||
| 277 | fn TSC(); | ||
| 278 | fn UART4(); | ||
| 279 | fn UART5(); | ||
| 280 | fn USART1(); | ||
| 281 | fn USART2(); | ||
| 282 | fn USART3(); | ||
| 283 | fn WWDG(); | ||
| 284 | } | ||
| 285 | pub union Vector { | ||
| 286 | _handler: unsafe extern "C" fn(), | ||
| 287 | _reserved: u32, | ||
| 288 | } | ||
| 289 | #[link_section = ".vector_table.interrupts"] | ||
| 290 | #[no_mangle] | ||
| 291 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 292 | Vector { _handler: WWDG }, | ||
| 293 | Vector { _handler: PVD_PVM }, | ||
| 294 | Vector { | ||
| 295 | _handler: TAMP_STAMP, | ||
| 296 | }, | ||
| 297 | Vector { _handler: RTC_WKUP }, | ||
| 298 | Vector { _handler: FLASH }, | ||
| 299 | Vector { _handler: RCC }, | ||
| 300 | Vector { _handler: EXTI0 }, | ||
| 301 | Vector { _handler: EXTI1 }, | ||
| 302 | Vector { _handler: EXTI2 }, | ||
| 303 | Vector { _handler: EXTI3 }, | ||
| 304 | Vector { _handler: EXTI4 }, | ||
| 305 | Vector { | ||
| 306 | _handler: DMA1_Channel1, | ||
| 307 | }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel2, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel3, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel4, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel5, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel6, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA1_Channel7, | ||
| 325 | }, | ||
| 326 | Vector { _handler: ADC1_2 }, | ||
| 327 | Vector { _handler: CAN1_TX }, | ||
| 328 | Vector { _handler: CAN1_RX0 }, | ||
| 329 | Vector { _handler: CAN1_RX1 }, | ||
| 330 | Vector { _handler: CAN1_SCE }, | ||
| 331 | Vector { _handler: EXTI9_5 }, | ||
| 332 | Vector { | ||
| 333 | _handler: TIM1_BRK_TIM15, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_UP_TIM16, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: TIM1_TRG_COM_TIM17, | ||
| 340 | }, | ||
| 341 | Vector { _handler: TIM1_CC }, | ||
| 342 | Vector { _handler: TIM2 }, | ||
| 343 | Vector { _handler: TIM3 }, | ||
| 344 | Vector { _handler: TIM4 }, | ||
| 345 | Vector { _handler: I2C1_EV }, | ||
| 346 | Vector { _handler: I2C1_ER }, | ||
| 347 | Vector { _handler: I2C2_EV }, | ||
| 348 | Vector { _handler: I2C2_ER }, | ||
| 349 | Vector { _handler: SPI1 }, | ||
| 350 | Vector { _handler: SPI2 }, | ||
| 351 | Vector { _handler: USART1 }, | ||
| 352 | Vector { _handler: USART2 }, | ||
| 353 | Vector { _handler: USART3 }, | ||
| 354 | Vector { | ||
| 355 | _handler: EXTI15_10, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: RTC_Alarm, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: DFSDM1_FLT3, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM8_BRK }, | ||
| 364 | Vector { _handler: TIM8_UP }, | ||
| 365 | Vector { | ||
| 366 | _handler: TIM8_TRG_COM, | ||
| 367 | }, | ||
| 368 | Vector { _handler: TIM8_CC }, | ||
| 369 | Vector { _handler: ADC3 }, | ||
| 370 | Vector { _handler: FMC }, | ||
| 371 | Vector { _handler: SDMMC1 }, | ||
| 372 | Vector { _handler: TIM5 }, | ||
| 373 | Vector { _handler: SPI3 }, | ||
| 374 | Vector { _handler: UART4 }, | ||
| 375 | Vector { _handler: UART5 }, | ||
| 376 | Vector { _handler: TIM6_DAC }, | ||
| 377 | Vector { _handler: TIM7 }, | ||
| 378 | Vector { | ||
| 379 | _handler: DMA2_Channel1, | ||
| 380 | }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel2, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel3, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel4, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DMA2_Channel5, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DFSDM1_FLT0, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT1, | ||
| 398 | }, | ||
| 399 | Vector { | ||
| 400 | _handler: DFSDM1_FLT2, | ||
| 401 | }, | ||
| 402 | Vector { _handler: COMP }, | ||
| 403 | Vector { _handler: LPTIM1 }, | ||
| 404 | Vector { _handler: LPTIM2 }, | ||
| 405 | Vector { _handler: OTG_FS }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel6, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel7, | ||
| 411 | }, | ||
| 412 | Vector { _handler: LPUART1 }, | ||
| 413 | Vector { _handler: QUADSPI }, | ||
| 414 | Vector { _handler: I2C3_EV }, | ||
| 415 | Vector { _handler: I2C3_ER }, | ||
| 416 | Vector { _handler: SAI1 }, | ||
| 417 | Vector { _handler: SAI2 }, | ||
| 418 | Vector { _handler: SWPMI1 }, | ||
| 419 | Vector { _handler: TSC }, | ||
| 420 | Vector { _handler: LCD }, | ||
| 421 | Vector { _reserved: 0 }, | ||
| 422 | Vector { _handler: RNG }, | ||
| 423 | Vector { _handler: FPU }, | ||
| 424 | ]; | ||
| 425 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 426 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 427 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 428 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l476mg.rs b/embassy-stm32/src/chip/stm32l476mg.rs index ce07466a5..d5b271290 100644 --- a/embassy-stm32/src/chip/stm32l476mg.rs +++ b/embassy-stm32/src/chip/stm32l476mg.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,8 +14,415 @@ peripherals!( | |||
| 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, | 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, |
| 15 | USB_OTG_FS, WWDG | 15 | USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DFSDM1_FLT0 = 61, | ||
| 38 | DFSDM1_FLT1 = 62, | ||
| 39 | DFSDM1_FLT2 = 63, | ||
| 40 | DFSDM1_FLT3 = 42, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | EXTI0 = 6, | ||
| 56 | EXTI1 = 7, | ||
| 57 | EXTI15_10 = 40, | ||
| 58 | EXTI2 = 8, | ||
| 59 | EXTI3 = 9, | ||
| 60 | EXTI4 = 10, | ||
| 61 | EXTI9_5 = 23, | ||
| 62 | FLASH = 4, | ||
| 63 | FMC = 48, | ||
| 64 | FPU = 81, | ||
| 65 | I2C1_ER = 32, | ||
| 66 | I2C1_EV = 31, | ||
| 67 | I2C2_ER = 34, | ||
| 68 | I2C2_EV = 33, | ||
| 69 | I2C3_ER = 73, | ||
| 70 | I2C3_EV = 72, | ||
| 71 | LCD = 78, | ||
| 72 | LPTIM1 = 65, | ||
| 73 | LPTIM2 = 66, | ||
| 74 | LPUART1 = 70, | ||
| 75 | OTG_FS = 67, | ||
| 76 | PVD_PVM = 1, | ||
| 77 | QUADSPI = 71, | ||
| 78 | RCC = 5, | ||
| 79 | RNG = 80, | ||
| 80 | RTC_Alarm = 41, | ||
| 81 | RTC_WKUP = 3, | ||
| 82 | SAI1 = 74, | ||
| 83 | SAI2 = 75, | ||
| 84 | SDMMC1 = 49, | ||
| 85 | SPI1 = 35, | ||
| 86 | SPI2 = 36, | ||
| 87 | SPI3 = 51, | ||
| 88 | SWPMI1 = 76, | ||
| 89 | TAMP_STAMP = 2, | ||
| 90 | TIM1_BRK_TIM15 = 24, | ||
| 91 | TIM1_CC = 27, | ||
| 92 | TIM1_TRG_COM_TIM17 = 26, | ||
| 93 | TIM1_UP_TIM16 = 25, | ||
| 94 | TIM2 = 28, | ||
| 95 | TIM3 = 29, | ||
| 96 | TIM4 = 30, | ||
| 97 | TIM5 = 50, | ||
| 98 | TIM6_DAC = 54, | ||
| 99 | TIM7 = 55, | ||
| 100 | TIM8_BRK = 43, | ||
| 101 | TIM8_CC = 46, | ||
| 102 | TIM8_TRG_COM = 45, | ||
| 103 | TIM8_UP = 44, | ||
| 104 | TSC = 77, | ||
| 105 | UART4 = 52, | ||
| 106 | UART5 = 53, | ||
| 107 | USART1 = 37, | ||
| 108 | USART2 = 38, | ||
| 109 | USART3 = 39, | ||
| 110 | WWDG = 0, | ||
| 111 | } | ||
| 112 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 113 | #[inline(always)] | ||
| 114 | fn number(self) -> u16 { | ||
| 115 | self as u16 | ||
| 116 | } | ||
| 117 | } | ||
| 118 | |||
| 119 | declare!(ADC1_2); | ||
| 120 | declare!(ADC3); | ||
| 121 | declare!(CAN1_RX0); | ||
| 122 | declare!(CAN1_RX1); | ||
| 123 | declare!(CAN1_SCE); | ||
| 124 | declare!(CAN1_TX); | ||
| 125 | declare!(COMP); | ||
| 126 | declare!(DFSDM1_FLT0); | ||
| 127 | declare!(DFSDM1_FLT1); | ||
| 128 | declare!(DFSDM1_FLT2); | ||
| 129 | declare!(DFSDM1_FLT3); | ||
| 130 | declare!(DMA1_Channel1); | ||
| 131 | declare!(DMA1_Channel2); | ||
| 132 | declare!(DMA1_Channel3); | ||
| 133 | declare!(DMA1_Channel4); | ||
| 134 | declare!(DMA1_Channel5); | ||
| 135 | declare!(DMA1_Channel6); | ||
| 136 | declare!(DMA1_Channel7); | ||
| 137 | declare!(DMA2_Channel1); | ||
| 138 | declare!(DMA2_Channel2); | ||
| 139 | declare!(DMA2_Channel3); | ||
| 140 | declare!(DMA2_Channel4); | ||
| 141 | declare!(DMA2_Channel5); | ||
| 142 | declare!(DMA2_Channel6); | ||
| 143 | declare!(DMA2_Channel7); | ||
| 144 | declare!(EXTI0); | ||
| 145 | declare!(EXTI1); | ||
| 146 | declare!(EXTI15_10); | ||
| 147 | declare!(EXTI2); | ||
| 148 | declare!(EXTI3); | ||
| 149 | declare!(EXTI4); | ||
| 150 | declare!(EXTI9_5); | ||
| 151 | declare!(FLASH); | ||
| 152 | declare!(FMC); | ||
| 153 | declare!(FPU); | ||
| 154 | declare!(I2C1_ER); | ||
| 155 | declare!(I2C1_EV); | ||
| 156 | declare!(I2C2_ER); | ||
| 157 | declare!(I2C2_EV); | ||
| 158 | declare!(I2C3_ER); | ||
| 159 | declare!(I2C3_EV); | ||
| 160 | declare!(LCD); | ||
| 161 | declare!(LPTIM1); | ||
| 162 | declare!(LPTIM2); | ||
| 163 | declare!(LPUART1); | ||
| 164 | declare!(OTG_FS); | ||
| 165 | declare!(PVD_PVM); | ||
| 166 | declare!(QUADSPI); | ||
| 167 | declare!(RCC); | ||
| 168 | declare!(RNG); | ||
| 169 | declare!(RTC_Alarm); | ||
| 170 | declare!(RTC_WKUP); | ||
| 171 | declare!(SAI1); | ||
| 172 | declare!(SAI2); | ||
| 173 | declare!(SDMMC1); | ||
| 174 | declare!(SPI1); | ||
| 175 | declare!(SPI2); | ||
| 176 | declare!(SPI3); | ||
| 177 | declare!(SWPMI1); | ||
| 178 | declare!(TAMP_STAMP); | ||
| 179 | declare!(TIM1_BRK_TIM15); | ||
| 180 | declare!(TIM1_CC); | ||
| 181 | declare!(TIM1_TRG_COM_TIM17); | ||
| 182 | declare!(TIM1_UP_TIM16); | ||
| 183 | declare!(TIM2); | ||
| 184 | declare!(TIM3); | ||
| 185 | declare!(TIM4); | ||
| 186 | declare!(TIM5); | ||
| 187 | declare!(TIM6_DAC); | ||
| 188 | declare!(TIM7); | ||
| 189 | declare!(TIM8_BRK); | ||
| 190 | declare!(TIM8_CC); | ||
| 191 | declare!(TIM8_TRG_COM); | ||
| 192 | declare!(TIM8_UP); | ||
| 193 | declare!(TSC); | ||
| 194 | declare!(UART4); | ||
| 195 | declare!(UART5); | ||
| 196 | declare!(USART1); | ||
| 197 | declare!(USART2); | ||
| 198 | declare!(USART3); | ||
| 199 | declare!(WWDG); | ||
| 200 | } | ||
| 201 | mod interrupt_vector { | ||
| 202 | extern "C" { | ||
| 203 | fn ADC1_2(); | ||
| 204 | fn ADC3(); | ||
| 205 | fn CAN1_RX0(); | ||
| 206 | fn CAN1_RX1(); | ||
| 207 | fn CAN1_SCE(); | ||
| 208 | fn CAN1_TX(); | ||
| 209 | fn COMP(); | ||
| 210 | fn DFSDM1_FLT0(); | ||
| 211 | fn DFSDM1_FLT1(); | ||
| 212 | fn DFSDM1_FLT2(); | ||
| 213 | fn DFSDM1_FLT3(); | ||
| 214 | fn DMA1_Channel1(); | ||
| 215 | fn DMA1_Channel2(); | ||
| 216 | fn DMA1_Channel3(); | ||
| 217 | fn DMA1_Channel4(); | ||
| 218 | fn DMA1_Channel5(); | ||
| 219 | fn DMA1_Channel6(); | ||
| 220 | fn DMA1_Channel7(); | ||
| 221 | fn DMA2_Channel1(); | ||
| 222 | fn DMA2_Channel2(); | ||
| 223 | fn DMA2_Channel3(); | ||
| 224 | fn DMA2_Channel4(); | ||
| 225 | fn DMA2_Channel5(); | ||
| 226 | fn DMA2_Channel6(); | ||
| 227 | fn DMA2_Channel7(); | ||
| 228 | fn EXTI0(); | ||
| 229 | fn EXTI1(); | ||
| 230 | fn EXTI15_10(); | ||
| 231 | fn EXTI2(); | ||
| 232 | fn EXTI3(); | ||
| 233 | fn EXTI4(); | ||
| 234 | fn EXTI9_5(); | ||
| 235 | fn FLASH(); | ||
| 236 | fn FMC(); | ||
| 237 | fn FPU(); | ||
| 238 | fn I2C1_ER(); | ||
| 239 | fn I2C1_EV(); | ||
| 240 | fn I2C2_ER(); | ||
| 241 | fn I2C2_EV(); | ||
| 242 | fn I2C3_ER(); | ||
| 243 | fn I2C3_EV(); | ||
| 244 | fn LCD(); | ||
| 245 | fn LPTIM1(); | ||
| 246 | fn LPTIM2(); | ||
| 247 | fn LPUART1(); | ||
| 248 | fn OTG_FS(); | ||
| 249 | fn PVD_PVM(); | ||
| 250 | fn QUADSPI(); | ||
| 251 | fn RCC(); | ||
| 252 | fn RNG(); | ||
| 253 | fn RTC_Alarm(); | ||
| 254 | fn RTC_WKUP(); | ||
| 255 | fn SAI1(); | ||
| 256 | fn SAI2(); | ||
| 257 | fn SDMMC1(); | ||
| 258 | fn SPI1(); | ||
| 259 | fn SPI2(); | ||
| 260 | fn SPI3(); | ||
| 261 | fn SWPMI1(); | ||
| 262 | fn TAMP_STAMP(); | ||
| 263 | fn TIM1_BRK_TIM15(); | ||
| 264 | fn TIM1_CC(); | ||
| 265 | fn TIM1_TRG_COM_TIM17(); | ||
| 266 | fn TIM1_UP_TIM16(); | ||
| 267 | fn TIM2(); | ||
| 268 | fn TIM3(); | ||
| 269 | fn TIM4(); | ||
| 270 | fn TIM5(); | ||
| 271 | fn TIM6_DAC(); | ||
| 272 | fn TIM7(); | ||
| 273 | fn TIM8_BRK(); | ||
| 274 | fn TIM8_CC(); | ||
| 275 | fn TIM8_TRG_COM(); | ||
| 276 | fn TIM8_UP(); | ||
| 277 | fn TSC(); | ||
| 278 | fn UART4(); | ||
| 279 | fn UART5(); | ||
| 280 | fn USART1(); | ||
| 281 | fn USART2(); | ||
| 282 | fn USART3(); | ||
| 283 | fn WWDG(); | ||
| 284 | } | ||
| 285 | pub union Vector { | ||
| 286 | _handler: unsafe extern "C" fn(), | ||
| 287 | _reserved: u32, | ||
| 288 | } | ||
| 289 | #[link_section = ".vector_table.interrupts"] | ||
| 290 | #[no_mangle] | ||
| 291 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 292 | Vector { _handler: WWDG }, | ||
| 293 | Vector { _handler: PVD_PVM }, | ||
| 294 | Vector { | ||
| 295 | _handler: TAMP_STAMP, | ||
| 296 | }, | ||
| 297 | Vector { _handler: RTC_WKUP }, | ||
| 298 | Vector { _handler: FLASH }, | ||
| 299 | Vector { _handler: RCC }, | ||
| 300 | Vector { _handler: EXTI0 }, | ||
| 301 | Vector { _handler: EXTI1 }, | ||
| 302 | Vector { _handler: EXTI2 }, | ||
| 303 | Vector { _handler: EXTI3 }, | ||
| 304 | Vector { _handler: EXTI4 }, | ||
| 305 | Vector { | ||
| 306 | _handler: DMA1_Channel1, | ||
| 307 | }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel2, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel3, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel4, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel5, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel6, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA1_Channel7, | ||
| 325 | }, | ||
| 326 | Vector { _handler: ADC1_2 }, | ||
| 327 | Vector { _handler: CAN1_TX }, | ||
| 328 | Vector { _handler: CAN1_RX0 }, | ||
| 329 | Vector { _handler: CAN1_RX1 }, | ||
| 330 | Vector { _handler: CAN1_SCE }, | ||
| 331 | Vector { _handler: EXTI9_5 }, | ||
| 332 | Vector { | ||
| 333 | _handler: TIM1_BRK_TIM15, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_UP_TIM16, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: TIM1_TRG_COM_TIM17, | ||
| 340 | }, | ||
| 341 | Vector { _handler: TIM1_CC }, | ||
| 342 | Vector { _handler: TIM2 }, | ||
| 343 | Vector { _handler: TIM3 }, | ||
| 344 | Vector { _handler: TIM4 }, | ||
| 345 | Vector { _handler: I2C1_EV }, | ||
| 346 | Vector { _handler: I2C1_ER }, | ||
| 347 | Vector { _handler: I2C2_EV }, | ||
| 348 | Vector { _handler: I2C2_ER }, | ||
| 349 | Vector { _handler: SPI1 }, | ||
| 350 | Vector { _handler: SPI2 }, | ||
| 351 | Vector { _handler: USART1 }, | ||
| 352 | Vector { _handler: USART2 }, | ||
| 353 | Vector { _handler: USART3 }, | ||
| 354 | Vector { | ||
| 355 | _handler: EXTI15_10, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: RTC_Alarm, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: DFSDM1_FLT3, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM8_BRK }, | ||
| 364 | Vector { _handler: TIM8_UP }, | ||
| 365 | Vector { | ||
| 366 | _handler: TIM8_TRG_COM, | ||
| 367 | }, | ||
| 368 | Vector { _handler: TIM8_CC }, | ||
| 369 | Vector { _handler: ADC3 }, | ||
| 370 | Vector { _handler: FMC }, | ||
| 371 | Vector { _handler: SDMMC1 }, | ||
| 372 | Vector { _handler: TIM5 }, | ||
| 373 | Vector { _handler: SPI3 }, | ||
| 374 | Vector { _handler: UART4 }, | ||
| 375 | Vector { _handler: UART5 }, | ||
| 376 | Vector { _handler: TIM6_DAC }, | ||
| 377 | Vector { _handler: TIM7 }, | ||
| 378 | Vector { | ||
| 379 | _handler: DMA2_Channel1, | ||
| 380 | }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel2, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel3, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel4, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DMA2_Channel5, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DFSDM1_FLT0, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT1, | ||
| 398 | }, | ||
| 399 | Vector { | ||
| 400 | _handler: DFSDM1_FLT2, | ||
| 401 | }, | ||
| 402 | Vector { _handler: COMP }, | ||
| 403 | Vector { _handler: LPTIM1 }, | ||
| 404 | Vector { _handler: LPTIM2 }, | ||
| 405 | Vector { _handler: OTG_FS }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel6, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel7, | ||
| 411 | }, | ||
| 412 | Vector { _handler: LPUART1 }, | ||
| 413 | Vector { _handler: QUADSPI }, | ||
| 414 | Vector { _handler: I2C3_EV }, | ||
| 415 | Vector { _handler: I2C3_ER }, | ||
| 416 | Vector { _handler: SAI1 }, | ||
| 417 | Vector { _handler: SAI2 }, | ||
| 418 | Vector { _handler: SWPMI1 }, | ||
| 419 | Vector { _handler: TSC }, | ||
| 420 | Vector { _handler: LCD }, | ||
| 421 | Vector { _reserved: 0 }, | ||
| 422 | Vector { _handler: RNG }, | ||
| 423 | Vector { _handler: FPU }, | ||
| 424 | ]; | ||
| 425 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 426 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 427 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 428 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l476qe.rs b/embassy-stm32/src/chip/stm32l476qe.rs index ce07466a5..d5b271290 100644 --- a/embassy-stm32/src/chip/stm32l476qe.rs +++ b/embassy-stm32/src/chip/stm32l476qe.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,8 +14,415 @@ peripherals!( | |||
| 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, | 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, |
| 15 | USB_OTG_FS, WWDG | 15 | USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DFSDM1_FLT0 = 61, | ||
| 38 | DFSDM1_FLT1 = 62, | ||
| 39 | DFSDM1_FLT2 = 63, | ||
| 40 | DFSDM1_FLT3 = 42, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | EXTI0 = 6, | ||
| 56 | EXTI1 = 7, | ||
| 57 | EXTI15_10 = 40, | ||
| 58 | EXTI2 = 8, | ||
| 59 | EXTI3 = 9, | ||
| 60 | EXTI4 = 10, | ||
| 61 | EXTI9_5 = 23, | ||
| 62 | FLASH = 4, | ||
| 63 | FMC = 48, | ||
| 64 | FPU = 81, | ||
| 65 | I2C1_ER = 32, | ||
| 66 | I2C1_EV = 31, | ||
| 67 | I2C2_ER = 34, | ||
| 68 | I2C2_EV = 33, | ||
| 69 | I2C3_ER = 73, | ||
| 70 | I2C3_EV = 72, | ||
| 71 | LCD = 78, | ||
| 72 | LPTIM1 = 65, | ||
| 73 | LPTIM2 = 66, | ||
| 74 | LPUART1 = 70, | ||
| 75 | OTG_FS = 67, | ||
| 76 | PVD_PVM = 1, | ||
| 77 | QUADSPI = 71, | ||
| 78 | RCC = 5, | ||
| 79 | RNG = 80, | ||
| 80 | RTC_Alarm = 41, | ||
| 81 | RTC_WKUP = 3, | ||
| 82 | SAI1 = 74, | ||
| 83 | SAI2 = 75, | ||
| 84 | SDMMC1 = 49, | ||
| 85 | SPI1 = 35, | ||
| 86 | SPI2 = 36, | ||
| 87 | SPI3 = 51, | ||
| 88 | SWPMI1 = 76, | ||
| 89 | TAMP_STAMP = 2, | ||
| 90 | TIM1_BRK_TIM15 = 24, | ||
| 91 | TIM1_CC = 27, | ||
| 92 | TIM1_TRG_COM_TIM17 = 26, | ||
| 93 | TIM1_UP_TIM16 = 25, | ||
| 94 | TIM2 = 28, | ||
| 95 | TIM3 = 29, | ||
| 96 | TIM4 = 30, | ||
| 97 | TIM5 = 50, | ||
| 98 | TIM6_DAC = 54, | ||
| 99 | TIM7 = 55, | ||
| 100 | TIM8_BRK = 43, | ||
| 101 | TIM8_CC = 46, | ||
| 102 | TIM8_TRG_COM = 45, | ||
| 103 | TIM8_UP = 44, | ||
| 104 | TSC = 77, | ||
| 105 | UART4 = 52, | ||
| 106 | UART5 = 53, | ||
| 107 | USART1 = 37, | ||
| 108 | USART2 = 38, | ||
| 109 | USART3 = 39, | ||
| 110 | WWDG = 0, | ||
| 111 | } | ||
| 112 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 113 | #[inline(always)] | ||
| 114 | fn number(self) -> u16 { | ||
| 115 | self as u16 | ||
| 116 | } | ||
| 117 | } | ||
| 118 | |||
| 119 | declare!(ADC1_2); | ||
| 120 | declare!(ADC3); | ||
| 121 | declare!(CAN1_RX0); | ||
| 122 | declare!(CAN1_RX1); | ||
| 123 | declare!(CAN1_SCE); | ||
| 124 | declare!(CAN1_TX); | ||
| 125 | declare!(COMP); | ||
| 126 | declare!(DFSDM1_FLT0); | ||
| 127 | declare!(DFSDM1_FLT1); | ||
| 128 | declare!(DFSDM1_FLT2); | ||
| 129 | declare!(DFSDM1_FLT3); | ||
| 130 | declare!(DMA1_Channel1); | ||
| 131 | declare!(DMA1_Channel2); | ||
| 132 | declare!(DMA1_Channel3); | ||
| 133 | declare!(DMA1_Channel4); | ||
| 134 | declare!(DMA1_Channel5); | ||
| 135 | declare!(DMA1_Channel6); | ||
| 136 | declare!(DMA1_Channel7); | ||
| 137 | declare!(DMA2_Channel1); | ||
| 138 | declare!(DMA2_Channel2); | ||
| 139 | declare!(DMA2_Channel3); | ||
| 140 | declare!(DMA2_Channel4); | ||
| 141 | declare!(DMA2_Channel5); | ||
| 142 | declare!(DMA2_Channel6); | ||
| 143 | declare!(DMA2_Channel7); | ||
| 144 | declare!(EXTI0); | ||
| 145 | declare!(EXTI1); | ||
| 146 | declare!(EXTI15_10); | ||
| 147 | declare!(EXTI2); | ||
| 148 | declare!(EXTI3); | ||
| 149 | declare!(EXTI4); | ||
| 150 | declare!(EXTI9_5); | ||
| 151 | declare!(FLASH); | ||
| 152 | declare!(FMC); | ||
| 153 | declare!(FPU); | ||
| 154 | declare!(I2C1_ER); | ||
| 155 | declare!(I2C1_EV); | ||
| 156 | declare!(I2C2_ER); | ||
| 157 | declare!(I2C2_EV); | ||
| 158 | declare!(I2C3_ER); | ||
| 159 | declare!(I2C3_EV); | ||
| 160 | declare!(LCD); | ||
| 161 | declare!(LPTIM1); | ||
| 162 | declare!(LPTIM2); | ||
| 163 | declare!(LPUART1); | ||
| 164 | declare!(OTG_FS); | ||
| 165 | declare!(PVD_PVM); | ||
| 166 | declare!(QUADSPI); | ||
| 167 | declare!(RCC); | ||
| 168 | declare!(RNG); | ||
| 169 | declare!(RTC_Alarm); | ||
| 170 | declare!(RTC_WKUP); | ||
| 171 | declare!(SAI1); | ||
| 172 | declare!(SAI2); | ||
| 173 | declare!(SDMMC1); | ||
| 174 | declare!(SPI1); | ||
| 175 | declare!(SPI2); | ||
| 176 | declare!(SPI3); | ||
| 177 | declare!(SWPMI1); | ||
| 178 | declare!(TAMP_STAMP); | ||
| 179 | declare!(TIM1_BRK_TIM15); | ||
| 180 | declare!(TIM1_CC); | ||
| 181 | declare!(TIM1_TRG_COM_TIM17); | ||
| 182 | declare!(TIM1_UP_TIM16); | ||
| 183 | declare!(TIM2); | ||
| 184 | declare!(TIM3); | ||
| 185 | declare!(TIM4); | ||
| 186 | declare!(TIM5); | ||
| 187 | declare!(TIM6_DAC); | ||
| 188 | declare!(TIM7); | ||
| 189 | declare!(TIM8_BRK); | ||
| 190 | declare!(TIM8_CC); | ||
| 191 | declare!(TIM8_TRG_COM); | ||
| 192 | declare!(TIM8_UP); | ||
| 193 | declare!(TSC); | ||
| 194 | declare!(UART4); | ||
| 195 | declare!(UART5); | ||
| 196 | declare!(USART1); | ||
| 197 | declare!(USART2); | ||
| 198 | declare!(USART3); | ||
| 199 | declare!(WWDG); | ||
| 200 | } | ||
| 201 | mod interrupt_vector { | ||
| 202 | extern "C" { | ||
| 203 | fn ADC1_2(); | ||
| 204 | fn ADC3(); | ||
| 205 | fn CAN1_RX0(); | ||
| 206 | fn CAN1_RX1(); | ||
| 207 | fn CAN1_SCE(); | ||
| 208 | fn CAN1_TX(); | ||
| 209 | fn COMP(); | ||
| 210 | fn DFSDM1_FLT0(); | ||
| 211 | fn DFSDM1_FLT1(); | ||
| 212 | fn DFSDM1_FLT2(); | ||
| 213 | fn DFSDM1_FLT3(); | ||
| 214 | fn DMA1_Channel1(); | ||
| 215 | fn DMA1_Channel2(); | ||
| 216 | fn DMA1_Channel3(); | ||
| 217 | fn DMA1_Channel4(); | ||
| 218 | fn DMA1_Channel5(); | ||
| 219 | fn DMA1_Channel6(); | ||
| 220 | fn DMA1_Channel7(); | ||
| 221 | fn DMA2_Channel1(); | ||
| 222 | fn DMA2_Channel2(); | ||
| 223 | fn DMA2_Channel3(); | ||
| 224 | fn DMA2_Channel4(); | ||
| 225 | fn DMA2_Channel5(); | ||
| 226 | fn DMA2_Channel6(); | ||
| 227 | fn DMA2_Channel7(); | ||
| 228 | fn EXTI0(); | ||
| 229 | fn EXTI1(); | ||
| 230 | fn EXTI15_10(); | ||
| 231 | fn EXTI2(); | ||
| 232 | fn EXTI3(); | ||
| 233 | fn EXTI4(); | ||
| 234 | fn EXTI9_5(); | ||
| 235 | fn FLASH(); | ||
| 236 | fn FMC(); | ||
| 237 | fn FPU(); | ||
| 238 | fn I2C1_ER(); | ||
| 239 | fn I2C1_EV(); | ||
| 240 | fn I2C2_ER(); | ||
| 241 | fn I2C2_EV(); | ||
| 242 | fn I2C3_ER(); | ||
| 243 | fn I2C3_EV(); | ||
| 244 | fn LCD(); | ||
| 245 | fn LPTIM1(); | ||
| 246 | fn LPTIM2(); | ||
| 247 | fn LPUART1(); | ||
| 248 | fn OTG_FS(); | ||
| 249 | fn PVD_PVM(); | ||
| 250 | fn QUADSPI(); | ||
| 251 | fn RCC(); | ||
| 252 | fn RNG(); | ||
| 253 | fn RTC_Alarm(); | ||
| 254 | fn RTC_WKUP(); | ||
| 255 | fn SAI1(); | ||
| 256 | fn SAI2(); | ||
| 257 | fn SDMMC1(); | ||
| 258 | fn SPI1(); | ||
| 259 | fn SPI2(); | ||
| 260 | fn SPI3(); | ||
| 261 | fn SWPMI1(); | ||
| 262 | fn TAMP_STAMP(); | ||
| 263 | fn TIM1_BRK_TIM15(); | ||
| 264 | fn TIM1_CC(); | ||
| 265 | fn TIM1_TRG_COM_TIM17(); | ||
| 266 | fn TIM1_UP_TIM16(); | ||
| 267 | fn TIM2(); | ||
| 268 | fn TIM3(); | ||
| 269 | fn TIM4(); | ||
| 270 | fn TIM5(); | ||
| 271 | fn TIM6_DAC(); | ||
| 272 | fn TIM7(); | ||
| 273 | fn TIM8_BRK(); | ||
| 274 | fn TIM8_CC(); | ||
| 275 | fn TIM8_TRG_COM(); | ||
| 276 | fn TIM8_UP(); | ||
| 277 | fn TSC(); | ||
| 278 | fn UART4(); | ||
| 279 | fn UART5(); | ||
| 280 | fn USART1(); | ||
| 281 | fn USART2(); | ||
| 282 | fn USART3(); | ||
| 283 | fn WWDG(); | ||
| 284 | } | ||
| 285 | pub union Vector { | ||
| 286 | _handler: unsafe extern "C" fn(), | ||
| 287 | _reserved: u32, | ||
| 288 | } | ||
| 289 | #[link_section = ".vector_table.interrupts"] | ||
| 290 | #[no_mangle] | ||
| 291 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 292 | Vector { _handler: WWDG }, | ||
| 293 | Vector { _handler: PVD_PVM }, | ||
| 294 | Vector { | ||
| 295 | _handler: TAMP_STAMP, | ||
| 296 | }, | ||
| 297 | Vector { _handler: RTC_WKUP }, | ||
| 298 | Vector { _handler: FLASH }, | ||
| 299 | Vector { _handler: RCC }, | ||
| 300 | Vector { _handler: EXTI0 }, | ||
| 301 | Vector { _handler: EXTI1 }, | ||
| 302 | Vector { _handler: EXTI2 }, | ||
| 303 | Vector { _handler: EXTI3 }, | ||
| 304 | Vector { _handler: EXTI4 }, | ||
| 305 | Vector { | ||
| 306 | _handler: DMA1_Channel1, | ||
| 307 | }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel2, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel3, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel4, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel5, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel6, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA1_Channel7, | ||
| 325 | }, | ||
| 326 | Vector { _handler: ADC1_2 }, | ||
| 327 | Vector { _handler: CAN1_TX }, | ||
| 328 | Vector { _handler: CAN1_RX0 }, | ||
| 329 | Vector { _handler: CAN1_RX1 }, | ||
| 330 | Vector { _handler: CAN1_SCE }, | ||
| 331 | Vector { _handler: EXTI9_5 }, | ||
| 332 | Vector { | ||
| 333 | _handler: TIM1_BRK_TIM15, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_UP_TIM16, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: TIM1_TRG_COM_TIM17, | ||
| 340 | }, | ||
| 341 | Vector { _handler: TIM1_CC }, | ||
| 342 | Vector { _handler: TIM2 }, | ||
| 343 | Vector { _handler: TIM3 }, | ||
| 344 | Vector { _handler: TIM4 }, | ||
| 345 | Vector { _handler: I2C1_EV }, | ||
| 346 | Vector { _handler: I2C1_ER }, | ||
| 347 | Vector { _handler: I2C2_EV }, | ||
| 348 | Vector { _handler: I2C2_ER }, | ||
| 349 | Vector { _handler: SPI1 }, | ||
| 350 | Vector { _handler: SPI2 }, | ||
| 351 | Vector { _handler: USART1 }, | ||
| 352 | Vector { _handler: USART2 }, | ||
| 353 | Vector { _handler: USART3 }, | ||
| 354 | Vector { | ||
| 355 | _handler: EXTI15_10, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: RTC_Alarm, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: DFSDM1_FLT3, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM8_BRK }, | ||
| 364 | Vector { _handler: TIM8_UP }, | ||
| 365 | Vector { | ||
| 366 | _handler: TIM8_TRG_COM, | ||
| 367 | }, | ||
| 368 | Vector { _handler: TIM8_CC }, | ||
| 369 | Vector { _handler: ADC3 }, | ||
| 370 | Vector { _handler: FMC }, | ||
| 371 | Vector { _handler: SDMMC1 }, | ||
| 372 | Vector { _handler: TIM5 }, | ||
| 373 | Vector { _handler: SPI3 }, | ||
| 374 | Vector { _handler: UART4 }, | ||
| 375 | Vector { _handler: UART5 }, | ||
| 376 | Vector { _handler: TIM6_DAC }, | ||
| 377 | Vector { _handler: TIM7 }, | ||
| 378 | Vector { | ||
| 379 | _handler: DMA2_Channel1, | ||
| 380 | }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel2, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel3, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel4, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DMA2_Channel5, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DFSDM1_FLT0, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT1, | ||
| 398 | }, | ||
| 399 | Vector { | ||
| 400 | _handler: DFSDM1_FLT2, | ||
| 401 | }, | ||
| 402 | Vector { _handler: COMP }, | ||
| 403 | Vector { _handler: LPTIM1 }, | ||
| 404 | Vector { _handler: LPTIM2 }, | ||
| 405 | Vector { _handler: OTG_FS }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel6, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel7, | ||
| 411 | }, | ||
| 412 | Vector { _handler: LPUART1 }, | ||
| 413 | Vector { _handler: QUADSPI }, | ||
| 414 | Vector { _handler: I2C3_EV }, | ||
| 415 | Vector { _handler: I2C3_ER }, | ||
| 416 | Vector { _handler: SAI1 }, | ||
| 417 | Vector { _handler: SAI2 }, | ||
| 418 | Vector { _handler: SWPMI1 }, | ||
| 419 | Vector { _handler: TSC }, | ||
| 420 | Vector { _handler: LCD }, | ||
| 421 | Vector { _reserved: 0 }, | ||
| 422 | Vector { _handler: RNG }, | ||
| 423 | Vector { _handler: FPU }, | ||
| 424 | ]; | ||
| 425 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 426 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 427 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 428 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l476qg.rs b/embassy-stm32/src/chip/stm32l476qg.rs index ce07466a5..d5b271290 100644 --- a/embassy-stm32/src/chip/stm32l476qg.rs +++ b/embassy-stm32/src/chip/stm32l476qg.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,8 +14,415 @@ peripherals!( | |||
| 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, | 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, |
| 15 | USB_OTG_FS, WWDG | 15 | USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DFSDM1_FLT0 = 61, | ||
| 38 | DFSDM1_FLT1 = 62, | ||
| 39 | DFSDM1_FLT2 = 63, | ||
| 40 | DFSDM1_FLT3 = 42, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | EXTI0 = 6, | ||
| 56 | EXTI1 = 7, | ||
| 57 | EXTI15_10 = 40, | ||
| 58 | EXTI2 = 8, | ||
| 59 | EXTI3 = 9, | ||
| 60 | EXTI4 = 10, | ||
| 61 | EXTI9_5 = 23, | ||
| 62 | FLASH = 4, | ||
| 63 | FMC = 48, | ||
| 64 | FPU = 81, | ||
| 65 | I2C1_ER = 32, | ||
| 66 | I2C1_EV = 31, | ||
| 67 | I2C2_ER = 34, | ||
| 68 | I2C2_EV = 33, | ||
| 69 | I2C3_ER = 73, | ||
| 70 | I2C3_EV = 72, | ||
| 71 | LCD = 78, | ||
| 72 | LPTIM1 = 65, | ||
| 73 | LPTIM2 = 66, | ||
| 74 | LPUART1 = 70, | ||
| 75 | OTG_FS = 67, | ||
| 76 | PVD_PVM = 1, | ||
| 77 | QUADSPI = 71, | ||
| 78 | RCC = 5, | ||
| 79 | RNG = 80, | ||
| 80 | RTC_Alarm = 41, | ||
| 81 | RTC_WKUP = 3, | ||
| 82 | SAI1 = 74, | ||
| 83 | SAI2 = 75, | ||
| 84 | SDMMC1 = 49, | ||
| 85 | SPI1 = 35, | ||
| 86 | SPI2 = 36, | ||
| 87 | SPI3 = 51, | ||
| 88 | SWPMI1 = 76, | ||
| 89 | TAMP_STAMP = 2, | ||
| 90 | TIM1_BRK_TIM15 = 24, | ||
| 91 | TIM1_CC = 27, | ||
| 92 | TIM1_TRG_COM_TIM17 = 26, | ||
| 93 | TIM1_UP_TIM16 = 25, | ||
| 94 | TIM2 = 28, | ||
| 95 | TIM3 = 29, | ||
| 96 | TIM4 = 30, | ||
| 97 | TIM5 = 50, | ||
| 98 | TIM6_DAC = 54, | ||
| 99 | TIM7 = 55, | ||
| 100 | TIM8_BRK = 43, | ||
| 101 | TIM8_CC = 46, | ||
| 102 | TIM8_TRG_COM = 45, | ||
| 103 | TIM8_UP = 44, | ||
| 104 | TSC = 77, | ||
| 105 | UART4 = 52, | ||
| 106 | UART5 = 53, | ||
| 107 | USART1 = 37, | ||
| 108 | USART2 = 38, | ||
| 109 | USART3 = 39, | ||
| 110 | WWDG = 0, | ||
| 111 | } | ||
| 112 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 113 | #[inline(always)] | ||
| 114 | fn number(self) -> u16 { | ||
| 115 | self as u16 | ||
| 116 | } | ||
| 117 | } | ||
| 118 | |||
| 119 | declare!(ADC1_2); | ||
| 120 | declare!(ADC3); | ||
| 121 | declare!(CAN1_RX0); | ||
| 122 | declare!(CAN1_RX1); | ||
| 123 | declare!(CAN1_SCE); | ||
| 124 | declare!(CAN1_TX); | ||
| 125 | declare!(COMP); | ||
| 126 | declare!(DFSDM1_FLT0); | ||
| 127 | declare!(DFSDM1_FLT1); | ||
| 128 | declare!(DFSDM1_FLT2); | ||
| 129 | declare!(DFSDM1_FLT3); | ||
| 130 | declare!(DMA1_Channel1); | ||
| 131 | declare!(DMA1_Channel2); | ||
| 132 | declare!(DMA1_Channel3); | ||
| 133 | declare!(DMA1_Channel4); | ||
| 134 | declare!(DMA1_Channel5); | ||
| 135 | declare!(DMA1_Channel6); | ||
| 136 | declare!(DMA1_Channel7); | ||
| 137 | declare!(DMA2_Channel1); | ||
| 138 | declare!(DMA2_Channel2); | ||
| 139 | declare!(DMA2_Channel3); | ||
| 140 | declare!(DMA2_Channel4); | ||
| 141 | declare!(DMA2_Channel5); | ||
| 142 | declare!(DMA2_Channel6); | ||
| 143 | declare!(DMA2_Channel7); | ||
| 144 | declare!(EXTI0); | ||
| 145 | declare!(EXTI1); | ||
| 146 | declare!(EXTI15_10); | ||
| 147 | declare!(EXTI2); | ||
| 148 | declare!(EXTI3); | ||
| 149 | declare!(EXTI4); | ||
| 150 | declare!(EXTI9_5); | ||
| 151 | declare!(FLASH); | ||
| 152 | declare!(FMC); | ||
| 153 | declare!(FPU); | ||
| 154 | declare!(I2C1_ER); | ||
| 155 | declare!(I2C1_EV); | ||
| 156 | declare!(I2C2_ER); | ||
| 157 | declare!(I2C2_EV); | ||
| 158 | declare!(I2C3_ER); | ||
| 159 | declare!(I2C3_EV); | ||
| 160 | declare!(LCD); | ||
| 161 | declare!(LPTIM1); | ||
| 162 | declare!(LPTIM2); | ||
| 163 | declare!(LPUART1); | ||
| 164 | declare!(OTG_FS); | ||
| 165 | declare!(PVD_PVM); | ||
| 166 | declare!(QUADSPI); | ||
| 167 | declare!(RCC); | ||
| 168 | declare!(RNG); | ||
| 169 | declare!(RTC_Alarm); | ||
| 170 | declare!(RTC_WKUP); | ||
| 171 | declare!(SAI1); | ||
| 172 | declare!(SAI2); | ||
| 173 | declare!(SDMMC1); | ||
| 174 | declare!(SPI1); | ||
| 175 | declare!(SPI2); | ||
| 176 | declare!(SPI3); | ||
| 177 | declare!(SWPMI1); | ||
| 178 | declare!(TAMP_STAMP); | ||
| 179 | declare!(TIM1_BRK_TIM15); | ||
| 180 | declare!(TIM1_CC); | ||
| 181 | declare!(TIM1_TRG_COM_TIM17); | ||
| 182 | declare!(TIM1_UP_TIM16); | ||
| 183 | declare!(TIM2); | ||
| 184 | declare!(TIM3); | ||
| 185 | declare!(TIM4); | ||
| 186 | declare!(TIM5); | ||
| 187 | declare!(TIM6_DAC); | ||
| 188 | declare!(TIM7); | ||
| 189 | declare!(TIM8_BRK); | ||
| 190 | declare!(TIM8_CC); | ||
| 191 | declare!(TIM8_TRG_COM); | ||
| 192 | declare!(TIM8_UP); | ||
| 193 | declare!(TSC); | ||
| 194 | declare!(UART4); | ||
| 195 | declare!(UART5); | ||
| 196 | declare!(USART1); | ||
| 197 | declare!(USART2); | ||
| 198 | declare!(USART3); | ||
| 199 | declare!(WWDG); | ||
| 200 | } | ||
| 201 | mod interrupt_vector { | ||
| 202 | extern "C" { | ||
| 203 | fn ADC1_2(); | ||
| 204 | fn ADC3(); | ||
| 205 | fn CAN1_RX0(); | ||
| 206 | fn CAN1_RX1(); | ||
| 207 | fn CAN1_SCE(); | ||
| 208 | fn CAN1_TX(); | ||
| 209 | fn COMP(); | ||
| 210 | fn DFSDM1_FLT0(); | ||
| 211 | fn DFSDM1_FLT1(); | ||
| 212 | fn DFSDM1_FLT2(); | ||
| 213 | fn DFSDM1_FLT3(); | ||
| 214 | fn DMA1_Channel1(); | ||
| 215 | fn DMA1_Channel2(); | ||
| 216 | fn DMA1_Channel3(); | ||
| 217 | fn DMA1_Channel4(); | ||
| 218 | fn DMA1_Channel5(); | ||
| 219 | fn DMA1_Channel6(); | ||
| 220 | fn DMA1_Channel7(); | ||
| 221 | fn DMA2_Channel1(); | ||
| 222 | fn DMA2_Channel2(); | ||
| 223 | fn DMA2_Channel3(); | ||
| 224 | fn DMA2_Channel4(); | ||
| 225 | fn DMA2_Channel5(); | ||
| 226 | fn DMA2_Channel6(); | ||
| 227 | fn DMA2_Channel7(); | ||
| 228 | fn EXTI0(); | ||
| 229 | fn EXTI1(); | ||
| 230 | fn EXTI15_10(); | ||
| 231 | fn EXTI2(); | ||
| 232 | fn EXTI3(); | ||
| 233 | fn EXTI4(); | ||
| 234 | fn EXTI9_5(); | ||
| 235 | fn FLASH(); | ||
| 236 | fn FMC(); | ||
| 237 | fn FPU(); | ||
| 238 | fn I2C1_ER(); | ||
| 239 | fn I2C1_EV(); | ||
| 240 | fn I2C2_ER(); | ||
| 241 | fn I2C2_EV(); | ||
| 242 | fn I2C3_ER(); | ||
| 243 | fn I2C3_EV(); | ||
| 244 | fn LCD(); | ||
| 245 | fn LPTIM1(); | ||
| 246 | fn LPTIM2(); | ||
| 247 | fn LPUART1(); | ||
| 248 | fn OTG_FS(); | ||
| 249 | fn PVD_PVM(); | ||
| 250 | fn QUADSPI(); | ||
| 251 | fn RCC(); | ||
| 252 | fn RNG(); | ||
| 253 | fn RTC_Alarm(); | ||
| 254 | fn RTC_WKUP(); | ||
| 255 | fn SAI1(); | ||
| 256 | fn SAI2(); | ||
| 257 | fn SDMMC1(); | ||
| 258 | fn SPI1(); | ||
| 259 | fn SPI2(); | ||
| 260 | fn SPI3(); | ||
| 261 | fn SWPMI1(); | ||
| 262 | fn TAMP_STAMP(); | ||
| 263 | fn TIM1_BRK_TIM15(); | ||
| 264 | fn TIM1_CC(); | ||
| 265 | fn TIM1_TRG_COM_TIM17(); | ||
| 266 | fn TIM1_UP_TIM16(); | ||
| 267 | fn TIM2(); | ||
| 268 | fn TIM3(); | ||
| 269 | fn TIM4(); | ||
| 270 | fn TIM5(); | ||
| 271 | fn TIM6_DAC(); | ||
| 272 | fn TIM7(); | ||
| 273 | fn TIM8_BRK(); | ||
| 274 | fn TIM8_CC(); | ||
| 275 | fn TIM8_TRG_COM(); | ||
| 276 | fn TIM8_UP(); | ||
| 277 | fn TSC(); | ||
| 278 | fn UART4(); | ||
| 279 | fn UART5(); | ||
| 280 | fn USART1(); | ||
| 281 | fn USART2(); | ||
| 282 | fn USART3(); | ||
| 283 | fn WWDG(); | ||
| 284 | } | ||
| 285 | pub union Vector { | ||
| 286 | _handler: unsafe extern "C" fn(), | ||
| 287 | _reserved: u32, | ||
| 288 | } | ||
| 289 | #[link_section = ".vector_table.interrupts"] | ||
| 290 | #[no_mangle] | ||
| 291 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 292 | Vector { _handler: WWDG }, | ||
| 293 | Vector { _handler: PVD_PVM }, | ||
| 294 | Vector { | ||
| 295 | _handler: TAMP_STAMP, | ||
| 296 | }, | ||
| 297 | Vector { _handler: RTC_WKUP }, | ||
| 298 | Vector { _handler: FLASH }, | ||
| 299 | Vector { _handler: RCC }, | ||
| 300 | Vector { _handler: EXTI0 }, | ||
| 301 | Vector { _handler: EXTI1 }, | ||
| 302 | Vector { _handler: EXTI2 }, | ||
| 303 | Vector { _handler: EXTI3 }, | ||
| 304 | Vector { _handler: EXTI4 }, | ||
| 305 | Vector { | ||
| 306 | _handler: DMA1_Channel1, | ||
| 307 | }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel2, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel3, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel4, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel5, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel6, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA1_Channel7, | ||
| 325 | }, | ||
| 326 | Vector { _handler: ADC1_2 }, | ||
| 327 | Vector { _handler: CAN1_TX }, | ||
| 328 | Vector { _handler: CAN1_RX0 }, | ||
| 329 | Vector { _handler: CAN1_RX1 }, | ||
| 330 | Vector { _handler: CAN1_SCE }, | ||
| 331 | Vector { _handler: EXTI9_5 }, | ||
| 332 | Vector { | ||
| 333 | _handler: TIM1_BRK_TIM15, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_UP_TIM16, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: TIM1_TRG_COM_TIM17, | ||
| 340 | }, | ||
| 341 | Vector { _handler: TIM1_CC }, | ||
| 342 | Vector { _handler: TIM2 }, | ||
| 343 | Vector { _handler: TIM3 }, | ||
| 344 | Vector { _handler: TIM4 }, | ||
| 345 | Vector { _handler: I2C1_EV }, | ||
| 346 | Vector { _handler: I2C1_ER }, | ||
| 347 | Vector { _handler: I2C2_EV }, | ||
| 348 | Vector { _handler: I2C2_ER }, | ||
| 349 | Vector { _handler: SPI1 }, | ||
| 350 | Vector { _handler: SPI2 }, | ||
| 351 | Vector { _handler: USART1 }, | ||
| 352 | Vector { _handler: USART2 }, | ||
| 353 | Vector { _handler: USART3 }, | ||
| 354 | Vector { | ||
| 355 | _handler: EXTI15_10, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: RTC_Alarm, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: DFSDM1_FLT3, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM8_BRK }, | ||
| 364 | Vector { _handler: TIM8_UP }, | ||
| 365 | Vector { | ||
| 366 | _handler: TIM8_TRG_COM, | ||
| 367 | }, | ||
| 368 | Vector { _handler: TIM8_CC }, | ||
| 369 | Vector { _handler: ADC3 }, | ||
| 370 | Vector { _handler: FMC }, | ||
| 371 | Vector { _handler: SDMMC1 }, | ||
| 372 | Vector { _handler: TIM5 }, | ||
| 373 | Vector { _handler: SPI3 }, | ||
| 374 | Vector { _handler: UART4 }, | ||
| 375 | Vector { _handler: UART5 }, | ||
| 376 | Vector { _handler: TIM6_DAC }, | ||
| 377 | Vector { _handler: TIM7 }, | ||
| 378 | Vector { | ||
| 379 | _handler: DMA2_Channel1, | ||
| 380 | }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel2, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel3, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel4, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DMA2_Channel5, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DFSDM1_FLT0, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT1, | ||
| 398 | }, | ||
| 399 | Vector { | ||
| 400 | _handler: DFSDM1_FLT2, | ||
| 401 | }, | ||
| 402 | Vector { _handler: COMP }, | ||
| 403 | Vector { _handler: LPTIM1 }, | ||
| 404 | Vector { _handler: LPTIM2 }, | ||
| 405 | Vector { _handler: OTG_FS }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel6, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel7, | ||
| 411 | }, | ||
| 412 | Vector { _handler: LPUART1 }, | ||
| 413 | Vector { _handler: QUADSPI }, | ||
| 414 | Vector { _handler: I2C3_EV }, | ||
| 415 | Vector { _handler: I2C3_ER }, | ||
| 416 | Vector { _handler: SAI1 }, | ||
| 417 | Vector { _handler: SAI2 }, | ||
| 418 | Vector { _handler: SWPMI1 }, | ||
| 419 | Vector { _handler: TSC }, | ||
| 420 | Vector { _handler: LCD }, | ||
| 421 | Vector { _reserved: 0 }, | ||
| 422 | Vector { _handler: RNG }, | ||
| 423 | Vector { _handler: FPU }, | ||
| 424 | ]; | ||
| 425 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 426 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 427 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 428 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l476rc.rs b/embassy-stm32/src/chip/stm32l476rc.rs index ce07466a5..d5b271290 100644 --- a/embassy-stm32/src/chip/stm32l476rc.rs +++ b/embassy-stm32/src/chip/stm32l476rc.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,8 +14,415 @@ peripherals!( | |||
| 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, | 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, |
| 15 | USB_OTG_FS, WWDG | 15 | USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DFSDM1_FLT0 = 61, | ||
| 38 | DFSDM1_FLT1 = 62, | ||
| 39 | DFSDM1_FLT2 = 63, | ||
| 40 | DFSDM1_FLT3 = 42, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | EXTI0 = 6, | ||
| 56 | EXTI1 = 7, | ||
| 57 | EXTI15_10 = 40, | ||
| 58 | EXTI2 = 8, | ||
| 59 | EXTI3 = 9, | ||
| 60 | EXTI4 = 10, | ||
| 61 | EXTI9_5 = 23, | ||
| 62 | FLASH = 4, | ||
| 63 | FMC = 48, | ||
| 64 | FPU = 81, | ||
| 65 | I2C1_ER = 32, | ||
| 66 | I2C1_EV = 31, | ||
| 67 | I2C2_ER = 34, | ||
| 68 | I2C2_EV = 33, | ||
| 69 | I2C3_ER = 73, | ||
| 70 | I2C3_EV = 72, | ||
| 71 | LCD = 78, | ||
| 72 | LPTIM1 = 65, | ||
| 73 | LPTIM2 = 66, | ||
| 74 | LPUART1 = 70, | ||
| 75 | OTG_FS = 67, | ||
| 76 | PVD_PVM = 1, | ||
| 77 | QUADSPI = 71, | ||
| 78 | RCC = 5, | ||
| 79 | RNG = 80, | ||
| 80 | RTC_Alarm = 41, | ||
| 81 | RTC_WKUP = 3, | ||
| 82 | SAI1 = 74, | ||
| 83 | SAI2 = 75, | ||
| 84 | SDMMC1 = 49, | ||
| 85 | SPI1 = 35, | ||
| 86 | SPI2 = 36, | ||
| 87 | SPI3 = 51, | ||
| 88 | SWPMI1 = 76, | ||
| 89 | TAMP_STAMP = 2, | ||
| 90 | TIM1_BRK_TIM15 = 24, | ||
| 91 | TIM1_CC = 27, | ||
| 92 | TIM1_TRG_COM_TIM17 = 26, | ||
| 93 | TIM1_UP_TIM16 = 25, | ||
| 94 | TIM2 = 28, | ||
| 95 | TIM3 = 29, | ||
| 96 | TIM4 = 30, | ||
| 97 | TIM5 = 50, | ||
| 98 | TIM6_DAC = 54, | ||
| 99 | TIM7 = 55, | ||
| 100 | TIM8_BRK = 43, | ||
| 101 | TIM8_CC = 46, | ||
| 102 | TIM8_TRG_COM = 45, | ||
| 103 | TIM8_UP = 44, | ||
| 104 | TSC = 77, | ||
| 105 | UART4 = 52, | ||
| 106 | UART5 = 53, | ||
| 107 | USART1 = 37, | ||
| 108 | USART2 = 38, | ||
| 109 | USART3 = 39, | ||
| 110 | WWDG = 0, | ||
| 111 | } | ||
| 112 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 113 | #[inline(always)] | ||
| 114 | fn number(self) -> u16 { | ||
| 115 | self as u16 | ||
| 116 | } | ||
| 117 | } | ||
| 118 | |||
| 119 | declare!(ADC1_2); | ||
| 120 | declare!(ADC3); | ||
| 121 | declare!(CAN1_RX0); | ||
| 122 | declare!(CAN1_RX1); | ||
| 123 | declare!(CAN1_SCE); | ||
| 124 | declare!(CAN1_TX); | ||
| 125 | declare!(COMP); | ||
| 126 | declare!(DFSDM1_FLT0); | ||
| 127 | declare!(DFSDM1_FLT1); | ||
| 128 | declare!(DFSDM1_FLT2); | ||
| 129 | declare!(DFSDM1_FLT3); | ||
| 130 | declare!(DMA1_Channel1); | ||
| 131 | declare!(DMA1_Channel2); | ||
| 132 | declare!(DMA1_Channel3); | ||
| 133 | declare!(DMA1_Channel4); | ||
| 134 | declare!(DMA1_Channel5); | ||
| 135 | declare!(DMA1_Channel6); | ||
| 136 | declare!(DMA1_Channel7); | ||
| 137 | declare!(DMA2_Channel1); | ||
| 138 | declare!(DMA2_Channel2); | ||
| 139 | declare!(DMA2_Channel3); | ||
| 140 | declare!(DMA2_Channel4); | ||
| 141 | declare!(DMA2_Channel5); | ||
| 142 | declare!(DMA2_Channel6); | ||
| 143 | declare!(DMA2_Channel7); | ||
| 144 | declare!(EXTI0); | ||
| 145 | declare!(EXTI1); | ||
| 146 | declare!(EXTI15_10); | ||
| 147 | declare!(EXTI2); | ||
| 148 | declare!(EXTI3); | ||
| 149 | declare!(EXTI4); | ||
| 150 | declare!(EXTI9_5); | ||
| 151 | declare!(FLASH); | ||
| 152 | declare!(FMC); | ||
| 153 | declare!(FPU); | ||
| 154 | declare!(I2C1_ER); | ||
| 155 | declare!(I2C1_EV); | ||
| 156 | declare!(I2C2_ER); | ||
| 157 | declare!(I2C2_EV); | ||
| 158 | declare!(I2C3_ER); | ||
| 159 | declare!(I2C3_EV); | ||
| 160 | declare!(LCD); | ||
| 161 | declare!(LPTIM1); | ||
| 162 | declare!(LPTIM2); | ||
| 163 | declare!(LPUART1); | ||
| 164 | declare!(OTG_FS); | ||
| 165 | declare!(PVD_PVM); | ||
| 166 | declare!(QUADSPI); | ||
| 167 | declare!(RCC); | ||
| 168 | declare!(RNG); | ||
| 169 | declare!(RTC_Alarm); | ||
| 170 | declare!(RTC_WKUP); | ||
| 171 | declare!(SAI1); | ||
| 172 | declare!(SAI2); | ||
| 173 | declare!(SDMMC1); | ||
| 174 | declare!(SPI1); | ||
| 175 | declare!(SPI2); | ||
| 176 | declare!(SPI3); | ||
| 177 | declare!(SWPMI1); | ||
| 178 | declare!(TAMP_STAMP); | ||
| 179 | declare!(TIM1_BRK_TIM15); | ||
| 180 | declare!(TIM1_CC); | ||
| 181 | declare!(TIM1_TRG_COM_TIM17); | ||
| 182 | declare!(TIM1_UP_TIM16); | ||
| 183 | declare!(TIM2); | ||
| 184 | declare!(TIM3); | ||
| 185 | declare!(TIM4); | ||
| 186 | declare!(TIM5); | ||
| 187 | declare!(TIM6_DAC); | ||
| 188 | declare!(TIM7); | ||
| 189 | declare!(TIM8_BRK); | ||
| 190 | declare!(TIM8_CC); | ||
| 191 | declare!(TIM8_TRG_COM); | ||
| 192 | declare!(TIM8_UP); | ||
| 193 | declare!(TSC); | ||
| 194 | declare!(UART4); | ||
| 195 | declare!(UART5); | ||
| 196 | declare!(USART1); | ||
| 197 | declare!(USART2); | ||
| 198 | declare!(USART3); | ||
| 199 | declare!(WWDG); | ||
| 200 | } | ||
| 201 | mod interrupt_vector { | ||
| 202 | extern "C" { | ||
| 203 | fn ADC1_2(); | ||
| 204 | fn ADC3(); | ||
| 205 | fn CAN1_RX0(); | ||
| 206 | fn CAN1_RX1(); | ||
| 207 | fn CAN1_SCE(); | ||
| 208 | fn CAN1_TX(); | ||
| 209 | fn COMP(); | ||
| 210 | fn DFSDM1_FLT0(); | ||
| 211 | fn DFSDM1_FLT1(); | ||
| 212 | fn DFSDM1_FLT2(); | ||
| 213 | fn DFSDM1_FLT3(); | ||
| 214 | fn DMA1_Channel1(); | ||
| 215 | fn DMA1_Channel2(); | ||
| 216 | fn DMA1_Channel3(); | ||
| 217 | fn DMA1_Channel4(); | ||
| 218 | fn DMA1_Channel5(); | ||
| 219 | fn DMA1_Channel6(); | ||
| 220 | fn DMA1_Channel7(); | ||
| 221 | fn DMA2_Channel1(); | ||
| 222 | fn DMA2_Channel2(); | ||
| 223 | fn DMA2_Channel3(); | ||
| 224 | fn DMA2_Channel4(); | ||
| 225 | fn DMA2_Channel5(); | ||
| 226 | fn DMA2_Channel6(); | ||
| 227 | fn DMA2_Channel7(); | ||
| 228 | fn EXTI0(); | ||
| 229 | fn EXTI1(); | ||
| 230 | fn EXTI15_10(); | ||
| 231 | fn EXTI2(); | ||
| 232 | fn EXTI3(); | ||
| 233 | fn EXTI4(); | ||
| 234 | fn EXTI9_5(); | ||
| 235 | fn FLASH(); | ||
| 236 | fn FMC(); | ||
| 237 | fn FPU(); | ||
| 238 | fn I2C1_ER(); | ||
| 239 | fn I2C1_EV(); | ||
| 240 | fn I2C2_ER(); | ||
| 241 | fn I2C2_EV(); | ||
| 242 | fn I2C3_ER(); | ||
| 243 | fn I2C3_EV(); | ||
| 244 | fn LCD(); | ||
| 245 | fn LPTIM1(); | ||
| 246 | fn LPTIM2(); | ||
| 247 | fn LPUART1(); | ||
| 248 | fn OTG_FS(); | ||
| 249 | fn PVD_PVM(); | ||
| 250 | fn QUADSPI(); | ||
| 251 | fn RCC(); | ||
| 252 | fn RNG(); | ||
| 253 | fn RTC_Alarm(); | ||
| 254 | fn RTC_WKUP(); | ||
| 255 | fn SAI1(); | ||
| 256 | fn SAI2(); | ||
| 257 | fn SDMMC1(); | ||
| 258 | fn SPI1(); | ||
| 259 | fn SPI2(); | ||
| 260 | fn SPI3(); | ||
| 261 | fn SWPMI1(); | ||
| 262 | fn TAMP_STAMP(); | ||
| 263 | fn TIM1_BRK_TIM15(); | ||
| 264 | fn TIM1_CC(); | ||
| 265 | fn TIM1_TRG_COM_TIM17(); | ||
| 266 | fn TIM1_UP_TIM16(); | ||
| 267 | fn TIM2(); | ||
| 268 | fn TIM3(); | ||
| 269 | fn TIM4(); | ||
| 270 | fn TIM5(); | ||
| 271 | fn TIM6_DAC(); | ||
| 272 | fn TIM7(); | ||
| 273 | fn TIM8_BRK(); | ||
| 274 | fn TIM8_CC(); | ||
| 275 | fn TIM8_TRG_COM(); | ||
| 276 | fn TIM8_UP(); | ||
| 277 | fn TSC(); | ||
| 278 | fn UART4(); | ||
| 279 | fn UART5(); | ||
| 280 | fn USART1(); | ||
| 281 | fn USART2(); | ||
| 282 | fn USART3(); | ||
| 283 | fn WWDG(); | ||
| 284 | } | ||
| 285 | pub union Vector { | ||
| 286 | _handler: unsafe extern "C" fn(), | ||
| 287 | _reserved: u32, | ||
| 288 | } | ||
| 289 | #[link_section = ".vector_table.interrupts"] | ||
| 290 | #[no_mangle] | ||
| 291 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 292 | Vector { _handler: WWDG }, | ||
| 293 | Vector { _handler: PVD_PVM }, | ||
| 294 | Vector { | ||
| 295 | _handler: TAMP_STAMP, | ||
| 296 | }, | ||
| 297 | Vector { _handler: RTC_WKUP }, | ||
| 298 | Vector { _handler: FLASH }, | ||
| 299 | Vector { _handler: RCC }, | ||
| 300 | Vector { _handler: EXTI0 }, | ||
| 301 | Vector { _handler: EXTI1 }, | ||
| 302 | Vector { _handler: EXTI2 }, | ||
| 303 | Vector { _handler: EXTI3 }, | ||
| 304 | Vector { _handler: EXTI4 }, | ||
| 305 | Vector { | ||
| 306 | _handler: DMA1_Channel1, | ||
| 307 | }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel2, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel3, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel4, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel5, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel6, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA1_Channel7, | ||
| 325 | }, | ||
| 326 | Vector { _handler: ADC1_2 }, | ||
| 327 | Vector { _handler: CAN1_TX }, | ||
| 328 | Vector { _handler: CAN1_RX0 }, | ||
| 329 | Vector { _handler: CAN1_RX1 }, | ||
| 330 | Vector { _handler: CAN1_SCE }, | ||
| 331 | Vector { _handler: EXTI9_5 }, | ||
| 332 | Vector { | ||
| 333 | _handler: TIM1_BRK_TIM15, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_UP_TIM16, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: TIM1_TRG_COM_TIM17, | ||
| 340 | }, | ||
| 341 | Vector { _handler: TIM1_CC }, | ||
| 342 | Vector { _handler: TIM2 }, | ||
| 343 | Vector { _handler: TIM3 }, | ||
| 344 | Vector { _handler: TIM4 }, | ||
| 345 | Vector { _handler: I2C1_EV }, | ||
| 346 | Vector { _handler: I2C1_ER }, | ||
| 347 | Vector { _handler: I2C2_EV }, | ||
| 348 | Vector { _handler: I2C2_ER }, | ||
| 349 | Vector { _handler: SPI1 }, | ||
| 350 | Vector { _handler: SPI2 }, | ||
| 351 | Vector { _handler: USART1 }, | ||
| 352 | Vector { _handler: USART2 }, | ||
| 353 | Vector { _handler: USART3 }, | ||
| 354 | Vector { | ||
| 355 | _handler: EXTI15_10, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: RTC_Alarm, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: DFSDM1_FLT3, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM8_BRK }, | ||
| 364 | Vector { _handler: TIM8_UP }, | ||
| 365 | Vector { | ||
| 366 | _handler: TIM8_TRG_COM, | ||
| 367 | }, | ||
| 368 | Vector { _handler: TIM8_CC }, | ||
| 369 | Vector { _handler: ADC3 }, | ||
| 370 | Vector { _handler: FMC }, | ||
| 371 | Vector { _handler: SDMMC1 }, | ||
| 372 | Vector { _handler: TIM5 }, | ||
| 373 | Vector { _handler: SPI3 }, | ||
| 374 | Vector { _handler: UART4 }, | ||
| 375 | Vector { _handler: UART5 }, | ||
| 376 | Vector { _handler: TIM6_DAC }, | ||
| 377 | Vector { _handler: TIM7 }, | ||
| 378 | Vector { | ||
| 379 | _handler: DMA2_Channel1, | ||
| 380 | }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel2, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel3, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel4, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DMA2_Channel5, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DFSDM1_FLT0, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT1, | ||
| 398 | }, | ||
| 399 | Vector { | ||
| 400 | _handler: DFSDM1_FLT2, | ||
| 401 | }, | ||
| 402 | Vector { _handler: COMP }, | ||
| 403 | Vector { _handler: LPTIM1 }, | ||
| 404 | Vector { _handler: LPTIM2 }, | ||
| 405 | Vector { _handler: OTG_FS }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel6, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel7, | ||
| 411 | }, | ||
| 412 | Vector { _handler: LPUART1 }, | ||
| 413 | Vector { _handler: QUADSPI }, | ||
| 414 | Vector { _handler: I2C3_EV }, | ||
| 415 | Vector { _handler: I2C3_ER }, | ||
| 416 | Vector { _handler: SAI1 }, | ||
| 417 | Vector { _handler: SAI2 }, | ||
| 418 | Vector { _handler: SWPMI1 }, | ||
| 419 | Vector { _handler: TSC }, | ||
| 420 | Vector { _handler: LCD }, | ||
| 421 | Vector { _reserved: 0 }, | ||
| 422 | Vector { _handler: RNG }, | ||
| 423 | Vector { _handler: FPU }, | ||
| 424 | ]; | ||
| 425 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 426 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 427 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 428 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l476re.rs b/embassy-stm32/src/chip/stm32l476re.rs index ce07466a5..d5b271290 100644 --- a/embassy-stm32/src/chip/stm32l476re.rs +++ b/embassy-stm32/src/chip/stm32l476re.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,8 +14,415 @@ peripherals!( | |||
| 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, | 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, |
| 15 | USB_OTG_FS, WWDG | 15 | USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DFSDM1_FLT0 = 61, | ||
| 38 | DFSDM1_FLT1 = 62, | ||
| 39 | DFSDM1_FLT2 = 63, | ||
| 40 | DFSDM1_FLT3 = 42, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | EXTI0 = 6, | ||
| 56 | EXTI1 = 7, | ||
| 57 | EXTI15_10 = 40, | ||
| 58 | EXTI2 = 8, | ||
| 59 | EXTI3 = 9, | ||
| 60 | EXTI4 = 10, | ||
| 61 | EXTI9_5 = 23, | ||
| 62 | FLASH = 4, | ||
| 63 | FMC = 48, | ||
| 64 | FPU = 81, | ||
| 65 | I2C1_ER = 32, | ||
| 66 | I2C1_EV = 31, | ||
| 67 | I2C2_ER = 34, | ||
| 68 | I2C2_EV = 33, | ||
| 69 | I2C3_ER = 73, | ||
| 70 | I2C3_EV = 72, | ||
| 71 | LCD = 78, | ||
| 72 | LPTIM1 = 65, | ||
| 73 | LPTIM2 = 66, | ||
| 74 | LPUART1 = 70, | ||
| 75 | OTG_FS = 67, | ||
| 76 | PVD_PVM = 1, | ||
| 77 | QUADSPI = 71, | ||
| 78 | RCC = 5, | ||
| 79 | RNG = 80, | ||
| 80 | RTC_Alarm = 41, | ||
| 81 | RTC_WKUP = 3, | ||
| 82 | SAI1 = 74, | ||
| 83 | SAI2 = 75, | ||
| 84 | SDMMC1 = 49, | ||
| 85 | SPI1 = 35, | ||
| 86 | SPI2 = 36, | ||
| 87 | SPI3 = 51, | ||
| 88 | SWPMI1 = 76, | ||
| 89 | TAMP_STAMP = 2, | ||
| 90 | TIM1_BRK_TIM15 = 24, | ||
| 91 | TIM1_CC = 27, | ||
| 92 | TIM1_TRG_COM_TIM17 = 26, | ||
| 93 | TIM1_UP_TIM16 = 25, | ||
| 94 | TIM2 = 28, | ||
| 95 | TIM3 = 29, | ||
| 96 | TIM4 = 30, | ||
| 97 | TIM5 = 50, | ||
| 98 | TIM6_DAC = 54, | ||
| 99 | TIM7 = 55, | ||
| 100 | TIM8_BRK = 43, | ||
| 101 | TIM8_CC = 46, | ||
| 102 | TIM8_TRG_COM = 45, | ||
| 103 | TIM8_UP = 44, | ||
| 104 | TSC = 77, | ||
| 105 | UART4 = 52, | ||
| 106 | UART5 = 53, | ||
| 107 | USART1 = 37, | ||
| 108 | USART2 = 38, | ||
| 109 | USART3 = 39, | ||
| 110 | WWDG = 0, | ||
| 111 | } | ||
| 112 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 113 | #[inline(always)] | ||
| 114 | fn number(self) -> u16 { | ||
| 115 | self as u16 | ||
| 116 | } | ||
| 117 | } | ||
| 118 | |||
| 119 | declare!(ADC1_2); | ||
| 120 | declare!(ADC3); | ||
| 121 | declare!(CAN1_RX0); | ||
| 122 | declare!(CAN1_RX1); | ||
| 123 | declare!(CAN1_SCE); | ||
| 124 | declare!(CAN1_TX); | ||
| 125 | declare!(COMP); | ||
| 126 | declare!(DFSDM1_FLT0); | ||
| 127 | declare!(DFSDM1_FLT1); | ||
| 128 | declare!(DFSDM1_FLT2); | ||
| 129 | declare!(DFSDM1_FLT3); | ||
| 130 | declare!(DMA1_Channel1); | ||
| 131 | declare!(DMA1_Channel2); | ||
| 132 | declare!(DMA1_Channel3); | ||
| 133 | declare!(DMA1_Channel4); | ||
| 134 | declare!(DMA1_Channel5); | ||
| 135 | declare!(DMA1_Channel6); | ||
| 136 | declare!(DMA1_Channel7); | ||
| 137 | declare!(DMA2_Channel1); | ||
| 138 | declare!(DMA2_Channel2); | ||
| 139 | declare!(DMA2_Channel3); | ||
| 140 | declare!(DMA2_Channel4); | ||
| 141 | declare!(DMA2_Channel5); | ||
| 142 | declare!(DMA2_Channel6); | ||
| 143 | declare!(DMA2_Channel7); | ||
| 144 | declare!(EXTI0); | ||
| 145 | declare!(EXTI1); | ||
| 146 | declare!(EXTI15_10); | ||
| 147 | declare!(EXTI2); | ||
| 148 | declare!(EXTI3); | ||
| 149 | declare!(EXTI4); | ||
| 150 | declare!(EXTI9_5); | ||
| 151 | declare!(FLASH); | ||
| 152 | declare!(FMC); | ||
| 153 | declare!(FPU); | ||
| 154 | declare!(I2C1_ER); | ||
| 155 | declare!(I2C1_EV); | ||
| 156 | declare!(I2C2_ER); | ||
| 157 | declare!(I2C2_EV); | ||
| 158 | declare!(I2C3_ER); | ||
| 159 | declare!(I2C3_EV); | ||
| 160 | declare!(LCD); | ||
| 161 | declare!(LPTIM1); | ||
| 162 | declare!(LPTIM2); | ||
| 163 | declare!(LPUART1); | ||
| 164 | declare!(OTG_FS); | ||
| 165 | declare!(PVD_PVM); | ||
| 166 | declare!(QUADSPI); | ||
| 167 | declare!(RCC); | ||
| 168 | declare!(RNG); | ||
| 169 | declare!(RTC_Alarm); | ||
| 170 | declare!(RTC_WKUP); | ||
| 171 | declare!(SAI1); | ||
| 172 | declare!(SAI2); | ||
| 173 | declare!(SDMMC1); | ||
| 174 | declare!(SPI1); | ||
| 175 | declare!(SPI2); | ||
| 176 | declare!(SPI3); | ||
| 177 | declare!(SWPMI1); | ||
| 178 | declare!(TAMP_STAMP); | ||
| 179 | declare!(TIM1_BRK_TIM15); | ||
| 180 | declare!(TIM1_CC); | ||
| 181 | declare!(TIM1_TRG_COM_TIM17); | ||
| 182 | declare!(TIM1_UP_TIM16); | ||
| 183 | declare!(TIM2); | ||
| 184 | declare!(TIM3); | ||
| 185 | declare!(TIM4); | ||
| 186 | declare!(TIM5); | ||
| 187 | declare!(TIM6_DAC); | ||
| 188 | declare!(TIM7); | ||
| 189 | declare!(TIM8_BRK); | ||
| 190 | declare!(TIM8_CC); | ||
| 191 | declare!(TIM8_TRG_COM); | ||
| 192 | declare!(TIM8_UP); | ||
| 193 | declare!(TSC); | ||
| 194 | declare!(UART4); | ||
| 195 | declare!(UART5); | ||
| 196 | declare!(USART1); | ||
| 197 | declare!(USART2); | ||
| 198 | declare!(USART3); | ||
| 199 | declare!(WWDG); | ||
| 200 | } | ||
| 201 | mod interrupt_vector { | ||
| 202 | extern "C" { | ||
| 203 | fn ADC1_2(); | ||
| 204 | fn ADC3(); | ||
| 205 | fn CAN1_RX0(); | ||
| 206 | fn CAN1_RX1(); | ||
| 207 | fn CAN1_SCE(); | ||
| 208 | fn CAN1_TX(); | ||
| 209 | fn COMP(); | ||
| 210 | fn DFSDM1_FLT0(); | ||
| 211 | fn DFSDM1_FLT1(); | ||
| 212 | fn DFSDM1_FLT2(); | ||
| 213 | fn DFSDM1_FLT3(); | ||
| 214 | fn DMA1_Channel1(); | ||
| 215 | fn DMA1_Channel2(); | ||
| 216 | fn DMA1_Channel3(); | ||
| 217 | fn DMA1_Channel4(); | ||
| 218 | fn DMA1_Channel5(); | ||
| 219 | fn DMA1_Channel6(); | ||
| 220 | fn DMA1_Channel7(); | ||
| 221 | fn DMA2_Channel1(); | ||
| 222 | fn DMA2_Channel2(); | ||
| 223 | fn DMA2_Channel3(); | ||
| 224 | fn DMA2_Channel4(); | ||
| 225 | fn DMA2_Channel5(); | ||
| 226 | fn DMA2_Channel6(); | ||
| 227 | fn DMA2_Channel7(); | ||
| 228 | fn EXTI0(); | ||
| 229 | fn EXTI1(); | ||
| 230 | fn EXTI15_10(); | ||
| 231 | fn EXTI2(); | ||
| 232 | fn EXTI3(); | ||
| 233 | fn EXTI4(); | ||
| 234 | fn EXTI9_5(); | ||
| 235 | fn FLASH(); | ||
| 236 | fn FMC(); | ||
| 237 | fn FPU(); | ||
| 238 | fn I2C1_ER(); | ||
| 239 | fn I2C1_EV(); | ||
| 240 | fn I2C2_ER(); | ||
| 241 | fn I2C2_EV(); | ||
| 242 | fn I2C3_ER(); | ||
| 243 | fn I2C3_EV(); | ||
| 244 | fn LCD(); | ||
| 245 | fn LPTIM1(); | ||
| 246 | fn LPTIM2(); | ||
| 247 | fn LPUART1(); | ||
| 248 | fn OTG_FS(); | ||
| 249 | fn PVD_PVM(); | ||
| 250 | fn QUADSPI(); | ||
| 251 | fn RCC(); | ||
| 252 | fn RNG(); | ||
| 253 | fn RTC_Alarm(); | ||
| 254 | fn RTC_WKUP(); | ||
| 255 | fn SAI1(); | ||
| 256 | fn SAI2(); | ||
| 257 | fn SDMMC1(); | ||
| 258 | fn SPI1(); | ||
| 259 | fn SPI2(); | ||
| 260 | fn SPI3(); | ||
| 261 | fn SWPMI1(); | ||
| 262 | fn TAMP_STAMP(); | ||
| 263 | fn TIM1_BRK_TIM15(); | ||
| 264 | fn TIM1_CC(); | ||
| 265 | fn TIM1_TRG_COM_TIM17(); | ||
| 266 | fn TIM1_UP_TIM16(); | ||
| 267 | fn TIM2(); | ||
| 268 | fn TIM3(); | ||
| 269 | fn TIM4(); | ||
| 270 | fn TIM5(); | ||
| 271 | fn TIM6_DAC(); | ||
| 272 | fn TIM7(); | ||
| 273 | fn TIM8_BRK(); | ||
| 274 | fn TIM8_CC(); | ||
| 275 | fn TIM8_TRG_COM(); | ||
| 276 | fn TIM8_UP(); | ||
| 277 | fn TSC(); | ||
| 278 | fn UART4(); | ||
| 279 | fn UART5(); | ||
| 280 | fn USART1(); | ||
| 281 | fn USART2(); | ||
| 282 | fn USART3(); | ||
| 283 | fn WWDG(); | ||
| 284 | } | ||
| 285 | pub union Vector { | ||
| 286 | _handler: unsafe extern "C" fn(), | ||
| 287 | _reserved: u32, | ||
| 288 | } | ||
| 289 | #[link_section = ".vector_table.interrupts"] | ||
| 290 | #[no_mangle] | ||
| 291 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 292 | Vector { _handler: WWDG }, | ||
| 293 | Vector { _handler: PVD_PVM }, | ||
| 294 | Vector { | ||
| 295 | _handler: TAMP_STAMP, | ||
| 296 | }, | ||
| 297 | Vector { _handler: RTC_WKUP }, | ||
| 298 | Vector { _handler: FLASH }, | ||
| 299 | Vector { _handler: RCC }, | ||
| 300 | Vector { _handler: EXTI0 }, | ||
| 301 | Vector { _handler: EXTI1 }, | ||
| 302 | Vector { _handler: EXTI2 }, | ||
| 303 | Vector { _handler: EXTI3 }, | ||
| 304 | Vector { _handler: EXTI4 }, | ||
| 305 | Vector { | ||
| 306 | _handler: DMA1_Channel1, | ||
| 307 | }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel2, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel3, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel4, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel5, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel6, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA1_Channel7, | ||
| 325 | }, | ||
| 326 | Vector { _handler: ADC1_2 }, | ||
| 327 | Vector { _handler: CAN1_TX }, | ||
| 328 | Vector { _handler: CAN1_RX0 }, | ||
| 329 | Vector { _handler: CAN1_RX1 }, | ||
| 330 | Vector { _handler: CAN1_SCE }, | ||
| 331 | Vector { _handler: EXTI9_5 }, | ||
| 332 | Vector { | ||
| 333 | _handler: TIM1_BRK_TIM15, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_UP_TIM16, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: TIM1_TRG_COM_TIM17, | ||
| 340 | }, | ||
| 341 | Vector { _handler: TIM1_CC }, | ||
| 342 | Vector { _handler: TIM2 }, | ||
| 343 | Vector { _handler: TIM3 }, | ||
| 344 | Vector { _handler: TIM4 }, | ||
| 345 | Vector { _handler: I2C1_EV }, | ||
| 346 | Vector { _handler: I2C1_ER }, | ||
| 347 | Vector { _handler: I2C2_EV }, | ||
| 348 | Vector { _handler: I2C2_ER }, | ||
| 349 | Vector { _handler: SPI1 }, | ||
| 350 | Vector { _handler: SPI2 }, | ||
| 351 | Vector { _handler: USART1 }, | ||
| 352 | Vector { _handler: USART2 }, | ||
| 353 | Vector { _handler: USART3 }, | ||
| 354 | Vector { | ||
| 355 | _handler: EXTI15_10, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: RTC_Alarm, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: DFSDM1_FLT3, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM8_BRK }, | ||
| 364 | Vector { _handler: TIM8_UP }, | ||
| 365 | Vector { | ||
| 366 | _handler: TIM8_TRG_COM, | ||
| 367 | }, | ||
| 368 | Vector { _handler: TIM8_CC }, | ||
| 369 | Vector { _handler: ADC3 }, | ||
| 370 | Vector { _handler: FMC }, | ||
| 371 | Vector { _handler: SDMMC1 }, | ||
| 372 | Vector { _handler: TIM5 }, | ||
| 373 | Vector { _handler: SPI3 }, | ||
| 374 | Vector { _handler: UART4 }, | ||
| 375 | Vector { _handler: UART5 }, | ||
| 376 | Vector { _handler: TIM6_DAC }, | ||
| 377 | Vector { _handler: TIM7 }, | ||
| 378 | Vector { | ||
| 379 | _handler: DMA2_Channel1, | ||
| 380 | }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel2, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel3, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel4, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DMA2_Channel5, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DFSDM1_FLT0, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT1, | ||
| 398 | }, | ||
| 399 | Vector { | ||
| 400 | _handler: DFSDM1_FLT2, | ||
| 401 | }, | ||
| 402 | Vector { _handler: COMP }, | ||
| 403 | Vector { _handler: LPTIM1 }, | ||
| 404 | Vector { _handler: LPTIM2 }, | ||
| 405 | Vector { _handler: OTG_FS }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel6, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel7, | ||
| 411 | }, | ||
| 412 | Vector { _handler: LPUART1 }, | ||
| 413 | Vector { _handler: QUADSPI }, | ||
| 414 | Vector { _handler: I2C3_EV }, | ||
| 415 | Vector { _handler: I2C3_ER }, | ||
| 416 | Vector { _handler: SAI1 }, | ||
| 417 | Vector { _handler: SAI2 }, | ||
| 418 | Vector { _handler: SWPMI1 }, | ||
| 419 | Vector { _handler: TSC }, | ||
| 420 | Vector { _handler: LCD }, | ||
| 421 | Vector { _reserved: 0 }, | ||
| 422 | Vector { _handler: RNG }, | ||
| 423 | Vector { _handler: FPU }, | ||
| 424 | ]; | ||
| 425 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 426 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 427 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 428 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l476rg.rs b/embassy-stm32/src/chip/stm32l476rg.rs index ce07466a5..d5b271290 100644 --- a/embassy-stm32/src/chip/stm32l476rg.rs +++ b/embassy-stm32/src/chip/stm32l476rg.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,8 +14,415 @@ peripherals!( | |||
| 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, | 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, |
| 15 | USB_OTG_FS, WWDG | 15 | USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DFSDM1_FLT0 = 61, | ||
| 38 | DFSDM1_FLT1 = 62, | ||
| 39 | DFSDM1_FLT2 = 63, | ||
| 40 | DFSDM1_FLT3 = 42, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | EXTI0 = 6, | ||
| 56 | EXTI1 = 7, | ||
| 57 | EXTI15_10 = 40, | ||
| 58 | EXTI2 = 8, | ||
| 59 | EXTI3 = 9, | ||
| 60 | EXTI4 = 10, | ||
| 61 | EXTI9_5 = 23, | ||
| 62 | FLASH = 4, | ||
| 63 | FMC = 48, | ||
| 64 | FPU = 81, | ||
| 65 | I2C1_ER = 32, | ||
| 66 | I2C1_EV = 31, | ||
| 67 | I2C2_ER = 34, | ||
| 68 | I2C2_EV = 33, | ||
| 69 | I2C3_ER = 73, | ||
| 70 | I2C3_EV = 72, | ||
| 71 | LCD = 78, | ||
| 72 | LPTIM1 = 65, | ||
| 73 | LPTIM2 = 66, | ||
| 74 | LPUART1 = 70, | ||
| 75 | OTG_FS = 67, | ||
| 76 | PVD_PVM = 1, | ||
| 77 | QUADSPI = 71, | ||
| 78 | RCC = 5, | ||
| 79 | RNG = 80, | ||
| 80 | RTC_Alarm = 41, | ||
| 81 | RTC_WKUP = 3, | ||
| 82 | SAI1 = 74, | ||
| 83 | SAI2 = 75, | ||
| 84 | SDMMC1 = 49, | ||
| 85 | SPI1 = 35, | ||
| 86 | SPI2 = 36, | ||
| 87 | SPI3 = 51, | ||
| 88 | SWPMI1 = 76, | ||
| 89 | TAMP_STAMP = 2, | ||
| 90 | TIM1_BRK_TIM15 = 24, | ||
| 91 | TIM1_CC = 27, | ||
| 92 | TIM1_TRG_COM_TIM17 = 26, | ||
| 93 | TIM1_UP_TIM16 = 25, | ||
| 94 | TIM2 = 28, | ||
| 95 | TIM3 = 29, | ||
| 96 | TIM4 = 30, | ||
| 97 | TIM5 = 50, | ||
| 98 | TIM6_DAC = 54, | ||
| 99 | TIM7 = 55, | ||
| 100 | TIM8_BRK = 43, | ||
| 101 | TIM8_CC = 46, | ||
| 102 | TIM8_TRG_COM = 45, | ||
| 103 | TIM8_UP = 44, | ||
| 104 | TSC = 77, | ||
| 105 | UART4 = 52, | ||
| 106 | UART5 = 53, | ||
| 107 | USART1 = 37, | ||
| 108 | USART2 = 38, | ||
| 109 | USART3 = 39, | ||
| 110 | WWDG = 0, | ||
| 111 | } | ||
| 112 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 113 | #[inline(always)] | ||
| 114 | fn number(self) -> u16 { | ||
| 115 | self as u16 | ||
| 116 | } | ||
| 117 | } | ||
| 118 | |||
| 119 | declare!(ADC1_2); | ||
| 120 | declare!(ADC3); | ||
| 121 | declare!(CAN1_RX0); | ||
| 122 | declare!(CAN1_RX1); | ||
| 123 | declare!(CAN1_SCE); | ||
| 124 | declare!(CAN1_TX); | ||
| 125 | declare!(COMP); | ||
| 126 | declare!(DFSDM1_FLT0); | ||
| 127 | declare!(DFSDM1_FLT1); | ||
| 128 | declare!(DFSDM1_FLT2); | ||
| 129 | declare!(DFSDM1_FLT3); | ||
| 130 | declare!(DMA1_Channel1); | ||
| 131 | declare!(DMA1_Channel2); | ||
| 132 | declare!(DMA1_Channel3); | ||
| 133 | declare!(DMA1_Channel4); | ||
| 134 | declare!(DMA1_Channel5); | ||
| 135 | declare!(DMA1_Channel6); | ||
| 136 | declare!(DMA1_Channel7); | ||
| 137 | declare!(DMA2_Channel1); | ||
| 138 | declare!(DMA2_Channel2); | ||
| 139 | declare!(DMA2_Channel3); | ||
| 140 | declare!(DMA2_Channel4); | ||
| 141 | declare!(DMA2_Channel5); | ||
| 142 | declare!(DMA2_Channel6); | ||
| 143 | declare!(DMA2_Channel7); | ||
| 144 | declare!(EXTI0); | ||
| 145 | declare!(EXTI1); | ||
| 146 | declare!(EXTI15_10); | ||
| 147 | declare!(EXTI2); | ||
| 148 | declare!(EXTI3); | ||
| 149 | declare!(EXTI4); | ||
| 150 | declare!(EXTI9_5); | ||
| 151 | declare!(FLASH); | ||
| 152 | declare!(FMC); | ||
| 153 | declare!(FPU); | ||
| 154 | declare!(I2C1_ER); | ||
| 155 | declare!(I2C1_EV); | ||
| 156 | declare!(I2C2_ER); | ||
| 157 | declare!(I2C2_EV); | ||
| 158 | declare!(I2C3_ER); | ||
| 159 | declare!(I2C3_EV); | ||
| 160 | declare!(LCD); | ||
| 161 | declare!(LPTIM1); | ||
| 162 | declare!(LPTIM2); | ||
| 163 | declare!(LPUART1); | ||
| 164 | declare!(OTG_FS); | ||
| 165 | declare!(PVD_PVM); | ||
| 166 | declare!(QUADSPI); | ||
| 167 | declare!(RCC); | ||
| 168 | declare!(RNG); | ||
| 169 | declare!(RTC_Alarm); | ||
| 170 | declare!(RTC_WKUP); | ||
| 171 | declare!(SAI1); | ||
| 172 | declare!(SAI2); | ||
| 173 | declare!(SDMMC1); | ||
| 174 | declare!(SPI1); | ||
| 175 | declare!(SPI2); | ||
| 176 | declare!(SPI3); | ||
| 177 | declare!(SWPMI1); | ||
| 178 | declare!(TAMP_STAMP); | ||
| 179 | declare!(TIM1_BRK_TIM15); | ||
| 180 | declare!(TIM1_CC); | ||
| 181 | declare!(TIM1_TRG_COM_TIM17); | ||
| 182 | declare!(TIM1_UP_TIM16); | ||
| 183 | declare!(TIM2); | ||
| 184 | declare!(TIM3); | ||
| 185 | declare!(TIM4); | ||
| 186 | declare!(TIM5); | ||
| 187 | declare!(TIM6_DAC); | ||
| 188 | declare!(TIM7); | ||
| 189 | declare!(TIM8_BRK); | ||
| 190 | declare!(TIM8_CC); | ||
| 191 | declare!(TIM8_TRG_COM); | ||
| 192 | declare!(TIM8_UP); | ||
| 193 | declare!(TSC); | ||
| 194 | declare!(UART4); | ||
| 195 | declare!(UART5); | ||
| 196 | declare!(USART1); | ||
| 197 | declare!(USART2); | ||
| 198 | declare!(USART3); | ||
| 199 | declare!(WWDG); | ||
| 200 | } | ||
| 201 | mod interrupt_vector { | ||
| 202 | extern "C" { | ||
| 203 | fn ADC1_2(); | ||
| 204 | fn ADC3(); | ||
| 205 | fn CAN1_RX0(); | ||
| 206 | fn CAN1_RX1(); | ||
| 207 | fn CAN1_SCE(); | ||
| 208 | fn CAN1_TX(); | ||
| 209 | fn COMP(); | ||
| 210 | fn DFSDM1_FLT0(); | ||
| 211 | fn DFSDM1_FLT1(); | ||
| 212 | fn DFSDM1_FLT2(); | ||
| 213 | fn DFSDM1_FLT3(); | ||
| 214 | fn DMA1_Channel1(); | ||
| 215 | fn DMA1_Channel2(); | ||
| 216 | fn DMA1_Channel3(); | ||
| 217 | fn DMA1_Channel4(); | ||
| 218 | fn DMA1_Channel5(); | ||
| 219 | fn DMA1_Channel6(); | ||
| 220 | fn DMA1_Channel7(); | ||
| 221 | fn DMA2_Channel1(); | ||
| 222 | fn DMA2_Channel2(); | ||
| 223 | fn DMA2_Channel3(); | ||
| 224 | fn DMA2_Channel4(); | ||
| 225 | fn DMA2_Channel5(); | ||
| 226 | fn DMA2_Channel6(); | ||
| 227 | fn DMA2_Channel7(); | ||
| 228 | fn EXTI0(); | ||
| 229 | fn EXTI1(); | ||
| 230 | fn EXTI15_10(); | ||
| 231 | fn EXTI2(); | ||
| 232 | fn EXTI3(); | ||
| 233 | fn EXTI4(); | ||
| 234 | fn EXTI9_5(); | ||
| 235 | fn FLASH(); | ||
| 236 | fn FMC(); | ||
| 237 | fn FPU(); | ||
| 238 | fn I2C1_ER(); | ||
| 239 | fn I2C1_EV(); | ||
| 240 | fn I2C2_ER(); | ||
| 241 | fn I2C2_EV(); | ||
| 242 | fn I2C3_ER(); | ||
| 243 | fn I2C3_EV(); | ||
| 244 | fn LCD(); | ||
| 245 | fn LPTIM1(); | ||
| 246 | fn LPTIM2(); | ||
| 247 | fn LPUART1(); | ||
| 248 | fn OTG_FS(); | ||
| 249 | fn PVD_PVM(); | ||
| 250 | fn QUADSPI(); | ||
| 251 | fn RCC(); | ||
| 252 | fn RNG(); | ||
| 253 | fn RTC_Alarm(); | ||
| 254 | fn RTC_WKUP(); | ||
| 255 | fn SAI1(); | ||
| 256 | fn SAI2(); | ||
| 257 | fn SDMMC1(); | ||
| 258 | fn SPI1(); | ||
| 259 | fn SPI2(); | ||
| 260 | fn SPI3(); | ||
| 261 | fn SWPMI1(); | ||
| 262 | fn TAMP_STAMP(); | ||
| 263 | fn TIM1_BRK_TIM15(); | ||
| 264 | fn TIM1_CC(); | ||
| 265 | fn TIM1_TRG_COM_TIM17(); | ||
| 266 | fn TIM1_UP_TIM16(); | ||
| 267 | fn TIM2(); | ||
| 268 | fn TIM3(); | ||
| 269 | fn TIM4(); | ||
| 270 | fn TIM5(); | ||
| 271 | fn TIM6_DAC(); | ||
| 272 | fn TIM7(); | ||
| 273 | fn TIM8_BRK(); | ||
| 274 | fn TIM8_CC(); | ||
| 275 | fn TIM8_TRG_COM(); | ||
| 276 | fn TIM8_UP(); | ||
| 277 | fn TSC(); | ||
| 278 | fn UART4(); | ||
| 279 | fn UART5(); | ||
| 280 | fn USART1(); | ||
| 281 | fn USART2(); | ||
| 282 | fn USART3(); | ||
| 283 | fn WWDG(); | ||
| 284 | } | ||
| 285 | pub union Vector { | ||
| 286 | _handler: unsafe extern "C" fn(), | ||
| 287 | _reserved: u32, | ||
| 288 | } | ||
| 289 | #[link_section = ".vector_table.interrupts"] | ||
| 290 | #[no_mangle] | ||
| 291 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 292 | Vector { _handler: WWDG }, | ||
| 293 | Vector { _handler: PVD_PVM }, | ||
| 294 | Vector { | ||
| 295 | _handler: TAMP_STAMP, | ||
| 296 | }, | ||
| 297 | Vector { _handler: RTC_WKUP }, | ||
| 298 | Vector { _handler: FLASH }, | ||
| 299 | Vector { _handler: RCC }, | ||
| 300 | Vector { _handler: EXTI0 }, | ||
| 301 | Vector { _handler: EXTI1 }, | ||
| 302 | Vector { _handler: EXTI2 }, | ||
| 303 | Vector { _handler: EXTI3 }, | ||
| 304 | Vector { _handler: EXTI4 }, | ||
| 305 | Vector { | ||
| 306 | _handler: DMA1_Channel1, | ||
| 307 | }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel2, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel3, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel4, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel5, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel6, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA1_Channel7, | ||
| 325 | }, | ||
| 326 | Vector { _handler: ADC1_2 }, | ||
| 327 | Vector { _handler: CAN1_TX }, | ||
| 328 | Vector { _handler: CAN1_RX0 }, | ||
| 329 | Vector { _handler: CAN1_RX1 }, | ||
| 330 | Vector { _handler: CAN1_SCE }, | ||
| 331 | Vector { _handler: EXTI9_5 }, | ||
| 332 | Vector { | ||
| 333 | _handler: TIM1_BRK_TIM15, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_UP_TIM16, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: TIM1_TRG_COM_TIM17, | ||
| 340 | }, | ||
| 341 | Vector { _handler: TIM1_CC }, | ||
| 342 | Vector { _handler: TIM2 }, | ||
| 343 | Vector { _handler: TIM3 }, | ||
| 344 | Vector { _handler: TIM4 }, | ||
| 345 | Vector { _handler: I2C1_EV }, | ||
| 346 | Vector { _handler: I2C1_ER }, | ||
| 347 | Vector { _handler: I2C2_EV }, | ||
| 348 | Vector { _handler: I2C2_ER }, | ||
| 349 | Vector { _handler: SPI1 }, | ||
| 350 | Vector { _handler: SPI2 }, | ||
| 351 | Vector { _handler: USART1 }, | ||
| 352 | Vector { _handler: USART2 }, | ||
| 353 | Vector { _handler: USART3 }, | ||
| 354 | Vector { | ||
| 355 | _handler: EXTI15_10, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: RTC_Alarm, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: DFSDM1_FLT3, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM8_BRK }, | ||
| 364 | Vector { _handler: TIM8_UP }, | ||
| 365 | Vector { | ||
| 366 | _handler: TIM8_TRG_COM, | ||
| 367 | }, | ||
| 368 | Vector { _handler: TIM8_CC }, | ||
| 369 | Vector { _handler: ADC3 }, | ||
| 370 | Vector { _handler: FMC }, | ||
| 371 | Vector { _handler: SDMMC1 }, | ||
| 372 | Vector { _handler: TIM5 }, | ||
| 373 | Vector { _handler: SPI3 }, | ||
| 374 | Vector { _handler: UART4 }, | ||
| 375 | Vector { _handler: UART5 }, | ||
| 376 | Vector { _handler: TIM6_DAC }, | ||
| 377 | Vector { _handler: TIM7 }, | ||
| 378 | Vector { | ||
| 379 | _handler: DMA2_Channel1, | ||
| 380 | }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel2, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel3, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel4, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DMA2_Channel5, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DFSDM1_FLT0, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT1, | ||
| 398 | }, | ||
| 399 | Vector { | ||
| 400 | _handler: DFSDM1_FLT2, | ||
| 401 | }, | ||
| 402 | Vector { _handler: COMP }, | ||
| 403 | Vector { _handler: LPTIM1 }, | ||
| 404 | Vector { _handler: LPTIM2 }, | ||
| 405 | Vector { _handler: OTG_FS }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel6, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel7, | ||
| 411 | }, | ||
| 412 | Vector { _handler: LPUART1 }, | ||
| 413 | Vector { _handler: QUADSPI }, | ||
| 414 | Vector { _handler: I2C3_EV }, | ||
| 415 | Vector { _handler: I2C3_ER }, | ||
| 416 | Vector { _handler: SAI1 }, | ||
| 417 | Vector { _handler: SAI2 }, | ||
| 418 | Vector { _handler: SWPMI1 }, | ||
| 419 | Vector { _handler: TSC }, | ||
| 420 | Vector { _handler: LCD }, | ||
| 421 | Vector { _reserved: 0 }, | ||
| 422 | Vector { _handler: RNG }, | ||
| 423 | Vector { _handler: FPU }, | ||
| 424 | ]; | ||
| 425 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 426 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 427 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 428 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l476vc.rs b/embassy-stm32/src/chip/stm32l476vc.rs index ce07466a5..d5b271290 100644 --- a/embassy-stm32/src/chip/stm32l476vc.rs +++ b/embassy-stm32/src/chip/stm32l476vc.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,8 +14,415 @@ peripherals!( | |||
| 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, | 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, |
| 15 | USB_OTG_FS, WWDG | 15 | USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DFSDM1_FLT0 = 61, | ||
| 38 | DFSDM1_FLT1 = 62, | ||
| 39 | DFSDM1_FLT2 = 63, | ||
| 40 | DFSDM1_FLT3 = 42, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | EXTI0 = 6, | ||
| 56 | EXTI1 = 7, | ||
| 57 | EXTI15_10 = 40, | ||
| 58 | EXTI2 = 8, | ||
| 59 | EXTI3 = 9, | ||
| 60 | EXTI4 = 10, | ||
| 61 | EXTI9_5 = 23, | ||
| 62 | FLASH = 4, | ||
| 63 | FMC = 48, | ||
| 64 | FPU = 81, | ||
| 65 | I2C1_ER = 32, | ||
| 66 | I2C1_EV = 31, | ||
| 67 | I2C2_ER = 34, | ||
| 68 | I2C2_EV = 33, | ||
| 69 | I2C3_ER = 73, | ||
| 70 | I2C3_EV = 72, | ||
| 71 | LCD = 78, | ||
| 72 | LPTIM1 = 65, | ||
| 73 | LPTIM2 = 66, | ||
| 74 | LPUART1 = 70, | ||
| 75 | OTG_FS = 67, | ||
| 76 | PVD_PVM = 1, | ||
| 77 | QUADSPI = 71, | ||
| 78 | RCC = 5, | ||
| 79 | RNG = 80, | ||
| 80 | RTC_Alarm = 41, | ||
| 81 | RTC_WKUP = 3, | ||
| 82 | SAI1 = 74, | ||
| 83 | SAI2 = 75, | ||
| 84 | SDMMC1 = 49, | ||
| 85 | SPI1 = 35, | ||
| 86 | SPI2 = 36, | ||
| 87 | SPI3 = 51, | ||
| 88 | SWPMI1 = 76, | ||
| 89 | TAMP_STAMP = 2, | ||
| 90 | TIM1_BRK_TIM15 = 24, | ||
| 91 | TIM1_CC = 27, | ||
| 92 | TIM1_TRG_COM_TIM17 = 26, | ||
| 93 | TIM1_UP_TIM16 = 25, | ||
| 94 | TIM2 = 28, | ||
| 95 | TIM3 = 29, | ||
| 96 | TIM4 = 30, | ||
| 97 | TIM5 = 50, | ||
| 98 | TIM6_DAC = 54, | ||
| 99 | TIM7 = 55, | ||
| 100 | TIM8_BRK = 43, | ||
| 101 | TIM8_CC = 46, | ||
| 102 | TIM8_TRG_COM = 45, | ||
| 103 | TIM8_UP = 44, | ||
| 104 | TSC = 77, | ||
| 105 | UART4 = 52, | ||
| 106 | UART5 = 53, | ||
| 107 | USART1 = 37, | ||
| 108 | USART2 = 38, | ||
| 109 | USART3 = 39, | ||
| 110 | WWDG = 0, | ||
| 111 | } | ||
| 112 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 113 | #[inline(always)] | ||
| 114 | fn number(self) -> u16 { | ||
| 115 | self as u16 | ||
| 116 | } | ||
| 117 | } | ||
| 118 | |||
| 119 | declare!(ADC1_2); | ||
| 120 | declare!(ADC3); | ||
| 121 | declare!(CAN1_RX0); | ||
| 122 | declare!(CAN1_RX1); | ||
| 123 | declare!(CAN1_SCE); | ||
| 124 | declare!(CAN1_TX); | ||
| 125 | declare!(COMP); | ||
| 126 | declare!(DFSDM1_FLT0); | ||
| 127 | declare!(DFSDM1_FLT1); | ||
| 128 | declare!(DFSDM1_FLT2); | ||
| 129 | declare!(DFSDM1_FLT3); | ||
| 130 | declare!(DMA1_Channel1); | ||
| 131 | declare!(DMA1_Channel2); | ||
| 132 | declare!(DMA1_Channel3); | ||
| 133 | declare!(DMA1_Channel4); | ||
| 134 | declare!(DMA1_Channel5); | ||
| 135 | declare!(DMA1_Channel6); | ||
| 136 | declare!(DMA1_Channel7); | ||
| 137 | declare!(DMA2_Channel1); | ||
| 138 | declare!(DMA2_Channel2); | ||
| 139 | declare!(DMA2_Channel3); | ||
| 140 | declare!(DMA2_Channel4); | ||
| 141 | declare!(DMA2_Channel5); | ||
| 142 | declare!(DMA2_Channel6); | ||
| 143 | declare!(DMA2_Channel7); | ||
| 144 | declare!(EXTI0); | ||
| 145 | declare!(EXTI1); | ||
| 146 | declare!(EXTI15_10); | ||
| 147 | declare!(EXTI2); | ||
| 148 | declare!(EXTI3); | ||
| 149 | declare!(EXTI4); | ||
| 150 | declare!(EXTI9_5); | ||
| 151 | declare!(FLASH); | ||
| 152 | declare!(FMC); | ||
| 153 | declare!(FPU); | ||
| 154 | declare!(I2C1_ER); | ||
| 155 | declare!(I2C1_EV); | ||
| 156 | declare!(I2C2_ER); | ||
| 157 | declare!(I2C2_EV); | ||
| 158 | declare!(I2C3_ER); | ||
| 159 | declare!(I2C3_EV); | ||
| 160 | declare!(LCD); | ||
| 161 | declare!(LPTIM1); | ||
| 162 | declare!(LPTIM2); | ||
| 163 | declare!(LPUART1); | ||
| 164 | declare!(OTG_FS); | ||
| 165 | declare!(PVD_PVM); | ||
| 166 | declare!(QUADSPI); | ||
| 167 | declare!(RCC); | ||
| 168 | declare!(RNG); | ||
| 169 | declare!(RTC_Alarm); | ||
| 170 | declare!(RTC_WKUP); | ||
| 171 | declare!(SAI1); | ||
| 172 | declare!(SAI2); | ||
| 173 | declare!(SDMMC1); | ||
| 174 | declare!(SPI1); | ||
| 175 | declare!(SPI2); | ||
| 176 | declare!(SPI3); | ||
| 177 | declare!(SWPMI1); | ||
| 178 | declare!(TAMP_STAMP); | ||
| 179 | declare!(TIM1_BRK_TIM15); | ||
| 180 | declare!(TIM1_CC); | ||
| 181 | declare!(TIM1_TRG_COM_TIM17); | ||
| 182 | declare!(TIM1_UP_TIM16); | ||
| 183 | declare!(TIM2); | ||
| 184 | declare!(TIM3); | ||
| 185 | declare!(TIM4); | ||
| 186 | declare!(TIM5); | ||
| 187 | declare!(TIM6_DAC); | ||
| 188 | declare!(TIM7); | ||
| 189 | declare!(TIM8_BRK); | ||
| 190 | declare!(TIM8_CC); | ||
| 191 | declare!(TIM8_TRG_COM); | ||
| 192 | declare!(TIM8_UP); | ||
| 193 | declare!(TSC); | ||
| 194 | declare!(UART4); | ||
| 195 | declare!(UART5); | ||
| 196 | declare!(USART1); | ||
| 197 | declare!(USART2); | ||
| 198 | declare!(USART3); | ||
| 199 | declare!(WWDG); | ||
| 200 | } | ||
| 201 | mod interrupt_vector { | ||
| 202 | extern "C" { | ||
| 203 | fn ADC1_2(); | ||
| 204 | fn ADC3(); | ||
| 205 | fn CAN1_RX0(); | ||
| 206 | fn CAN1_RX1(); | ||
| 207 | fn CAN1_SCE(); | ||
| 208 | fn CAN1_TX(); | ||
| 209 | fn COMP(); | ||
| 210 | fn DFSDM1_FLT0(); | ||
| 211 | fn DFSDM1_FLT1(); | ||
| 212 | fn DFSDM1_FLT2(); | ||
| 213 | fn DFSDM1_FLT3(); | ||
| 214 | fn DMA1_Channel1(); | ||
| 215 | fn DMA1_Channel2(); | ||
| 216 | fn DMA1_Channel3(); | ||
| 217 | fn DMA1_Channel4(); | ||
| 218 | fn DMA1_Channel5(); | ||
| 219 | fn DMA1_Channel6(); | ||
| 220 | fn DMA1_Channel7(); | ||
| 221 | fn DMA2_Channel1(); | ||
| 222 | fn DMA2_Channel2(); | ||
| 223 | fn DMA2_Channel3(); | ||
| 224 | fn DMA2_Channel4(); | ||
| 225 | fn DMA2_Channel5(); | ||
| 226 | fn DMA2_Channel6(); | ||
| 227 | fn DMA2_Channel7(); | ||
| 228 | fn EXTI0(); | ||
| 229 | fn EXTI1(); | ||
| 230 | fn EXTI15_10(); | ||
| 231 | fn EXTI2(); | ||
| 232 | fn EXTI3(); | ||
| 233 | fn EXTI4(); | ||
| 234 | fn EXTI9_5(); | ||
| 235 | fn FLASH(); | ||
| 236 | fn FMC(); | ||
| 237 | fn FPU(); | ||
| 238 | fn I2C1_ER(); | ||
| 239 | fn I2C1_EV(); | ||
| 240 | fn I2C2_ER(); | ||
| 241 | fn I2C2_EV(); | ||
| 242 | fn I2C3_ER(); | ||
| 243 | fn I2C3_EV(); | ||
| 244 | fn LCD(); | ||
| 245 | fn LPTIM1(); | ||
| 246 | fn LPTIM2(); | ||
| 247 | fn LPUART1(); | ||
| 248 | fn OTG_FS(); | ||
| 249 | fn PVD_PVM(); | ||
| 250 | fn QUADSPI(); | ||
| 251 | fn RCC(); | ||
| 252 | fn RNG(); | ||
| 253 | fn RTC_Alarm(); | ||
| 254 | fn RTC_WKUP(); | ||
| 255 | fn SAI1(); | ||
| 256 | fn SAI2(); | ||
| 257 | fn SDMMC1(); | ||
| 258 | fn SPI1(); | ||
| 259 | fn SPI2(); | ||
| 260 | fn SPI3(); | ||
| 261 | fn SWPMI1(); | ||
| 262 | fn TAMP_STAMP(); | ||
| 263 | fn TIM1_BRK_TIM15(); | ||
| 264 | fn TIM1_CC(); | ||
| 265 | fn TIM1_TRG_COM_TIM17(); | ||
| 266 | fn TIM1_UP_TIM16(); | ||
| 267 | fn TIM2(); | ||
| 268 | fn TIM3(); | ||
| 269 | fn TIM4(); | ||
| 270 | fn TIM5(); | ||
| 271 | fn TIM6_DAC(); | ||
| 272 | fn TIM7(); | ||
| 273 | fn TIM8_BRK(); | ||
| 274 | fn TIM8_CC(); | ||
| 275 | fn TIM8_TRG_COM(); | ||
| 276 | fn TIM8_UP(); | ||
| 277 | fn TSC(); | ||
| 278 | fn UART4(); | ||
| 279 | fn UART5(); | ||
| 280 | fn USART1(); | ||
| 281 | fn USART2(); | ||
| 282 | fn USART3(); | ||
| 283 | fn WWDG(); | ||
| 284 | } | ||
| 285 | pub union Vector { | ||
| 286 | _handler: unsafe extern "C" fn(), | ||
| 287 | _reserved: u32, | ||
| 288 | } | ||
| 289 | #[link_section = ".vector_table.interrupts"] | ||
| 290 | #[no_mangle] | ||
| 291 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 292 | Vector { _handler: WWDG }, | ||
| 293 | Vector { _handler: PVD_PVM }, | ||
| 294 | Vector { | ||
| 295 | _handler: TAMP_STAMP, | ||
| 296 | }, | ||
| 297 | Vector { _handler: RTC_WKUP }, | ||
| 298 | Vector { _handler: FLASH }, | ||
| 299 | Vector { _handler: RCC }, | ||
| 300 | Vector { _handler: EXTI0 }, | ||
| 301 | Vector { _handler: EXTI1 }, | ||
| 302 | Vector { _handler: EXTI2 }, | ||
| 303 | Vector { _handler: EXTI3 }, | ||
| 304 | Vector { _handler: EXTI4 }, | ||
| 305 | Vector { | ||
| 306 | _handler: DMA1_Channel1, | ||
| 307 | }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel2, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel3, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel4, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel5, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel6, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA1_Channel7, | ||
| 325 | }, | ||
| 326 | Vector { _handler: ADC1_2 }, | ||
| 327 | Vector { _handler: CAN1_TX }, | ||
| 328 | Vector { _handler: CAN1_RX0 }, | ||
| 329 | Vector { _handler: CAN1_RX1 }, | ||
| 330 | Vector { _handler: CAN1_SCE }, | ||
| 331 | Vector { _handler: EXTI9_5 }, | ||
| 332 | Vector { | ||
| 333 | _handler: TIM1_BRK_TIM15, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_UP_TIM16, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: TIM1_TRG_COM_TIM17, | ||
| 340 | }, | ||
| 341 | Vector { _handler: TIM1_CC }, | ||
| 342 | Vector { _handler: TIM2 }, | ||
| 343 | Vector { _handler: TIM3 }, | ||
| 344 | Vector { _handler: TIM4 }, | ||
| 345 | Vector { _handler: I2C1_EV }, | ||
| 346 | Vector { _handler: I2C1_ER }, | ||
| 347 | Vector { _handler: I2C2_EV }, | ||
| 348 | Vector { _handler: I2C2_ER }, | ||
| 349 | Vector { _handler: SPI1 }, | ||
| 350 | Vector { _handler: SPI2 }, | ||
| 351 | Vector { _handler: USART1 }, | ||
| 352 | Vector { _handler: USART2 }, | ||
| 353 | Vector { _handler: USART3 }, | ||
| 354 | Vector { | ||
| 355 | _handler: EXTI15_10, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: RTC_Alarm, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: DFSDM1_FLT3, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM8_BRK }, | ||
| 364 | Vector { _handler: TIM8_UP }, | ||
| 365 | Vector { | ||
| 366 | _handler: TIM8_TRG_COM, | ||
| 367 | }, | ||
| 368 | Vector { _handler: TIM8_CC }, | ||
| 369 | Vector { _handler: ADC3 }, | ||
| 370 | Vector { _handler: FMC }, | ||
| 371 | Vector { _handler: SDMMC1 }, | ||
| 372 | Vector { _handler: TIM5 }, | ||
| 373 | Vector { _handler: SPI3 }, | ||
| 374 | Vector { _handler: UART4 }, | ||
| 375 | Vector { _handler: UART5 }, | ||
| 376 | Vector { _handler: TIM6_DAC }, | ||
| 377 | Vector { _handler: TIM7 }, | ||
| 378 | Vector { | ||
| 379 | _handler: DMA2_Channel1, | ||
| 380 | }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel2, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel3, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel4, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DMA2_Channel5, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DFSDM1_FLT0, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT1, | ||
| 398 | }, | ||
| 399 | Vector { | ||
| 400 | _handler: DFSDM1_FLT2, | ||
| 401 | }, | ||
| 402 | Vector { _handler: COMP }, | ||
| 403 | Vector { _handler: LPTIM1 }, | ||
| 404 | Vector { _handler: LPTIM2 }, | ||
| 405 | Vector { _handler: OTG_FS }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel6, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel7, | ||
| 411 | }, | ||
| 412 | Vector { _handler: LPUART1 }, | ||
| 413 | Vector { _handler: QUADSPI }, | ||
| 414 | Vector { _handler: I2C3_EV }, | ||
| 415 | Vector { _handler: I2C3_ER }, | ||
| 416 | Vector { _handler: SAI1 }, | ||
| 417 | Vector { _handler: SAI2 }, | ||
| 418 | Vector { _handler: SWPMI1 }, | ||
| 419 | Vector { _handler: TSC }, | ||
| 420 | Vector { _handler: LCD }, | ||
| 421 | Vector { _reserved: 0 }, | ||
| 422 | Vector { _handler: RNG }, | ||
| 423 | Vector { _handler: FPU }, | ||
| 424 | ]; | ||
| 425 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 426 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 427 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 428 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l476ve.rs b/embassy-stm32/src/chip/stm32l476ve.rs index ce07466a5..d5b271290 100644 --- a/embassy-stm32/src/chip/stm32l476ve.rs +++ b/embassy-stm32/src/chip/stm32l476ve.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,8 +14,415 @@ peripherals!( | |||
| 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, | 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, |
| 15 | USB_OTG_FS, WWDG | 15 | USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DFSDM1_FLT0 = 61, | ||
| 38 | DFSDM1_FLT1 = 62, | ||
| 39 | DFSDM1_FLT2 = 63, | ||
| 40 | DFSDM1_FLT3 = 42, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | EXTI0 = 6, | ||
| 56 | EXTI1 = 7, | ||
| 57 | EXTI15_10 = 40, | ||
| 58 | EXTI2 = 8, | ||
| 59 | EXTI3 = 9, | ||
| 60 | EXTI4 = 10, | ||
| 61 | EXTI9_5 = 23, | ||
| 62 | FLASH = 4, | ||
| 63 | FMC = 48, | ||
| 64 | FPU = 81, | ||
| 65 | I2C1_ER = 32, | ||
| 66 | I2C1_EV = 31, | ||
| 67 | I2C2_ER = 34, | ||
| 68 | I2C2_EV = 33, | ||
| 69 | I2C3_ER = 73, | ||
| 70 | I2C3_EV = 72, | ||
| 71 | LCD = 78, | ||
| 72 | LPTIM1 = 65, | ||
| 73 | LPTIM2 = 66, | ||
| 74 | LPUART1 = 70, | ||
| 75 | OTG_FS = 67, | ||
| 76 | PVD_PVM = 1, | ||
| 77 | QUADSPI = 71, | ||
| 78 | RCC = 5, | ||
| 79 | RNG = 80, | ||
| 80 | RTC_Alarm = 41, | ||
| 81 | RTC_WKUP = 3, | ||
| 82 | SAI1 = 74, | ||
| 83 | SAI2 = 75, | ||
| 84 | SDMMC1 = 49, | ||
| 85 | SPI1 = 35, | ||
| 86 | SPI2 = 36, | ||
| 87 | SPI3 = 51, | ||
| 88 | SWPMI1 = 76, | ||
| 89 | TAMP_STAMP = 2, | ||
| 90 | TIM1_BRK_TIM15 = 24, | ||
| 91 | TIM1_CC = 27, | ||
| 92 | TIM1_TRG_COM_TIM17 = 26, | ||
| 93 | TIM1_UP_TIM16 = 25, | ||
| 94 | TIM2 = 28, | ||
| 95 | TIM3 = 29, | ||
| 96 | TIM4 = 30, | ||
| 97 | TIM5 = 50, | ||
| 98 | TIM6_DAC = 54, | ||
| 99 | TIM7 = 55, | ||
| 100 | TIM8_BRK = 43, | ||
| 101 | TIM8_CC = 46, | ||
| 102 | TIM8_TRG_COM = 45, | ||
| 103 | TIM8_UP = 44, | ||
| 104 | TSC = 77, | ||
| 105 | UART4 = 52, | ||
| 106 | UART5 = 53, | ||
| 107 | USART1 = 37, | ||
| 108 | USART2 = 38, | ||
| 109 | USART3 = 39, | ||
| 110 | WWDG = 0, | ||
| 111 | } | ||
| 112 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 113 | #[inline(always)] | ||
| 114 | fn number(self) -> u16 { | ||
| 115 | self as u16 | ||
| 116 | } | ||
| 117 | } | ||
| 118 | |||
| 119 | declare!(ADC1_2); | ||
| 120 | declare!(ADC3); | ||
| 121 | declare!(CAN1_RX0); | ||
| 122 | declare!(CAN1_RX1); | ||
| 123 | declare!(CAN1_SCE); | ||
| 124 | declare!(CAN1_TX); | ||
| 125 | declare!(COMP); | ||
| 126 | declare!(DFSDM1_FLT0); | ||
| 127 | declare!(DFSDM1_FLT1); | ||
| 128 | declare!(DFSDM1_FLT2); | ||
| 129 | declare!(DFSDM1_FLT3); | ||
| 130 | declare!(DMA1_Channel1); | ||
| 131 | declare!(DMA1_Channel2); | ||
| 132 | declare!(DMA1_Channel3); | ||
| 133 | declare!(DMA1_Channel4); | ||
| 134 | declare!(DMA1_Channel5); | ||
| 135 | declare!(DMA1_Channel6); | ||
| 136 | declare!(DMA1_Channel7); | ||
| 137 | declare!(DMA2_Channel1); | ||
| 138 | declare!(DMA2_Channel2); | ||
| 139 | declare!(DMA2_Channel3); | ||
| 140 | declare!(DMA2_Channel4); | ||
| 141 | declare!(DMA2_Channel5); | ||
| 142 | declare!(DMA2_Channel6); | ||
| 143 | declare!(DMA2_Channel7); | ||
| 144 | declare!(EXTI0); | ||
| 145 | declare!(EXTI1); | ||
| 146 | declare!(EXTI15_10); | ||
| 147 | declare!(EXTI2); | ||
| 148 | declare!(EXTI3); | ||
| 149 | declare!(EXTI4); | ||
| 150 | declare!(EXTI9_5); | ||
| 151 | declare!(FLASH); | ||
| 152 | declare!(FMC); | ||
| 153 | declare!(FPU); | ||
| 154 | declare!(I2C1_ER); | ||
| 155 | declare!(I2C1_EV); | ||
| 156 | declare!(I2C2_ER); | ||
| 157 | declare!(I2C2_EV); | ||
| 158 | declare!(I2C3_ER); | ||
| 159 | declare!(I2C3_EV); | ||
| 160 | declare!(LCD); | ||
| 161 | declare!(LPTIM1); | ||
| 162 | declare!(LPTIM2); | ||
| 163 | declare!(LPUART1); | ||
| 164 | declare!(OTG_FS); | ||
| 165 | declare!(PVD_PVM); | ||
| 166 | declare!(QUADSPI); | ||
| 167 | declare!(RCC); | ||
| 168 | declare!(RNG); | ||
| 169 | declare!(RTC_Alarm); | ||
| 170 | declare!(RTC_WKUP); | ||
| 171 | declare!(SAI1); | ||
| 172 | declare!(SAI2); | ||
| 173 | declare!(SDMMC1); | ||
| 174 | declare!(SPI1); | ||
| 175 | declare!(SPI2); | ||
| 176 | declare!(SPI3); | ||
| 177 | declare!(SWPMI1); | ||
| 178 | declare!(TAMP_STAMP); | ||
| 179 | declare!(TIM1_BRK_TIM15); | ||
| 180 | declare!(TIM1_CC); | ||
| 181 | declare!(TIM1_TRG_COM_TIM17); | ||
| 182 | declare!(TIM1_UP_TIM16); | ||
| 183 | declare!(TIM2); | ||
| 184 | declare!(TIM3); | ||
| 185 | declare!(TIM4); | ||
| 186 | declare!(TIM5); | ||
| 187 | declare!(TIM6_DAC); | ||
| 188 | declare!(TIM7); | ||
| 189 | declare!(TIM8_BRK); | ||
| 190 | declare!(TIM8_CC); | ||
| 191 | declare!(TIM8_TRG_COM); | ||
| 192 | declare!(TIM8_UP); | ||
| 193 | declare!(TSC); | ||
| 194 | declare!(UART4); | ||
| 195 | declare!(UART5); | ||
| 196 | declare!(USART1); | ||
| 197 | declare!(USART2); | ||
| 198 | declare!(USART3); | ||
| 199 | declare!(WWDG); | ||
| 200 | } | ||
| 201 | mod interrupt_vector { | ||
| 202 | extern "C" { | ||
| 203 | fn ADC1_2(); | ||
| 204 | fn ADC3(); | ||
| 205 | fn CAN1_RX0(); | ||
| 206 | fn CAN1_RX1(); | ||
| 207 | fn CAN1_SCE(); | ||
| 208 | fn CAN1_TX(); | ||
| 209 | fn COMP(); | ||
| 210 | fn DFSDM1_FLT0(); | ||
| 211 | fn DFSDM1_FLT1(); | ||
| 212 | fn DFSDM1_FLT2(); | ||
| 213 | fn DFSDM1_FLT3(); | ||
| 214 | fn DMA1_Channel1(); | ||
| 215 | fn DMA1_Channel2(); | ||
| 216 | fn DMA1_Channel3(); | ||
| 217 | fn DMA1_Channel4(); | ||
| 218 | fn DMA1_Channel5(); | ||
| 219 | fn DMA1_Channel6(); | ||
| 220 | fn DMA1_Channel7(); | ||
| 221 | fn DMA2_Channel1(); | ||
| 222 | fn DMA2_Channel2(); | ||
| 223 | fn DMA2_Channel3(); | ||
| 224 | fn DMA2_Channel4(); | ||
| 225 | fn DMA2_Channel5(); | ||
| 226 | fn DMA2_Channel6(); | ||
| 227 | fn DMA2_Channel7(); | ||
| 228 | fn EXTI0(); | ||
| 229 | fn EXTI1(); | ||
| 230 | fn EXTI15_10(); | ||
| 231 | fn EXTI2(); | ||
| 232 | fn EXTI3(); | ||
| 233 | fn EXTI4(); | ||
| 234 | fn EXTI9_5(); | ||
| 235 | fn FLASH(); | ||
| 236 | fn FMC(); | ||
| 237 | fn FPU(); | ||
| 238 | fn I2C1_ER(); | ||
| 239 | fn I2C1_EV(); | ||
| 240 | fn I2C2_ER(); | ||
| 241 | fn I2C2_EV(); | ||
| 242 | fn I2C3_ER(); | ||
| 243 | fn I2C3_EV(); | ||
| 244 | fn LCD(); | ||
| 245 | fn LPTIM1(); | ||
| 246 | fn LPTIM2(); | ||
| 247 | fn LPUART1(); | ||
| 248 | fn OTG_FS(); | ||
| 249 | fn PVD_PVM(); | ||
| 250 | fn QUADSPI(); | ||
| 251 | fn RCC(); | ||
| 252 | fn RNG(); | ||
| 253 | fn RTC_Alarm(); | ||
| 254 | fn RTC_WKUP(); | ||
| 255 | fn SAI1(); | ||
| 256 | fn SAI2(); | ||
| 257 | fn SDMMC1(); | ||
| 258 | fn SPI1(); | ||
| 259 | fn SPI2(); | ||
| 260 | fn SPI3(); | ||
| 261 | fn SWPMI1(); | ||
| 262 | fn TAMP_STAMP(); | ||
| 263 | fn TIM1_BRK_TIM15(); | ||
| 264 | fn TIM1_CC(); | ||
| 265 | fn TIM1_TRG_COM_TIM17(); | ||
| 266 | fn TIM1_UP_TIM16(); | ||
| 267 | fn TIM2(); | ||
| 268 | fn TIM3(); | ||
| 269 | fn TIM4(); | ||
| 270 | fn TIM5(); | ||
| 271 | fn TIM6_DAC(); | ||
| 272 | fn TIM7(); | ||
| 273 | fn TIM8_BRK(); | ||
| 274 | fn TIM8_CC(); | ||
| 275 | fn TIM8_TRG_COM(); | ||
| 276 | fn TIM8_UP(); | ||
| 277 | fn TSC(); | ||
| 278 | fn UART4(); | ||
| 279 | fn UART5(); | ||
| 280 | fn USART1(); | ||
| 281 | fn USART2(); | ||
| 282 | fn USART3(); | ||
| 283 | fn WWDG(); | ||
| 284 | } | ||
| 285 | pub union Vector { | ||
| 286 | _handler: unsafe extern "C" fn(), | ||
| 287 | _reserved: u32, | ||
| 288 | } | ||
| 289 | #[link_section = ".vector_table.interrupts"] | ||
| 290 | #[no_mangle] | ||
| 291 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 292 | Vector { _handler: WWDG }, | ||
| 293 | Vector { _handler: PVD_PVM }, | ||
| 294 | Vector { | ||
| 295 | _handler: TAMP_STAMP, | ||
| 296 | }, | ||
| 297 | Vector { _handler: RTC_WKUP }, | ||
| 298 | Vector { _handler: FLASH }, | ||
| 299 | Vector { _handler: RCC }, | ||
| 300 | Vector { _handler: EXTI0 }, | ||
| 301 | Vector { _handler: EXTI1 }, | ||
| 302 | Vector { _handler: EXTI2 }, | ||
| 303 | Vector { _handler: EXTI3 }, | ||
| 304 | Vector { _handler: EXTI4 }, | ||
| 305 | Vector { | ||
| 306 | _handler: DMA1_Channel1, | ||
| 307 | }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel2, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel3, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel4, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel5, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel6, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA1_Channel7, | ||
| 325 | }, | ||
| 326 | Vector { _handler: ADC1_2 }, | ||
| 327 | Vector { _handler: CAN1_TX }, | ||
| 328 | Vector { _handler: CAN1_RX0 }, | ||
| 329 | Vector { _handler: CAN1_RX1 }, | ||
| 330 | Vector { _handler: CAN1_SCE }, | ||
| 331 | Vector { _handler: EXTI9_5 }, | ||
| 332 | Vector { | ||
| 333 | _handler: TIM1_BRK_TIM15, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_UP_TIM16, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: TIM1_TRG_COM_TIM17, | ||
| 340 | }, | ||
| 341 | Vector { _handler: TIM1_CC }, | ||
| 342 | Vector { _handler: TIM2 }, | ||
| 343 | Vector { _handler: TIM3 }, | ||
| 344 | Vector { _handler: TIM4 }, | ||
| 345 | Vector { _handler: I2C1_EV }, | ||
| 346 | Vector { _handler: I2C1_ER }, | ||
| 347 | Vector { _handler: I2C2_EV }, | ||
| 348 | Vector { _handler: I2C2_ER }, | ||
| 349 | Vector { _handler: SPI1 }, | ||
| 350 | Vector { _handler: SPI2 }, | ||
| 351 | Vector { _handler: USART1 }, | ||
| 352 | Vector { _handler: USART2 }, | ||
| 353 | Vector { _handler: USART3 }, | ||
| 354 | Vector { | ||
| 355 | _handler: EXTI15_10, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: RTC_Alarm, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: DFSDM1_FLT3, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM8_BRK }, | ||
| 364 | Vector { _handler: TIM8_UP }, | ||
| 365 | Vector { | ||
| 366 | _handler: TIM8_TRG_COM, | ||
| 367 | }, | ||
| 368 | Vector { _handler: TIM8_CC }, | ||
| 369 | Vector { _handler: ADC3 }, | ||
| 370 | Vector { _handler: FMC }, | ||
| 371 | Vector { _handler: SDMMC1 }, | ||
| 372 | Vector { _handler: TIM5 }, | ||
| 373 | Vector { _handler: SPI3 }, | ||
| 374 | Vector { _handler: UART4 }, | ||
| 375 | Vector { _handler: UART5 }, | ||
| 376 | Vector { _handler: TIM6_DAC }, | ||
| 377 | Vector { _handler: TIM7 }, | ||
| 378 | Vector { | ||
| 379 | _handler: DMA2_Channel1, | ||
| 380 | }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel2, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel3, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel4, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DMA2_Channel5, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DFSDM1_FLT0, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT1, | ||
| 398 | }, | ||
| 399 | Vector { | ||
| 400 | _handler: DFSDM1_FLT2, | ||
| 401 | }, | ||
| 402 | Vector { _handler: COMP }, | ||
| 403 | Vector { _handler: LPTIM1 }, | ||
| 404 | Vector { _handler: LPTIM2 }, | ||
| 405 | Vector { _handler: OTG_FS }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel6, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel7, | ||
| 411 | }, | ||
| 412 | Vector { _handler: LPUART1 }, | ||
| 413 | Vector { _handler: QUADSPI }, | ||
| 414 | Vector { _handler: I2C3_EV }, | ||
| 415 | Vector { _handler: I2C3_ER }, | ||
| 416 | Vector { _handler: SAI1 }, | ||
| 417 | Vector { _handler: SAI2 }, | ||
| 418 | Vector { _handler: SWPMI1 }, | ||
| 419 | Vector { _handler: TSC }, | ||
| 420 | Vector { _handler: LCD }, | ||
| 421 | Vector { _reserved: 0 }, | ||
| 422 | Vector { _handler: RNG }, | ||
| 423 | Vector { _handler: FPU }, | ||
| 424 | ]; | ||
| 425 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 426 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 427 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 428 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l476vg.rs b/embassy-stm32/src/chip/stm32l476vg.rs index ce07466a5..d5b271290 100644 --- a/embassy-stm32/src/chip/stm32l476vg.rs +++ b/embassy-stm32/src/chip/stm32l476vg.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,8 +14,415 @@ peripherals!( | |||
| 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, | 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, |
| 15 | USB_OTG_FS, WWDG | 15 | USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DFSDM1_FLT0 = 61, | ||
| 38 | DFSDM1_FLT1 = 62, | ||
| 39 | DFSDM1_FLT2 = 63, | ||
| 40 | DFSDM1_FLT3 = 42, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | EXTI0 = 6, | ||
| 56 | EXTI1 = 7, | ||
| 57 | EXTI15_10 = 40, | ||
| 58 | EXTI2 = 8, | ||
| 59 | EXTI3 = 9, | ||
| 60 | EXTI4 = 10, | ||
| 61 | EXTI9_5 = 23, | ||
| 62 | FLASH = 4, | ||
| 63 | FMC = 48, | ||
| 64 | FPU = 81, | ||
| 65 | I2C1_ER = 32, | ||
| 66 | I2C1_EV = 31, | ||
| 67 | I2C2_ER = 34, | ||
| 68 | I2C2_EV = 33, | ||
| 69 | I2C3_ER = 73, | ||
| 70 | I2C3_EV = 72, | ||
| 71 | LCD = 78, | ||
| 72 | LPTIM1 = 65, | ||
| 73 | LPTIM2 = 66, | ||
| 74 | LPUART1 = 70, | ||
| 75 | OTG_FS = 67, | ||
| 76 | PVD_PVM = 1, | ||
| 77 | QUADSPI = 71, | ||
| 78 | RCC = 5, | ||
| 79 | RNG = 80, | ||
| 80 | RTC_Alarm = 41, | ||
| 81 | RTC_WKUP = 3, | ||
| 82 | SAI1 = 74, | ||
| 83 | SAI2 = 75, | ||
| 84 | SDMMC1 = 49, | ||
| 85 | SPI1 = 35, | ||
| 86 | SPI2 = 36, | ||
| 87 | SPI3 = 51, | ||
| 88 | SWPMI1 = 76, | ||
| 89 | TAMP_STAMP = 2, | ||
| 90 | TIM1_BRK_TIM15 = 24, | ||
| 91 | TIM1_CC = 27, | ||
| 92 | TIM1_TRG_COM_TIM17 = 26, | ||
| 93 | TIM1_UP_TIM16 = 25, | ||
| 94 | TIM2 = 28, | ||
| 95 | TIM3 = 29, | ||
| 96 | TIM4 = 30, | ||
| 97 | TIM5 = 50, | ||
| 98 | TIM6_DAC = 54, | ||
| 99 | TIM7 = 55, | ||
| 100 | TIM8_BRK = 43, | ||
| 101 | TIM8_CC = 46, | ||
| 102 | TIM8_TRG_COM = 45, | ||
| 103 | TIM8_UP = 44, | ||
| 104 | TSC = 77, | ||
| 105 | UART4 = 52, | ||
| 106 | UART5 = 53, | ||
| 107 | USART1 = 37, | ||
| 108 | USART2 = 38, | ||
| 109 | USART3 = 39, | ||
| 110 | WWDG = 0, | ||
| 111 | } | ||
| 112 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 113 | #[inline(always)] | ||
| 114 | fn number(self) -> u16 { | ||
| 115 | self as u16 | ||
| 116 | } | ||
| 117 | } | ||
| 118 | |||
| 119 | declare!(ADC1_2); | ||
| 120 | declare!(ADC3); | ||
| 121 | declare!(CAN1_RX0); | ||
| 122 | declare!(CAN1_RX1); | ||
| 123 | declare!(CAN1_SCE); | ||
| 124 | declare!(CAN1_TX); | ||
| 125 | declare!(COMP); | ||
| 126 | declare!(DFSDM1_FLT0); | ||
| 127 | declare!(DFSDM1_FLT1); | ||
| 128 | declare!(DFSDM1_FLT2); | ||
| 129 | declare!(DFSDM1_FLT3); | ||
| 130 | declare!(DMA1_Channel1); | ||
| 131 | declare!(DMA1_Channel2); | ||
| 132 | declare!(DMA1_Channel3); | ||
| 133 | declare!(DMA1_Channel4); | ||
| 134 | declare!(DMA1_Channel5); | ||
| 135 | declare!(DMA1_Channel6); | ||
| 136 | declare!(DMA1_Channel7); | ||
| 137 | declare!(DMA2_Channel1); | ||
| 138 | declare!(DMA2_Channel2); | ||
| 139 | declare!(DMA2_Channel3); | ||
| 140 | declare!(DMA2_Channel4); | ||
| 141 | declare!(DMA2_Channel5); | ||
| 142 | declare!(DMA2_Channel6); | ||
| 143 | declare!(DMA2_Channel7); | ||
| 144 | declare!(EXTI0); | ||
| 145 | declare!(EXTI1); | ||
| 146 | declare!(EXTI15_10); | ||
| 147 | declare!(EXTI2); | ||
| 148 | declare!(EXTI3); | ||
| 149 | declare!(EXTI4); | ||
| 150 | declare!(EXTI9_5); | ||
| 151 | declare!(FLASH); | ||
| 152 | declare!(FMC); | ||
| 153 | declare!(FPU); | ||
| 154 | declare!(I2C1_ER); | ||
| 155 | declare!(I2C1_EV); | ||
| 156 | declare!(I2C2_ER); | ||
| 157 | declare!(I2C2_EV); | ||
| 158 | declare!(I2C3_ER); | ||
| 159 | declare!(I2C3_EV); | ||
| 160 | declare!(LCD); | ||
| 161 | declare!(LPTIM1); | ||
| 162 | declare!(LPTIM2); | ||
| 163 | declare!(LPUART1); | ||
| 164 | declare!(OTG_FS); | ||
| 165 | declare!(PVD_PVM); | ||
| 166 | declare!(QUADSPI); | ||
| 167 | declare!(RCC); | ||
| 168 | declare!(RNG); | ||
| 169 | declare!(RTC_Alarm); | ||
| 170 | declare!(RTC_WKUP); | ||
| 171 | declare!(SAI1); | ||
| 172 | declare!(SAI2); | ||
| 173 | declare!(SDMMC1); | ||
| 174 | declare!(SPI1); | ||
| 175 | declare!(SPI2); | ||
| 176 | declare!(SPI3); | ||
| 177 | declare!(SWPMI1); | ||
| 178 | declare!(TAMP_STAMP); | ||
| 179 | declare!(TIM1_BRK_TIM15); | ||
| 180 | declare!(TIM1_CC); | ||
| 181 | declare!(TIM1_TRG_COM_TIM17); | ||
| 182 | declare!(TIM1_UP_TIM16); | ||
| 183 | declare!(TIM2); | ||
| 184 | declare!(TIM3); | ||
| 185 | declare!(TIM4); | ||
| 186 | declare!(TIM5); | ||
| 187 | declare!(TIM6_DAC); | ||
| 188 | declare!(TIM7); | ||
| 189 | declare!(TIM8_BRK); | ||
| 190 | declare!(TIM8_CC); | ||
| 191 | declare!(TIM8_TRG_COM); | ||
| 192 | declare!(TIM8_UP); | ||
| 193 | declare!(TSC); | ||
| 194 | declare!(UART4); | ||
| 195 | declare!(UART5); | ||
| 196 | declare!(USART1); | ||
| 197 | declare!(USART2); | ||
| 198 | declare!(USART3); | ||
| 199 | declare!(WWDG); | ||
| 200 | } | ||
| 201 | mod interrupt_vector { | ||
| 202 | extern "C" { | ||
| 203 | fn ADC1_2(); | ||
| 204 | fn ADC3(); | ||
| 205 | fn CAN1_RX0(); | ||
| 206 | fn CAN1_RX1(); | ||
| 207 | fn CAN1_SCE(); | ||
| 208 | fn CAN1_TX(); | ||
| 209 | fn COMP(); | ||
| 210 | fn DFSDM1_FLT0(); | ||
| 211 | fn DFSDM1_FLT1(); | ||
| 212 | fn DFSDM1_FLT2(); | ||
| 213 | fn DFSDM1_FLT3(); | ||
| 214 | fn DMA1_Channel1(); | ||
| 215 | fn DMA1_Channel2(); | ||
| 216 | fn DMA1_Channel3(); | ||
| 217 | fn DMA1_Channel4(); | ||
| 218 | fn DMA1_Channel5(); | ||
| 219 | fn DMA1_Channel6(); | ||
| 220 | fn DMA1_Channel7(); | ||
| 221 | fn DMA2_Channel1(); | ||
| 222 | fn DMA2_Channel2(); | ||
| 223 | fn DMA2_Channel3(); | ||
| 224 | fn DMA2_Channel4(); | ||
| 225 | fn DMA2_Channel5(); | ||
| 226 | fn DMA2_Channel6(); | ||
| 227 | fn DMA2_Channel7(); | ||
| 228 | fn EXTI0(); | ||
| 229 | fn EXTI1(); | ||
| 230 | fn EXTI15_10(); | ||
| 231 | fn EXTI2(); | ||
| 232 | fn EXTI3(); | ||
| 233 | fn EXTI4(); | ||
| 234 | fn EXTI9_5(); | ||
| 235 | fn FLASH(); | ||
| 236 | fn FMC(); | ||
| 237 | fn FPU(); | ||
| 238 | fn I2C1_ER(); | ||
| 239 | fn I2C1_EV(); | ||
| 240 | fn I2C2_ER(); | ||
| 241 | fn I2C2_EV(); | ||
| 242 | fn I2C3_ER(); | ||
| 243 | fn I2C3_EV(); | ||
| 244 | fn LCD(); | ||
| 245 | fn LPTIM1(); | ||
| 246 | fn LPTIM2(); | ||
| 247 | fn LPUART1(); | ||
| 248 | fn OTG_FS(); | ||
| 249 | fn PVD_PVM(); | ||
| 250 | fn QUADSPI(); | ||
| 251 | fn RCC(); | ||
| 252 | fn RNG(); | ||
| 253 | fn RTC_Alarm(); | ||
| 254 | fn RTC_WKUP(); | ||
| 255 | fn SAI1(); | ||
| 256 | fn SAI2(); | ||
| 257 | fn SDMMC1(); | ||
| 258 | fn SPI1(); | ||
| 259 | fn SPI2(); | ||
| 260 | fn SPI3(); | ||
| 261 | fn SWPMI1(); | ||
| 262 | fn TAMP_STAMP(); | ||
| 263 | fn TIM1_BRK_TIM15(); | ||
| 264 | fn TIM1_CC(); | ||
| 265 | fn TIM1_TRG_COM_TIM17(); | ||
| 266 | fn TIM1_UP_TIM16(); | ||
| 267 | fn TIM2(); | ||
| 268 | fn TIM3(); | ||
| 269 | fn TIM4(); | ||
| 270 | fn TIM5(); | ||
| 271 | fn TIM6_DAC(); | ||
| 272 | fn TIM7(); | ||
| 273 | fn TIM8_BRK(); | ||
| 274 | fn TIM8_CC(); | ||
| 275 | fn TIM8_TRG_COM(); | ||
| 276 | fn TIM8_UP(); | ||
| 277 | fn TSC(); | ||
| 278 | fn UART4(); | ||
| 279 | fn UART5(); | ||
| 280 | fn USART1(); | ||
| 281 | fn USART2(); | ||
| 282 | fn USART3(); | ||
| 283 | fn WWDG(); | ||
| 284 | } | ||
| 285 | pub union Vector { | ||
| 286 | _handler: unsafe extern "C" fn(), | ||
| 287 | _reserved: u32, | ||
| 288 | } | ||
| 289 | #[link_section = ".vector_table.interrupts"] | ||
| 290 | #[no_mangle] | ||
| 291 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 292 | Vector { _handler: WWDG }, | ||
| 293 | Vector { _handler: PVD_PVM }, | ||
| 294 | Vector { | ||
| 295 | _handler: TAMP_STAMP, | ||
| 296 | }, | ||
| 297 | Vector { _handler: RTC_WKUP }, | ||
| 298 | Vector { _handler: FLASH }, | ||
| 299 | Vector { _handler: RCC }, | ||
| 300 | Vector { _handler: EXTI0 }, | ||
| 301 | Vector { _handler: EXTI1 }, | ||
| 302 | Vector { _handler: EXTI2 }, | ||
| 303 | Vector { _handler: EXTI3 }, | ||
| 304 | Vector { _handler: EXTI4 }, | ||
| 305 | Vector { | ||
| 306 | _handler: DMA1_Channel1, | ||
| 307 | }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel2, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel3, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel4, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel5, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel6, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA1_Channel7, | ||
| 325 | }, | ||
| 326 | Vector { _handler: ADC1_2 }, | ||
| 327 | Vector { _handler: CAN1_TX }, | ||
| 328 | Vector { _handler: CAN1_RX0 }, | ||
| 329 | Vector { _handler: CAN1_RX1 }, | ||
| 330 | Vector { _handler: CAN1_SCE }, | ||
| 331 | Vector { _handler: EXTI9_5 }, | ||
| 332 | Vector { | ||
| 333 | _handler: TIM1_BRK_TIM15, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_UP_TIM16, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: TIM1_TRG_COM_TIM17, | ||
| 340 | }, | ||
| 341 | Vector { _handler: TIM1_CC }, | ||
| 342 | Vector { _handler: TIM2 }, | ||
| 343 | Vector { _handler: TIM3 }, | ||
| 344 | Vector { _handler: TIM4 }, | ||
| 345 | Vector { _handler: I2C1_EV }, | ||
| 346 | Vector { _handler: I2C1_ER }, | ||
| 347 | Vector { _handler: I2C2_EV }, | ||
| 348 | Vector { _handler: I2C2_ER }, | ||
| 349 | Vector { _handler: SPI1 }, | ||
| 350 | Vector { _handler: SPI2 }, | ||
| 351 | Vector { _handler: USART1 }, | ||
| 352 | Vector { _handler: USART2 }, | ||
| 353 | Vector { _handler: USART3 }, | ||
| 354 | Vector { | ||
| 355 | _handler: EXTI15_10, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: RTC_Alarm, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: DFSDM1_FLT3, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM8_BRK }, | ||
| 364 | Vector { _handler: TIM8_UP }, | ||
| 365 | Vector { | ||
| 366 | _handler: TIM8_TRG_COM, | ||
| 367 | }, | ||
| 368 | Vector { _handler: TIM8_CC }, | ||
| 369 | Vector { _handler: ADC3 }, | ||
| 370 | Vector { _handler: FMC }, | ||
| 371 | Vector { _handler: SDMMC1 }, | ||
| 372 | Vector { _handler: TIM5 }, | ||
| 373 | Vector { _handler: SPI3 }, | ||
| 374 | Vector { _handler: UART4 }, | ||
| 375 | Vector { _handler: UART5 }, | ||
| 376 | Vector { _handler: TIM6_DAC }, | ||
| 377 | Vector { _handler: TIM7 }, | ||
| 378 | Vector { | ||
| 379 | _handler: DMA2_Channel1, | ||
| 380 | }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel2, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel3, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel4, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DMA2_Channel5, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DFSDM1_FLT0, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT1, | ||
| 398 | }, | ||
| 399 | Vector { | ||
| 400 | _handler: DFSDM1_FLT2, | ||
| 401 | }, | ||
| 402 | Vector { _handler: COMP }, | ||
| 403 | Vector { _handler: LPTIM1 }, | ||
| 404 | Vector { _handler: LPTIM2 }, | ||
| 405 | Vector { _handler: OTG_FS }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel6, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel7, | ||
| 411 | }, | ||
| 412 | Vector { _handler: LPUART1 }, | ||
| 413 | Vector { _handler: QUADSPI }, | ||
| 414 | Vector { _handler: I2C3_EV }, | ||
| 415 | Vector { _handler: I2C3_ER }, | ||
| 416 | Vector { _handler: SAI1 }, | ||
| 417 | Vector { _handler: SAI2 }, | ||
| 418 | Vector { _handler: SWPMI1 }, | ||
| 419 | Vector { _handler: TSC }, | ||
| 420 | Vector { _handler: LCD }, | ||
| 421 | Vector { _reserved: 0 }, | ||
| 422 | Vector { _handler: RNG }, | ||
| 423 | Vector { _handler: FPU }, | ||
| 424 | ]; | ||
| 425 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 426 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 427 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 428 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l476ze.rs b/embassy-stm32/src/chip/stm32l476ze.rs index ce07466a5..d5b271290 100644 --- a/embassy-stm32/src/chip/stm32l476ze.rs +++ b/embassy-stm32/src/chip/stm32l476ze.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,8 +14,415 @@ peripherals!( | |||
| 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, | 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, |
| 15 | USB_OTG_FS, WWDG | 15 | USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DFSDM1_FLT0 = 61, | ||
| 38 | DFSDM1_FLT1 = 62, | ||
| 39 | DFSDM1_FLT2 = 63, | ||
| 40 | DFSDM1_FLT3 = 42, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | EXTI0 = 6, | ||
| 56 | EXTI1 = 7, | ||
| 57 | EXTI15_10 = 40, | ||
| 58 | EXTI2 = 8, | ||
| 59 | EXTI3 = 9, | ||
| 60 | EXTI4 = 10, | ||
| 61 | EXTI9_5 = 23, | ||
| 62 | FLASH = 4, | ||
| 63 | FMC = 48, | ||
| 64 | FPU = 81, | ||
| 65 | I2C1_ER = 32, | ||
| 66 | I2C1_EV = 31, | ||
| 67 | I2C2_ER = 34, | ||
| 68 | I2C2_EV = 33, | ||
| 69 | I2C3_ER = 73, | ||
| 70 | I2C3_EV = 72, | ||
| 71 | LCD = 78, | ||
| 72 | LPTIM1 = 65, | ||
| 73 | LPTIM2 = 66, | ||
| 74 | LPUART1 = 70, | ||
| 75 | OTG_FS = 67, | ||
| 76 | PVD_PVM = 1, | ||
| 77 | QUADSPI = 71, | ||
| 78 | RCC = 5, | ||
| 79 | RNG = 80, | ||
| 80 | RTC_Alarm = 41, | ||
| 81 | RTC_WKUP = 3, | ||
| 82 | SAI1 = 74, | ||
| 83 | SAI2 = 75, | ||
| 84 | SDMMC1 = 49, | ||
| 85 | SPI1 = 35, | ||
| 86 | SPI2 = 36, | ||
| 87 | SPI3 = 51, | ||
| 88 | SWPMI1 = 76, | ||
| 89 | TAMP_STAMP = 2, | ||
| 90 | TIM1_BRK_TIM15 = 24, | ||
| 91 | TIM1_CC = 27, | ||
| 92 | TIM1_TRG_COM_TIM17 = 26, | ||
| 93 | TIM1_UP_TIM16 = 25, | ||
| 94 | TIM2 = 28, | ||
| 95 | TIM3 = 29, | ||
| 96 | TIM4 = 30, | ||
| 97 | TIM5 = 50, | ||
| 98 | TIM6_DAC = 54, | ||
| 99 | TIM7 = 55, | ||
| 100 | TIM8_BRK = 43, | ||
| 101 | TIM8_CC = 46, | ||
| 102 | TIM8_TRG_COM = 45, | ||
| 103 | TIM8_UP = 44, | ||
| 104 | TSC = 77, | ||
| 105 | UART4 = 52, | ||
| 106 | UART5 = 53, | ||
| 107 | USART1 = 37, | ||
| 108 | USART2 = 38, | ||
| 109 | USART3 = 39, | ||
| 110 | WWDG = 0, | ||
| 111 | } | ||
| 112 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 113 | #[inline(always)] | ||
| 114 | fn number(self) -> u16 { | ||
| 115 | self as u16 | ||
| 116 | } | ||
| 117 | } | ||
| 118 | |||
| 119 | declare!(ADC1_2); | ||
| 120 | declare!(ADC3); | ||
| 121 | declare!(CAN1_RX0); | ||
| 122 | declare!(CAN1_RX1); | ||
| 123 | declare!(CAN1_SCE); | ||
| 124 | declare!(CAN1_TX); | ||
| 125 | declare!(COMP); | ||
| 126 | declare!(DFSDM1_FLT0); | ||
| 127 | declare!(DFSDM1_FLT1); | ||
| 128 | declare!(DFSDM1_FLT2); | ||
| 129 | declare!(DFSDM1_FLT3); | ||
| 130 | declare!(DMA1_Channel1); | ||
| 131 | declare!(DMA1_Channel2); | ||
| 132 | declare!(DMA1_Channel3); | ||
| 133 | declare!(DMA1_Channel4); | ||
| 134 | declare!(DMA1_Channel5); | ||
| 135 | declare!(DMA1_Channel6); | ||
| 136 | declare!(DMA1_Channel7); | ||
| 137 | declare!(DMA2_Channel1); | ||
| 138 | declare!(DMA2_Channel2); | ||
| 139 | declare!(DMA2_Channel3); | ||
| 140 | declare!(DMA2_Channel4); | ||
| 141 | declare!(DMA2_Channel5); | ||
| 142 | declare!(DMA2_Channel6); | ||
| 143 | declare!(DMA2_Channel7); | ||
| 144 | declare!(EXTI0); | ||
| 145 | declare!(EXTI1); | ||
| 146 | declare!(EXTI15_10); | ||
| 147 | declare!(EXTI2); | ||
| 148 | declare!(EXTI3); | ||
| 149 | declare!(EXTI4); | ||
| 150 | declare!(EXTI9_5); | ||
| 151 | declare!(FLASH); | ||
| 152 | declare!(FMC); | ||
| 153 | declare!(FPU); | ||
| 154 | declare!(I2C1_ER); | ||
| 155 | declare!(I2C1_EV); | ||
| 156 | declare!(I2C2_ER); | ||
| 157 | declare!(I2C2_EV); | ||
| 158 | declare!(I2C3_ER); | ||
| 159 | declare!(I2C3_EV); | ||
| 160 | declare!(LCD); | ||
| 161 | declare!(LPTIM1); | ||
| 162 | declare!(LPTIM2); | ||
| 163 | declare!(LPUART1); | ||
| 164 | declare!(OTG_FS); | ||
| 165 | declare!(PVD_PVM); | ||
| 166 | declare!(QUADSPI); | ||
| 167 | declare!(RCC); | ||
| 168 | declare!(RNG); | ||
| 169 | declare!(RTC_Alarm); | ||
| 170 | declare!(RTC_WKUP); | ||
| 171 | declare!(SAI1); | ||
| 172 | declare!(SAI2); | ||
| 173 | declare!(SDMMC1); | ||
| 174 | declare!(SPI1); | ||
| 175 | declare!(SPI2); | ||
| 176 | declare!(SPI3); | ||
| 177 | declare!(SWPMI1); | ||
| 178 | declare!(TAMP_STAMP); | ||
| 179 | declare!(TIM1_BRK_TIM15); | ||
| 180 | declare!(TIM1_CC); | ||
| 181 | declare!(TIM1_TRG_COM_TIM17); | ||
| 182 | declare!(TIM1_UP_TIM16); | ||
| 183 | declare!(TIM2); | ||
| 184 | declare!(TIM3); | ||
| 185 | declare!(TIM4); | ||
| 186 | declare!(TIM5); | ||
| 187 | declare!(TIM6_DAC); | ||
| 188 | declare!(TIM7); | ||
| 189 | declare!(TIM8_BRK); | ||
| 190 | declare!(TIM8_CC); | ||
| 191 | declare!(TIM8_TRG_COM); | ||
| 192 | declare!(TIM8_UP); | ||
| 193 | declare!(TSC); | ||
| 194 | declare!(UART4); | ||
| 195 | declare!(UART5); | ||
| 196 | declare!(USART1); | ||
| 197 | declare!(USART2); | ||
| 198 | declare!(USART3); | ||
| 199 | declare!(WWDG); | ||
| 200 | } | ||
| 201 | mod interrupt_vector { | ||
| 202 | extern "C" { | ||
| 203 | fn ADC1_2(); | ||
| 204 | fn ADC3(); | ||
| 205 | fn CAN1_RX0(); | ||
| 206 | fn CAN1_RX1(); | ||
| 207 | fn CAN1_SCE(); | ||
| 208 | fn CAN1_TX(); | ||
| 209 | fn COMP(); | ||
| 210 | fn DFSDM1_FLT0(); | ||
| 211 | fn DFSDM1_FLT1(); | ||
| 212 | fn DFSDM1_FLT2(); | ||
| 213 | fn DFSDM1_FLT3(); | ||
| 214 | fn DMA1_Channel1(); | ||
| 215 | fn DMA1_Channel2(); | ||
| 216 | fn DMA1_Channel3(); | ||
| 217 | fn DMA1_Channel4(); | ||
| 218 | fn DMA1_Channel5(); | ||
| 219 | fn DMA1_Channel6(); | ||
| 220 | fn DMA1_Channel7(); | ||
| 221 | fn DMA2_Channel1(); | ||
| 222 | fn DMA2_Channel2(); | ||
| 223 | fn DMA2_Channel3(); | ||
| 224 | fn DMA2_Channel4(); | ||
| 225 | fn DMA2_Channel5(); | ||
| 226 | fn DMA2_Channel6(); | ||
| 227 | fn DMA2_Channel7(); | ||
| 228 | fn EXTI0(); | ||
| 229 | fn EXTI1(); | ||
| 230 | fn EXTI15_10(); | ||
| 231 | fn EXTI2(); | ||
| 232 | fn EXTI3(); | ||
| 233 | fn EXTI4(); | ||
| 234 | fn EXTI9_5(); | ||
| 235 | fn FLASH(); | ||
| 236 | fn FMC(); | ||
| 237 | fn FPU(); | ||
| 238 | fn I2C1_ER(); | ||
| 239 | fn I2C1_EV(); | ||
| 240 | fn I2C2_ER(); | ||
| 241 | fn I2C2_EV(); | ||
| 242 | fn I2C3_ER(); | ||
| 243 | fn I2C3_EV(); | ||
| 244 | fn LCD(); | ||
| 245 | fn LPTIM1(); | ||
| 246 | fn LPTIM2(); | ||
| 247 | fn LPUART1(); | ||
| 248 | fn OTG_FS(); | ||
| 249 | fn PVD_PVM(); | ||
| 250 | fn QUADSPI(); | ||
| 251 | fn RCC(); | ||
| 252 | fn RNG(); | ||
| 253 | fn RTC_Alarm(); | ||
| 254 | fn RTC_WKUP(); | ||
| 255 | fn SAI1(); | ||
| 256 | fn SAI2(); | ||
| 257 | fn SDMMC1(); | ||
| 258 | fn SPI1(); | ||
| 259 | fn SPI2(); | ||
| 260 | fn SPI3(); | ||
| 261 | fn SWPMI1(); | ||
| 262 | fn TAMP_STAMP(); | ||
| 263 | fn TIM1_BRK_TIM15(); | ||
| 264 | fn TIM1_CC(); | ||
| 265 | fn TIM1_TRG_COM_TIM17(); | ||
| 266 | fn TIM1_UP_TIM16(); | ||
| 267 | fn TIM2(); | ||
| 268 | fn TIM3(); | ||
| 269 | fn TIM4(); | ||
| 270 | fn TIM5(); | ||
| 271 | fn TIM6_DAC(); | ||
| 272 | fn TIM7(); | ||
| 273 | fn TIM8_BRK(); | ||
| 274 | fn TIM8_CC(); | ||
| 275 | fn TIM8_TRG_COM(); | ||
| 276 | fn TIM8_UP(); | ||
| 277 | fn TSC(); | ||
| 278 | fn UART4(); | ||
| 279 | fn UART5(); | ||
| 280 | fn USART1(); | ||
| 281 | fn USART2(); | ||
| 282 | fn USART3(); | ||
| 283 | fn WWDG(); | ||
| 284 | } | ||
| 285 | pub union Vector { | ||
| 286 | _handler: unsafe extern "C" fn(), | ||
| 287 | _reserved: u32, | ||
| 288 | } | ||
| 289 | #[link_section = ".vector_table.interrupts"] | ||
| 290 | #[no_mangle] | ||
| 291 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 292 | Vector { _handler: WWDG }, | ||
| 293 | Vector { _handler: PVD_PVM }, | ||
| 294 | Vector { | ||
| 295 | _handler: TAMP_STAMP, | ||
| 296 | }, | ||
| 297 | Vector { _handler: RTC_WKUP }, | ||
| 298 | Vector { _handler: FLASH }, | ||
| 299 | Vector { _handler: RCC }, | ||
| 300 | Vector { _handler: EXTI0 }, | ||
| 301 | Vector { _handler: EXTI1 }, | ||
| 302 | Vector { _handler: EXTI2 }, | ||
| 303 | Vector { _handler: EXTI3 }, | ||
| 304 | Vector { _handler: EXTI4 }, | ||
| 305 | Vector { | ||
| 306 | _handler: DMA1_Channel1, | ||
| 307 | }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel2, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel3, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel4, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel5, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel6, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA1_Channel7, | ||
| 325 | }, | ||
| 326 | Vector { _handler: ADC1_2 }, | ||
| 327 | Vector { _handler: CAN1_TX }, | ||
| 328 | Vector { _handler: CAN1_RX0 }, | ||
| 329 | Vector { _handler: CAN1_RX1 }, | ||
| 330 | Vector { _handler: CAN1_SCE }, | ||
| 331 | Vector { _handler: EXTI9_5 }, | ||
| 332 | Vector { | ||
| 333 | _handler: TIM1_BRK_TIM15, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_UP_TIM16, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: TIM1_TRG_COM_TIM17, | ||
| 340 | }, | ||
| 341 | Vector { _handler: TIM1_CC }, | ||
| 342 | Vector { _handler: TIM2 }, | ||
| 343 | Vector { _handler: TIM3 }, | ||
| 344 | Vector { _handler: TIM4 }, | ||
| 345 | Vector { _handler: I2C1_EV }, | ||
| 346 | Vector { _handler: I2C1_ER }, | ||
| 347 | Vector { _handler: I2C2_EV }, | ||
| 348 | Vector { _handler: I2C2_ER }, | ||
| 349 | Vector { _handler: SPI1 }, | ||
| 350 | Vector { _handler: SPI2 }, | ||
| 351 | Vector { _handler: USART1 }, | ||
| 352 | Vector { _handler: USART2 }, | ||
| 353 | Vector { _handler: USART3 }, | ||
| 354 | Vector { | ||
| 355 | _handler: EXTI15_10, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: RTC_Alarm, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: DFSDM1_FLT3, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM8_BRK }, | ||
| 364 | Vector { _handler: TIM8_UP }, | ||
| 365 | Vector { | ||
| 366 | _handler: TIM8_TRG_COM, | ||
| 367 | }, | ||
| 368 | Vector { _handler: TIM8_CC }, | ||
| 369 | Vector { _handler: ADC3 }, | ||
| 370 | Vector { _handler: FMC }, | ||
| 371 | Vector { _handler: SDMMC1 }, | ||
| 372 | Vector { _handler: TIM5 }, | ||
| 373 | Vector { _handler: SPI3 }, | ||
| 374 | Vector { _handler: UART4 }, | ||
| 375 | Vector { _handler: UART5 }, | ||
| 376 | Vector { _handler: TIM6_DAC }, | ||
| 377 | Vector { _handler: TIM7 }, | ||
| 378 | Vector { | ||
| 379 | _handler: DMA2_Channel1, | ||
| 380 | }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel2, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel3, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel4, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DMA2_Channel5, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DFSDM1_FLT0, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT1, | ||
| 398 | }, | ||
| 399 | Vector { | ||
| 400 | _handler: DFSDM1_FLT2, | ||
| 401 | }, | ||
| 402 | Vector { _handler: COMP }, | ||
| 403 | Vector { _handler: LPTIM1 }, | ||
| 404 | Vector { _handler: LPTIM2 }, | ||
| 405 | Vector { _handler: OTG_FS }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel6, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel7, | ||
| 411 | }, | ||
| 412 | Vector { _handler: LPUART1 }, | ||
| 413 | Vector { _handler: QUADSPI }, | ||
| 414 | Vector { _handler: I2C3_EV }, | ||
| 415 | Vector { _handler: I2C3_ER }, | ||
| 416 | Vector { _handler: SAI1 }, | ||
| 417 | Vector { _handler: SAI2 }, | ||
| 418 | Vector { _handler: SWPMI1 }, | ||
| 419 | Vector { _handler: TSC }, | ||
| 420 | Vector { _handler: LCD }, | ||
| 421 | Vector { _reserved: 0 }, | ||
| 422 | Vector { _handler: RNG }, | ||
| 423 | Vector { _handler: FPU }, | ||
| 424 | ]; | ||
| 425 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 426 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 427 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 428 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l476zg.rs b/embassy-stm32/src/chip/stm32l476zg.rs index ce07466a5..d5b271290 100644 --- a/embassy-stm32/src/chip/stm32l476zg.rs +++ b/embassy-stm32/src/chip/stm32l476zg.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -14,8 +14,415 @@ peripherals!( | |||
| 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, | 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, |
| 15 | USB_OTG_FS, WWDG | 15 | USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DFSDM1_FLT0 = 61, | ||
| 38 | DFSDM1_FLT1 = 62, | ||
| 39 | DFSDM1_FLT2 = 63, | ||
| 40 | DFSDM1_FLT3 = 42, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | EXTI0 = 6, | ||
| 56 | EXTI1 = 7, | ||
| 57 | EXTI15_10 = 40, | ||
| 58 | EXTI2 = 8, | ||
| 59 | EXTI3 = 9, | ||
| 60 | EXTI4 = 10, | ||
| 61 | EXTI9_5 = 23, | ||
| 62 | FLASH = 4, | ||
| 63 | FMC = 48, | ||
| 64 | FPU = 81, | ||
| 65 | I2C1_ER = 32, | ||
| 66 | I2C1_EV = 31, | ||
| 67 | I2C2_ER = 34, | ||
| 68 | I2C2_EV = 33, | ||
| 69 | I2C3_ER = 73, | ||
| 70 | I2C3_EV = 72, | ||
| 71 | LCD = 78, | ||
| 72 | LPTIM1 = 65, | ||
| 73 | LPTIM2 = 66, | ||
| 74 | LPUART1 = 70, | ||
| 75 | OTG_FS = 67, | ||
| 76 | PVD_PVM = 1, | ||
| 77 | QUADSPI = 71, | ||
| 78 | RCC = 5, | ||
| 79 | RNG = 80, | ||
| 80 | RTC_Alarm = 41, | ||
| 81 | RTC_WKUP = 3, | ||
| 82 | SAI1 = 74, | ||
| 83 | SAI2 = 75, | ||
| 84 | SDMMC1 = 49, | ||
| 85 | SPI1 = 35, | ||
| 86 | SPI2 = 36, | ||
| 87 | SPI3 = 51, | ||
| 88 | SWPMI1 = 76, | ||
| 89 | TAMP_STAMP = 2, | ||
| 90 | TIM1_BRK_TIM15 = 24, | ||
| 91 | TIM1_CC = 27, | ||
| 92 | TIM1_TRG_COM_TIM17 = 26, | ||
| 93 | TIM1_UP_TIM16 = 25, | ||
| 94 | TIM2 = 28, | ||
| 95 | TIM3 = 29, | ||
| 96 | TIM4 = 30, | ||
| 97 | TIM5 = 50, | ||
| 98 | TIM6_DAC = 54, | ||
| 99 | TIM7 = 55, | ||
| 100 | TIM8_BRK = 43, | ||
| 101 | TIM8_CC = 46, | ||
| 102 | TIM8_TRG_COM = 45, | ||
| 103 | TIM8_UP = 44, | ||
| 104 | TSC = 77, | ||
| 105 | UART4 = 52, | ||
| 106 | UART5 = 53, | ||
| 107 | USART1 = 37, | ||
| 108 | USART2 = 38, | ||
| 109 | USART3 = 39, | ||
| 110 | WWDG = 0, | ||
| 111 | } | ||
| 112 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 113 | #[inline(always)] | ||
| 114 | fn number(self) -> u16 { | ||
| 115 | self as u16 | ||
| 116 | } | ||
| 117 | } | ||
| 118 | |||
| 119 | declare!(ADC1_2); | ||
| 120 | declare!(ADC3); | ||
| 121 | declare!(CAN1_RX0); | ||
| 122 | declare!(CAN1_RX1); | ||
| 123 | declare!(CAN1_SCE); | ||
| 124 | declare!(CAN1_TX); | ||
| 125 | declare!(COMP); | ||
| 126 | declare!(DFSDM1_FLT0); | ||
| 127 | declare!(DFSDM1_FLT1); | ||
| 128 | declare!(DFSDM1_FLT2); | ||
| 129 | declare!(DFSDM1_FLT3); | ||
| 130 | declare!(DMA1_Channel1); | ||
| 131 | declare!(DMA1_Channel2); | ||
| 132 | declare!(DMA1_Channel3); | ||
| 133 | declare!(DMA1_Channel4); | ||
| 134 | declare!(DMA1_Channel5); | ||
| 135 | declare!(DMA1_Channel6); | ||
| 136 | declare!(DMA1_Channel7); | ||
| 137 | declare!(DMA2_Channel1); | ||
| 138 | declare!(DMA2_Channel2); | ||
| 139 | declare!(DMA2_Channel3); | ||
| 140 | declare!(DMA2_Channel4); | ||
| 141 | declare!(DMA2_Channel5); | ||
| 142 | declare!(DMA2_Channel6); | ||
| 143 | declare!(DMA2_Channel7); | ||
| 144 | declare!(EXTI0); | ||
| 145 | declare!(EXTI1); | ||
| 146 | declare!(EXTI15_10); | ||
| 147 | declare!(EXTI2); | ||
| 148 | declare!(EXTI3); | ||
| 149 | declare!(EXTI4); | ||
| 150 | declare!(EXTI9_5); | ||
| 151 | declare!(FLASH); | ||
| 152 | declare!(FMC); | ||
| 153 | declare!(FPU); | ||
| 154 | declare!(I2C1_ER); | ||
| 155 | declare!(I2C1_EV); | ||
| 156 | declare!(I2C2_ER); | ||
| 157 | declare!(I2C2_EV); | ||
| 158 | declare!(I2C3_ER); | ||
| 159 | declare!(I2C3_EV); | ||
| 160 | declare!(LCD); | ||
| 161 | declare!(LPTIM1); | ||
| 162 | declare!(LPTIM2); | ||
| 163 | declare!(LPUART1); | ||
| 164 | declare!(OTG_FS); | ||
| 165 | declare!(PVD_PVM); | ||
| 166 | declare!(QUADSPI); | ||
| 167 | declare!(RCC); | ||
| 168 | declare!(RNG); | ||
| 169 | declare!(RTC_Alarm); | ||
| 170 | declare!(RTC_WKUP); | ||
| 171 | declare!(SAI1); | ||
| 172 | declare!(SAI2); | ||
| 173 | declare!(SDMMC1); | ||
| 174 | declare!(SPI1); | ||
| 175 | declare!(SPI2); | ||
| 176 | declare!(SPI3); | ||
| 177 | declare!(SWPMI1); | ||
| 178 | declare!(TAMP_STAMP); | ||
| 179 | declare!(TIM1_BRK_TIM15); | ||
| 180 | declare!(TIM1_CC); | ||
| 181 | declare!(TIM1_TRG_COM_TIM17); | ||
| 182 | declare!(TIM1_UP_TIM16); | ||
| 183 | declare!(TIM2); | ||
| 184 | declare!(TIM3); | ||
| 185 | declare!(TIM4); | ||
| 186 | declare!(TIM5); | ||
| 187 | declare!(TIM6_DAC); | ||
| 188 | declare!(TIM7); | ||
| 189 | declare!(TIM8_BRK); | ||
| 190 | declare!(TIM8_CC); | ||
| 191 | declare!(TIM8_TRG_COM); | ||
| 192 | declare!(TIM8_UP); | ||
| 193 | declare!(TSC); | ||
| 194 | declare!(UART4); | ||
| 195 | declare!(UART5); | ||
| 196 | declare!(USART1); | ||
| 197 | declare!(USART2); | ||
| 198 | declare!(USART3); | ||
| 199 | declare!(WWDG); | ||
| 200 | } | ||
| 201 | mod interrupt_vector { | ||
| 202 | extern "C" { | ||
| 203 | fn ADC1_2(); | ||
| 204 | fn ADC3(); | ||
| 205 | fn CAN1_RX0(); | ||
| 206 | fn CAN1_RX1(); | ||
| 207 | fn CAN1_SCE(); | ||
| 208 | fn CAN1_TX(); | ||
| 209 | fn COMP(); | ||
| 210 | fn DFSDM1_FLT0(); | ||
| 211 | fn DFSDM1_FLT1(); | ||
| 212 | fn DFSDM1_FLT2(); | ||
| 213 | fn DFSDM1_FLT3(); | ||
| 214 | fn DMA1_Channel1(); | ||
| 215 | fn DMA1_Channel2(); | ||
| 216 | fn DMA1_Channel3(); | ||
| 217 | fn DMA1_Channel4(); | ||
| 218 | fn DMA1_Channel5(); | ||
| 219 | fn DMA1_Channel6(); | ||
| 220 | fn DMA1_Channel7(); | ||
| 221 | fn DMA2_Channel1(); | ||
| 222 | fn DMA2_Channel2(); | ||
| 223 | fn DMA2_Channel3(); | ||
| 224 | fn DMA2_Channel4(); | ||
| 225 | fn DMA2_Channel5(); | ||
| 226 | fn DMA2_Channel6(); | ||
| 227 | fn DMA2_Channel7(); | ||
| 228 | fn EXTI0(); | ||
| 229 | fn EXTI1(); | ||
| 230 | fn EXTI15_10(); | ||
| 231 | fn EXTI2(); | ||
| 232 | fn EXTI3(); | ||
| 233 | fn EXTI4(); | ||
| 234 | fn EXTI9_5(); | ||
| 235 | fn FLASH(); | ||
| 236 | fn FMC(); | ||
| 237 | fn FPU(); | ||
| 238 | fn I2C1_ER(); | ||
| 239 | fn I2C1_EV(); | ||
| 240 | fn I2C2_ER(); | ||
| 241 | fn I2C2_EV(); | ||
| 242 | fn I2C3_ER(); | ||
| 243 | fn I2C3_EV(); | ||
| 244 | fn LCD(); | ||
| 245 | fn LPTIM1(); | ||
| 246 | fn LPTIM2(); | ||
| 247 | fn LPUART1(); | ||
| 248 | fn OTG_FS(); | ||
| 249 | fn PVD_PVM(); | ||
| 250 | fn QUADSPI(); | ||
| 251 | fn RCC(); | ||
| 252 | fn RNG(); | ||
| 253 | fn RTC_Alarm(); | ||
| 254 | fn RTC_WKUP(); | ||
| 255 | fn SAI1(); | ||
| 256 | fn SAI2(); | ||
| 257 | fn SDMMC1(); | ||
| 258 | fn SPI1(); | ||
| 259 | fn SPI2(); | ||
| 260 | fn SPI3(); | ||
| 261 | fn SWPMI1(); | ||
| 262 | fn TAMP_STAMP(); | ||
| 263 | fn TIM1_BRK_TIM15(); | ||
| 264 | fn TIM1_CC(); | ||
| 265 | fn TIM1_TRG_COM_TIM17(); | ||
| 266 | fn TIM1_UP_TIM16(); | ||
| 267 | fn TIM2(); | ||
| 268 | fn TIM3(); | ||
| 269 | fn TIM4(); | ||
| 270 | fn TIM5(); | ||
| 271 | fn TIM6_DAC(); | ||
| 272 | fn TIM7(); | ||
| 273 | fn TIM8_BRK(); | ||
| 274 | fn TIM8_CC(); | ||
| 275 | fn TIM8_TRG_COM(); | ||
| 276 | fn TIM8_UP(); | ||
| 277 | fn TSC(); | ||
| 278 | fn UART4(); | ||
| 279 | fn UART5(); | ||
| 280 | fn USART1(); | ||
| 281 | fn USART2(); | ||
| 282 | fn USART3(); | ||
| 283 | fn WWDG(); | ||
| 284 | } | ||
| 285 | pub union Vector { | ||
| 286 | _handler: unsafe extern "C" fn(), | ||
| 287 | _reserved: u32, | ||
| 288 | } | ||
| 289 | #[link_section = ".vector_table.interrupts"] | ||
| 290 | #[no_mangle] | ||
| 291 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 292 | Vector { _handler: WWDG }, | ||
| 293 | Vector { _handler: PVD_PVM }, | ||
| 294 | Vector { | ||
| 295 | _handler: TAMP_STAMP, | ||
| 296 | }, | ||
| 297 | Vector { _handler: RTC_WKUP }, | ||
| 298 | Vector { _handler: FLASH }, | ||
| 299 | Vector { _handler: RCC }, | ||
| 300 | Vector { _handler: EXTI0 }, | ||
| 301 | Vector { _handler: EXTI1 }, | ||
| 302 | Vector { _handler: EXTI2 }, | ||
| 303 | Vector { _handler: EXTI3 }, | ||
| 304 | Vector { _handler: EXTI4 }, | ||
| 305 | Vector { | ||
| 306 | _handler: DMA1_Channel1, | ||
| 307 | }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel2, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel3, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel4, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel5, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel6, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA1_Channel7, | ||
| 325 | }, | ||
| 326 | Vector { _handler: ADC1_2 }, | ||
| 327 | Vector { _handler: CAN1_TX }, | ||
| 328 | Vector { _handler: CAN1_RX0 }, | ||
| 329 | Vector { _handler: CAN1_RX1 }, | ||
| 330 | Vector { _handler: CAN1_SCE }, | ||
| 331 | Vector { _handler: EXTI9_5 }, | ||
| 332 | Vector { | ||
| 333 | _handler: TIM1_BRK_TIM15, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_UP_TIM16, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: TIM1_TRG_COM_TIM17, | ||
| 340 | }, | ||
| 341 | Vector { _handler: TIM1_CC }, | ||
| 342 | Vector { _handler: TIM2 }, | ||
| 343 | Vector { _handler: TIM3 }, | ||
| 344 | Vector { _handler: TIM4 }, | ||
| 345 | Vector { _handler: I2C1_EV }, | ||
| 346 | Vector { _handler: I2C1_ER }, | ||
| 347 | Vector { _handler: I2C2_EV }, | ||
| 348 | Vector { _handler: I2C2_ER }, | ||
| 349 | Vector { _handler: SPI1 }, | ||
| 350 | Vector { _handler: SPI2 }, | ||
| 351 | Vector { _handler: USART1 }, | ||
| 352 | Vector { _handler: USART2 }, | ||
| 353 | Vector { _handler: USART3 }, | ||
| 354 | Vector { | ||
| 355 | _handler: EXTI15_10, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: RTC_Alarm, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: DFSDM1_FLT3, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM8_BRK }, | ||
| 364 | Vector { _handler: TIM8_UP }, | ||
| 365 | Vector { | ||
| 366 | _handler: TIM8_TRG_COM, | ||
| 367 | }, | ||
| 368 | Vector { _handler: TIM8_CC }, | ||
| 369 | Vector { _handler: ADC3 }, | ||
| 370 | Vector { _handler: FMC }, | ||
| 371 | Vector { _handler: SDMMC1 }, | ||
| 372 | Vector { _handler: TIM5 }, | ||
| 373 | Vector { _handler: SPI3 }, | ||
| 374 | Vector { _handler: UART4 }, | ||
| 375 | Vector { _handler: UART5 }, | ||
| 376 | Vector { _handler: TIM6_DAC }, | ||
| 377 | Vector { _handler: TIM7 }, | ||
| 378 | Vector { | ||
| 379 | _handler: DMA2_Channel1, | ||
| 380 | }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel2, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel3, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel4, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DMA2_Channel5, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DFSDM1_FLT0, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT1, | ||
| 398 | }, | ||
| 399 | Vector { | ||
| 400 | _handler: DFSDM1_FLT2, | ||
| 401 | }, | ||
| 402 | Vector { _handler: COMP }, | ||
| 403 | Vector { _handler: LPTIM1 }, | ||
| 404 | Vector { _handler: LPTIM2 }, | ||
| 405 | Vector { _handler: OTG_FS }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel6, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel7, | ||
| 411 | }, | ||
| 412 | Vector { _handler: LPUART1 }, | ||
| 413 | Vector { _handler: QUADSPI }, | ||
| 414 | Vector { _handler: I2C3_EV }, | ||
| 415 | Vector { _handler: I2C3_ER }, | ||
| 416 | Vector { _handler: SAI1 }, | ||
| 417 | Vector { _handler: SAI2 }, | ||
| 418 | Vector { _handler: SWPMI1 }, | ||
| 419 | Vector { _handler: TSC }, | ||
| 420 | Vector { _handler: LCD }, | ||
| 421 | Vector { _reserved: 0 }, | ||
| 422 | Vector { _handler: RNG }, | ||
| 423 | Vector { _handler: FPU }, | ||
| 424 | ]; | ||
| 425 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 426 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 427 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 428 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l485jc.rs b/embassy-stm32/src/chip/stm32l485jc.rs index 77b2e512c..829a5b5a8 100644 --- a/embassy-stm32/src/chip/stm32l485jc.rs +++ b/embassy-stm32/src/chip/stm32l485jc.rs | |||
| @@ -1,21 +1,428 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, RNG, | 12 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, |
| 13 | RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, | 13 | RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, |
| 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, | 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, |
| 15 | WWDG | 15 | USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DFSDM1_FLT0 = 61, | ||
| 39 | DFSDM1_FLT1 = 62, | ||
| 40 | DFSDM1_FLT2 = 63, | ||
| 41 | DFSDM1_FLT3 = 42, | ||
| 42 | DMA1_Channel1 = 11, | ||
| 43 | DMA1_Channel2 = 12, | ||
| 44 | DMA1_Channel3 = 13, | ||
| 45 | DMA1_Channel4 = 14, | ||
| 46 | DMA1_Channel5 = 15, | ||
| 47 | DMA1_Channel6 = 16, | ||
| 48 | DMA1_Channel7 = 17, | ||
| 49 | DMA2_Channel1 = 56, | ||
| 50 | DMA2_Channel2 = 57, | ||
| 51 | DMA2_Channel3 = 58, | ||
| 52 | DMA2_Channel4 = 59, | ||
| 53 | DMA2_Channel5 = 60, | ||
| 54 | DMA2_Channel6 = 68, | ||
| 55 | DMA2_Channel7 = 69, | ||
| 56 | EXTI0 = 6, | ||
| 57 | EXTI1 = 7, | ||
| 58 | EXTI15_10 = 40, | ||
| 59 | EXTI2 = 8, | ||
| 60 | EXTI3 = 9, | ||
| 61 | EXTI4 = 10, | ||
| 62 | EXTI9_5 = 23, | ||
| 63 | FLASH = 4, | ||
| 64 | FMC = 48, | ||
| 65 | FPU = 81, | ||
| 66 | I2C1_ER = 32, | ||
| 67 | I2C1_EV = 31, | ||
| 68 | I2C2_ER = 34, | ||
| 69 | I2C2_EV = 33, | ||
| 70 | I2C3_ER = 73, | ||
| 71 | I2C3_EV = 72, | ||
| 72 | LPTIM1 = 65, | ||
| 73 | LPTIM2 = 66, | ||
| 74 | LPUART1 = 70, | ||
| 75 | OTG_FS = 67, | ||
| 76 | PVD_PVM = 1, | ||
| 77 | QUADSPI = 71, | ||
| 78 | RCC = 5, | ||
| 79 | RNG = 80, | ||
| 80 | RTC_Alarm = 41, | ||
| 81 | RTC_WKUP = 3, | ||
| 82 | SAI1 = 74, | ||
| 83 | SAI2 = 75, | ||
| 84 | SDMMC1 = 49, | ||
| 85 | SPI1 = 35, | ||
| 86 | SPI2 = 36, | ||
| 87 | SPI3 = 51, | ||
| 88 | SWPMI1 = 76, | ||
| 89 | TAMP_STAMP = 2, | ||
| 90 | TIM1_BRK_TIM15 = 24, | ||
| 91 | TIM1_CC = 27, | ||
| 92 | TIM1_TRG_COM_TIM17 = 26, | ||
| 93 | TIM1_UP_TIM16 = 25, | ||
| 94 | TIM2 = 28, | ||
| 95 | TIM3 = 29, | ||
| 96 | TIM4 = 30, | ||
| 97 | TIM5 = 50, | ||
| 98 | TIM6_DAC = 54, | ||
| 99 | TIM7 = 55, | ||
| 100 | TIM8_BRK = 43, | ||
| 101 | TIM8_CC = 46, | ||
| 102 | TIM8_TRG_COM = 45, | ||
| 103 | TIM8_UP = 44, | ||
| 104 | TSC = 77, | ||
| 105 | UART4 = 52, | ||
| 106 | UART5 = 53, | ||
| 107 | USART1 = 37, | ||
| 108 | USART2 = 38, | ||
| 109 | USART3 = 39, | ||
| 110 | WWDG = 0, | ||
| 111 | } | ||
| 112 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 113 | #[inline(always)] | ||
| 114 | fn number(self) -> u16 { | ||
| 115 | self as u16 | ||
| 116 | } | ||
| 117 | } | ||
| 118 | |||
| 119 | declare!(ADC1_2); | ||
| 120 | declare!(ADC3); | ||
| 121 | declare!(AES); | ||
| 122 | declare!(CAN1_RX0); | ||
| 123 | declare!(CAN1_RX1); | ||
| 124 | declare!(CAN1_SCE); | ||
| 125 | declare!(CAN1_TX); | ||
| 126 | declare!(COMP); | ||
| 127 | declare!(DFSDM1_FLT0); | ||
| 128 | declare!(DFSDM1_FLT1); | ||
| 129 | declare!(DFSDM1_FLT2); | ||
| 130 | declare!(DFSDM1_FLT3); | ||
| 131 | declare!(DMA1_Channel1); | ||
| 132 | declare!(DMA1_Channel2); | ||
| 133 | declare!(DMA1_Channel3); | ||
| 134 | declare!(DMA1_Channel4); | ||
| 135 | declare!(DMA1_Channel5); | ||
| 136 | declare!(DMA1_Channel6); | ||
| 137 | declare!(DMA1_Channel7); | ||
| 138 | declare!(DMA2_Channel1); | ||
| 139 | declare!(DMA2_Channel2); | ||
| 140 | declare!(DMA2_Channel3); | ||
| 141 | declare!(DMA2_Channel4); | ||
| 142 | declare!(DMA2_Channel5); | ||
| 143 | declare!(DMA2_Channel6); | ||
| 144 | declare!(DMA2_Channel7); | ||
| 145 | declare!(EXTI0); | ||
| 146 | declare!(EXTI1); | ||
| 147 | declare!(EXTI15_10); | ||
| 148 | declare!(EXTI2); | ||
| 149 | declare!(EXTI3); | ||
| 150 | declare!(EXTI4); | ||
| 151 | declare!(EXTI9_5); | ||
| 152 | declare!(FLASH); | ||
| 153 | declare!(FMC); | ||
| 154 | declare!(FPU); | ||
| 155 | declare!(I2C1_ER); | ||
| 156 | declare!(I2C1_EV); | ||
| 157 | declare!(I2C2_ER); | ||
| 158 | declare!(I2C2_EV); | ||
| 159 | declare!(I2C3_ER); | ||
| 160 | declare!(I2C3_EV); | ||
| 161 | declare!(LPTIM1); | ||
| 162 | declare!(LPTIM2); | ||
| 163 | declare!(LPUART1); | ||
| 164 | declare!(OTG_FS); | ||
| 165 | declare!(PVD_PVM); | ||
| 166 | declare!(QUADSPI); | ||
| 167 | declare!(RCC); | ||
| 168 | declare!(RNG); | ||
| 169 | declare!(RTC_Alarm); | ||
| 170 | declare!(RTC_WKUP); | ||
| 171 | declare!(SAI1); | ||
| 172 | declare!(SAI2); | ||
| 173 | declare!(SDMMC1); | ||
| 174 | declare!(SPI1); | ||
| 175 | declare!(SPI2); | ||
| 176 | declare!(SPI3); | ||
| 177 | declare!(SWPMI1); | ||
| 178 | declare!(TAMP_STAMP); | ||
| 179 | declare!(TIM1_BRK_TIM15); | ||
| 180 | declare!(TIM1_CC); | ||
| 181 | declare!(TIM1_TRG_COM_TIM17); | ||
| 182 | declare!(TIM1_UP_TIM16); | ||
| 183 | declare!(TIM2); | ||
| 184 | declare!(TIM3); | ||
| 185 | declare!(TIM4); | ||
| 186 | declare!(TIM5); | ||
| 187 | declare!(TIM6_DAC); | ||
| 188 | declare!(TIM7); | ||
| 189 | declare!(TIM8_BRK); | ||
| 190 | declare!(TIM8_CC); | ||
| 191 | declare!(TIM8_TRG_COM); | ||
| 192 | declare!(TIM8_UP); | ||
| 193 | declare!(TSC); | ||
| 194 | declare!(UART4); | ||
| 195 | declare!(UART5); | ||
| 196 | declare!(USART1); | ||
| 197 | declare!(USART2); | ||
| 198 | declare!(USART3); | ||
| 199 | declare!(WWDG); | ||
| 200 | } | ||
| 201 | mod interrupt_vector { | ||
| 202 | extern "C" { | ||
| 203 | fn ADC1_2(); | ||
| 204 | fn ADC3(); | ||
| 205 | fn AES(); | ||
| 206 | fn CAN1_RX0(); | ||
| 207 | fn CAN1_RX1(); | ||
| 208 | fn CAN1_SCE(); | ||
| 209 | fn CAN1_TX(); | ||
| 210 | fn COMP(); | ||
| 211 | fn DFSDM1_FLT0(); | ||
| 212 | fn DFSDM1_FLT1(); | ||
| 213 | fn DFSDM1_FLT2(); | ||
| 214 | fn DFSDM1_FLT3(); | ||
| 215 | fn DMA1_Channel1(); | ||
| 216 | fn DMA1_Channel2(); | ||
| 217 | fn DMA1_Channel3(); | ||
| 218 | fn DMA1_Channel4(); | ||
| 219 | fn DMA1_Channel5(); | ||
| 220 | fn DMA1_Channel6(); | ||
| 221 | fn DMA1_Channel7(); | ||
| 222 | fn DMA2_Channel1(); | ||
| 223 | fn DMA2_Channel2(); | ||
| 224 | fn DMA2_Channel3(); | ||
| 225 | fn DMA2_Channel4(); | ||
| 226 | fn DMA2_Channel5(); | ||
| 227 | fn DMA2_Channel6(); | ||
| 228 | fn DMA2_Channel7(); | ||
| 229 | fn EXTI0(); | ||
| 230 | fn EXTI1(); | ||
| 231 | fn EXTI15_10(); | ||
| 232 | fn EXTI2(); | ||
| 233 | fn EXTI3(); | ||
| 234 | fn EXTI4(); | ||
| 235 | fn EXTI9_5(); | ||
| 236 | fn FLASH(); | ||
| 237 | fn FMC(); | ||
| 238 | fn FPU(); | ||
| 239 | fn I2C1_ER(); | ||
| 240 | fn I2C1_EV(); | ||
| 241 | fn I2C2_ER(); | ||
| 242 | fn I2C2_EV(); | ||
| 243 | fn I2C3_ER(); | ||
| 244 | fn I2C3_EV(); | ||
| 245 | fn LPTIM1(); | ||
| 246 | fn LPTIM2(); | ||
| 247 | fn LPUART1(); | ||
| 248 | fn OTG_FS(); | ||
| 249 | fn PVD_PVM(); | ||
| 250 | fn QUADSPI(); | ||
| 251 | fn RCC(); | ||
| 252 | fn RNG(); | ||
| 253 | fn RTC_Alarm(); | ||
| 254 | fn RTC_WKUP(); | ||
| 255 | fn SAI1(); | ||
| 256 | fn SAI2(); | ||
| 257 | fn SDMMC1(); | ||
| 258 | fn SPI1(); | ||
| 259 | fn SPI2(); | ||
| 260 | fn SPI3(); | ||
| 261 | fn SWPMI1(); | ||
| 262 | fn TAMP_STAMP(); | ||
| 263 | fn TIM1_BRK_TIM15(); | ||
| 264 | fn TIM1_CC(); | ||
| 265 | fn TIM1_TRG_COM_TIM17(); | ||
| 266 | fn TIM1_UP_TIM16(); | ||
| 267 | fn TIM2(); | ||
| 268 | fn TIM3(); | ||
| 269 | fn TIM4(); | ||
| 270 | fn TIM5(); | ||
| 271 | fn TIM6_DAC(); | ||
| 272 | fn TIM7(); | ||
| 273 | fn TIM8_BRK(); | ||
| 274 | fn TIM8_CC(); | ||
| 275 | fn TIM8_TRG_COM(); | ||
| 276 | fn TIM8_UP(); | ||
| 277 | fn TSC(); | ||
| 278 | fn UART4(); | ||
| 279 | fn UART5(); | ||
| 280 | fn USART1(); | ||
| 281 | fn USART2(); | ||
| 282 | fn USART3(); | ||
| 283 | fn WWDG(); | ||
| 284 | } | ||
| 285 | pub union Vector { | ||
| 286 | _handler: unsafe extern "C" fn(), | ||
| 287 | _reserved: u32, | ||
| 288 | } | ||
| 289 | #[link_section = ".vector_table.interrupts"] | ||
| 290 | #[no_mangle] | ||
| 291 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 292 | Vector { _handler: WWDG }, | ||
| 293 | Vector { _handler: PVD_PVM }, | ||
| 294 | Vector { | ||
| 295 | _handler: TAMP_STAMP, | ||
| 296 | }, | ||
| 297 | Vector { _handler: RTC_WKUP }, | ||
| 298 | Vector { _handler: FLASH }, | ||
| 299 | Vector { _handler: RCC }, | ||
| 300 | Vector { _handler: EXTI0 }, | ||
| 301 | Vector { _handler: EXTI1 }, | ||
| 302 | Vector { _handler: EXTI2 }, | ||
| 303 | Vector { _handler: EXTI3 }, | ||
| 304 | Vector { _handler: EXTI4 }, | ||
| 305 | Vector { | ||
| 306 | _handler: DMA1_Channel1, | ||
| 307 | }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel2, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel3, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel4, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel5, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel6, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA1_Channel7, | ||
| 325 | }, | ||
| 326 | Vector { _handler: ADC1_2 }, | ||
| 327 | Vector { _handler: CAN1_TX }, | ||
| 328 | Vector { _handler: CAN1_RX0 }, | ||
| 329 | Vector { _handler: CAN1_RX1 }, | ||
| 330 | Vector { _handler: CAN1_SCE }, | ||
| 331 | Vector { _handler: EXTI9_5 }, | ||
| 332 | Vector { | ||
| 333 | _handler: TIM1_BRK_TIM15, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_UP_TIM16, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: TIM1_TRG_COM_TIM17, | ||
| 340 | }, | ||
| 341 | Vector { _handler: TIM1_CC }, | ||
| 342 | Vector { _handler: TIM2 }, | ||
| 343 | Vector { _handler: TIM3 }, | ||
| 344 | Vector { _handler: TIM4 }, | ||
| 345 | Vector { _handler: I2C1_EV }, | ||
| 346 | Vector { _handler: I2C1_ER }, | ||
| 347 | Vector { _handler: I2C2_EV }, | ||
| 348 | Vector { _handler: I2C2_ER }, | ||
| 349 | Vector { _handler: SPI1 }, | ||
| 350 | Vector { _handler: SPI2 }, | ||
| 351 | Vector { _handler: USART1 }, | ||
| 352 | Vector { _handler: USART2 }, | ||
| 353 | Vector { _handler: USART3 }, | ||
| 354 | Vector { | ||
| 355 | _handler: EXTI15_10, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: RTC_Alarm, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: DFSDM1_FLT3, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM8_BRK }, | ||
| 364 | Vector { _handler: TIM8_UP }, | ||
| 365 | Vector { | ||
| 366 | _handler: TIM8_TRG_COM, | ||
| 367 | }, | ||
| 368 | Vector { _handler: TIM8_CC }, | ||
| 369 | Vector { _handler: ADC3 }, | ||
| 370 | Vector { _handler: FMC }, | ||
| 371 | Vector { _handler: SDMMC1 }, | ||
| 372 | Vector { _handler: TIM5 }, | ||
| 373 | Vector { _handler: SPI3 }, | ||
| 374 | Vector { _handler: UART4 }, | ||
| 375 | Vector { _handler: UART5 }, | ||
| 376 | Vector { _handler: TIM6_DAC }, | ||
| 377 | Vector { _handler: TIM7 }, | ||
| 378 | Vector { | ||
| 379 | _handler: DMA2_Channel1, | ||
| 380 | }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel2, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel3, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel4, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DMA2_Channel5, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DFSDM1_FLT0, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT1, | ||
| 398 | }, | ||
| 399 | Vector { | ||
| 400 | _handler: DFSDM1_FLT2, | ||
| 401 | }, | ||
| 402 | Vector { _handler: COMP }, | ||
| 403 | Vector { _handler: LPTIM1 }, | ||
| 404 | Vector { _handler: LPTIM2 }, | ||
| 405 | Vector { _handler: OTG_FS }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel6, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel7, | ||
| 411 | }, | ||
| 412 | Vector { _handler: LPUART1 }, | ||
| 413 | Vector { _handler: QUADSPI }, | ||
| 414 | Vector { _handler: I2C3_EV }, | ||
| 415 | Vector { _handler: I2C3_ER }, | ||
| 416 | Vector { _handler: SAI1 }, | ||
| 417 | Vector { _handler: SAI2 }, | ||
| 418 | Vector { _handler: SWPMI1 }, | ||
| 419 | Vector { _handler: TSC }, | ||
| 420 | Vector { _reserved: 0 }, | ||
| 421 | Vector { _handler: AES }, | ||
| 422 | Vector { _handler: RNG }, | ||
| 423 | Vector { _handler: FPU }, | ||
| 424 | ]; | ||
| 425 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 426 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 427 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 428 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l485je.rs b/embassy-stm32/src/chip/stm32l485je.rs index 77b2e512c..829a5b5a8 100644 --- a/embassy-stm32/src/chip/stm32l485je.rs +++ b/embassy-stm32/src/chip/stm32l485je.rs | |||
| @@ -1,21 +1,428 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, RNG, | 12 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, |
| 13 | RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, | 13 | RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, |
| 14 | TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, | 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, |
| 15 | WWDG | 15 | USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DFSDM1_FLT0 = 61, | ||
| 39 | DFSDM1_FLT1 = 62, | ||
| 40 | DFSDM1_FLT2 = 63, | ||
| 41 | DFSDM1_FLT3 = 42, | ||
| 42 | DMA1_Channel1 = 11, | ||
| 43 | DMA1_Channel2 = 12, | ||
| 44 | DMA1_Channel3 = 13, | ||
| 45 | DMA1_Channel4 = 14, | ||
| 46 | DMA1_Channel5 = 15, | ||
| 47 | DMA1_Channel6 = 16, | ||
| 48 | DMA1_Channel7 = 17, | ||
| 49 | DMA2_Channel1 = 56, | ||
| 50 | DMA2_Channel2 = 57, | ||
| 51 | DMA2_Channel3 = 58, | ||
| 52 | DMA2_Channel4 = 59, | ||
| 53 | DMA2_Channel5 = 60, | ||
| 54 | DMA2_Channel6 = 68, | ||
| 55 | DMA2_Channel7 = 69, | ||
| 56 | EXTI0 = 6, | ||
| 57 | EXTI1 = 7, | ||
| 58 | EXTI15_10 = 40, | ||
| 59 | EXTI2 = 8, | ||
| 60 | EXTI3 = 9, | ||
| 61 | EXTI4 = 10, | ||
| 62 | EXTI9_5 = 23, | ||
| 63 | FLASH = 4, | ||
| 64 | FMC = 48, | ||
| 65 | FPU = 81, | ||
| 66 | I2C1_ER = 32, | ||
| 67 | I2C1_EV = 31, | ||
| 68 | I2C2_ER = 34, | ||
| 69 | I2C2_EV = 33, | ||
| 70 | I2C3_ER = 73, | ||
| 71 | I2C3_EV = 72, | ||
| 72 | LPTIM1 = 65, | ||
| 73 | LPTIM2 = 66, | ||
| 74 | LPUART1 = 70, | ||
| 75 | OTG_FS = 67, | ||
| 76 | PVD_PVM = 1, | ||
| 77 | QUADSPI = 71, | ||
| 78 | RCC = 5, | ||
| 79 | RNG = 80, | ||
| 80 | RTC_Alarm = 41, | ||
| 81 | RTC_WKUP = 3, | ||
| 82 | SAI1 = 74, | ||
| 83 | SAI2 = 75, | ||
| 84 | SDMMC1 = 49, | ||
| 85 | SPI1 = 35, | ||
| 86 | SPI2 = 36, | ||
| 87 | SPI3 = 51, | ||
| 88 | SWPMI1 = 76, | ||
| 89 | TAMP_STAMP = 2, | ||
| 90 | TIM1_BRK_TIM15 = 24, | ||
| 91 | TIM1_CC = 27, | ||
| 92 | TIM1_TRG_COM_TIM17 = 26, | ||
| 93 | TIM1_UP_TIM16 = 25, | ||
| 94 | TIM2 = 28, | ||
| 95 | TIM3 = 29, | ||
| 96 | TIM4 = 30, | ||
| 97 | TIM5 = 50, | ||
| 98 | TIM6_DAC = 54, | ||
| 99 | TIM7 = 55, | ||
| 100 | TIM8_BRK = 43, | ||
| 101 | TIM8_CC = 46, | ||
| 102 | TIM8_TRG_COM = 45, | ||
| 103 | TIM8_UP = 44, | ||
| 104 | TSC = 77, | ||
| 105 | UART4 = 52, | ||
| 106 | UART5 = 53, | ||
| 107 | USART1 = 37, | ||
| 108 | USART2 = 38, | ||
| 109 | USART3 = 39, | ||
| 110 | WWDG = 0, | ||
| 111 | } | ||
| 112 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 113 | #[inline(always)] | ||
| 114 | fn number(self) -> u16 { | ||
| 115 | self as u16 | ||
| 116 | } | ||
| 117 | } | ||
| 118 | |||
| 119 | declare!(ADC1_2); | ||
| 120 | declare!(ADC3); | ||
| 121 | declare!(AES); | ||
| 122 | declare!(CAN1_RX0); | ||
| 123 | declare!(CAN1_RX1); | ||
| 124 | declare!(CAN1_SCE); | ||
| 125 | declare!(CAN1_TX); | ||
| 126 | declare!(COMP); | ||
| 127 | declare!(DFSDM1_FLT0); | ||
| 128 | declare!(DFSDM1_FLT1); | ||
| 129 | declare!(DFSDM1_FLT2); | ||
| 130 | declare!(DFSDM1_FLT3); | ||
| 131 | declare!(DMA1_Channel1); | ||
| 132 | declare!(DMA1_Channel2); | ||
| 133 | declare!(DMA1_Channel3); | ||
| 134 | declare!(DMA1_Channel4); | ||
| 135 | declare!(DMA1_Channel5); | ||
| 136 | declare!(DMA1_Channel6); | ||
| 137 | declare!(DMA1_Channel7); | ||
| 138 | declare!(DMA2_Channel1); | ||
| 139 | declare!(DMA2_Channel2); | ||
| 140 | declare!(DMA2_Channel3); | ||
| 141 | declare!(DMA2_Channel4); | ||
| 142 | declare!(DMA2_Channel5); | ||
| 143 | declare!(DMA2_Channel6); | ||
| 144 | declare!(DMA2_Channel7); | ||
| 145 | declare!(EXTI0); | ||
| 146 | declare!(EXTI1); | ||
| 147 | declare!(EXTI15_10); | ||
| 148 | declare!(EXTI2); | ||
| 149 | declare!(EXTI3); | ||
| 150 | declare!(EXTI4); | ||
| 151 | declare!(EXTI9_5); | ||
| 152 | declare!(FLASH); | ||
| 153 | declare!(FMC); | ||
| 154 | declare!(FPU); | ||
| 155 | declare!(I2C1_ER); | ||
| 156 | declare!(I2C1_EV); | ||
| 157 | declare!(I2C2_ER); | ||
| 158 | declare!(I2C2_EV); | ||
| 159 | declare!(I2C3_ER); | ||
| 160 | declare!(I2C3_EV); | ||
| 161 | declare!(LPTIM1); | ||
| 162 | declare!(LPTIM2); | ||
| 163 | declare!(LPUART1); | ||
| 164 | declare!(OTG_FS); | ||
| 165 | declare!(PVD_PVM); | ||
| 166 | declare!(QUADSPI); | ||
| 167 | declare!(RCC); | ||
| 168 | declare!(RNG); | ||
| 169 | declare!(RTC_Alarm); | ||
| 170 | declare!(RTC_WKUP); | ||
| 171 | declare!(SAI1); | ||
| 172 | declare!(SAI2); | ||
| 173 | declare!(SDMMC1); | ||
| 174 | declare!(SPI1); | ||
| 175 | declare!(SPI2); | ||
| 176 | declare!(SPI3); | ||
| 177 | declare!(SWPMI1); | ||
| 178 | declare!(TAMP_STAMP); | ||
| 179 | declare!(TIM1_BRK_TIM15); | ||
| 180 | declare!(TIM1_CC); | ||
| 181 | declare!(TIM1_TRG_COM_TIM17); | ||
| 182 | declare!(TIM1_UP_TIM16); | ||
| 183 | declare!(TIM2); | ||
| 184 | declare!(TIM3); | ||
| 185 | declare!(TIM4); | ||
| 186 | declare!(TIM5); | ||
| 187 | declare!(TIM6_DAC); | ||
| 188 | declare!(TIM7); | ||
| 189 | declare!(TIM8_BRK); | ||
| 190 | declare!(TIM8_CC); | ||
| 191 | declare!(TIM8_TRG_COM); | ||
| 192 | declare!(TIM8_UP); | ||
| 193 | declare!(TSC); | ||
| 194 | declare!(UART4); | ||
| 195 | declare!(UART5); | ||
| 196 | declare!(USART1); | ||
| 197 | declare!(USART2); | ||
| 198 | declare!(USART3); | ||
| 199 | declare!(WWDG); | ||
| 200 | } | ||
| 201 | mod interrupt_vector { | ||
| 202 | extern "C" { | ||
| 203 | fn ADC1_2(); | ||
| 204 | fn ADC3(); | ||
| 205 | fn AES(); | ||
| 206 | fn CAN1_RX0(); | ||
| 207 | fn CAN1_RX1(); | ||
| 208 | fn CAN1_SCE(); | ||
| 209 | fn CAN1_TX(); | ||
| 210 | fn COMP(); | ||
| 211 | fn DFSDM1_FLT0(); | ||
| 212 | fn DFSDM1_FLT1(); | ||
| 213 | fn DFSDM1_FLT2(); | ||
| 214 | fn DFSDM1_FLT3(); | ||
| 215 | fn DMA1_Channel1(); | ||
| 216 | fn DMA1_Channel2(); | ||
| 217 | fn DMA1_Channel3(); | ||
| 218 | fn DMA1_Channel4(); | ||
| 219 | fn DMA1_Channel5(); | ||
| 220 | fn DMA1_Channel6(); | ||
| 221 | fn DMA1_Channel7(); | ||
| 222 | fn DMA2_Channel1(); | ||
| 223 | fn DMA2_Channel2(); | ||
| 224 | fn DMA2_Channel3(); | ||
| 225 | fn DMA2_Channel4(); | ||
| 226 | fn DMA2_Channel5(); | ||
| 227 | fn DMA2_Channel6(); | ||
| 228 | fn DMA2_Channel7(); | ||
| 229 | fn EXTI0(); | ||
| 230 | fn EXTI1(); | ||
| 231 | fn EXTI15_10(); | ||
| 232 | fn EXTI2(); | ||
| 233 | fn EXTI3(); | ||
| 234 | fn EXTI4(); | ||
| 235 | fn EXTI9_5(); | ||
| 236 | fn FLASH(); | ||
| 237 | fn FMC(); | ||
| 238 | fn FPU(); | ||
| 239 | fn I2C1_ER(); | ||
| 240 | fn I2C1_EV(); | ||
| 241 | fn I2C2_ER(); | ||
| 242 | fn I2C2_EV(); | ||
| 243 | fn I2C3_ER(); | ||
| 244 | fn I2C3_EV(); | ||
| 245 | fn LPTIM1(); | ||
| 246 | fn LPTIM2(); | ||
| 247 | fn LPUART1(); | ||
| 248 | fn OTG_FS(); | ||
| 249 | fn PVD_PVM(); | ||
| 250 | fn QUADSPI(); | ||
| 251 | fn RCC(); | ||
| 252 | fn RNG(); | ||
| 253 | fn RTC_Alarm(); | ||
| 254 | fn RTC_WKUP(); | ||
| 255 | fn SAI1(); | ||
| 256 | fn SAI2(); | ||
| 257 | fn SDMMC1(); | ||
| 258 | fn SPI1(); | ||
| 259 | fn SPI2(); | ||
| 260 | fn SPI3(); | ||
| 261 | fn SWPMI1(); | ||
| 262 | fn TAMP_STAMP(); | ||
| 263 | fn TIM1_BRK_TIM15(); | ||
| 264 | fn TIM1_CC(); | ||
| 265 | fn TIM1_TRG_COM_TIM17(); | ||
| 266 | fn TIM1_UP_TIM16(); | ||
| 267 | fn TIM2(); | ||
| 268 | fn TIM3(); | ||
| 269 | fn TIM4(); | ||
| 270 | fn TIM5(); | ||
| 271 | fn TIM6_DAC(); | ||
| 272 | fn TIM7(); | ||
| 273 | fn TIM8_BRK(); | ||
| 274 | fn TIM8_CC(); | ||
| 275 | fn TIM8_TRG_COM(); | ||
| 276 | fn TIM8_UP(); | ||
| 277 | fn TSC(); | ||
| 278 | fn UART4(); | ||
| 279 | fn UART5(); | ||
| 280 | fn USART1(); | ||
| 281 | fn USART2(); | ||
| 282 | fn USART3(); | ||
| 283 | fn WWDG(); | ||
| 284 | } | ||
| 285 | pub union Vector { | ||
| 286 | _handler: unsafe extern "C" fn(), | ||
| 287 | _reserved: u32, | ||
| 288 | } | ||
| 289 | #[link_section = ".vector_table.interrupts"] | ||
| 290 | #[no_mangle] | ||
| 291 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 292 | Vector { _handler: WWDG }, | ||
| 293 | Vector { _handler: PVD_PVM }, | ||
| 294 | Vector { | ||
| 295 | _handler: TAMP_STAMP, | ||
| 296 | }, | ||
| 297 | Vector { _handler: RTC_WKUP }, | ||
| 298 | Vector { _handler: FLASH }, | ||
| 299 | Vector { _handler: RCC }, | ||
| 300 | Vector { _handler: EXTI0 }, | ||
| 301 | Vector { _handler: EXTI1 }, | ||
| 302 | Vector { _handler: EXTI2 }, | ||
| 303 | Vector { _handler: EXTI3 }, | ||
| 304 | Vector { _handler: EXTI4 }, | ||
| 305 | Vector { | ||
| 306 | _handler: DMA1_Channel1, | ||
| 307 | }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel2, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel3, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel4, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel5, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel6, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA1_Channel7, | ||
| 325 | }, | ||
| 326 | Vector { _handler: ADC1_2 }, | ||
| 327 | Vector { _handler: CAN1_TX }, | ||
| 328 | Vector { _handler: CAN1_RX0 }, | ||
| 329 | Vector { _handler: CAN1_RX1 }, | ||
| 330 | Vector { _handler: CAN1_SCE }, | ||
| 331 | Vector { _handler: EXTI9_5 }, | ||
| 332 | Vector { | ||
| 333 | _handler: TIM1_BRK_TIM15, | ||
| 334 | }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_UP_TIM16, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: TIM1_TRG_COM_TIM17, | ||
| 340 | }, | ||
| 341 | Vector { _handler: TIM1_CC }, | ||
| 342 | Vector { _handler: TIM2 }, | ||
| 343 | Vector { _handler: TIM3 }, | ||
| 344 | Vector { _handler: TIM4 }, | ||
| 345 | Vector { _handler: I2C1_EV }, | ||
| 346 | Vector { _handler: I2C1_ER }, | ||
| 347 | Vector { _handler: I2C2_EV }, | ||
| 348 | Vector { _handler: I2C2_ER }, | ||
| 349 | Vector { _handler: SPI1 }, | ||
| 350 | Vector { _handler: SPI2 }, | ||
| 351 | Vector { _handler: USART1 }, | ||
| 352 | Vector { _handler: USART2 }, | ||
| 353 | Vector { _handler: USART3 }, | ||
| 354 | Vector { | ||
| 355 | _handler: EXTI15_10, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: RTC_Alarm, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: DFSDM1_FLT3, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM8_BRK }, | ||
| 364 | Vector { _handler: TIM8_UP }, | ||
| 365 | Vector { | ||
| 366 | _handler: TIM8_TRG_COM, | ||
| 367 | }, | ||
| 368 | Vector { _handler: TIM8_CC }, | ||
| 369 | Vector { _handler: ADC3 }, | ||
| 370 | Vector { _handler: FMC }, | ||
| 371 | Vector { _handler: SDMMC1 }, | ||
| 372 | Vector { _handler: TIM5 }, | ||
| 373 | Vector { _handler: SPI3 }, | ||
| 374 | Vector { _handler: UART4 }, | ||
| 375 | Vector { _handler: UART5 }, | ||
| 376 | Vector { _handler: TIM6_DAC }, | ||
| 377 | Vector { _handler: TIM7 }, | ||
| 378 | Vector { | ||
| 379 | _handler: DMA2_Channel1, | ||
| 380 | }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel2, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel3, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel4, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DMA2_Channel5, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DFSDM1_FLT0, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT1, | ||
| 398 | }, | ||
| 399 | Vector { | ||
| 400 | _handler: DFSDM1_FLT2, | ||
| 401 | }, | ||
| 402 | Vector { _handler: COMP }, | ||
| 403 | Vector { _handler: LPTIM1 }, | ||
| 404 | Vector { _handler: LPTIM2 }, | ||
| 405 | Vector { _handler: OTG_FS }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel6, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel7, | ||
| 411 | }, | ||
| 412 | Vector { _handler: LPUART1 }, | ||
| 413 | Vector { _handler: QUADSPI }, | ||
| 414 | Vector { _handler: I2C3_EV }, | ||
| 415 | Vector { _handler: I2C3_ER }, | ||
| 416 | Vector { _handler: SAI1 }, | ||
| 417 | Vector { _handler: SAI2 }, | ||
| 418 | Vector { _handler: SWPMI1 }, | ||
| 419 | Vector { _handler: TSC }, | ||
| 420 | Vector { _reserved: 0 }, | ||
| 421 | Vector { _handler: AES }, | ||
| 422 | Vector { _handler: RNG }, | ||
| 423 | Vector { _handler: FPU }, | ||
| 424 | ]; | ||
| 425 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 426 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 427 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 428 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l486jg.rs b/embassy-stm32/src/chip/stm32l486jg.rs index e6b55967e..27ce58704 100644 --- a/embassy-stm32/src/chip/stm32l486jg.rs +++ b/embassy-stm32/src/chip/stm32l486jg.rs | |||
| @@ -1,21 +1,431 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, | 12 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, |
| 13 | RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, | 13 | QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, |
| 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, | 14 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 15 | USB_OTG_FS, WWDG | 15 | USART3, USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DFSDM1_FLT0 = 61, | ||
| 39 | DFSDM1_FLT1 = 62, | ||
| 40 | DFSDM1_FLT2 = 63, | ||
| 41 | DFSDM1_FLT3 = 42, | ||
| 42 | DMA1_Channel1 = 11, | ||
| 43 | DMA1_Channel2 = 12, | ||
| 44 | DMA1_Channel3 = 13, | ||
| 45 | DMA1_Channel4 = 14, | ||
| 46 | DMA1_Channel5 = 15, | ||
| 47 | DMA1_Channel6 = 16, | ||
| 48 | DMA1_Channel7 = 17, | ||
| 49 | DMA2_Channel1 = 56, | ||
| 50 | DMA2_Channel2 = 57, | ||
| 51 | DMA2_Channel3 = 58, | ||
| 52 | DMA2_Channel4 = 59, | ||
| 53 | DMA2_Channel5 = 60, | ||
| 54 | DMA2_Channel6 = 68, | ||
| 55 | DMA2_Channel7 = 69, | ||
| 56 | EXTI0 = 6, | ||
| 57 | EXTI1 = 7, | ||
| 58 | EXTI15_10 = 40, | ||
| 59 | EXTI2 = 8, | ||
| 60 | EXTI3 = 9, | ||
| 61 | EXTI4 = 10, | ||
| 62 | EXTI9_5 = 23, | ||
| 63 | FLASH = 4, | ||
| 64 | FMC = 48, | ||
| 65 | FPU = 81, | ||
| 66 | I2C1_ER = 32, | ||
| 67 | I2C1_EV = 31, | ||
| 68 | I2C2_ER = 34, | ||
| 69 | I2C2_EV = 33, | ||
| 70 | I2C3_ER = 73, | ||
| 71 | I2C3_EV = 72, | ||
| 72 | LCD = 78, | ||
| 73 | LPTIM1 = 65, | ||
| 74 | LPTIM2 = 66, | ||
| 75 | LPUART1 = 70, | ||
| 76 | OTG_FS = 67, | ||
| 77 | PVD_PVM = 1, | ||
| 78 | QUADSPI = 71, | ||
| 79 | RCC = 5, | ||
| 80 | RNG = 80, | ||
| 81 | RTC_Alarm = 41, | ||
| 82 | RTC_WKUP = 3, | ||
| 83 | SAI1 = 74, | ||
| 84 | SAI2 = 75, | ||
| 85 | SDMMC1 = 49, | ||
| 86 | SPI1 = 35, | ||
| 87 | SPI2 = 36, | ||
| 88 | SPI3 = 51, | ||
| 89 | SWPMI1 = 76, | ||
| 90 | TAMP_STAMP = 2, | ||
| 91 | TIM1_BRK_TIM15 = 24, | ||
| 92 | TIM1_CC = 27, | ||
| 93 | TIM1_TRG_COM_TIM17 = 26, | ||
| 94 | TIM1_UP_TIM16 = 25, | ||
| 95 | TIM2 = 28, | ||
| 96 | TIM3 = 29, | ||
| 97 | TIM4 = 30, | ||
| 98 | TIM5 = 50, | ||
| 99 | TIM6_DAC = 54, | ||
| 100 | TIM7 = 55, | ||
| 101 | TIM8_BRK = 43, | ||
| 102 | TIM8_CC = 46, | ||
| 103 | TIM8_TRG_COM = 45, | ||
| 104 | TIM8_UP = 44, | ||
| 105 | TSC = 77, | ||
| 106 | UART4 = 52, | ||
| 107 | UART5 = 53, | ||
| 108 | USART1 = 37, | ||
| 109 | USART2 = 38, | ||
| 110 | USART3 = 39, | ||
| 111 | WWDG = 0, | ||
| 112 | } | ||
| 113 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 114 | #[inline(always)] | ||
| 115 | fn number(self) -> u16 { | ||
| 116 | self as u16 | ||
| 117 | } | ||
| 118 | } | ||
| 119 | |||
| 120 | declare!(ADC1_2); | ||
| 121 | declare!(ADC3); | ||
| 122 | declare!(AES); | ||
| 123 | declare!(CAN1_RX0); | ||
| 124 | declare!(CAN1_RX1); | ||
| 125 | declare!(CAN1_SCE); | ||
| 126 | declare!(CAN1_TX); | ||
| 127 | declare!(COMP); | ||
| 128 | declare!(DFSDM1_FLT0); | ||
| 129 | declare!(DFSDM1_FLT1); | ||
| 130 | declare!(DFSDM1_FLT2); | ||
| 131 | declare!(DFSDM1_FLT3); | ||
| 132 | declare!(DMA1_Channel1); | ||
| 133 | declare!(DMA1_Channel2); | ||
| 134 | declare!(DMA1_Channel3); | ||
| 135 | declare!(DMA1_Channel4); | ||
| 136 | declare!(DMA1_Channel5); | ||
| 137 | declare!(DMA1_Channel6); | ||
| 138 | declare!(DMA1_Channel7); | ||
| 139 | declare!(DMA2_Channel1); | ||
| 140 | declare!(DMA2_Channel2); | ||
| 141 | declare!(DMA2_Channel3); | ||
| 142 | declare!(DMA2_Channel4); | ||
| 143 | declare!(DMA2_Channel5); | ||
| 144 | declare!(DMA2_Channel6); | ||
| 145 | declare!(DMA2_Channel7); | ||
| 146 | declare!(EXTI0); | ||
| 147 | declare!(EXTI1); | ||
| 148 | declare!(EXTI15_10); | ||
| 149 | declare!(EXTI2); | ||
| 150 | declare!(EXTI3); | ||
| 151 | declare!(EXTI4); | ||
| 152 | declare!(EXTI9_5); | ||
| 153 | declare!(FLASH); | ||
| 154 | declare!(FMC); | ||
| 155 | declare!(FPU); | ||
| 156 | declare!(I2C1_ER); | ||
| 157 | declare!(I2C1_EV); | ||
| 158 | declare!(I2C2_ER); | ||
| 159 | declare!(I2C2_EV); | ||
| 160 | declare!(I2C3_ER); | ||
| 161 | declare!(I2C3_EV); | ||
| 162 | declare!(LCD); | ||
| 163 | declare!(LPTIM1); | ||
| 164 | declare!(LPTIM2); | ||
| 165 | declare!(LPUART1); | ||
| 166 | declare!(OTG_FS); | ||
| 167 | declare!(PVD_PVM); | ||
| 168 | declare!(QUADSPI); | ||
| 169 | declare!(RCC); | ||
| 170 | declare!(RNG); | ||
| 171 | declare!(RTC_Alarm); | ||
| 172 | declare!(RTC_WKUP); | ||
| 173 | declare!(SAI1); | ||
| 174 | declare!(SAI2); | ||
| 175 | declare!(SDMMC1); | ||
| 176 | declare!(SPI1); | ||
| 177 | declare!(SPI2); | ||
| 178 | declare!(SPI3); | ||
| 179 | declare!(SWPMI1); | ||
| 180 | declare!(TAMP_STAMP); | ||
| 181 | declare!(TIM1_BRK_TIM15); | ||
| 182 | declare!(TIM1_CC); | ||
| 183 | declare!(TIM1_TRG_COM_TIM17); | ||
| 184 | declare!(TIM1_UP_TIM16); | ||
| 185 | declare!(TIM2); | ||
| 186 | declare!(TIM3); | ||
| 187 | declare!(TIM4); | ||
| 188 | declare!(TIM5); | ||
| 189 | declare!(TIM6_DAC); | ||
| 190 | declare!(TIM7); | ||
| 191 | declare!(TIM8_BRK); | ||
| 192 | declare!(TIM8_CC); | ||
| 193 | declare!(TIM8_TRG_COM); | ||
| 194 | declare!(TIM8_UP); | ||
| 195 | declare!(TSC); | ||
| 196 | declare!(UART4); | ||
| 197 | declare!(UART5); | ||
| 198 | declare!(USART1); | ||
| 199 | declare!(USART2); | ||
| 200 | declare!(USART3); | ||
| 201 | declare!(WWDG); | ||
| 202 | } | ||
| 203 | mod interrupt_vector { | ||
| 204 | extern "C" { | ||
| 205 | fn ADC1_2(); | ||
| 206 | fn ADC3(); | ||
| 207 | fn AES(); | ||
| 208 | fn CAN1_RX0(); | ||
| 209 | fn CAN1_RX1(); | ||
| 210 | fn CAN1_SCE(); | ||
| 211 | fn CAN1_TX(); | ||
| 212 | fn COMP(); | ||
| 213 | fn DFSDM1_FLT0(); | ||
| 214 | fn DFSDM1_FLT1(); | ||
| 215 | fn DFSDM1_FLT2(); | ||
| 216 | fn DFSDM1_FLT3(); | ||
| 217 | fn DMA1_Channel1(); | ||
| 218 | fn DMA1_Channel2(); | ||
| 219 | fn DMA1_Channel3(); | ||
| 220 | fn DMA1_Channel4(); | ||
| 221 | fn DMA1_Channel5(); | ||
| 222 | fn DMA1_Channel6(); | ||
| 223 | fn DMA1_Channel7(); | ||
| 224 | fn DMA2_Channel1(); | ||
| 225 | fn DMA2_Channel2(); | ||
| 226 | fn DMA2_Channel3(); | ||
| 227 | fn DMA2_Channel4(); | ||
| 228 | fn DMA2_Channel5(); | ||
| 229 | fn DMA2_Channel6(); | ||
| 230 | fn DMA2_Channel7(); | ||
| 231 | fn EXTI0(); | ||
| 232 | fn EXTI1(); | ||
| 233 | fn EXTI15_10(); | ||
| 234 | fn EXTI2(); | ||
| 235 | fn EXTI3(); | ||
| 236 | fn EXTI4(); | ||
| 237 | fn EXTI9_5(); | ||
| 238 | fn FLASH(); | ||
| 239 | fn FMC(); | ||
| 240 | fn FPU(); | ||
| 241 | fn I2C1_ER(); | ||
| 242 | fn I2C1_EV(); | ||
| 243 | fn I2C2_ER(); | ||
| 244 | fn I2C2_EV(); | ||
| 245 | fn I2C3_ER(); | ||
| 246 | fn I2C3_EV(); | ||
| 247 | fn LCD(); | ||
| 248 | fn LPTIM1(); | ||
| 249 | fn LPTIM2(); | ||
| 250 | fn LPUART1(); | ||
| 251 | fn OTG_FS(); | ||
| 252 | fn PVD_PVM(); | ||
| 253 | fn QUADSPI(); | ||
| 254 | fn RCC(); | ||
| 255 | fn RNG(); | ||
| 256 | fn RTC_Alarm(); | ||
| 257 | fn RTC_WKUP(); | ||
| 258 | fn SAI1(); | ||
| 259 | fn SAI2(); | ||
| 260 | fn SDMMC1(); | ||
| 261 | fn SPI1(); | ||
| 262 | fn SPI2(); | ||
| 263 | fn SPI3(); | ||
| 264 | fn SWPMI1(); | ||
| 265 | fn TAMP_STAMP(); | ||
| 266 | fn TIM1_BRK_TIM15(); | ||
| 267 | fn TIM1_CC(); | ||
| 268 | fn TIM1_TRG_COM_TIM17(); | ||
| 269 | fn TIM1_UP_TIM16(); | ||
| 270 | fn TIM2(); | ||
| 271 | fn TIM3(); | ||
| 272 | fn TIM4(); | ||
| 273 | fn TIM5(); | ||
| 274 | fn TIM6_DAC(); | ||
| 275 | fn TIM7(); | ||
| 276 | fn TIM8_BRK(); | ||
| 277 | fn TIM8_CC(); | ||
| 278 | fn TIM8_TRG_COM(); | ||
| 279 | fn TIM8_UP(); | ||
| 280 | fn TSC(); | ||
| 281 | fn UART4(); | ||
| 282 | fn UART5(); | ||
| 283 | fn USART1(); | ||
| 284 | fn USART2(); | ||
| 285 | fn USART3(); | ||
| 286 | fn WWDG(); | ||
| 287 | } | ||
| 288 | pub union Vector { | ||
| 289 | _handler: unsafe extern "C" fn(), | ||
| 290 | _reserved: u32, | ||
| 291 | } | ||
| 292 | #[link_section = ".vector_table.interrupts"] | ||
| 293 | #[no_mangle] | ||
| 294 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 295 | Vector { _handler: WWDG }, | ||
| 296 | Vector { _handler: PVD_PVM }, | ||
| 297 | Vector { | ||
| 298 | _handler: TAMP_STAMP, | ||
| 299 | }, | ||
| 300 | Vector { _handler: RTC_WKUP }, | ||
| 301 | Vector { _handler: FLASH }, | ||
| 302 | Vector { _handler: RCC }, | ||
| 303 | Vector { _handler: EXTI0 }, | ||
| 304 | Vector { _handler: EXTI1 }, | ||
| 305 | Vector { _handler: EXTI2 }, | ||
| 306 | Vector { _handler: EXTI3 }, | ||
| 307 | Vector { _handler: EXTI4 }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel1, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel2, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel3, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel4, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel5, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA1_Channel6, | ||
| 325 | }, | ||
| 326 | Vector { | ||
| 327 | _handler: DMA1_Channel7, | ||
| 328 | }, | ||
| 329 | Vector { _handler: ADC1_2 }, | ||
| 330 | Vector { _handler: CAN1_TX }, | ||
| 331 | Vector { _handler: CAN1_RX0 }, | ||
| 332 | Vector { _handler: CAN1_RX1 }, | ||
| 333 | Vector { _handler: CAN1_SCE }, | ||
| 334 | Vector { _handler: EXTI9_5 }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_BRK_TIM15, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: TIM1_UP_TIM16, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: TIM1_TRG_COM_TIM17, | ||
| 343 | }, | ||
| 344 | Vector { _handler: TIM1_CC }, | ||
| 345 | Vector { _handler: TIM2 }, | ||
| 346 | Vector { _handler: TIM3 }, | ||
| 347 | Vector { _handler: TIM4 }, | ||
| 348 | Vector { _handler: I2C1_EV }, | ||
| 349 | Vector { _handler: I2C1_ER }, | ||
| 350 | Vector { _handler: I2C2_EV }, | ||
| 351 | Vector { _handler: I2C2_ER }, | ||
| 352 | Vector { _handler: SPI1 }, | ||
| 353 | Vector { _handler: SPI2 }, | ||
| 354 | Vector { _handler: USART1 }, | ||
| 355 | Vector { _handler: USART2 }, | ||
| 356 | Vector { _handler: USART3 }, | ||
| 357 | Vector { | ||
| 358 | _handler: EXTI15_10, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: RTC_Alarm, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: DFSDM1_FLT3, | ||
| 365 | }, | ||
| 366 | Vector { _handler: TIM8_BRK }, | ||
| 367 | Vector { _handler: TIM8_UP }, | ||
| 368 | Vector { | ||
| 369 | _handler: TIM8_TRG_COM, | ||
| 370 | }, | ||
| 371 | Vector { _handler: TIM8_CC }, | ||
| 372 | Vector { _handler: ADC3 }, | ||
| 373 | Vector { _handler: FMC }, | ||
| 374 | Vector { _handler: SDMMC1 }, | ||
| 375 | Vector { _handler: TIM5 }, | ||
| 376 | Vector { _handler: SPI3 }, | ||
| 377 | Vector { _handler: UART4 }, | ||
| 378 | Vector { _handler: UART5 }, | ||
| 379 | Vector { _handler: TIM6_DAC }, | ||
| 380 | Vector { _handler: TIM7 }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel1, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel2, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel3, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DMA2_Channel4, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DMA2_Channel5, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT0, | ||
| 398 | }, | ||
| 399 | Vector { | ||
| 400 | _handler: DFSDM1_FLT1, | ||
| 401 | }, | ||
| 402 | Vector { | ||
| 403 | _handler: DFSDM1_FLT2, | ||
| 404 | }, | ||
| 405 | Vector { _handler: COMP }, | ||
| 406 | Vector { _handler: LPTIM1 }, | ||
| 407 | Vector { _handler: LPTIM2 }, | ||
| 408 | Vector { _handler: OTG_FS }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel6, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel7, | ||
| 414 | }, | ||
| 415 | Vector { _handler: LPUART1 }, | ||
| 416 | Vector { _handler: QUADSPI }, | ||
| 417 | Vector { _handler: I2C3_EV }, | ||
| 418 | Vector { _handler: I2C3_ER }, | ||
| 419 | Vector { _handler: SAI1 }, | ||
| 420 | Vector { _handler: SAI2 }, | ||
| 421 | Vector { _handler: SWPMI1 }, | ||
| 422 | Vector { _handler: TSC }, | ||
| 423 | Vector { _handler: LCD }, | ||
| 424 | Vector { _handler: AES }, | ||
| 425 | Vector { _handler: RNG }, | ||
| 426 | Vector { _handler: FPU }, | ||
| 427 | ]; | ||
| 428 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 429 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 430 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 431 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l486qg.rs b/embassy-stm32/src/chip/stm32l486qg.rs index e6b55967e..27ce58704 100644 --- a/embassy-stm32/src/chip/stm32l486qg.rs +++ b/embassy-stm32/src/chip/stm32l486qg.rs | |||
| @@ -1,21 +1,431 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, | 12 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, |
| 13 | RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, | 13 | QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, |
| 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, | 14 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 15 | USB_OTG_FS, WWDG | 15 | USART3, USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DFSDM1_FLT0 = 61, | ||
| 39 | DFSDM1_FLT1 = 62, | ||
| 40 | DFSDM1_FLT2 = 63, | ||
| 41 | DFSDM1_FLT3 = 42, | ||
| 42 | DMA1_Channel1 = 11, | ||
| 43 | DMA1_Channel2 = 12, | ||
| 44 | DMA1_Channel3 = 13, | ||
| 45 | DMA1_Channel4 = 14, | ||
| 46 | DMA1_Channel5 = 15, | ||
| 47 | DMA1_Channel6 = 16, | ||
| 48 | DMA1_Channel7 = 17, | ||
| 49 | DMA2_Channel1 = 56, | ||
| 50 | DMA2_Channel2 = 57, | ||
| 51 | DMA2_Channel3 = 58, | ||
| 52 | DMA2_Channel4 = 59, | ||
| 53 | DMA2_Channel5 = 60, | ||
| 54 | DMA2_Channel6 = 68, | ||
| 55 | DMA2_Channel7 = 69, | ||
| 56 | EXTI0 = 6, | ||
| 57 | EXTI1 = 7, | ||
| 58 | EXTI15_10 = 40, | ||
| 59 | EXTI2 = 8, | ||
| 60 | EXTI3 = 9, | ||
| 61 | EXTI4 = 10, | ||
| 62 | EXTI9_5 = 23, | ||
| 63 | FLASH = 4, | ||
| 64 | FMC = 48, | ||
| 65 | FPU = 81, | ||
| 66 | I2C1_ER = 32, | ||
| 67 | I2C1_EV = 31, | ||
| 68 | I2C2_ER = 34, | ||
| 69 | I2C2_EV = 33, | ||
| 70 | I2C3_ER = 73, | ||
| 71 | I2C3_EV = 72, | ||
| 72 | LCD = 78, | ||
| 73 | LPTIM1 = 65, | ||
| 74 | LPTIM2 = 66, | ||
| 75 | LPUART1 = 70, | ||
| 76 | OTG_FS = 67, | ||
| 77 | PVD_PVM = 1, | ||
| 78 | QUADSPI = 71, | ||
| 79 | RCC = 5, | ||
| 80 | RNG = 80, | ||
| 81 | RTC_Alarm = 41, | ||
| 82 | RTC_WKUP = 3, | ||
| 83 | SAI1 = 74, | ||
| 84 | SAI2 = 75, | ||
| 85 | SDMMC1 = 49, | ||
| 86 | SPI1 = 35, | ||
| 87 | SPI2 = 36, | ||
| 88 | SPI3 = 51, | ||
| 89 | SWPMI1 = 76, | ||
| 90 | TAMP_STAMP = 2, | ||
| 91 | TIM1_BRK_TIM15 = 24, | ||
| 92 | TIM1_CC = 27, | ||
| 93 | TIM1_TRG_COM_TIM17 = 26, | ||
| 94 | TIM1_UP_TIM16 = 25, | ||
| 95 | TIM2 = 28, | ||
| 96 | TIM3 = 29, | ||
| 97 | TIM4 = 30, | ||
| 98 | TIM5 = 50, | ||
| 99 | TIM6_DAC = 54, | ||
| 100 | TIM7 = 55, | ||
| 101 | TIM8_BRK = 43, | ||
| 102 | TIM8_CC = 46, | ||
| 103 | TIM8_TRG_COM = 45, | ||
| 104 | TIM8_UP = 44, | ||
| 105 | TSC = 77, | ||
| 106 | UART4 = 52, | ||
| 107 | UART5 = 53, | ||
| 108 | USART1 = 37, | ||
| 109 | USART2 = 38, | ||
| 110 | USART3 = 39, | ||
| 111 | WWDG = 0, | ||
| 112 | } | ||
| 113 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 114 | #[inline(always)] | ||
| 115 | fn number(self) -> u16 { | ||
| 116 | self as u16 | ||
| 117 | } | ||
| 118 | } | ||
| 119 | |||
| 120 | declare!(ADC1_2); | ||
| 121 | declare!(ADC3); | ||
| 122 | declare!(AES); | ||
| 123 | declare!(CAN1_RX0); | ||
| 124 | declare!(CAN1_RX1); | ||
| 125 | declare!(CAN1_SCE); | ||
| 126 | declare!(CAN1_TX); | ||
| 127 | declare!(COMP); | ||
| 128 | declare!(DFSDM1_FLT0); | ||
| 129 | declare!(DFSDM1_FLT1); | ||
| 130 | declare!(DFSDM1_FLT2); | ||
| 131 | declare!(DFSDM1_FLT3); | ||
| 132 | declare!(DMA1_Channel1); | ||
| 133 | declare!(DMA1_Channel2); | ||
| 134 | declare!(DMA1_Channel3); | ||
| 135 | declare!(DMA1_Channel4); | ||
| 136 | declare!(DMA1_Channel5); | ||
| 137 | declare!(DMA1_Channel6); | ||
| 138 | declare!(DMA1_Channel7); | ||
| 139 | declare!(DMA2_Channel1); | ||
| 140 | declare!(DMA2_Channel2); | ||
| 141 | declare!(DMA2_Channel3); | ||
| 142 | declare!(DMA2_Channel4); | ||
| 143 | declare!(DMA2_Channel5); | ||
| 144 | declare!(DMA2_Channel6); | ||
| 145 | declare!(DMA2_Channel7); | ||
| 146 | declare!(EXTI0); | ||
| 147 | declare!(EXTI1); | ||
| 148 | declare!(EXTI15_10); | ||
| 149 | declare!(EXTI2); | ||
| 150 | declare!(EXTI3); | ||
| 151 | declare!(EXTI4); | ||
| 152 | declare!(EXTI9_5); | ||
| 153 | declare!(FLASH); | ||
| 154 | declare!(FMC); | ||
| 155 | declare!(FPU); | ||
| 156 | declare!(I2C1_ER); | ||
| 157 | declare!(I2C1_EV); | ||
| 158 | declare!(I2C2_ER); | ||
| 159 | declare!(I2C2_EV); | ||
| 160 | declare!(I2C3_ER); | ||
| 161 | declare!(I2C3_EV); | ||
| 162 | declare!(LCD); | ||
| 163 | declare!(LPTIM1); | ||
| 164 | declare!(LPTIM2); | ||
| 165 | declare!(LPUART1); | ||
| 166 | declare!(OTG_FS); | ||
| 167 | declare!(PVD_PVM); | ||
| 168 | declare!(QUADSPI); | ||
| 169 | declare!(RCC); | ||
| 170 | declare!(RNG); | ||
| 171 | declare!(RTC_Alarm); | ||
| 172 | declare!(RTC_WKUP); | ||
| 173 | declare!(SAI1); | ||
| 174 | declare!(SAI2); | ||
| 175 | declare!(SDMMC1); | ||
| 176 | declare!(SPI1); | ||
| 177 | declare!(SPI2); | ||
| 178 | declare!(SPI3); | ||
| 179 | declare!(SWPMI1); | ||
| 180 | declare!(TAMP_STAMP); | ||
| 181 | declare!(TIM1_BRK_TIM15); | ||
| 182 | declare!(TIM1_CC); | ||
| 183 | declare!(TIM1_TRG_COM_TIM17); | ||
| 184 | declare!(TIM1_UP_TIM16); | ||
| 185 | declare!(TIM2); | ||
| 186 | declare!(TIM3); | ||
| 187 | declare!(TIM4); | ||
| 188 | declare!(TIM5); | ||
| 189 | declare!(TIM6_DAC); | ||
| 190 | declare!(TIM7); | ||
| 191 | declare!(TIM8_BRK); | ||
| 192 | declare!(TIM8_CC); | ||
| 193 | declare!(TIM8_TRG_COM); | ||
| 194 | declare!(TIM8_UP); | ||
| 195 | declare!(TSC); | ||
| 196 | declare!(UART4); | ||
| 197 | declare!(UART5); | ||
| 198 | declare!(USART1); | ||
| 199 | declare!(USART2); | ||
| 200 | declare!(USART3); | ||
| 201 | declare!(WWDG); | ||
| 202 | } | ||
| 203 | mod interrupt_vector { | ||
| 204 | extern "C" { | ||
| 205 | fn ADC1_2(); | ||
| 206 | fn ADC3(); | ||
| 207 | fn AES(); | ||
| 208 | fn CAN1_RX0(); | ||
| 209 | fn CAN1_RX1(); | ||
| 210 | fn CAN1_SCE(); | ||
| 211 | fn CAN1_TX(); | ||
| 212 | fn COMP(); | ||
| 213 | fn DFSDM1_FLT0(); | ||
| 214 | fn DFSDM1_FLT1(); | ||
| 215 | fn DFSDM1_FLT2(); | ||
| 216 | fn DFSDM1_FLT3(); | ||
| 217 | fn DMA1_Channel1(); | ||
| 218 | fn DMA1_Channel2(); | ||
| 219 | fn DMA1_Channel3(); | ||
| 220 | fn DMA1_Channel4(); | ||
| 221 | fn DMA1_Channel5(); | ||
| 222 | fn DMA1_Channel6(); | ||
| 223 | fn DMA1_Channel7(); | ||
| 224 | fn DMA2_Channel1(); | ||
| 225 | fn DMA2_Channel2(); | ||
| 226 | fn DMA2_Channel3(); | ||
| 227 | fn DMA2_Channel4(); | ||
| 228 | fn DMA2_Channel5(); | ||
| 229 | fn DMA2_Channel6(); | ||
| 230 | fn DMA2_Channel7(); | ||
| 231 | fn EXTI0(); | ||
| 232 | fn EXTI1(); | ||
| 233 | fn EXTI15_10(); | ||
| 234 | fn EXTI2(); | ||
| 235 | fn EXTI3(); | ||
| 236 | fn EXTI4(); | ||
| 237 | fn EXTI9_5(); | ||
| 238 | fn FLASH(); | ||
| 239 | fn FMC(); | ||
| 240 | fn FPU(); | ||
| 241 | fn I2C1_ER(); | ||
| 242 | fn I2C1_EV(); | ||
| 243 | fn I2C2_ER(); | ||
| 244 | fn I2C2_EV(); | ||
| 245 | fn I2C3_ER(); | ||
| 246 | fn I2C3_EV(); | ||
| 247 | fn LCD(); | ||
| 248 | fn LPTIM1(); | ||
| 249 | fn LPTIM2(); | ||
| 250 | fn LPUART1(); | ||
| 251 | fn OTG_FS(); | ||
| 252 | fn PVD_PVM(); | ||
| 253 | fn QUADSPI(); | ||
| 254 | fn RCC(); | ||
| 255 | fn RNG(); | ||
| 256 | fn RTC_Alarm(); | ||
| 257 | fn RTC_WKUP(); | ||
| 258 | fn SAI1(); | ||
| 259 | fn SAI2(); | ||
| 260 | fn SDMMC1(); | ||
| 261 | fn SPI1(); | ||
| 262 | fn SPI2(); | ||
| 263 | fn SPI3(); | ||
| 264 | fn SWPMI1(); | ||
| 265 | fn TAMP_STAMP(); | ||
| 266 | fn TIM1_BRK_TIM15(); | ||
| 267 | fn TIM1_CC(); | ||
| 268 | fn TIM1_TRG_COM_TIM17(); | ||
| 269 | fn TIM1_UP_TIM16(); | ||
| 270 | fn TIM2(); | ||
| 271 | fn TIM3(); | ||
| 272 | fn TIM4(); | ||
| 273 | fn TIM5(); | ||
| 274 | fn TIM6_DAC(); | ||
| 275 | fn TIM7(); | ||
| 276 | fn TIM8_BRK(); | ||
| 277 | fn TIM8_CC(); | ||
| 278 | fn TIM8_TRG_COM(); | ||
| 279 | fn TIM8_UP(); | ||
| 280 | fn TSC(); | ||
| 281 | fn UART4(); | ||
| 282 | fn UART5(); | ||
| 283 | fn USART1(); | ||
| 284 | fn USART2(); | ||
| 285 | fn USART3(); | ||
| 286 | fn WWDG(); | ||
| 287 | } | ||
| 288 | pub union Vector { | ||
| 289 | _handler: unsafe extern "C" fn(), | ||
| 290 | _reserved: u32, | ||
| 291 | } | ||
| 292 | #[link_section = ".vector_table.interrupts"] | ||
| 293 | #[no_mangle] | ||
| 294 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 295 | Vector { _handler: WWDG }, | ||
| 296 | Vector { _handler: PVD_PVM }, | ||
| 297 | Vector { | ||
| 298 | _handler: TAMP_STAMP, | ||
| 299 | }, | ||
| 300 | Vector { _handler: RTC_WKUP }, | ||
| 301 | Vector { _handler: FLASH }, | ||
| 302 | Vector { _handler: RCC }, | ||
| 303 | Vector { _handler: EXTI0 }, | ||
| 304 | Vector { _handler: EXTI1 }, | ||
| 305 | Vector { _handler: EXTI2 }, | ||
| 306 | Vector { _handler: EXTI3 }, | ||
| 307 | Vector { _handler: EXTI4 }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel1, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel2, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel3, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel4, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel5, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA1_Channel6, | ||
| 325 | }, | ||
| 326 | Vector { | ||
| 327 | _handler: DMA1_Channel7, | ||
| 328 | }, | ||
| 329 | Vector { _handler: ADC1_2 }, | ||
| 330 | Vector { _handler: CAN1_TX }, | ||
| 331 | Vector { _handler: CAN1_RX0 }, | ||
| 332 | Vector { _handler: CAN1_RX1 }, | ||
| 333 | Vector { _handler: CAN1_SCE }, | ||
| 334 | Vector { _handler: EXTI9_5 }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_BRK_TIM15, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: TIM1_UP_TIM16, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: TIM1_TRG_COM_TIM17, | ||
| 343 | }, | ||
| 344 | Vector { _handler: TIM1_CC }, | ||
| 345 | Vector { _handler: TIM2 }, | ||
| 346 | Vector { _handler: TIM3 }, | ||
| 347 | Vector { _handler: TIM4 }, | ||
| 348 | Vector { _handler: I2C1_EV }, | ||
| 349 | Vector { _handler: I2C1_ER }, | ||
| 350 | Vector { _handler: I2C2_EV }, | ||
| 351 | Vector { _handler: I2C2_ER }, | ||
| 352 | Vector { _handler: SPI1 }, | ||
| 353 | Vector { _handler: SPI2 }, | ||
| 354 | Vector { _handler: USART1 }, | ||
| 355 | Vector { _handler: USART2 }, | ||
| 356 | Vector { _handler: USART3 }, | ||
| 357 | Vector { | ||
| 358 | _handler: EXTI15_10, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: RTC_Alarm, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: DFSDM1_FLT3, | ||
| 365 | }, | ||
| 366 | Vector { _handler: TIM8_BRK }, | ||
| 367 | Vector { _handler: TIM8_UP }, | ||
| 368 | Vector { | ||
| 369 | _handler: TIM8_TRG_COM, | ||
| 370 | }, | ||
| 371 | Vector { _handler: TIM8_CC }, | ||
| 372 | Vector { _handler: ADC3 }, | ||
| 373 | Vector { _handler: FMC }, | ||
| 374 | Vector { _handler: SDMMC1 }, | ||
| 375 | Vector { _handler: TIM5 }, | ||
| 376 | Vector { _handler: SPI3 }, | ||
| 377 | Vector { _handler: UART4 }, | ||
| 378 | Vector { _handler: UART5 }, | ||
| 379 | Vector { _handler: TIM6_DAC }, | ||
| 380 | Vector { _handler: TIM7 }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel1, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel2, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel3, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DMA2_Channel4, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DMA2_Channel5, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT0, | ||
| 398 | }, | ||
| 399 | Vector { | ||
| 400 | _handler: DFSDM1_FLT1, | ||
| 401 | }, | ||
| 402 | Vector { | ||
| 403 | _handler: DFSDM1_FLT2, | ||
| 404 | }, | ||
| 405 | Vector { _handler: COMP }, | ||
| 406 | Vector { _handler: LPTIM1 }, | ||
| 407 | Vector { _handler: LPTIM2 }, | ||
| 408 | Vector { _handler: OTG_FS }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel6, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel7, | ||
| 414 | }, | ||
| 415 | Vector { _handler: LPUART1 }, | ||
| 416 | Vector { _handler: QUADSPI }, | ||
| 417 | Vector { _handler: I2C3_EV }, | ||
| 418 | Vector { _handler: I2C3_ER }, | ||
| 419 | Vector { _handler: SAI1 }, | ||
| 420 | Vector { _handler: SAI2 }, | ||
| 421 | Vector { _handler: SWPMI1 }, | ||
| 422 | Vector { _handler: TSC }, | ||
| 423 | Vector { _handler: LCD }, | ||
| 424 | Vector { _handler: AES }, | ||
| 425 | Vector { _handler: RNG }, | ||
| 426 | Vector { _handler: FPU }, | ||
| 427 | ]; | ||
| 428 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 429 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 430 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 431 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l486rg.rs b/embassy-stm32/src/chip/stm32l486rg.rs index e6b55967e..27ce58704 100644 --- a/embassy-stm32/src/chip/stm32l486rg.rs +++ b/embassy-stm32/src/chip/stm32l486rg.rs | |||
| @@ -1,21 +1,431 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, | 12 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, |
| 13 | RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, | 13 | QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, |
| 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, | 14 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 15 | USB_OTG_FS, WWDG | 15 | USART3, USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DFSDM1_FLT0 = 61, | ||
| 39 | DFSDM1_FLT1 = 62, | ||
| 40 | DFSDM1_FLT2 = 63, | ||
| 41 | DFSDM1_FLT3 = 42, | ||
| 42 | DMA1_Channel1 = 11, | ||
| 43 | DMA1_Channel2 = 12, | ||
| 44 | DMA1_Channel3 = 13, | ||
| 45 | DMA1_Channel4 = 14, | ||
| 46 | DMA1_Channel5 = 15, | ||
| 47 | DMA1_Channel6 = 16, | ||
| 48 | DMA1_Channel7 = 17, | ||
| 49 | DMA2_Channel1 = 56, | ||
| 50 | DMA2_Channel2 = 57, | ||
| 51 | DMA2_Channel3 = 58, | ||
| 52 | DMA2_Channel4 = 59, | ||
| 53 | DMA2_Channel5 = 60, | ||
| 54 | DMA2_Channel6 = 68, | ||
| 55 | DMA2_Channel7 = 69, | ||
| 56 | EXTI0 = 6, | ||
| 57 | EXTI1 = 7, | ||
| 58 | EXTI15_10 = 40, | ||
| 59 | EXTI2 = 8, | ||
| 60 | EXTI3 = 9, | ||
| 61 | EXTI4 = 10, | ||
| 62 | EXTI9_5 = 23, | ||
| 63 | FLASH = 4, | ||
| 64 | FMC = 48, | ||
| 65 | FPU = 81, | ||
| 66 | I2C1_ER = 32, | ||
| 67 | I2C1_EV = 31, | ||
| 68 | I2C2_ER = 34, | ||
| 69 | I2C2_EV = 33, | ||
| 70 | I2C3_ER = 73, | ||
| 71 | I2C3_EV = 72, | ||
| 72 | LCD = 78, | ||
| 73 | LPTIM1 = 65, | ||
| 74 | LPTIM2 = 66, | ||
| 75 | LPUART1 = 70, | ||
| 76 | OTG_FS = 67, | ||
| 77 | PVD_PVM = 1, | ||
| 78 | QUADSPI = 71, | ||
| 79 | RCC = 5, | ||
| 80 | RNG = 80, | ||
| 81 | RTC_Alarm = 41, | ||
| 82 | RTC_WKUP = 3, | ||
| 83 | SAI1 = 74, | ||
| 84 | SAI2 = 75, | ||
| 85 | SDMMC1 = 49, | ||
| 86 | SPI1 = 35, | ||
| 87 | SPI2 = 36, | ||
| 88 | SPI3 = 51, | ||
| 89 | SWPMI1 = 76, | ||
| 90 | TAMP_STAMP = 2, | ||
| 91 | TIM1_BRK_TIM15 = 24, | ||
| 92 | TIM1_CC = 27, | ||
| 93 | TIM1_TRG_COM_TIM17 = 26, | ||
| 94 | TIM1_UP_TIM16 = 25, | ||
| 95 | TIM2 = 28, | ||
| 96 | TIM3 = 29, | ||
| 97 | TIM4 = 30, | ||
| 98 | TIM5 = 50, | ||
| 99 | TIM6_DAC = 54, | ||
| 100 | TIM7 = 55, | ||
| 101 | TIM8_BRK = 43, | ||
| 102 | TIM8_CC = 46, | ||
| 103 | TIM8_TRG_COM = 45, | ||
| 104 | TIM8_UP = 44, | ||
| 105 | TSC = 77, | ||
| 106 | UART4 = 52, | ||
| 107 | UART5 = 53, | ||
| 108 | USART1 = 37, | ||
| 109 | USART2 = 38, | ||
| 110 | USART3 = 39, | ||
| 111 | WWDG = 0, | ||
| 112 | } | ||
| 113 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 114 | #[inline(always)] | ||
| 115 | fn number(self) -> u16 { | ||
| 116 | self as u16 | ||
| 117 | } | ||
| 118 | } | ||
| 119 | |||
| 120 | declare!(ADC1_2); | ||
| 121 | declare!(ADC3); | ||
| 122 | declare!(AES); | ||
| 123 | declare!(CAN1_RX0); | ||
| 124 | declare!(CAN1_RX1); | ||
| 125 | declare!(CAN1_SCE); | ||
| 126 | declare!(CAN1_TX); | ||
| 127 | declare!(COMP); | ||
| 128 | declare!(DFSDM1_FLT0); | ||
| 129 | declare!(DFSDM1_FLT1); | ||
| 130 | declare!(DFSDM1_FLT2); | ||
| 131 | declare!(DFSDM1_FLT3); | ||
| 132 | declare!(DMA1_Channel1); | ||
| 133 | declare!(DMA1_Channel2); | ||
| 134 | declare!(DMA1_Channel3); | ||
| 135 | declare!(DMA1_Channel4); | ||
| 136 | declare!(DMA1_Channel5); | ||
| 137 | declare!(DMA1_Channel6); | ||
| 138 | declare!(DMA1_Channel7); | ||
| 139 | declare!(DMA2_Channel1); | ||
| 140 | declare!(DMA2_Channel2); | ||
| 141 | declare!(DMA2_Channel3); | ||
| 142 | declare!(DMA2_Channel4); | ||
| 143 | declare!(DMA2_Channel5); | ||
| 144 | declare!(DMA2_Channel6); | ||
| 145 | declare!(DMA2_Channel7); | ||
| 146 | declare!(EXTI0); | ||
| 147 | declare!(EXTI1); | ||
| 148 | declare!(EXTI15_10); | ||
| 149 | declare!(EXTI2); | ||
| 150 | declare!(EXTI3); | ||
| 151 | declare!(EXTI4); | ||
| 152 | declare!(EXTI9_5); | ||
| 153 | declare!(FLASH); | ||
| 154 | declare!(FMC); | ||
| 155 | declare!(FPU); | ||
| 156 | declare!(I2C1_ER); | ||
| 157 | declare!(I2C1_EV); | ||
| 158 | declare!(I2C2_ER); | ||
| 159 | declare!(I2C2_EV); | ||
| 160 | declare!(I2C3_ER); | ||
| 161 | declare!(I2C3_EV); | ||
| 162 | declare!(LCD); | ||
| 163 | declare!(LPTIM1); | ||
| 164 | declare!(LPTIM2); | ||
| 165 | declare!(LPUART1); | ||
| 166 | declare!(OTG_FS); | ||
| 167 | declare!(PVD_PVM); | ||
| 168 | declare!(QUADSPI); | ||
| 169 | declare!(RCC); | ||
| 170 | declare!(RNG); | ||
| 171 | declare!(RTC_Alarm); | ||
| 172 | declare!(RTC_WKUP); | ||
| 173 | declare!(SAI1); | ||
| 174 | declare!(SAI2); | ||
| 175 | declare!(SDMMC1); | ||
| 176 | declare!(SPI1); | ||
| 177 | declare!(SPI2); | ||
| 178 | declare!(SPI3); | ||
| 179 | declare!(SWPMI1); | ||
| 180 | declare!(TAMP_STAMP); | ||
| 181 | declare!(TIM1_BRK_TIM15); | ||
| 182 | declare!(TIM1_CC); | ||
| 183 | declare!(TIM1_TRG_COM_TIM17); | ||
| 184 | declare!(TIM1_UP_TIM16); | ||
| 185 | declare!(TIM2); | ||
| 186 | declare!(TIM3); | ||
| 187 | declare!(TIM4); | ||
| 188 | declare!(TIM5); | ||
| 189 | declare!(TIM6_DAC); | ||
| 190 | declare!(TIM7); | ||
| 191 | declare!(TIM8_BRK); | ||
| 192 | declare!(TIM8_CC); | ||
| 193 | declare!(TIM8_TRG_COM); | ||
| 194 | declare!(TIM8_UP); | ||
| 195 | declare!(TSC); | ||
| 196 | declare!(UART4); | ||
| 197 | declare!(UART5); | ||
| 198 | declare!(USART1); | ||
| 199 | declare!(USART2); | ||
| 200 | declare!(USART3); | ||
| 201 | declare!(WWDG); | ||
| 202 | } | ||
| 203 | mod interrupt_vector { | ||
| 204 | extern "C" { | ||
| 205 | fn ADC1_2(); | ||
| 206 | fn ADC3(); | ||
| 207 | fn AES(); | ||
| 208 | fn CAN1_RX0(); | ||
| 209 | fn CAN1_RX1(); | ||
| 210 | fn CAN1_SCE(); | ||
| 211 | fn CAN1_TX(); | ||
| 212 | fn COMP(); | ||
| 213 | fn DFSDM1_FLT0(); | ||
| 214 | fn DFSDM1_FLT1(); | ||
| 215 | fn DFSDM1_FLT2(); | ||
| 216 | fn DFSDM1_FLT3(); | ||
| 217 | fn DMA1_Channel1(); | ||
| 218 | fn DMA1_Channel2(); | ||
| 219 | fn DMA1_Channel3(); | ||
| 220 | fn DMA1_Channel4(); | ||
| 221 | fn DMA1_Channel5(); | ||
| 222 | fn DMA1_Channel6(); | ||
| 223 | fn DMA1_Channel7(); | ||
| 224 | fn DMA2_Channel1(); | ||
| 225 | fn DMA2_Channel2(); | ||
| 226 | fn DMA2_Channel3(); | ||
| 227 | fn DMA2_Channel4(); | ||
| 228 | fn DMA2_Channel5(); | ||
| 229 | fn DMA2_Channel6(); | ||
| 230 | fn DMA2_Channel7(); | ||
| 231 | fn EXTI0(); | ||
| 232 | fn EXTI1(); | ||
| 233 | fn EXTI15_10(); | ||
| 234 | fn EXTI2(); | ||
| 235 | fn EXTI3(); | ||
| 236 | fn EXTI4(); | ||
| 237 | fn EXTI9_5(); | ||
| 238 | fn FLASH(); | ||
| 239 | fn FMC(); | ||
| 240 | fn FPU(); | ||
| 241 | fn I2C1_ER(); | ||
| 242 | fn I2C1_EV(); | ||
| 243 | fn I2C2_ER(); | ||
| 244 | fn I2C2_EV(); | ||
| 245 | fn I2C3_ER(); | ||
| 246 | fn I2C3_EV(); | ||
| 247 | fn LCD(); | ||
| 248 | fn LPTIM1(); | ||
| 249 | fn LPTIM2(); | ||
| 250 | fn LPUART1(); | ||
| 251 | fn OTG_FS(); | ||
| 252 | fn PVD_PVM(); | ||
| 253 | fn QUADSPI(); | ||
| 254 | fn RCC(); | ||
| 255 | fn RNG(); | ||
| 256 | fn RTC_Alarm(); | ||
| 257 | fn RTC_WKUP(); | ||
| 258 | fn SAI1(); | ||
| 259 | fn SAI2(); | ||
| 260 | fn SDMMC1(); | ||
| 261 | fn SPI1(); | ||
| 262 | fn SPI2(); | ||
| 263 | fn SPI3(); | ||
| 264 | fn SWPMI1(); | ||
| 265 | fn TAMP_STAMP(); | ||
| 266 | fn TIM1_BRK_TIM15(); | ||
| 267 | fn TIM1_CC(); | ||
| 268 | fn TIM1_TRG_COM_TIM17(); | ||
| 269 | fn TIM1_UP_TIM16(); | ||
| 270 | fn TIM2(); | ||
| 271 | fn TIM3(); | ||
| 272 | fn TIM4(); | ||
| 273 | fn TIM5(); | ||
| 274 | fn TIM6_DAC(); | ||
| 275 | fn TIM7(); | ||
| 276 | fn TIM8_BRK(); | ||
| 277 | fn TIM8_CC(); | ||
| 278 | fn TIM8_TRG_COM(); | ||
| 279 | fn TIM8_UP(); | ||
| 280 | fn TSC(); | ||
| 281 | fn UART4(); | ||
| 282 | fn UART5(); | ||
| 283 | fn USART1(); | ||
| 284 | fn USART2(); | ||
| 285 | fn USART3(); | ||
| 286 | fn WWDG(); | ||
| 287 | } | ||
| 288 | pub union Vector { | ||
| 289 | _handler: unsafe extern "C" fn(), | ||
| 290 | _reserved: u32, | ||
| 291 | } | ||
| 292 | #[link_section = ".vector_table.interrupts"] | ||
| 293 | #[no_mangle] | ||
| 294 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 295 | Vector { _handler: WWDG }, | ||
| 296 | Vector { _handler: PVD_PVM }, | ||
| 297 | Vector { | ||
| 298 | _handler: TAMP_STAMP, | ||
| 299 | }, | ||
| 300 | Vector { _handler: RTC_WKUP }, | ||
| 301 | Vector { _handler: FLASH }, | ||
| 302 | Vector { _handler: RCC }, | ||
| 303 | Vector { _handler: EXTI0 }, | ||
| 304 | Vector { _handler: EXTI1 }, | ||
| 305 | Vector { _handler: EXTI2 }, | ||
| 306 | Vector { _handler: EXTI3 }, | ||
| 307 | Vector { _handler: EXTI4 }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel1, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel2, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel3, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel4, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel5, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA1_Channel6, | ||
| 325 | }, | ||
| 326 | Vector { | ||
| 327 | _handler: DMA1_Channel7, | ||
| 328 | }, | ||
| 329 | Vector { _handler: ADC1_2 }, | ||
| 330 | Vector { _handler: CAN1_TX }, | ||
| 331 | Vector { _handler: CAN1_RX0 }, | ||
| 332 | Vector { _handler: CAN1_RX1 }, | ||
| 333 | Vector { _handler: CAN1_SCE }, | ||
| 334 | Vector { _handler: EXTI9_5 }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_BRK_TIM15, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: TIM1_UP_TIM16, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: TIM1_TRG_COM_TIM17, | ||
| 343 | }, | ||
| 344 | Vector { _handler: TIM1_CC }, | ||
| 345 | Vector { _handler: TIM2 }, | ||
| 346 | Vector { _handler: TIM3 }, | ||
| 347 | Vector { _handler: TIM4 }, | ||
| 348 | Vector { _handler: I2C1_EV }, | ||
| 349 | Vector { _handler: I2C1_ER }, | ||
| 350 | Vector { _handler: I2C2_EV }, | ||
| 351 | Vector { _handler: I2C2_ER }, | ||
| 352 | Vector { _handler: SPI1 }, | ||
| 353 | Vector { _handler: SPI2 }, | ||
| 354 | Vector { _handler: USART1 }, | ||
| 355 | Vector { _handler: USART2 }, | ||
| 356 | Vector { _handler: USART3 }, | ||
| 357 | Vector { | ||
| 358 | _handler: EXTI15_10, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: RTC_Alarm, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: DFSDM1_FLT3, | ||
| 365 | }, | ||
| 366 | Vector { _handler: TIM8_BRK }, | ||
| 367 | Vector { _handler: TIM8_UP }, | ||
| 368 | Vector { | ||
| 369 | _handler: TIM8_TRG_COM, | ||
| 370 | }, | ||
| 371 | Vector { _handler: TIM8_CC }, | ||
| 372 | Vector { _handler: ADC3 }, | ||
| 373 | Vector { _handler: FMC }, | ||
| 374 | Vector { _handler: SDMMC1 }, | ||
| 375 | Vector { _handler: TIM5 }, | ||
| 376 | Vector { _handler: SPI3 }, | ||
| 377 | Vector { _handler: UART4 }, | ||
| 378 | Vector { _handler: UART5 }, | ||
| 379 | Vector { _handler: TIM6_DAC }, | ||
| 380 | Vector { _handler: TIM7 }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel1, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel2, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel3, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DMA2_Channel4, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DMA2_Channel5, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT0, | ||
| 398 | }, | ||
| 399 | Vector { | ||
| 400 | _handler: DFSDM1_FLT1, | ||
| 401 | }, | ||
| 402 | Vector { | ||
| 403 | _handler: DFSDM1_FLT2, | ||
| 404 | }, | ||
| 405 | Vector { _handler: COMP }, | ||
| 406 | Vector { _handler: LPTIM1 }, | ||
| 407 | Vector { _handler: LPTIM2 }, | ||
| 408 | Vector { _handler: OTG_FS }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel6, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel7, | ||
| 414 | }, | ||
| 415 | Vector { _handler: LPUART1 }, | ||
| 416 | Vector { _handler: QUADSPI }, | ||
| 417 | Vector { _handler: I2C3_EV }, | ||
| 418 | Vector { _handler: I2C3_ER }, | ||
| 419 | Vector { _handler: SAI1 }, | ||
| 420 | Vector { _handler: SAI2 }, | ||
| 421 | Vector { _handler: SWPMI1 }, | ||
| 422 | Vector { _handler: TSC }, | ||
| 423 | Vector { _handler: LCD }, | ||
| 424 | Vector { _handler: AES }, | ||
| 425 | Vector { _handler: RNG }, | ||
| 426 | Vector { _handler: FPU }, | ||
| 427 | ]; | ||
| 428 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 429 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 430 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 431 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l486vg.rs b/embassy-stm32/src/chip/stm32l486vg.rs index e6b55967e..27ce58704 100644 --- a/embassy-stm32/src/chip/stm32l486vg.rs +++ b/embassy-stm32/src/chip/stm32l486vg.rs | |||
| @@ -1,21 +1,431 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, | 12 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, |
| 13 | RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, | 13 | QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, |
| 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, | 14 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 15 | USB_OTG_FS, WWDG | 15 | USART3, USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DFSDM1_FLT0 = 61, | ||
| 39 | DFSDM1_FLT1 = 62, | ||
| 40 | DFSDM1_FLT2 = 63, | ||
| 41 | DFSDM1_FLT3 = 42, | ||
| 42 | DMA1_Channel1 = 11, | ||
| 43 | DMA1_Channel2 = 12, | ||
| 44 | DMA1_Channel3 = 13, | ||
| 45 | DMA1_Channel4 = 14, | ||
| 46 | DMA1_Channel5 = 15, | ||
| 47 | DMA1_Channel6 = 16, | ||
| 48 | DMA1_Channel7 = 17, | ||
| 49 | DMA2_Channel1 = 56, | ||
| 50 | DMA2_Channel2 = 57, | ||
| 51 | DMA2_Channel3 = 58, | ||
| 52 | DMA2_Channel4 = 59, | ||
| 53 | DMA2_Channel5 = 60, | ||
| 54 | DMA2_Channel6 = 68, | ||
| 55 | DMA2_Channel7 = 69, | ||
| 56 | EXTI0 = 6, | ||
| 57 | EXTI1 = 7, | ||
| 58 | EXTI15_10 = 40, | ||
| 59 | EXTI2 = 8, | ||
| 60 | EXTI3 = 9, | ||
| 61 | EXTI4 = 10, | ||
| 62 | EXTI9_5 = 23, | ||
| 63 | FLASH = 4, | ||
| 64 | FMC = 48, | ||
| 65 | FPU = 81, | ||
| 66 | I2C1_ER = 32, | ||
| 67 | I2C1_EV = 31, | ||
| 68 | I2C2_ER = 34, | ||
| 69 | I2C2_EV = 33, | ||
| 70 | I2C3_ER = 73, | ||
| 71 | I2C3_EV = 72, | ||
| 72 | LCD = 78, | ||
| 73 | LPTIM1 = 65, | ||
| 74 | LPTIM2 = 66, | ||
| 75 | LPUART1 = 70, | ||
| 76 | OTG_FS = 67, | ||
| 77 | PVD_PVM = 1, | ||
| 78 | QUADSPI = 71, | ||
| 79 | RCC = 5, | ||
| 80 | RNG = 80, | ||
| 81 | RTC_Alarm = 41, | ||
| 82 | RTC_WKUP = 3, | ||
| 83 | SAI1 = 74, | ||
| 84 | SAI2 = 75, | ||
| 85 | SDMMC1 = 49, | ||
| 86 | SPI1 = 35, | ||
| 87 | SPI2 = 36, | ||
| 88 | SPI3 = 51, | ||
| 89 | SWPMI1 = 76, | ||
| 90 | TAMP_STAMP = 2, | ||
| 91 | TIM1_BRK_TIM15 = 24, | ||
| 92 | TIM1_CC = 27, | ||
| 93 | TIM1_TRG_COM_TIM17 = 26, | ||
| 94 | TIM1_UP_TIM16 = 25, | ||
| 95 | TIM2 = 28, | ||
| 96 | TIM3 = 29, | ||
| 97 | TIM4 = 30, | ||
| 98 | TIM5 = 50, | ||
| 99 | TIM6_DAC = 54, | ||
| 100 | TIM7 = 55, | ||
| 101 | TIM8_BRK = 43, | ||
| 102 | TIM8_CC = 46, | ||
| 103 | TIM8_TRG_COM = 45, | ||
| 104 | TIM8_UP = 44, | ||
| 105 | TSC = 77, | ||
| 106 | UART4 = 52, | ||
| 107 | UART5 = 53, | ||
| 108 | USART1 = 37, | ||
| 109 | USART2 = 38, | ||
| 110 | USART3 = 39, | ||
| 111 | WWDG = 0, | ||
| 112 | } | ||
| 113 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 114 | #[inline(always)] | ||
| 115 | fn number(self) -> u16 { | ||
| 116 | self as u16 | ||
| 117 | } | ||
| 118 | } | ||
| 119 | |||
| 120 | declare!(ADC1_2); | ||
| 121 | declare!(ADC3); | ||
| 122 | declare!(AES); | ||
| 123 | declare!(CAN1_RX0); | ||
| 124 | declare!(CAN1_RX1); | ||
| 125 | declare!(CAN1_SCE); | ||
| 126 | declare!(CAN1_TX); | ||
| 127 | declare!(COMP); | ||
| 128 | declare!(DFSDM1_FLT0); | ||
| 129 | declare!(DFSDM1_FLT1); | ||
| 130 | declare!(DFSDM1_FLT2); | ||
| 131 | declare!(DFSDM1_FLT3); | ||
| 132 | declare!(DMA1_Channel1); | ||
| 133 | declare!(DMA1_Channel2); | ||
| 134 | declare!(DMA1_Channel3); | ||
| 135 | declare!(DMA1_Channel4); | ||
| 136 | declare!(DMA1_Channel5); | ||
| 137 | declare!(DMA1_Channel6); | ||
| 138 | declare!(DMA1_Channel7); | ||
| 139 | declare!(DMA2_Channel1); | ||
| 140 | declare!(DMA2_Channel2); | ||
| 141 | declare!(DMA2_Channel3); | ||
| 142 | declare!(DMA2_Channel4); | ||
| 143 | declare!(DMA2_Channel5); | ||
| 144 | declare!(DMA2_Channel6); | ||
| 145 | declare!(DMA2_Channel7); | ||
| 146 | declare!(EXTI0); | ||
| 147 | declare!(EXTI1); | ||
| 148 | declare!(EXTI15_10); | ||
| 149 | declare!(EXTI2); | ||
| 150 | declare!(EXTI3); | ||
| 151 | declare!(EXTI4); | ||
| 152 | declare!(EXTI9_5); | ||
| 153 | declare!(FLASH); | ||
| 154 | declare!(FMC); | ||
| 155 | declare!(FPU); | ||
| 156 | declare!(I2C1_ER); | ||
| 157 | declare!(I2C1_EV); | ||
| 158 | declare!(I2C2_ER); | ||
| 159 | declare!(I2C2_EV); | ||
| 160 | declare!(I2C3_ER); | ||
| 161 | declare!(I2C3_EV); | ||
| 162 | declare!(LCD); | ||
| 163 | declare!(LPTIM1); | ||
| 164 | declare!(LPTIM2); | ||
| 165 | declare!(LPUART1); | ||
| 166 | declare!(OTG_FS); | ||
| 167 | declare!(PVD_PVM); | ||
| 168 | declare!(QUADSPI); | ||
| 169 | declare!(RCC); | ||
| 170 | declare!(RNG); | ||
| 171 | declare!(RTC_Alarm); | ||
| 172 | declare!(RTC_WKUP); | ||
| 173 | declare!(SAI1); | ||
| 174 | declare!(SAI2); | ||
| 175 | declare!(SDMMC1); | ||
| 176 | declare!(SPI1); | ||
| 177 | declare!(SPI2); | ||
| 178 | declare!(SPI3); | ||
| 179 | declare!(SWPMI1); | ||
| 180 | declare!(TAMP_STAMP); | ||
| 181 | declare!(TIM1_BRK_TIM15); | ||
| 182 | declare!(TIM1_CC); | ||
| 183 | declare!(TIM1_TRG_COM_TIM17); | ||
| 184 | declare!(TIM1_UP_TIM16); | ||
| 185 | declare!(TIM2); | ||
| 186 | declare!(TIM3); | ||
| 187 | declare!(TIM4); | ||
| 188 | declare!(TIM5); | ||
| 189 | declare!(TIM6_DAC); | ||
| 190 | declare!(TIM7); | ||
| 191 | declare!(TIM8_BRK); | ||
| 192 | declare!(TIM8_CC); | ||
| 193 | declare!(TIM8_TRG_COM); | ||
| 194 | declare!(TIM8_UP); | ||
| 195 | declare!(TSC); | ||
| 196 | declare!(UART4); | ||
| 197 | declare!(UART5); | ||
| 198 | declare!(USART1); | ||
| 199 | declare!(USART2); | ||
| 200 | declare!(USART3); | ||
| 201 | declare!(WWDG); | ||
| 202 | } | ||
| 203 | mod interrupt_vector { | ||
| 204 | extern "C" { | ||
| 205 | fn ADC1_2(); | ||
| 206 | fn ADC3(); | ||
| 207 | fn AES(); | ||
| 208 | fn CAN1_RX0(); | ||
| 209 | fn CAN1_RX1(); | ||
| 210 | fn CAN1_SCE(); | ||
| 211 | fn CAN1_TX(); | ||
| 212 | fn COMP(); | ||
| 213 | fn DFSDM1_FLT0(); | ||
| 214 | fn DFSDM1_FLT1(); | ||
| 215 | fn DFSDM1_FLT2(); | ||
| 216 | fn DFSDM1_FLT3(); | ||
| 217 | fn DMA1_Channel1(); | ||
| 218 | fn DMA1_Channel2(); | ||
| 219 | fn DMA1_Channel3(); | ||
| 220 | fn DMA1_Channel4(); | ||
| 221 | fn DMA1_Channel5(); | ||
| 222 | fn DMA1_Channel6(); | ||
| 223 | fn DMA1_Channel7(); | ||
| 224 | fn DMA2_Channel1(); | ||
| 225 | fn DMA2_Channel2(); | ||
| 226 | fn DMA2_Channel3(); | ||
| 227 | fn DMA2_Channel4(); | ||
| 228 | fn DMA2_Channel5(); | ||
| 229 | fn DMA2_Channel6(); | ||
| 230 | fn DMA2_Channel7(); | ||
| 231 | fn EXTI0(); | ||
| 232 | fn EXTI1(); | ||
| 233 | fn EXTI15_10(); | ||
| 234 | fn EXTI2(); | ||
| 235 | fn EXTI3(); | ||
| 236 | fn EXTI4(); | ||
| 237 | fn EXTI9_5(); | ||
| 238 | fn FLASH(); | ||
| 239 | fn FMC(); | ||
| 240 | fn FPU(); | ||
| 241 | fn I2C1_ER(); | ||
| 242 | fn I2C1_EV(); | ||
| 243 | fn I2C2_ER(); | ||
| 244 | fn I2C2_EV(); | ||
| 245 | fn I2C3_ER(); | ||
| 246 | fn I2C3_EV(); | ||
| 247 | fn LCD(); | ||
| 248 | fn LPTIM1(); | ||
| 249 | fn LPTIM2(); | ||
| 250 | fn LPUART1(); | ||
| 251 | fn OTG_FS(); | ||
| 252 | fn PVD_PVM(); | ||
| 253 | fn QUADSPI(); | ||
| 254 | fn RCC(); | ||
| 255 | fn RNG(); | ||
| 256 | fn RTC_Alarm(); | ||
| 257 | fn RTC_WKUP(); | ||
| 258 | fn SAI1(); | ||
| 259 | fn SAI2(); | ||
| 260 | fn SDMMC1(); | ||
| 261 | fn SPI1(); | ||
| 262 | fn SPI2(); | ||
| 263 | fn SPI3(); | ||
| 264 | fn SWPMI1(); | ||
| 265 | fn TAMP_STAMP(); | ||
| 266 | fn TIM1_BRK_TIM15(); | ||
| 267 | fn TIM1_CC(); | ||
| 268 | fn TIM1_TRG_COM_TIM17(); | ||
| 269 | fn TIM1_UP_TIM16(); | ||
| 270 | fn TIM2(); | ||
| 271 | fn TIM3(); | ||
| 272 | fn TIM4(); | ||
| 273 | fn TIM5(); | ||
| 274 | fn TIM6_DAC(); | ||
| 275 | fn TIM7(); | ||
| 276 | fn TIM8_BRK(); | ||
| 277 | fn TIM8_CC(); | ||
| 278 | fn TIM8_TRG_COM(); | ||
| 279 | fn TIM8_UP(); | ||
| 280 | fn TSC(); | ||
| 281 | fn UART4(); | ||
| 282 | fn UART5(); | ||
| 283 | fn USART1(); | ||
| 284 | fn USART2(); | ||
| 285 | fn USART3(); | ||
| 286 | fn WWDG(); | ||
| 287 | } | ||
| 288 | pub union Vector { | ||
| 289 | _handler: unsafe extern "C" fn(), | ||
| 290 | _reserved: u32, | ||
| 291 | } | ||
| 292 | #[link_section = ".vector_table.interrupts"] | ||
| 293 | #[no_mangle] | ||
| 294 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 295 | Vector { _handler: WWDG }, | ||
| 296 | Vector { _handler: PVD_PVM }, | ||
| 297 | Vector { | ||
| 298 | _handler: TAMP_STAMP, | ||
| 299 | }, | ||
| 300 | Vector { _handler: RTC_WKUP }, | ||
| 301 | Vector { _handler: FLASH }, | ||
| 302 | Vector { _handler: RCC }, | ||
| 303 | Vector { _handler: EXTI0 }, | ||
| 304 | Vector { _handler: EXTI1 }, | ||
| 305 | Vector { _handler: EXTI2 }, | ||
| 306 | Vector { _handler: EXTI3 }, | ||
| 307 | Vector { _handler: EXTI4 }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel1, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel2, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel3, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel4, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel5, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA1_Channel6, | ||
| 325 | }, | ||
| 326 | Vector { | ||
| 327 | _handler: DMA1_Channel7, | ||
| 328 | }, | ||
| 329 | Vector { _handler: ADC1_2 }, | ||
| 330 | Vector { _handler: CAN1_TX }, | ||
| 331 | Vector { _handler: CAN1_RX0 }, | ||
| 332 | Vector { _handler: CAN1_RX1 }, | ||
| 333 | Vector { _handler: CAN1_SCE }, | ||
| 334 | Vector { _handler: EXTI9_5 }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_BRK_TIM15, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: TIM1_UP_TIM16, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: TIM1_TRG_COM_TIM17, | ||
| 343 | }, | ||
| 344 | Vector { _handler: TIM1_CC }, | ||
| 345 | Vector { _handler: TIM2 }, | ||
| 346 | Vector { _handler: TIM3 }, | ||
| 347 | Vector { _handler: TIM4 }, | ||
| 348 | Vector { _handler: I2C1_EV }, | ||
| 349 | Vector { _handler: I2C1_ER }, | ||
| 350 | Vector { _handler: I2C2_EV }, | ||
| 351 | Vector { _handler: I2C2_ER }, | ||
| 352 | Vector { _handler: SPI1 }, | ||
| 353 | Vector { _handler: SPI2 }, | ||
| 354 | Vector { _handler: USART1 }, | ||
| 355 | Vector { _handler: USART2 }, | ||
| 356 | Vector { _handler: USART3 }, | ||
| 357 | Vector { | ||
| 358 | _handler: EXTI15_10, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: RTC_Alarm, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: DFSDM1_FLT3, | ||
| 365 | }, | ||
| 366 | Vector { _handler: TIM8_BRK }, | ||
| 367 | Vector { _handler: TIM8_UP }, | ||
| 368 | Vector { | ||
| 369 | _handler: TIM8_TRG_COM, | ||
| 370 | }, | ||
| 371 | Vector { _handler: TIM8_CC }, | ||
| 372 | Vector { _handler: ADC3 }, | ||
| 373 | Vector { _handler: FMC }, | ||
| 374 | Vector { _handler: SDMMC1 }, | ||
| 375 | Vector { _handler: TIM5 }, | ||
| 376 | Vector { _handler: SPI3 }, | ||
| 377 | Vector { _handler: UART4 }, | ||
| 378 | Vector { _handler: UART5 }, | ||
| 379 | Vector { _handler: TIM6_DAC }, | ||
| 380 | Vector { _handler: TIM7 }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel1, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel2, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel3, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DMA2_Channel4, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DMA2_Channel5, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT0, | ||
| 398 | }, | ||
| 399 | Vector { | ||
| 400 | _handler: DFSDM1_FLT1, | ||
| 401 | }, | ||
| 402 | Vector { | ||
| 403 | _handler: DFSDM1_FLT2, | ||
| 404 | }, | ||
| 405 | Vector { _handler: COMP }, | ||
| 406 | Vector { _handler: LPTIM1 }, | ||
| 407 | Vector { _handler: LPTIM2 }, | ||
| 408 | Vector { _handler: OTG_FS }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel6, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel7, | ||
| 414 | }, | ||
| 415 | Vector { _handler: LPUART1 }, | ||
| 416 | Vector { _handler: QUADSPI }, | ||
| 417 | Vector { _handler: I2C3_EV }, | ||
| 418 | Vector { _handler: I2C3_ER }, | ||
| 419 | Vector { _handler: SAI1 }, | ||
| 420 | Vector { _handler: SAI2 }, | ||
| 421 | Vector { _handler: SWPMI1 }, | ||
| 422 | Vector { _handler: TSC }, | ||
| 423 | Vector { _handler: LCD }, | ||
| 424 | Vector { _handler: AES }, | ||
| 425 | Vector { _handler: RNG }, | ||
| 426 | Vector { _handler: FPU }, | ||
| 427 | ]; | ||
| 428 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 429 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 430 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 431 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l486zg.rs b/embassy-stm32/src/chip/stm32l486zg.rs index e6b55967e..27ce58704 100644 --- a/embassy-stm32/src/chip/stm32l486zg.rs +++ b/embassy-stm32/src/chip/stm32l486zg.rs | |||
| @@ -1,21 +1,431 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, | 12 | PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, |
| 13 | RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, | 13 | QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, |
| 14 | TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, | 14 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 15 | USB_OTG_FS, WWDG | 15 | USART3, USB_OTG_FS, WWDG |
| 16 | ); | 16 | ); |
| 17 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 18 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 17 | pub const GPIO_BASE: usize = 0x48000000; | 19 | pub const GPIO_BASE: usize = 0x48000000; |
| 18 | pub const GPIO_STRIDE: usize = 0x400; | 20 | pub const GPIO_STRIDE: usize = 0x400; |
| 21 | |||
| 22 | pub mod interrupt { | ||
| 23 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 24 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 25 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 26 | |||
| 27 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 28 | #[allow(non_camel_case_types)] | ||
| 29 | enum InterruptEnum { | ||
| 30 | ADC1_2 = 18, | ||
| 31 | ADC3 = 47, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DFSDM1_FLT0 = 61, | ||
| 39 | DFSDM1_FLT1 = 62, | ||
| 40 | DFSDM1_FLT2 = 63, | ||
| 41 | DFSDM1_FLT3 = 42, | ||
| 42 | DMA1_Channel1 = 11, | ||
| 43 | DMA1_Channel2 = 12, | ||
| 44 | DMA1_Channel3 = 13, | ||
| 45 | DMA1_Channel4 = 14, | ||
| 46 | DMA1_Channel5 = 15, | ||
| 47 | DMA1_Channel6 = 16, | ||
| 48 | DMA1_Channel7 = 17, | ||
| 49 | DMA2_Channel1 = 56, | ||
| 50 | DMA2_Channel2 = 57, | ||
| 51 | DMA2_Channel3 = 58, | ||
| 52 | DMA2_Channel4 = 59, | ||
| 53 | DMA2_Channel5 = 60, | ||
| 54 | DMA2_Channel6 = 68, | ||
| 55 | DMA2_Channel7 = 69, | ||
| 56 | EXTI0 = 6, | ||
| 57 | EXTI1 = 7, | ||
| 58 | EXTI15_10 = 40, | ||
| 59 | EXTI2 = 8, | ||
| 60 | EXTI3 = 9, | ||
| 61 | EXTI4 = 10, | ||
| 62 | EXTI9_5 = 23, | ||
| 63 | FLASH = 4, | ||
| 64 | FMC = 48, | ||
| 65 | FPU = 81, | ||
| 66 | I2C1_ER = 32, | ||
| 67 | I2C1_EV = 31, | ||
| 68 | I2C2_ER = 34, | ||
| 69 | I2C2_EV = 33, | ||
| 70 | I2C3_ER = 73, | ||
| 71 | I2C3_EV = 72, | ||
| 72 | LCD = 78, | ||
| 73 | LPTIM1 = 65, | ||
| 74 | LPTIM2 = 66, | ||
| 75 | LPUART1 = 70, | ||
| 76 | OTG_FS = 67, | ||
| 77 | PVD_PVM = 1, | ||
| 78 | QUADSPI = 71, | ||
| 79 | RCC = 5, | ||
| 80 | RNG = 80, | ||
| 81 | RTC_Alarm = 41, | ||
| 82 | RTC_WKUP = 3, | ||
| 83 | SAI1 = 74, | ||
| 84 | SAI2 = 75, | ||
| 85 | SDMMC1 = 49, | ||
| 86 | SPI1 = 35, | ||
| 87 | SPI2 = 36, | ||
| 88 | SPI3 = 51, | ||
| 89 | SWPMI1 = 76, | ||
| 90 | TAMP_STAMP = 2, | ||
| 91 | TIM1_BRK_TIM15 = 24, | ||
| 92 | TIM1_CC = 27, | ||
| 93 | TIM1_TRG_COM_TIM17 = 26, | ||
| 94 | TIM1_UP_TIM16 = 25, | ||
| 95 | TIM2 = 28, | ||
| 96 | TIM3 = 29, | ||
| 97 | TIM4 = 30, | ||
| 98 | TIM5 = 50, | ||
| 99 | TIM6_DAC = 54, | ||
| 100 | TIM7 = 55, | ||
| 101 | TIM8_BRK = 43, | ||
| 102 | TIM8_CC = 46, | ||
| 103 | TIM8_TRG_COM = 45, | ||
| 104 | TIM8_UP = 44, | ||
| 105 | TSC = 77, | ||
| 106 | UART4 = 52, | ||
| 107 | UART5 = 53, | ||
| 108 | USART1 = 37, | ||
| 109 | USART2 = 38, | ||
| 110 | USART3 = 39, | ||
| 111 | WWDG = 0, | ||
| 112 | } | ||
| 113 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 114 | #[inline(always)] | ||
| 115 | fn number(self) -> u16 { | ||
| 116 | self as u16 | ||
| 117 | } | ||
| 118 | } | ||
| 119 | |||
| 120 | declare!(ADC1_2); | ||
| 121 | declare!(ADC3); | ||
| 122 | declare!(AES); | ||
| 123 | declare!(CAN1_RX0); | ||
| 124 | declare!(CAN1_RX1); | ||
| 125 | declare!(CAN1_SCE); | ||
| 126 | declare!(CAN1_TX); | ||
| 127 | declare!(COMP); | ||
| 128 | declare!(DFSDM1_FLT0); | ||
| 129 | declare!(DFSDM1_FLT1); | ||
| 130 | declare!(DFSDM1_FLT2); | ||
| 131 | declare!(DFSDM1_FLT3); | ||
| 132 | declare!(DMA1_Channel1); | ||
| 133 | declare!(DMA1_Channel2); | ||
| 134 | declare!(DMA1_Channel3); | ||
| 135 | declare!(DMA1_Channel4); | ||
| 136 | declare!(DMA1_Channel5); | ||
| 137 | declare!(DMA1_Channel6); | ||
| 138 | declare!(DMA1_Channel7); | ||
| 139 | declare!(DMA2_Channel1); | ||
| 140 | declare!(DMA2_Channel2); | ||
| 141 | declare!(DMA2_Channel3); | ||
| 142 | declare!(DMA2_Channel4); | ||
| 143 | declare!(DMA2_Channel5); | ||
| 144 | declare!(DMA2_Channel6); | ||
| 145 | declare!(DMA2_Channel7); | ||
| 146 | declare!(EXTI0); | ||
| 147 | declare!(EXTI1); | ||
| 148 | declare!(EXTI15_10); | ||
| 149 | declare!(EXTI2); | ||
| 150 | declare!(EXTI3); | ||
| 151 | declare!(EXTI4); | ||
| 152 | declare!(EXTI9_5); | ||
| 153 | declare!(FLASH); | ||
| 154 | declare!(FMC); | ||
| 155 | declare!(FPU); | ||
| 156 | declare!(I2C1_ER); | ||
| 157 | declare!(I2C1_EV); | ||
| 158 | declare!(I2C2_ER); | ||
| 159 | declare!(I2C2_EV); | ||
| 160 | declare!(I2C3_ER); | ||
| 161 | declare!(I2C3_EV); | ||
| 162 | declare!(LCD); | ||
| 163 | declare!(LPTIM1); | ||
| 164 | declare!(LPTIM2); | ||
| 165 | declare!(LPUART1); | ||
| 166 | declare!(OTG_FS); | ||
| 167 | declare!(PVD_PVM); | ||
| 168 | declare!(QUADSPI); | ||
| 169 | declare!(RCC); | ||
| 170 | declare!(RNG); | ||
| 171 | declare!(RTC_Alarm); | ||
| 172 | declare!(RTC_WKUP); | ||
| 173 | declare!(SAI1); | ||
| 174 | declare!(SAI2); | ||
| 175 | declare!(SDMMC1); | ||
| 176 | declare!(SPI1); | ||
| 177 | declare!(SPI2); | ||
| 178 | declare!(SPI3); | ||
| 179 | declare!(SWPMI1); | ||
| 180 | declare!(TAMP_STAMP); | ||
| 181 | declare!(TIM1_BRK_TIM15); | ||
| 182 | declare!(TIM1_CC); | ||
| 183 | declare!(TIM1_TRG_COM_TIM17); | ||
| 184 | declare!(TIM1_UP_TIM16); | ||
| 185 | declare!(TIM2); | ||
| 186 | declare!(TIM3); | ||
| 187 | declare!(TIM4); | ||
| 188 | declare!(TIM5); | ||
| 189 | declare!(TIM6_DAC); | ||
| 190 | declare!(TIM7); | ||
| 191 | declare!(TIM8_BRK); | ||
| 192 | declare!(TIM8_CC); | ||
| 193 | declare!(TIM8_TRG_COM); | ||
| 194 | declare!(TIM8_UP); | ||
| 195 | declare!(TSC); | ||
| 196 | declare!(UART4); | ||
| 197 | declare!(UART5); | ||
| 198 | declare!(USART1); | ||
| 199 | declare!(USART2); | ||
| 200 | declare!(USART3); | ||
| 201 | declare!(WWDG); | ||
| 202 | } | ||
| 203 | mod interrupt_vector { | ||
| 204 | extern "C" { | ||
| 205 | fn ADC1_2(); | ||
| 206 | fn ADC3(); | ||
| 207 | fn AES(); | ||
| 208 | fn CAN1_RX0(); | ||
| 209 | fn CAN1_RX1(); | ||
| 210 | fn CAN1_SCE(); | ||
| 211 | fn CAN1_TX(); | ||
| 212 | fn COMP(); | ||
| 213 | fn DFSDM1_FLT0(); | ||
| 214 | fn DFSDM1_FLT1(); | ||
| 215 | fn DFSDM1_FLT2(); | ||
| 216 | fn DFSDM1_FLT3(); | ||
| 217 | fn DMA1_Channel1(); | ||
| 218 | fn DMA1_Channel2(); | ||
| 219 | fn DMA1_Channel3(); | ||
| 220 | fn DMA1_Channel4(); | ||
| 221 | fn DMA1_Channel5(); | ||
| 222 | fn DMA1_Channel6(); | ||
| 223 | fn DMA1_Channel7(); | ||
| 224 | fn DMA2_Channel1(); | ||
| 225 | fn DMA2_Channel2(); | ||
| 226 | fn DMA2_Channel3(); | ||
| 227 | fn DMA2_Channel4(); | ||
| 228 | fn DMA2_Channel5(); | ||
| 229 | fn DMA2_Channel6(); | ||
| 230 | fn DMA2_Channel7(); | ||
| 231 | fn EXTI0(); | ||
| 232 | fn EXTI1(); | ||
| 233 | fn EXTI15_10(); | ||
| 234 | fn EXTI2(); | ||
| 235 | fn EXTI3(); | ||
| 236 | fn EXTI4(); | ||
| 237 | fn EXTI9_5(); | ||
| 238 | fn FLASH(); | ||
| 239 | fn FMC(); | ||
| 240 | fn FPU(); | ||
| 241 | fn I2C1_ER(); | ||
| 242 | fn I2C1_EV(); | ||
| 243 | fn I2C2_ER(); | ||
| 244 | fn I2C2_EV(); | ||
| 245 | fn I2C3_ER(); | ||
| 246 | fn I2C3_EV(); | ||
| 247 | fn LCD(); | ||
| 248 | fn LPTIM1(); | ||
| 249 | fn LPTIM2(); | ||
| 250 | fn LPUART1(); | ||
| 251 | fn OTG_FS(); | ||
| 252 | fn PVD_PVM(); | ||
| 253 | fn QUADSPI(); | ||
| 254 | fn RCC(); | ||
| 255 | fn RNG(); | ||
| 256 | fn RTC_Alarm(); | ||
| 257 | fn RTC_WKUP(); | ||
| 258 | fn SAI1(); | ||
| 259 | fn SAI2(); | ||
| 260 | fn SDMMC1(); | ||
| 261 | fn SPI1(); | ||
| 262 | fn SPI2(); | ||
| 263 | fn SPI3(); | ||
| 264 | fn SWPMI1(); | ||
| 265 | fn TAMP_STAMP(); | ||
| 266 | fn TIM1_BRK_TIM15(); | ||
| 267 | fn TIM1_CC(); | ||
| 268 | fn TIM1_TRG_COM_TIM17(); | ||
| 269 | fn TIM1_UP_TIM16(); | ||
| 270 | fn TIM2(); | ||
| 271 | fn TIM3(); | ||
| 272 | fn TIM4(); | ||
| 273 | fn TIM5(); | ||
| 274 | fn TIM6_DAC(); | ||
| 275 | fn TIM7(); | ||
| 276 | fn TIM8_BRK(); | ||
| 277 | fn TIM8_CC(); | ||
| 278 | fn TIM8_TRG_COM(); | ||
| 279 | fn TIM8_UP(); | ||
| 280 | fn TSC(); | ||
| 281 | fn UART4(); | ||
| 282 | fn UART5(); | ||
| 283 | fn USART1(); | ||
| 284 | fn USART2(); | ||
| 285 | fn USART3(); | ||
| 286 | fn WWDG(); | ||
| 287 | } | ||
| 288 | pub union Vector { | ||
| 289 | _handler: unsafe extern "C" fn(), | ||
| 290 | _reserved: u32, | ||
| 291 | } | ||
| 292 | #[link_section = ".vector_table.interrupts"] | ||
| 293 | #[no_mangle] | ||
| 294 | pub static __INTERRUPTS: [Vector; 82] = [ | ||
| 295 | Vector { _handler: WWDG }, | ||
| 296 | Vector { _handler: PVD_PVM }, | ||
| 297 | Vector { | ||
| 298 | _handler: TAMP_STAMP, | ||
| 299 | }, | ||
| 300 | Vector { _handler: RTC_WKUP }, | ||
| 301 | Vector { _handler: FLASH }, | ||
| 302 | Vector { _handler: RCC }, | ||
| 303 | Vector { _handler: EXTI0 }, | ||
| 304 | Vector { _handler: EXTI1 }, | ||
| 305 | Vector { _handler: EXTI2 }, | ||
| 306 | Vector { _handler: EXTI3 }, | ||
| 307 | Vector { _handler: EXTI4 }, | ||
| 308 | Vector { | ||
| 309 | _handler: DMA1_Channel1, | ||
| 310 | }, | ||
| 311 | Vector { | ||
| 312 | _handler: DMA1_Channel2, | ||
| 313 | }, | ||
| 314 | Vector { | ||
| 315 | _handler: DMA1_Channel3, | ||
| 316 | }, | ||
| 317 | Vector { | ||
| 318 | _handler: DMA1_Channel4, | ||
| 319 | }, | ||
| 320 | Vector { | ||
| 321 | _handler: DMA1_Channel5, | ||
| 322 | }, | ||
| 323 | Vector { | ||
| 324 | _handler: DMA1_Channel6, | ||
| 325 | }, | ||
| 326 | Vector { | ||
| 327 | _handler: DMA1_Channel7, | ||
| 328 | }, | ||
| 329 | Vector { _handler: ADC1_2 }, | ||
| 330 | Vector { _handler: CAN1_TX }, | ||
| 331 | Vector { _handler: CAN1_RX0 }, | ||
| 332 | Vector { _handler: CAN1_RX1 }, | ||
| 333 | Vector { _handler: CAN1_SCE }, | ||
| 334 | Vector { _handler: EXTI9_5 }, | ||
| 335 | Vector { | ||
| 336 | _handler: TIM1_BRK_TIM15, | ||
| 337 | }, | ||
| 338 | Vector { | ||
| 339 | _handler: TIM1_UP_TIM16, | ||
| 340 | }, | ||
| 341 | Vector { | ||
| 342 | _handler: TIM1_TRG_COM_TIM17, | ||
| 343 | }, | ||
| 344 | Vector { _handler: TIM1_CC }, | ||
| 345 | Vector { _handler: TIM2 }, | ||
| 346 | Vector { _handler: TIM3 }, | ||
| 347 | Vector { _handler: TIM4 }, | ||
| 348 | Vector { _handler: I2C1_EV }, | ||
| 349 | Vector { _handler: I2C1_ER }, | ||
| 350 | Vector { _handler: I2C2_EV }, | ||
| 351 | Vector { _handler: I2C2_ER }, | ||
| 352 | Vector { _handler: SPI1 }, | ||
| 353 | Vector { _handler: SPI2 }, | ||
| 354 | Vector { _handler: USART1 }, | ||
| 355 | Vector { _handler: USART2 }, | ||
| 356 | Vector { _handler: USART3 }, | ||
| 357 | Vector { | ||
| 358 | _handler: EXTI15_10, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: RTC_Alarm, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: DFSDM1_FLT3, | ||
| 365 | }, | ||
| 366 | Vector { _handler: TIM8_BRK }, | ||
| 367 | Vector { _handler: TIM8_UP }, | ||
| 368 | Vector { | ||
| 369 | _handler: TIM8_TRG_COM, | ||
| 370 | }, | ||
| 371 | Vector { _handler: TIM8_CC }, | ||
| 372 | Vector { _handler: ADC3 }, | ||
| 373 | Vector { _handler: FMC }, | ||
| 374 | Vector { _handler: SDMMC1 }, | ||
| 375 | Vector { _handler: TIM5 }, | ||
| 376 | Vector { _handler: SPI3 }, | ||
| 377 | Vector { _handler: UART4 }, | ||
| 378 | Vector { _handler: UART5 }, | ||
| 379 | Vector { _handler: TIM6_DAC }, | ||
| 380 | Vector { _handler: TIM7 }, | ||
| 381 | Vector { | ||
| 382 | _handler: DMA2_Channel1, | ||
| 383 | }, | ||
| 384 | Vector { | ||
| 385 | _handler: DMA2_Channel2, | ||
| 386 | }, | ||
| 387 | Vector { | ||
| 388 | _handler: DMA2_Channel3, | ||
| 389 | }, | ||
| 390 | Vector { | ||
| 391 | _handler: DMA2_Channel4, | ||
| 392 | }, | ||
| 393 | Vector { | ||
| 394 | _handler: DMA2_Channel5, | ||
| 395 | }, | ||
| 396 | Vector { | ||
| 397 | _handler: DFSDM1_FLT0, | ||
| 398 | }, | ||
| 399 | Vector { | ||
| 400 | _handler: DFSDM1_FLT1, | ||
| 401 | }, | ||
| 402 | Vector { | ||
| 403 | _handler: DFSDM1_FLT2, | ||
| 404 | }, | ||
| 405 | Vector { _handler: COMP }, | ||
| 406 | Vector { _handler: LPTIM1 }, | ||
| 407 | Vector { _handler: LPTIM2 }, | ||
| 408 | Vector { _handler: OTG_FS }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel6, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel7, | ||
| 414 | }, | ||
| 415 | Vector { _handler: LPUART1 }, | ||
| 416 | Vector { _handler: QUADSPI }, | ||
| 417 | Vector { _handler: I2C3_EV }, | ||
| 418 | Vector { _handler: I2C3_ER }, | ||
| 419 | Vector { _handler: SAI1 }, | ||
| 420 | Vector { _handler: SAI2 }, | ||
| 421 | Vector { _handler: SWPMI1 }, | ||
| 422 | Vector { _handler: TSC }, | ||
| 423 | Vector { _handler: LCD }, | ||
| 424 | Vector { _handler: AES }, | ||
| 425 | Vector { _handler: RNG }, | ||
| 426 | Vector { _handler: FPU }, | ||
| 427 | ]; | ||
| 428 | } | ||
| 19 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 429 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 20 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 430 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 21 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 431 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l496ae.rs b/embassy-stm32/src/chip/stm32l496ae.rs index 5200ecd80..e54e0774d 100644 --- a/embassy-stm32/src/chip/stm32l496ae.rs +++ b/embassy-stm32/src/chip/stm32l496ae.rs | |||
| @@ -1,12 +1,12 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, |
| 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, | 5 | PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, |
| 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, | 6 | PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, |
| 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, | 7 | PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, |
| 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, | 8 | PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, |
| 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, | 9 | PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| @@ -15,8 +15,451 @@ peripherals!( | |||
| 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, | 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 16 | USART3, USB_OTG_FS, WWDG | 16 | USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | ADC3 = 47, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | CAN2_RX0 = 87, | ||
| 38 | CAN2_RX1 = 88, | ||
| 39 | CAN2_SCE = 89, | ||
| 40 | CAN2_TX = 86, | ||
| 41 | COMP = 64, | ||
| 42 | CRS = 82, | ||
| 43 | DCMI = 85, | ||
| 44 | DFSDM1_FLT0 = 61, | ||
| 45 | DFSDM1_FLT1 = 62, | ||
| 46 | DFSDM1_FLT2 = 63, | ||
| 47 | DFSDM1_FLT3 = 42, | ||
| 48 | DMA1_Channel1 = 11, | ||
| 49 | DMA1_Channel2 = 12, | ||
| 50 | DMA1_Channel3 = 13, | ||
| 51 | DMA1_Channel4 = 14, | ||
| 52 | DMA1_Channel5 = 15, | ||
| 53 | DMA1_Channel6 = 16, | ||
| 54 | DMA1_Channel7 = 17, | ||
| 55 | DMA2D = 90, | ||
| 56 | DMA2_Channel1 = 56, | ||
| 57 | DMA2_Channel2 = 57, | ||
| 58 | DMA2_Channel3 = 58, | ||
| 59 | DMA2_Channel4 = 59, | ||
| 60 | DMA2_Channel5 = 60, | ||
| 61 | DMA2_Channel6 = 68, | ||
| 62 | DMA2_Channel7 = 69, | ||
| 63 | EXTI0 = 6, | ||
| 64 | EXTI1 = 7, | ||
| 65 | EXTI15_10 = 40, | ||
| 66 | EXTI2 = 8, | ||
| 67 | EXTI3 = 9, | ||
| 68 | EXTI4 = 10, | ||
| 69 | EXTI9_5 = 23, | ||
| 70 | FLASH = 4, | ||
| 71 | FMC = 48, | ||
| 72 | FPU = 81, | ||
| 73 | I2C1_ER = 32, | ||
| 74 | I2C1_EV = 31, | ||
| 75 | I2C2_ER = 34, | ||
| 76 | I2C2_EV = 33, | ||
| 77 | I2C3_ER = 73, | ||
| 78 | I2C3_EV = 72, | ||
| 79 | I2C4_ER = 84, | ||
| 80 | I2C4_EV = 83, | ||
| 81 | LCD = 78, | ||
| 82 | LPTIM1 = 65, | ||
| 83 | LPTIM2 = 66, | ||
| 84 | LPUART1 = 70, | ||
| 85 | OTG_FS = 67, | ||
| 86 | PVD_PVM = 1, | ||
| 87 | QUADSPI = 71, | ||
| 88 | RCC = 5, | ||
| 89 | RNG = 80, | ||
| 90 | RTC_Alarm = 41, | ||
| 91 | RTC_WKUP = 3, | ||
| 92 | SAI1 = 74, | ||
| 93 | SAI2 = 75, | ||
| 94 | SDMMC1 = 49, | ||
| 95 | SPI1 = 35, | ||
| 96 | SPI2 = 36, | ||
| 97 | SPI3 = 51, | ||
| 98 | SWPMI1 = 76, | ||
| 99 | TAMP_STAMP = 2, | ||
| 100 | TIM1_BRK_TIM15 = 24, | ||
| 101 | TIM1_CC = 27, | ||
| 102 | TIM1_TRG_COM_TIM17 = 26, | ||
| 103 | TIM1_UP_TIM16 = 25, | ||
| 104 | TIM2 = 28, | ||
| 105 | TIM3 = 29, | ||
| 106 | TIM4 = 30, | ||
| 107 | TIM5 = 50, | ||
| 108 | TIM6_DAC = 54, | ||
| 109 | TIM7 = 55, | ||
| 110 | TIM8_BRK = 43, | ||
| 111 | TIM8_CC = 46, | ||
| 112 | TIM8_TRG_COM = 45, | ||
| 113 | TIM8_UP = 44, | ||
| 114 | TSC = 77, | ||
| 115 | UART4 = 52, | ||
| 116 | UART5 = 53, | ||
| 117 | USART1 = 37, | ||
| 118 | USART2 = 38, | ||
| 119 | USART3 = 39, | ||
| 120 | WWDG = 0, | ||
| 121 | } | ||
| 122 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 123 | #[inline(always)] | ||
| 124 | fn number(self) -> u16 { | ||
| 125 | self as u16 | ||
| 126 | } | ||
| 127 | } | ||
| 128 | |||
| 129 | declare!(ADC1_2); | ||
| 130 | declare!(ADC3); | ||
| 131 | declare!(CAN1_RX0); | ||
| 132 | declare!(CAN1_RX1); | ||
| 133 | declare!(CAN1_SCE); | ||
| 134 | declare!(CAN1_TX); | ||
| 135 | declare!(CAN2_RX0); | ||
| 136 | declare!(CAN2_RX1); | ||
| 137 | declare!(CAN2_SCE); | ||
| 138 | declare!(CAN2_TX); | ||
| 139 | declare!(COMP); | ||
| 140 | declare!(CRS); | ||
| 141 | declare!(DCMI); | ||
| 142 | declare!(DFSDM1_FLT0); | ||
| 143 | declare!(DFSDM1_FLT1); | ||
| 144 | declare!(DFSDM1_FLT2); | ||
| 145 | declare!(DFSDM1_FLT3); | ||
| 146 | declare!(DMA1_Channel1); | ||
| 147 | declare!(DMA1_Channel2); | ||
| 148 | declare!(DMA1_Channel3); | ||
| 149 | declare!(DMA1_Channel4); | ||
| 150 | declare!(DMA1_Channel5); | ||
| 151 | declare!(DMA1_Channel6); | ||
| 152 | declare!(DMA1_Channel7); | ||
| 153 | declare!(DMA2D); | ||
| 154 | declare!(DMA2_Channel1); | ||
| 155 | declare!(DMA2_Channel2); | ||
| 156 | declare!(DMA2_Channel3); | ||
| 157 | declare!(DMA2_Channel4); | ||
| 158 | declare!(DMA2_Channel5); | ||
| 159 | declare!(DMA2_Channel6); | ||
| 160 | declare!(DMA2_Channel7); | ||
| 161 | declare!(EXTI0); | ||
| 162 | declare!(EXTI1); | ||
| 163 | declare!(EXTI15_10); | ||
| 164 | declare!(EXTI2); | ||
| 165 | declare!(EXTI3); | ||
| 166 | declare!(EXTI4); | ||
| 167 | declare!(EXTI9_5); | ||
| 168 | declare!(FLASH); | ||
| 169 | declare!(FMC); | ||
| 170 | declare!(FPU); | ||
| 171 | declare!(I2C1_ER); | ||
| 172 | declare!(I2C1_EV); | ||
| 173 | declare!(I2C2_ER); | ||
| 174 | declare!(I2C2_EV); | ||
| 175 | declare!(I2C3_ER); | ||
| 176 | declare!(I2C3_EV); | ||
| 177 | declare!(I2C4_ER); | ||
| 178 | declare!(I2C4_EV); | ||
| 179 | declare!(LCD); | ||
| 180 | declare!(LPTIM1); | ||
| 181 | declare!(LPTIM2); | ||
| 182 | declare!(LPUART1); | ||
| 183 | declare!(OTG_FS); | ||
| 184 | declare!(PVD_PVM); | ||
| 185 | declare!(QUADSPI); | ||
| 186 | declare!(RCC); | ||
| 187 | declare!(RNG); | ||
| 188 | declare!(RTC_Alarm); | ||
| 189 | declare!(RTC_WKUP); | ||
| 190 | declare!(SAI1); | ||
| 191 | declare!(SAI2); | ||
| 192 | declare!(SDMMC1); | ||
| 193 | declare!(SPI1); | ||
| 194 | declare!(SPI2); | ||
| 195 | declare!(SPI3); | ||
| 196 | declare!(SWPMI1); | ||
| 197 | declare!(TAMP_STAMP); | ||
| 198 | declare!(TIM1_BRK_TIM15); | ||
| 199 | declare!(TIM1_CC); | ||
| 200 | declare!(TIM1_TRG_COM_TIM17); | ||
| 201 | declare!(TIM1_UP_TIM16); | ||
| 202 | declare!(TIM2); | ||
| 203 | declare!(TIM3); | ||
| 204 | declare!(TIM4); | ||
| 205 | declare!(TIM5); | ||
| 206 | declare!(TIM6_DAC); | ||
| 207 | declare!(TIM7); | ||
| 208 | declare!(TIM8_BRK); | ||
| 209 | declare!(TIM8_CC); | ||
| 210 | declare!(TIM8_TRG_COM); | ||
| 211 | declare!(TIM8_UP); | ||
| 212 | declare!(TSC); | ||
| 213 | declare!(UART4); | ||
| 214 | declare!(UART5); | ||
| 215 | declare!(USART1); | ||
| 216 | declare!(USART2); | ||
| 217 | declare!(USART3); | ||
| 218 | declare!(WWDG); | ||
| 219 | } | ||
| 220 | mod interrupt_vector { | ||
| 221 | extern "C" { | ||
| 222 | fn ADC1_2(); | ||
| 223 | fn ADC3(); | ||
| 224 | fn CAN1_RX0(); | ||
| 225 | fn CAN1_RX1(); | ||
| 226 | fn CAN1_SCE(); | ||
| 227 | fn CAN1_TX(); | ||
| 228 | fn CAN2_RX0(); | ||
| 229 | fn CAN2_RX1(); | ||
| 230 | fn CAN2_SCE(); | ||
| 231 | fn CAN2_TX(); | ||
| 232 | fn COMP(); | ||
| 233 | fn CRS(); | ||
| 234 | fn DCMI(); | ||
| 235 | fn DFSDM1_FLT0(); | ||
| 236 | fn DFSDM1_FLT1(); | ||
| 237 | fn DFSDM1_FLT2(); | ||
| 238 | fn DFSDM1_FLT3(); | ||
| 239 | fn DMA1_Channel1(); | ||
| 240 | fn DMA1_Channel2(); | ||
| 241 | fn DMA1_Channel3(); | ||
| 242 | fn DMA1_Channel4(); | ||
| 243 | fn DMA1_Channel5(); | ||
| 244 | fn DMA1_Channel6(); | ||
| 245 | fn DMA1_Channel7(); | ||
| 246 | fn DMA2D(); | ||
| 247 | fn DMA2_Channel1(); | ||
| 248 | fn DMA2_Channel2(); | ||
| 249 | fn DMA2_Channel3(); | ||
| 250 | fn DMA2_Channel4(); | ||
| 251 | fn DMA2_Channel5(); | ||
| 252 | fn DMA2_Channel6(); | ||
| 253 | fn DMA2_Channel7(); | ||
| 254 | fn EXTI0(); | ||
| 255 | fn EXTI1(); | ||
| 256 | fn EXTI15_10(); | ||
| 257 | fn EXTI2(); | ||
| 258 | fn EXTI3(); | ||
| 259 | fn EXTI4(); | ||
| 260 | fn EXTI9_5(); | ||
| 261 | fn FLASH(); | ||
| 262 | fn FMC(); | ||
| 263 | fn FPU(); | ||
| 264 | fn I2C1_ER(); | ||
| 265 | fn I2C1_EV(); | ||
| 266 | fn I2C2_ER(); | ||
| 267 | fn I2C2_EV(); | ||
| 268 | fn I2C3_ER(); | ||
| 269 | fn I2C3_EV(); | ||
| 270 | fn I2C4_ER(); | ||
| 271 | fn I2C4_EV(); | ||
| 272 | fn LCD(); | ||
| 273 | fn LPTIM1(); | ||
| 274 | fn LPTIM2(); | ||
| 275 | fn LPUART1(); | ||
| 276 | fn OTG_FS(); | ||
| 277 | fn PVD_PVM(); | ||
| 278 | fn QUADSPI(); | ||
| 279 | fn RCC(); | ||
| 280 | fn RNG(); | ||
| 281 | fn RTC_Alarm(); | ||
| 282 | fn RTC_WKUP(); | ||
| 283 | fn SAI1(); | ||
| 284 | fn SAI2(); | ||
| 285 | fn SDMMC1(); | ||
| 286 | fn SPI1(); | ||
| 287 | fn SPI2(); | ||
| 288 | fn SPI3(); | ||
| 289 | fn SWPMI1(); | ||
| 290 | fn TAMP_STAMP(); | ||
| 291 | fn TIM1_BRK_TIM15(); | ||
| 292 | fn TIM1_CC(); | ||
| 293 | fn TIM1_TRG_COM_TIM17(); | ||
| 294 | fn TIM1_UP_TIM16(); | ||
| 295 | fn TIM2(); | ||
| 296 | fn TIM3(); | ||
| 297 | fn TIM4(); | ||
| 298 | fn TIM5(); | ||
| 299 | fn TIM6_DAC(); | ||
| 300 | fn TIM7(); | ||
| 301 | fn TIM8_BRK(); | ||
| 302 | fn TIM8_CC(); | ||
| 303 | fn TIM8_TRG_COM(); | ||
| 304 | fn TIM8_UP(); | ||
| 305 | fn TSC(); | ||
| 306 | fn UART4(); | ||
| 307 | fn UART5(); | ||
| 308 | fn USART1(); | ||
| 309 | fn USART2(); | ||
| 310 | fn USART3(); | ||
| 311 | fn WWDG(); | ||
| 312 | } | ||
| 313 | pub union Vector { | ||
| 314 | _handler: unsafe extern "C" fn(), | ||
| 315 | _reserved: u32, | ||
| 316 | } | ||
| 317 | #[link_section = ".vector_table.interrupts"] | ||
| 318 | #[no_mangle] | ||
| 319 | pub static __INTERRUPTS: [Vector; 91] = [ | ||
| 320 | Vector { _handler: WWDG }, | ||
| 321 | Vector { _handler: PVD_PVM }, | ||
| 322 | Vector { | ||
| 323 | _handler: TAMP_STAMP, | ||
| 324 | }, | ||
| 325 | Vector { _handler: RTC_WKUP }, | ||
| 326 | Vector { _handler: FLASH }, | ||
| 327 | Vector { _handler: RCC }, | ||
| 328 | Vector { _handler: EXTI0 }, | ||
| 329 | Vector { _handler: EXTI1 }, | ||
| 330 | Vector { _handler: EXTI2 }, | ||
| 331 | Vector { _handler: EXTI3 }, | ||
| 332 | Vector { _handler: EXTI4 }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel1, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel2, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel3, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel4, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel5, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel6, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA1_Channel7, | ||
| 353 | }, | ||
| 354 | Vector { _handler: ADC1_2 }, | ||
| 355 | Vector { _handler: CAN1_TX }, | ||
| 356 | Vector { _handler: CAN1_RX0 }, | ||
| 357 | Vector { _handler: CAN1_RX1 }, | ||
| 358 | Vector { _handler: CAN1_SCE }, | ||
| 359 | Vector { _handler: EXTI9_5 }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_BRK_TIM15, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_UP_TIM16, | ||
| 365 | }, | ||
| 366 | Vector { | ||
| 367 | _handler: TIM1_TRG_COM_TIM17, | ||
| 368 | }, | ||
| 369 | Vector { _handler: TIM1_CC }, | ||
| 370 | Vector { _handler: TIM2 }, | ||
| 371 | Vector { _handler: TIM3 }, | ||
| 372 | Vector { _handler: TIM4 }, | ||
| 373 | Vector { _handler: I2C1_EV }, | ||
| 374 | Vector { _handler: I2C1_ER }, | ||
| 375 | Vector { _handler: I2C2_EV }, | ||
| 376 | Vector { _handler: I2C2_ER }, | ||
| 377 | Vector { _handler: SPI1 }, | ||
| 378 | Vector { _handler: SPI2 }, | ||
| 379 | Vector { _handler: USART1 }, | ||
| 380 | Vector { _handler: USART2 }, | ||
| 381 | Vector { _handler: USART3 }, | ||
| 382 | Vector { | ||
| 383 | _handler: EXTI15_10, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: RTC_Alarm, | ||
| 387 | }, | ||
| 388 | Vector { | ||
| 389 | _handler: DFSDM1_FLT3, | ||
| 390 | }, | ||
| 391 | Vector { _handler: TIM8_BRK }, | ||
| 392 | Vector { _handler: TIM8_UP }, | ||
| 393 | Vector { | ||
| 394 | _handler: TIM8_TRG_COM, | ||
| 395 | }, | ||
| 396 | Vector { _handler: TIM8_CC }, | ||
| 397 | Vector { _handler: ADC3 }, | ||
| 398 | Vector { _handler: FMC }, | ||
| 399 | Vector { _handler: SDMMC1 }, | ||
| 400 | Vector { _handler: TIM5 }, | ||
| 401 | Vector { _handler: SPI3 }, | ||
| 402 | Vector { _handler: UART4 }, | ||
| 403 | Vector { _handler: UART5 }, | ||
| 404 | Vector { _handler: TIM6_DAC }, | ||
| 405 | Vector { _handler: TIM7 }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel1, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel2, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel3, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel4, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel5, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT0, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT1, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DFSDM1_FLT2, | ||
| 429 | }, | ||
| 430 | Vector { _handler: COMP }, | ||
| 431 | Vector { _handler: LPTIM1 }, | ||
| 432 | Vector { _handler: LPTIM2 }, | ||
| 433 | Vector { _handler: OTG_FS }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel6, | ||
| 436 | }, | ||
| 437 | Vector { | ||
| 438 | _handler: DMA2_Channel7, | ||
| 439 | }, | ||
| 440 | Vector { _handler: LPUART1 }, | ||
| 441 | Vector { _handler: QUADSPI }, | ||
| 442 | Vector { _handler: I2C3_EV }, | ||
| 443 | Vector { _handler: I2C3_ER }, | ||
| 444 | Vector { _handler: SAI1 }, | ||
| 445 | Vector { _handler: SAI2 }, | ||
| 446 | Vector { _handler: SWPMI1 }, | ||
| 447 | Vector { _handler: TSC }, | ||
| 448 | Vector { _handler: LCD }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { _handler: RNG }, | ||
| 451 | Vector { _handler: FPU }, | ||
| 452 | Vector { _handler: CRS }, | ||
| 453 | Vector { _handler: I2C4_EV }, | ||
| 454 | Vector { _handler: I2C4_ER }, | ||
| 455 | Vector { _handler: DCMI }, | ||
| 456 | Vector { _handler: CAN2_TX }, | ||
| 457 | Vector { _handler: CAN2_RX0 }, | ||
| 458 | Vector { _handler: CAN2_RX1 }, | ||
| 459 | Vector { _handler: CAN2_SCE }, | ||
| 460 | Vector { _handler: DMA2D }, | ||
| 461 | ]; | ||
| 462 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 463 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 464 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 465 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l496ag.rs b/embassy-stm32/src/chip/stm32l496ag.rs index 5200ecd80..e54e0774d 100644 --- a/embassy-stm32/src/chip/stm32l496ag.rs +++ b/embassy-stm32/src/chip/stm32l496ag.rs | |||
| @@ -1,12 +1,12 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, |
| 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, | 5 | PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, |
| 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, | 6 | PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, |
| 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, | 7 | PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, |
| 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, | 8 | PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, |
| 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, | 9 | PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| @@ -15,8 +15,451 @@ peripherals!( | |||
| 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, | 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 16 | USART3, USB_OTG_FS, WWDG | 16 | USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | ADC3 = 47, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | CAN2_RX0 = 87, | ||
| 38 | CAN2_RX1 = 88, | ||
| 39 | CAN2_SCE = 89, | ||
| 40 | CAN2_TX = 86, | ||
| 41 | COMP = 64, | ||
| 42 | CRS = 82, | ||
| 43 | DCMI = 85, | ||
| 44 | DFSDM1_FLT0 = 61, | ||
| 45 | DFSDM1_FLT1 = 62, | ||
| 46 | DFSDM1_FLT2 = 63, | ||
| 47 | DFSDM1_FLT3 = 42, | ||
| 48 | DMA1_Channel1 = 11, | ||
| 49 | DMA1_Channel2 = 12, | ||
| 50 | DMA1_Channel3 = 13, | ||
| 51 | DMA1_Channel4 = 14, | ||
| 52 | DMA1_Channel5 = 15, | ||
| 53 | DMA1_Channel6 = 16, | ||
| 54 | DMA1_Channel7 = 17, | ||
| 55 | DMA2D = 90, | ||
| 56 | DMA2_Channel1 = 56, | ||
| 57 | DMA2_Channel2 = 57, | ||
| 58 | DMA2_Channel3 = 58, | ||
| 59 | DMA2_Channel4 = 59, | ||
| 60 | DMA2_Channel5 = 60, | ||
| 61 | DMA2_Channel6 = 68, | ||
| 62 | DMA2_Channel7 = 69, | ||
| 63 | EXTI0 = 6, | ||
| 64 | EXTI1 = 7, | ||
| 65 | EXTI15_10 = 40, | ||
| 66 | EXTI2 = 8, | ||
| 67 | EXTI3 = 9, | ||
| 68 | EXTI4 = 10, | ||
| 69 | EXTI9_5 = 23, | ||
| 70 | FLASH = 4, | ||
| 71 | FMC = 48, | ||
| 72 | FPU = 81, | ||
| 73 | I2C1_ER = 32, | ||
| 74 | I2C1_EV = 31, | ||
| 75 | I2C2_ER = 34, | ||
| 76 | I2C2_EV = 33, | ||
| 77 | I2C3_ER = 73, | ||
| 78 | I2C3_EV = 72, | ||
| 79 | I2C4_ER = 84, | ||
| 80 | I2C4_EV = 83, | ||
| 81 | LCD = 78, | ||
| 82 | LPTIM1 = 65, | ||
| 83 | LPTIM2 = 66, | ||
| 84 | LPUART1 = 70, | ||
| 85 | OTG_FS = 67, | ||
| 86 | PVD_PVM = 1, | ||
| 87 | QUADSPI = 71, | ||
| 88 | RCC = 5, | ||
| 89 | RNG = 80, | ||
| 90 | RTC_Alarm = 41, | ||
| 91 | RTC_WKUP = 3, | ||
| 92 | SAI1 = 74, | ||
| 93 | SAI2 = 75, | ||
| 94 | SDMMC1 = 49, | ||
| 95 | SPI1 = 35, | ||
| 96 | SPI2 = 36, | ||
| 97 | SPI3 = 51, | ||
| 98 | SWPMI1 = 76, | ||
| 99 | TAMP_STAMP = 2, | ||
| 100 | TIM1_BRK_TIM15 = 24, | ||
| 101 | TIM1_CC = 27, | ||
| 102 | TIM1_TRG_COM_TIM17 = 26, | ||
| 103 | TIM1_UP_TIM16 = 25, | ||
| 104 | TIM2 = 28, | ||
| 105 | TIM3 = 29, | ||
| 106 | TIM4 = 30, | ||
| 107 | TIM5 = 50, | ||
| 108 | TIM6_DAC = 54, | ||
| 109 | TIM7 = 55, | ||
| 110 | TIM8_BRK = 43, | ||
| 111 | TIM8_CC = 46, | ||
| 112 | TIM8_TRG_COM = 45, | ||
| 113 | TIM8_UP = 44, | ||
| 114 | TSC = 77, | ||
| 115 | UART4 = 52, | ||
| 116 | UART5 = 53, | ||
| 117 | USART1 = 37, | ||
| 118 | USART2 = 38, | ||
| 119 | USART3 = 39, | ||
| 120 | WWDG = 0, | ||
| 121 | } | ||
| 122 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 123 | #[inline(always)] | ||
| 124 | fn number(self) -> u16 { | ||
| 125 | self as u16 | ||
| 126 | } | ||
| 127 | } | ||
| 128 | |||
| 129 | declare!(ADC1_2); | ||
| 130 | declare!(ADC3); | ||
| 131 | declare!(CAN1_RX0); | ||
| 132 | declare!(CAN1_RX1); | ||
| 133 | declare!(CAN1_SCE); | ||
| 134 | declare!(CAN1_TX); | ||
| 135 | declare!(CAN2_RX0); | ||
| 136 | declare!(CAN2_RX1); | ||
| 137 | declare!(CAN2_SCE); | ||
| 138 | declare!(CAN2_TX); | ||
| 139 | declare!(COMP); | ||
| 140 | declare!(CRS); | ||
| 141 | declare!(DCMI); | ||
| 142 | declare!(DFSDM1_FLT0); | ||
| 143 | declare!(DFSDM1_FLT1); | ||
| 144 | declare!(DFSDM1_FLT2); | ||
| 145 | declare!(DFSDM1_FLT3); | ||
| 146 | declare!(DMA1_Channel1); | ||
| 147 | declare!(DMA1_Channel2); | ||
| 148 | declare!(DMA1_Channel3); | ||
| 149 | declare!(DMA1_Channel4); | ||
| 150 | declare!(DMA1_Channel5); | ||
| 151 | declare!(DMA1_Channel6); | ||
| 152 | declare!(DMA1_Channel7); | ||
| 153 | declare!(DMA2D); | ||
| 154 | declare!(DMA2_Channel1); | ||
| 155 | declare!(DMA2_Channel2); | ||
| 156 | declare!(DMA2_Channel3); | ||
| 157 | declare!(DMA2_Channel4); | ||
| 158 | declare!(DMA2_Channel5); | ||
| 159 | declare!(DMA2_Channel6); | ||
| 160 | declare!(DMA2_Channel7); | ||
| 161 | declare!(EXTI0); | ||
| 162 | declare!(EXTI1); | ||
| 163 | declare!(EXTI15_10); | ||
| 164 | declare!(EXTI2); | ||
| 165 | declare!(EXTI3); | ||
| 166 | declare!(EXTI4); | ||
| 167 | declare!(EXTI9_5); | ||
| 168 | declare!(FLASH); | ||
| 169 | declare!(FMC); | ||
| 170 | declare!(FPU); | ||
| 171 | declare!(I2C1_ER); | ||
| 172 | declare!(I2C1_EV); | ||
| 173 | declare!(I2C2_ER); | ||
| 174 | declare!(I2C2_EV); | ||
| 175 | declare!(I2C3_ER); | ||
| 176 | declare!(I2C3_EV); | ||
| 177 | declare!(I2C4_ER); | ||
| 178 | declare!(I2C4_EV); | ||
| 179 | declare!(LCD); | ||
| 180 | declare!(LPTIM1); | ||
| 181 | declare!(LPTIM2); | ||
| 182 | declare!(LPUART1); | ||
| 183 | declare!(OTG_FS); | ||
| 184 | declare!(PVD_PVM); | ||
| 185 | declare!(QUADSPI); | ||
| 186 | declare!(RCC); | ||
| 187 | declare!(RNG); | ||
| 188 | declare!(RTC_Alarm); | ||
| 189 | declare!(RTC_WKUP); | ||
| 190 | declare!(SAI1); | ||
| 191 | declare!(SAI2); | ||
| 192 | declare!(SDMMC1); | ||
| 193 | declare!(SPI1); | ||
| 194 | declare!(SPI2); | ||
| 195 | declare!(SPI3); | ||
| 196 | declare!(SWPMI1); | ||
| 197 | declare!(TAMP_STAMP); | ||
| 198 | declare!(TIM1_BRK_TIM15); | ||
| 199 | declare!(TIM1_CC); | ||
| 200 | declare!(TIM1_TRG_COM_TIM17); | ||
| 201 | declare!(TIM1_UP_TIM16); | ||
| 202 | declare!(TIM2); | ||
| 203 | declare!(TIM3); | ||
| 204 | declare!(TIM4); | ||
| 205 | declare!(TIM5); | ||
| 206 | declare!(TIM6_DAC); | ||
| 207 | declare!(TIM7); | ||
| 208 | declare!(TIM8_BRK); | ||
| 209 | declare!(TIM8_CC); | ||
| 210 | declare!(TIM8_TRG_COM); | ||
| 211 | declare!(TIM8_UP); | ||
| 212 | declare!(TSC); | ||
| 213 | declare!(UART4); | ||
| 214 | declare!(UART5); | ||
| 215 | declare!(USART1); | ||
| 216 | declare!(USART2); | ||
| 217 | declare!(USART3); | ||
| 218 | declare!(WWDG); | ||
| 219 | } | ||
| 220 | mod interrupt_vector { | ||
| 221 | extern "C" { | ||
| 222 | fn ADC1_2(); | ||
| 223 | fn ADC3(); | ||
| 224 | fn CAN1_RX0(); | ||
| 225 | fn CAN1_RX1(); | ||
| 226 | fn CAN1_SCE(); | ||
| 227 | fn CAN1_TX(); | ||
| 228 | fn CAN2_RX0(); | ||
| 229 | fn CAN2_RX1(); | ||
| 230 | fn CAN2_SCE(); | ||
| 231 | fn CAN2_TX(); | ||
| 232 | fn COMP(); | ||
| 233 | fn CRS(); | ||
| 234 | fn DCMI(); | ||
| 235 | fn DFSDM1_FLT0(); | ||
| 236 | fn DFSDM1_FLT1(); | ||
| 237 | fn DFSDM1_FLT2(); | ||
| 238 | fn DFSDM1_FLT3(); | ||
| 239 | fn DMA1_Channel1(); | ||
| 240 | fn DMA1_Channel2(); | ||
| 241 | fn DMA1_Channel3(); | ||
| 242 | fn DMA1_Channel4(); | ||
| 243 | fn DMA1_Channel5(); | ||
| 244 | fn DMA1_Channel6(); | ||
| 245 | fn DMA1_Channel7(); | ||
| 246 | fn DMA2D(); | ||
| 247 | fn DMA2_Channel1(); | ||
| 248 | fn DMA2_Channel2(); | ||
| 249 | fn DMA2_Channel3(); | ||
| 250 | fn DMA2_Channel4(); | ||
| 251 | fn DMA2_Channel5(); | ||
| 252 | fn DMA2_Channel6(); | ||
| 253 | fn DMA2_Channel7(); | ||
| 254 | fn EXTI0(); | ||
| 255 | fn EXTI1(); | ||
| 256 | fn EXTI15_10(); | ||
| 257 | fn EXTI2(); | ||
| 258 | fn EXTI3(); | ||
| 259 | fn EXTI4(); | ||
| 260 | fn EXTI9_5(); | ||
| 261 | fn FLASH(); | ||
| 262 | fn FMC(); | ||
| 263 | fn FPU(); | ||
| 264 | fn I2C1_ER(); | ||
| 265 | fn I2C1_EV(); | ||
| 266 | fn I2C2_ER(); | ||
| 267 | fn I2C2_EV(); | ||
| 268 | fn I2C3_ER(); | ||
| 269 | fn I2C3_EV(); | ||
| 270 | fn I2C4_ER(); | ||
| 271 | fn I2C4_EV(); | ||
| 272 | fn LCD(); | ||
| 273 | fn LPTIM1(); | ||
| 274 | fn LPTIM2(); | ||
| 275 | fn LPUART1(); | ||
| 276 | fn OTG_FS(); | ||
| 277 | fn PVD_PVM(); | ||
| 278 | fn QUADSPI(); | ||
| 279 | fn RCC(); | ||
| 280 | fn RNG(); | ||
| 281 | fn RTC_Alarm(); | ||
| 282 | fn RTC_WKUP(); | ||
| 283 | fn SAI1(); | ||
| 284 | fn SAI2(); | ||
| 285 | fn SDMMC1(); | ||
| 286 | fn SPI1(); | ||
| 287 | fn SPI2(); | ||
| 288 | fn SPI3(); | ||
| 289 | fn SWPMI1(); | ||
| 290 | fn TAMP_STAMP(); | ||
| 291 | fn TIM1_BRK_TIM15(); | ||
| 292 | fn TIM1_CC(); | ||
| 293 | fn TIM1_TRG_COM_TIM17(); | ||
| 294 | fn TIM1_UP_TIM16(); | ||
| 295 | fn TIM2(); | ||
| 296 | fn TIM3(); | ||
| 297 | fn TIM4(); | ||
| 298 | fn TIM5(); | ||
| 299 | fn TIM6_DAC(); | ||
| 300 | fn TIM7(); | ||
| 301 | fn TIM8_BRK(); | ||
| 302 | fn TIM8_CC(); | ||
| 303 | fn TIM8_TRG_COM(); | ||
| 304 | fn TIM8_UP(); | ||
| 305 | fn TSC(); | ||
| 306 | fn UART4(); | ||
| 307 | fn UART5(); | ||
| 308 | fn USART1(); | ||
| 309 | fn USART2(); | ||
| 310 | fn USART3(); | ||
| 311 | fn WWDG(); | ||
| 312 | } | ||
| 313 | pub union Vector { | ||
| 314 | _handler: unsafe extern "C" fn(), | ||
| 315 | _reserved: u32, | ||
| 316 | } | ||
| 317 | #[link_section = ".vector_table.interrupts"] | ||
| 318 | #[no_mangle] | ||
| 319 | pub static __INTERRUPTS: [Vector; 91] = [ | ||
| 320 | Vector { _handler: WWDG }, | ||
| 321 | Vector { _handler: PVD_PVM }, | ||
| 322 | Vector { | ||
| 323 | _handler: TAMP_STAMP, | ||
| 324 | }, | ||
| 325 | Vector { _handler: RTC_WKUP }, | ||
| 326 | Vector { _handler: FLASH }, | ||
| 327 | Vector { _handler: RCC }, | ||
| 328 | Vector { _handler: EXTI0 }, | ||
| 329 | Vector { _handler: EXTI1 }, | ||
| 330 | Vector { _handler: EXTI2 }, | ||
| 331 | Vector { _handler: EXTI3 }, | ||
| 332 | Vector { _handler: EXTI4 }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel1, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel2, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel3, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel4, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel5, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel6, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA1_Channel7, | ||
| 353 | }, | ||
| 354 | Vector { _handler: ADC1_2 }, | ||
| 355 | Vector { _handler: CAN1_TX }, | ||
| 356 | Vector { _handler: CAN1_RX0 }, | ||
| 357 | Vector { _handler: CAN1_RX1 }, | ||
| 358 | Vector { _handler: CAN1_SCE }, | ||
| 359 | Vector { _handler: EXTI9_5 }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_BRK_TIM15, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_UP_TIM16, | ||
| 365 | }, | ||
| 366 | Vector { | ||
| 367 | _handler: TIM1_TRG_COM_TIM17, | ||
| 368 | }, | ||
| 369 | Vector { _handler: TIM1_CC }, | ||
| 370 | Vector { _handler: TIM2 }, | ||
| 371 | Vector { _handler: TIM3 }, | ||
| 372 | Vector { _handler: TIM4 }, | ||
| 373 | Vector { _handler: I2C1_EV }, | ||
| 374 | Vector { _handler: I2C1_ER }, | ||
| 375 | Vector { _handler: I2C2_EV }, | ||
| 376 | Vector { _handler: I2C2_ER }, | ||
| 377 | Vector { _handler: SPI1 }, | ||
| 378 | Vector { _handler: SPI2 }, | ||
| 379 | Vector { _handler: USART1 }, | ||
| 380 | Vector { _handler: USART2 }, | ||
| 381 | Vector { _handler: USART3 }, | ||
| 382 | Vector { | ||
| 383 | _handler: EXTI15_10, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: RTC_Alarm, | ||
| 387 | }, | ||
| 388 | Vector { | ||
| 389 | _handler: DFSDM1_FLT3, | ||
| 390 | }, | ||
| 391 | Vector { _handler: TIM8_BRK }, | ||
| 392 | Vector { _handler: TIM8_UP }, | ||
| 393 | Vector { | ||
| 394 | _handler: TIM8_TRG_COM, | ||
| 395 | }, | ||
| 396 | Vector { _handler: TIM8_CC }, | ||
| 397 | Vector { _handler: ADC3 }, | ||
| 398 | Vector { _handler: FMC }, | ||
| 399 | Vector { _handler: SDMMC1 }, | ||
| 400 | Vector { _handler: TIM5 }, | ||
| 401 | Vector { _handler: SPI3 }, | ||
| 402 | Vector { _handler: UART4 }, | ||
| 403 | Vector { _handler: UART5 }, | ||
| 404 | Vector { _handler: TIM6_DAC }, | ||
| 405 | Vector { _handler: TIM7 }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel1, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel2, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel3, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel4, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel5, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT0, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT1, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DFSDM1_FLT2, | ||
| 429 | }, | ||
| 430 | Vector { _handler: COMP }, | ||
| 431 | Vector { _handler: LPTIM1 }, | ||
| 432 | Vector { _handler: LPTIM2 }, | ||
| 433 | Vector { _handler: OTG_FS }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel6, | ||
| 436 | }, | ||
| 437 | Vector { | ||
| 438 | _handler: DMA2_Channel7, | ||
| 439 | }, | ||
| 440 | Vector { _handler: LPUART1 }, | ||
| 441 | Vector { _handler: QUADSPI }, | ||
| 442 | Vector { _handler: I2C3_EV }, | ||
| 443 | Vector { _handler: I2C3_ER }, | ||
| 444 | Vector { _handler: SAI1 }, | ||
| 445 | Vector { _handler: SAI2 }, | ||
| 446 | Vector { _handler: SWPMI1 }, | ||
| 447 | Vector { _handler: TSC }, | ||
| 448 | Vector { _handler: LCD }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { _handler: RNG }, | ||
| 451 | Vector { _handler: FPU }, | ||
| 452 | Vector { _handler: CRS }, | ||
| 453 | Vector { _handler: I2C4_EV }, | ||
| 454 | Vector { _handler: I2C4_ER }, | ||
| 455 | Vector { _handler: DCMI }, | ||
| 456 | Vector { _handler: CAN2_TX }, | ||
| 457 | Vector { _handler: CAN2_RX0 }, | ||
| 458 | Vector { _handler: CAN2_RX1 }, | ||
| 459 | Vector { _handler: CAN2_SCE }, | ||
| 460 | Vector { _handler: DMA2D }, | ||
| 461 | ]; | ||
| 462 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 463 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 464 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 465 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l496qe.rs b/embassy-stm32/src/chip/stm32l496qe.rs index 5200ecd80..e54e0774d 100644 --- a/embassy-stm32/src/chip/stm32l496qe.rs +++ b/embassy-stm32/src/chip/stm32l496qe.rs | |||
| @@ -1,12 +1,12 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, |
| 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, | 5 | PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, |
| 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, | 6 | PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, |
| 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, | 7 | PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, |
| 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, | 8 | PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, |
| 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, | 9 | PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| @@ -15,8 +15,451 @@ peripherals!( | |||
| 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, | 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 16 | USART3, USB_OTG_FS, WWDG | 16 | USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | ADC3 = 47, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | CAN2_RX0 = 87, | ||
| 38 | CAN2_RX1 = 88, | ||
| 39 | CAN2_SCE = 89, | ||
| 40 | CAN2_TX = 86, | ||
| 41 | COMP = 64, | ||
| 42 | CRS = 82, | ||
| 43 | DCMI = 85, | ||
| 44 | DFSDM1_FLT0 = 61, | ||
| 45 | DFSDM1_FLT1 = 62, | ||
| 46 | DFSDM1_FLT2 = 63, | ||
| 47 | DFSDM1_FLT3 = 42, | ||
| 48 | DMA1_Channel1 = 11, | ||
| 49 | DMA1_Channel2 = 12, | ||
| 50 | DMA1_Channel3 = 13, | ||
| 51 | DMA1_Channel4 = 14, | ||
| 52 | DMA1_Channel5 = 15, | ||
| 53 | DMA1_Channel6 = 16, | ||
| 54 | DMA1_Channel7 = 17, | ||
| 55 | DMA2D = 90, | ||
| 56 | DMA2_Channel1 = 56, | ||
| 57 | DMA2_Channel2 = 57, | ||
| 58 | DMA2_Channel3 = 58, | ||
| 59 | DMA2_Channel4 = 59, | ||
| 60 | DMA2_Channel5 = 60, | ||
| 61 | DMA2_Channel6 = 68, | ||
| 62 | DMA2_Channel7 = 69, | ||
| 63 | EXTI0 = 6, | ||
| 64 | EXTI1 = 7, | ||
| 65 | EXTI15_10 = 40, | ||
| 66 | EXTI2 = 8, | ||
| 67 | EXTI3 = 9, | ||
| 68 | EXTI4 = 10, | ||
| 69 | EXTI9_5 = 23, | ||
| 70 | FLASH = 4, | ||
| 71 | FMC = 48, | ||
| 72 | FPU = 81, | ||
| 73 | I2C1_ER = 32, | ||
| 74 | I2C1_EV = 31, | ||
| 75 | I2C2_ER = 34, | ||
| 76 | I2C2_EV = 33, | ||
| 77 | I2C3_ER = 73, | ||
| 78 | I2C3_EV = 72, | ||
| 79 | I2C4_ER = 84, | ||
| 80 | I2C4_EV = 83, | ||
| 81 | LCD = 78, | ||
| 82 | LPTIM1 = 65, | ||
| 83 | LPTIM2 = 66, | ||
| 84 | LPUART1 = 70, | ||
| 85 | OTG_FS = 67, | ||
| 86 | PVD_PVM = 1, | ||
| 87 | QUADSPI = 71, | ||
| 88 | RCC = 5, | ||
| 89 | RNG = 80, | ||
| 90 | RTC_Alarm = 41, | ||
| 91 | RTC_WKUP = 3, | ||
| 92 | SAI1 = 74, | ||
| 93 | SAI2 = 75, | ||
| 94 | SDMMC1 = 49, | ||
| 95 | SPI1 = 35, | ||
| 96 | SPI2 = 36, | ||
| 97 | SPI3 = 51, | ||
| 98 | SWPMI1 = 76, | ||
| 99 | TAMP_STAMP = 2, | ||
| 100 | TIM1_BRK_TIM15 = 24, | ||
| 101 | TIM1_CC = 27, | ||
| 102 | TIM1_TRG_COM_TIM17 = 26, | ||
| 103 | TIM1_UP_TIM16 = 25, | ||
| 104 | TIM2 = 28, | ||
| 105 | TIM3 = 29, | ||
| 106 | TIM4 = 30, | ||
| 107 | TIM5 = 50, | ||
| 108 | TIM6_DAC = 54, | ||
| 109 | TIM7 = 55, | ||
| 110 | TIM8_BRK = 43, | ||
| 111 | TIM8_CC = 46, | ||
| 112 | TIM8_TRG_COM = 45, | ||
| 113 | TIM8_UP = 44, | ||
| 114 | TSC = 77, | ||
| 115 | UART4 = 52, | ||
| 116 | UART5 = 53, | ||
| 117 | USART1 = 37, | ||
| 118 | USART2 = 38, | ||
| 119 | USART3 = 39, | ||
| 120 | WWDG = 0, | ||
| 121 | } | ||
| 122 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 123 | #[inline(always)] | ||
| 124 | fn number(self) -> u16 { | ||
| 125 | self as u16 | ||
| 126 | } | ||
| 127 | } | ||
| 128 | |||
| 129 | declare!(ADC1_2); | ||
| 130 | declare!(ADC3); | ||
| 131 | declare!(CAN1_RX0); | ||
| 132 | declare!(CAN1_RX1); | ||
| 133 | declare!(CAN1_SCE); | ||
| 134 | declare!(CAN1_TX); | ||
| 135 | declare!(CAN2_RX0); | ||
| 136 | declare!(CAN2_RX1); | ||
| 137 | declare!(CAN2_SCE); | ||
| 138 | declare!(CAN2_TX); | ||
| 139 | declare!(COMP); | ||
| 140 | declare!(CRS); | ||
| 141 | declare!(DCMI); | ||
| 142 | declare!(DFSDM1_FLT0); | ||
| 143 | declare!(DFSDM1_FLT1); | ||
| 144 | declare!(DFSDM1_FLT2); | ||
| 145 | declare!(DFSDM1_FLT3); | ||
| 146 | declare!(DMA1_Channel1); | ||
| 147 | declare!(DMA1_Channel2); | ||
| 148 | declare!(DMA1_Channel3); | ||
| 149 | declare!(DMA1_Channel4); | ||
| 150 | declare!(DMA1_Channel5); | ||
| 151 | declare!(DMA1_Channel6); | ||
| 152 | declare!(DMA1_Channel7); | ||
| 153 | declare!(DMA2D); | ||
| 154 | declare!(DMA2_Channel1); | ||
| 155 | declare!(DMA2_Channel2); | ||
| 156 | declare!(DMA2_Channel3); | ||
| 157 | declare!(DMA2_Channel4); | ||
| 158 | declare!(DMA2_Channel5); | ||
| 159 | declare!(DMA2_Channel6); | ||
| 160 | declare!(DMA2_Channel7); | ||
| 161 | declare!(EXTI0); | ||
| 162 | declare!(EXTI1); | ||
| 163 | declare!(EXTI15_10); | ||
| 164 | declare!(EXTI2); | ||
| 165 | declare!(EXTI3); | ||
| 166 | declare!(EXTI4); | ||
| 167 | declare!(EXTI9_5); | ||
| 168 | declare!(FLASH); | ||
| 169 | declare!(FMC); | ||
| 170 | declare!(FPU); | ||
| 171 | declare!(I2C1_ER); | ||
| 172 | declare!(I2C1_EV); | ||
| 173 | declare!(I2C2_ER); | ||
| 174 | declare!(I2C2_EV); | ||
| 175 | declare!(I2C3_ER); | ||
| 176 | declare!(I2C3_EV); | ||
| 177 | declare!(I2C4_ER); | ||
| 178 | declare!(I2C4_EV); | ||
| 179 | declare!(LCD); | ||
| 180 | declare!(LPTIM1); | ||
| 181 | declare!(LPTIM2); | ||
| 182 | declare!(LPUART1); | ||
| 183 | declare!(OTG_FS); | ||
| 184 | declare!(PVD_PVM); | ||
| 185 | declare!(QUADSPI); | ||
| 186 | declare!(RCC); | ||
| 187 | declare!(RNG); | ||
| 188 | declare!(RTC_Alarm); | ||
| 189 | declare!(RTC_WKUP); | ||
| 190 | declare!(SAI1); | ||
| 191 | declare!(SAI2); | ||
| 192 | declare!(SDMMC1); | ||
| 193 | declare!(SPI1); | ||
| 194 | declare!(SPI2); | ||
| 195 | declare!(SPI3); | ||
| 196 | declare!(SWPMI1); | ||
| 197 | declare!(TAMP_STAMP); | ||
| 198 | declare!(TIM1_BRK_TIM15); | ||
| 199 | declare!(TIM1_CC); | ||
| 200 | declare!(TIM1_TRG_COM_TIM17); | ||
| 201 | declare!(TIM1_UP_TIM16); | ||
| 202 | declare!(TIM2); | ||
| 203 | declare!(TIM3); | ||
| 204 | declare!(TIM4); | ||
| 205 | declare!(TIM5); | ||
| 206 | declare!(TIM6_DAC); | ||
| 207 | declare!(TIM7); | ||
| 208 | declare!(TIM8_BRK); | ||
| 209 | declare!(TIM8_CC); | ||
| 210 | declare!(TIM8_TRG_COM); | ||
| 211 | declare!(TIM8_UP); | ||
| 212 | declare!(TSC); | ||
| 213 | declare!(UART4); | ||
| 214 | declare!(UART5); | ||
| 215 | declare!(USART1); | ||
| 216 | declare!(USART2); | ||
| 217 | declare!(USART3); | ||
| 218 | declare!(WWDG); | ||
| 219 | } | ||
| 220 | mod interrupt_vector { | ||
| 221 | extern "C" { | ||
| 222 | fn ADC1_2(); | ||
| 223 | fn ADC3(); | ||
| 224 | fn CAN1_RX0(); | ||
| 225 | fn CAN1_RX1(); | ||
| 226 | fn CAN1_SCE(); | ||
| 227 | fn CAN1_TX(); | ||
| 228 | fn CAN2_RX0(); | ||
| 229 | fn CAN2_RX1(); | ||
| 230 | fn CAN2_SCE(); | ||
| 231 | fn CAN2_TX(); | ||
| 232 | fn COMP(); | ||
| 233 | fn CRS(); | ||
| 234 | fn DCMI(); | ||
| 235 | fn DFSDM1_FLT0(); | ||
| 236 | fn DFSDM1_FLT1(); | ||
| 237 | fn DFSDM1_FLT2(); | ||
| 238 | fn DFSDM1_FLT3(); | ||
| 239 | fn DMA1_Channel1(); | ||
| 240 | fn DMA1_Channel2(); | ||
| 241 | fn DMA1_Channel3(); | ||
| 242 | fn DMA1_Channel4(); | ||
| 243 | fn DMA1_Channel5(); | ||
| 244 | fn DMA1_Channel6(); | ||
| 245 | fn DMA1_Channel7(); | ||
| 246 | fn DMA2D(); | ||
| 247 | fn DMA2_Channel1(); | ||
| 248 | fn DMA2_Channel2(); | ||
| 249 | fn DMA2_Channel3(); | ||
| 250 | fn DMA2_Channel4(); | ||
| 251 | fn DMA2_Channel5(); | ||
| 252 | fn DMA2_Channel6(); | ||
| 253 | fn DMA2_Channel7(); | ||
| 254 | fn EXTI0(); | ||
| 255 | fn EXTI1(); | ||
| 256 | fn EXTI15_10(); | ||
| 257 | fn EXTI2(); | ||
| 258 | fn EXTI3(); | ||
| 259 | fn EXTI4(); | ||
| 260 | fn EXTI9_5(); | ||
| 261 | fn FLASH(); | ||
| 262 | fn FMC(); | ||
| 263 | fn FPU(); | ||
| 264 | fn I2C1_ER(); | ||
| 265 | fn I2C1_EV(); | ||
| 266 | fn I2C2_ER(); | ||
| 267 | fn I2C2_EV(); | ||
| 268 | fn I2C3_ER(); | ||
| 269 | fn I2C3_EV(); | ||
| 270 | fn I2C4_ER(); | ||
| 271 | fn I2C4_EV(); | ||
| 272 | fn LCD(); | ||
| 273 | fn LPTIM1(); | ||
| 274 | fn LPTIM2(); | ||
| 275 | fn LPUART1(); | ||
| 276 | fn OTG_FS(); | ||
| 277 | fn PVD_PVM(); | ||
| 278 | fn QUADSPI(); | ||
| 279 | fn RCC(); | ||
| 280 | fn RNG(); | ||
| 281 | fn RTC_Alarm(); | ||
| 282 | fn RTC_WKUP(); | ||
| 283 | fn SAI1(); | ||
| 284 | fn SAI2(); | ||
| 285 | fn SDMMC1(); | ||
| 286 | fn SPI1(); | ||
| 287 | fn SPI2(); | ||
| 288 | fn SPI3(); | ||
| 289 | fn SWPMI1(); | ||
| 290 | fn TAMP_STAMP(); | ||
| 291 | fn TIM1_BRK_TIM15(); | ||
| 292 | fn TIM1_CC(); | ||
| 293 | fn TIM1_TRG_COM_TIM17(); | ||
| 294 | fn TIM1_UP_TIM16(); | ||
| 295 | fn TIM2(); | ||
| 296 | fn TIM3(); | ||
| 297 | fn TIM4(); | ||
| 298 | fn TIM5(); | ||
| 299 | fn TIM6_DAC(); | ||
| 300 | fn TIM7(); | ||
| 301 | fn TIM8_BRK(); | ||
| 302 | fn TIM8_CC(); | ||
| 303 | fn TIM8_TRG_COM(); | ||
| 304 | fn TIM8_UP(); | ||
| 305 | fn TSC(); | ||
| 306 | fn UART4(); | ||
| 307 | fn UART5(); | ||
| 308 | fn USART1(); | ||
| 309 | fn USART2(); | ||
| 310 | fn USART3(); | ||
| 311 | fn WWDG(); | ||
| 312 | } | ||
| 313 | pub union Vector { | ||
| 314 | _handler: unsafe extern "C" fn(), | ||
| 315 | _reserved: u32, | ||
| 316 | } | ||
| 317 | #[link_section = ".vector_table.interrupts"] | ||
| 318 | #[no_mangle] | ||
| 319 | pub static __INTERRUPTS: [Vector; 91] = [ | ||
| 320 | Vector { _handler: WWDG }, | ||
| 321 | Vector { _handler: PVD_PVM }, | ||
| 322 | Vector { | ||
| 323 | _handler: TAMP_STAMP, | ||
| 324 | }, | ||
| 325 | Vector { _handler: RTC_WKUP }, | ||
| 326 | Vector { _handler: FLASH }, | ||
| 327 | Vector { _handler: RCC }, | ||
| 328 | Vector { _handler: EXTI0 }, | ||
| 329 | Vector { _handler: EXTI1 }, | ||
| 330 | Vector { _handler: EXTI2 }, | ||
| 331 | Vector { _handler: EXTI3 }, | ||
| 332 | Vector { _handler: EXTI4 }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel1, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel2, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel3, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel4, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel5, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel6, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA1_Channel7, | ||
| 353 | }, | ||
| 354 | Vector { _handler: ADC1_2 }, | ||
| 355 | Vector { _handler: CAN1_TX }, | ||
| 356 | Vector { _handler: CAN1_RX0 }, | ||
| 357 | Vector { _handler: CAN1_RX1 }, | ||
| 358 | Vector { _handler: CAN1_SCE }, | ||
| 359 | Vector { _handler: EXTI9_5 }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_BRK_TIM15, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_UP_TIM16, | ||
| 365 | }, | ||
| 366 | Vector { | ||
| 367 | _handler: TIM1_TRG_COM_TIM17, | ||
| 368 | }, | ||
| 369 | Vector { _handler: TIM1_CC }, | ||
| 370 | Vector { _handler: TIM2 }, | ||
| 371 | Vector { _handler: TIM3 }, | ||
| 372 | Vector { _handler: TIM4 }, | ||
| 373 | Vector { _handler: I2C1_EV }, | ||
| 374 | Vector { _handler: I2C1_ER }, | ||
| 375 | Vector { _handler: I2C2_EV }, | ||
| 376 | Vector { _handler: I2C2_ER }, | ||
| 377 | Vector { _handler: SPI1 }, | ||
| 378 | Vector { _handler: SPI2 }, | ||
| 379 | Vector { _handler: USART1 }, | ||
| 380 | Vector { _handler: USART2 }, | ||
| 381 | Vector { _handler: USART3 }, | ||
| 382 | Vector { | ||
| 383 | _handler: EXTI15_10, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: RTC_Alarm, | ||
| 387 | }, | ||
| 388 | Vector { | ||
| 389 | _handler: DFSDM1_FLT3, | ||
| 390 | }, | ||
| 391 | Vector { _handler: TIM8_BRK }, | ||
| 392 | Vector { _handler: TIM8_UP }, | ||
| 393 | Vector { | ||
| 394 | _handler: TIM8_TRG_COM, | ||
| 395 | }, | ||
| 396 | Vector { _handler: TIM8_CC }, | ||
| 397 | Vector { _handler: ADC3 }, | ||
| 398 | Vector { _handler: FMC }, | ||
| 399 | Vector { _handler: SDMMC1 }, | ||
| 400 | Vector { _handler: TIM5 }, | ||
| 401 | Vector { _handler: SPI3 }, | ||
| 402 | Vector { _handler: UART4 }, | ||
| 403 | Vector { _handler: UART5 }, | ||
| 404 | Vector { _handler: TIM6_DAC }, | ||
| 405 | Vector { _handler: TIM7 }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel1, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel2, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel3, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel4, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel5, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT0, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT1, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DFSDM1_FLT2, | ||
| 429 | }, | ||
| 430 | Vector { _handler: COMP }, | ||
| 431 | Vector { _handler: LPTIM1 }, | ||
| 432 | Vector { _handler: LPTIM2 }, | ||
| 433 | Vector { _handler: OTG_FS }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel6, | ||
| 436 | }, | ||
| 437 | Vector { | ||
| 438 | _handler: DMA2_Channel7, | ||
| 439 | }, | ||
| 440 | Vector { _handler: LPUART1 }, | ||
| 441 | Vector { _handler: QUADSPI }, | ||
| 442 | Vector { _handler: I2C3_EV }, | ||
| 443 | Vector { _handler: I2C3_ER }, | ||
| 444 | Vector { _handler: SAI1 }, | ||
| 445 | Vector { _handler: SAI2 }, | ||
| 446 | Vector { _handler: SWPMI1 }, | ||
| 447 | Vector { _handler: TSC }, | ||
| 448 | Vector { _handler: LCD }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { _handler: RNG }, | ||
| 451 | Vector { _handler: FPU }, | ||
| 452 | Vector { _handler: CRS }, | ||
| 453 | Vector { _handler: I2C4_EV }, | ||
| 454 | Vector { _handler: I2C4_ER }, | ||
| 455 | Vector { _handler: DCMI }, | ||
| 456 | Vector { _handler: CAN2_TX }, | ||
| 457 | Vector { _handler: CAN2_RX0 }, | ||
| 458 | Vector { _handler: CAN2_RX1 }, | ||
| 459 | Vector { _handler: CAN2_SCE }, | ||
| 460 | Vector { _handler: DMA2D }, | ||
| 461 | ]; | ||
| 462 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 463 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 464 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 465 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l496qg.rs b/embassy-stm32/src/chip/stm32l496qg.rs index 5200ecd80..e54e0774d 100644 --- a/embassy-stm32/src/chip/stm32l496qg.rs +++ b/embassy-stm32/src/chip/stm32l496qg.rs | |||
| @@ -1,12 +1,12 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, |
| 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, | 5 | PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, |
| 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, | 6 | PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, |
| 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, | 7 | PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, |
| 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, | 8 | PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, |
| 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, | 9 | PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| @@ -15,8 +15,451 @@ peripherals!( | |||
| 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, | 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 16 | USART3, USB_OTG_FS, WWDG | 16 | USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | ADC3 = 47, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | CAN2_RX0 = 87, | ||
| 38 | CAN2_RX1 = 88, | ||
| 39 | CAN2_SCE = 89, | ||
| 40 | CAN2_TX = 86, | ||
| 41 | COMP = 64, | ||
| 42 | CRS = 82, | ||
| 43 | DCMI = 85, | ||
| 44 | DFSDM1_FLT0 = 61, | ||
| 45 | DFSDM1_FLT1 = 62, | ||
| 46 | DFSDM1_FLT2 = 63, | ||
| 47 | DFSDM1_FLT3 = 42, | ||
| 48 | DMA1_Channel1 = 11, | ||
| 49 | DMA1_Channel2 = 12, | ||
| 50 | DMA1_Channel3 = 13, | ||
| 51 | DMA1_Channel4 = 14, | ||
| 52 | DMA1_Channel5 = 15, | ||
| 53 | DMA1_Channel6 = 16, | ||
| 54 | DMA1_Channel7 = 17, | ||
| 55 | DMA2D = 90, | ||
| 56 | DMA2_Channel1 = 56, | ||
| 57 | DMA2_Channel2 = 57, | ||
| 58 | DMA2_Channel3 = 58, | ||
| 59 | DMA2_Channel4 = 59, | ||
| 60 | DMA2_Channel5 = 60, | ||
| 61 | DMA2_Channel6 = 68, | ||
| 62 | DMA2_Channel7 = 69, | ||
| 63 | EXTI0 = 6, | ||
| 64 | EXTI1 = 7, | ||
| 65 | EXTI15_10 = 40, | ||
| 66 | EXTI2 = 8, | ||
| 67 | EXTI3 = 9, | ||
| 68 | EXTI4 = 10, | ||
| 69 | EXTI9_5 = 23, | ||
| 70 | FLASH = 4, | ||
| 71 | FMC = 48, | ||
| 72 | FPU = 81, | ||
| 73 | I2C1_ER = 32, | ||
| 74 | I2C1_EV = 31, | ||
| 75 | I2C2_ER = 34, | ||
| 76 | I2C2_EV = 33, | ||
| 77 | I2C3_ER = 73, | ||
| 78 | I2C3_EV = 72, | ||
| 79 | I2C4_ER = 84, | ||
| 80 | I2C4_EV = 83, | ||
| 81 | LCD = 78, | ||
| 82 | LPTIM1 = 65, | ||
| 83 | LPTIM2 = 66, | ||
| 84 | LPUART1 = 70, | ||
| 85 | OTG_FS = 67, | ||
| 86 | PVD_PVM = 1, | ||
| 87 | QUADSPI = 71, | ||
| 88 | RCC = 5, | ||
| 89 | RNG = 80, | ||
| 90 | RTC_Alarm = 41, | ||
| 91 | RTC_WKUP = 3, | ||
| 92 | SAI1 = 74, | ||
| 93 | SAI2 = 75, | ||
| 94 | SDMMC1 = 49, | ||
| 95 | SPI1 = 35, | ||
| 96 | SPI2 = 36, | ||
| 97 | SPI3 = 51, | ||
| 98 | SWPMI1 = 76, | ||
| 99 | TAMP_STAMP = 2, | ||
| 100 | TIM1_BRK_TIM15 = 24, | ||
| 101 | TIM1_CC = 27, | ||
| 102 | TIM1_TRG_COM_TIM17 = 26, | ||
| 103 | TIM1_UP_TIM16 = 25, | ||
| 104 | TIM2 = 28, | ||
| 105 | TIM3 = 29, | ||
| 106 | TIM4 = 30, | ||
| 107 | TIM5 = 50, | ||
| 108 | TIM6_DAC = 54, | ||
| 109 | TIM7 = 55, | ||
| 110 | TIM8_BRK = 43, | ||
| 111 | TIM8_CC = 46, | ||
| 112 | TIM8_TRG_COM = 45, | ||
| 113 | TIM8_UP = 44, | ||
| 114 | TSC = 77, | ||
| 115 | UART4 = 52, | ||
| 116 | UART5 = 53, | ||
| 117 | USART1 = 37, | ||
| 118 | USART2 = 38, | ||
| 119 | USART3 = 39, | ||
| 120 | WWDG = 0, | ||
| 121 | } | ||
| 122 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 123 | #[inline(always)] | ||
| 124 | fn number(self) -> u16 { | ||
| 125 | self as u16 | ||
| 126 | } | ||
| 127 | } | ||
| 128 | |||
| 129 | declare!(ADC1_2); | ||
| 130 | declare!(ADC3); | ||
| 131 | declare!(CAN1_RX0); | ||
| 132 | declare!(CAN1_RX1); | ||
| 133 | declare!(CAN1_SCE); | ||
| 134 | declare!(CAN1_TX); | ||
| 135 | declare!(CAN2_RX0); | ||
| 136 | declare!(CAN2_RX1); | ||
| 137 | declare!(CAN2_SCE); | ||
| 138 | declare!(CAN2_TX); | ||
| 139 | declare!(COMP); | ||
| 140 | declare!(CRS); | ||
| 141 | declare!(DCMI); | ||
| 142 | declare!(DFSDM1_FLT0); | ||
| 143 | declare!(DFSDM1_FLT1); | ||
| 144 | declare!(DFSDM1_FLT2); | ||
| 145 | declare!(DFSDM1_FLT3); | ||
| 146 | declare!(DMA1_Channel1); | ||
| 147 | declare!(DMA1_Channel2); | ||
| 148 | declare!(DMA1_Channel3); | ||
| 149 | declare!(DMA1_Channel4); | ||
| 150 | declare!(DMA1_Channel5); | ||
| 151 | declare!(DMA1_Channel6); | ||
| 152 | declare!(DMA1_Channel7); | ||
| 153 | declare!(DMA2D); | ||
| 154 | declare!(DMA2_Channel1); | ||
| 155 | declare!(DMA2_Channel2); | ||
| 156 | declare!(DMA2_Channel3); | ||
| 157 | declare!(DMA2_Channel4); | ||
| 158 | declare!(DMA2_Channel5); | ||
| 159 | declare!(DMA2_Channel6); | ||
| 160 | declare!(DMA2_Channel7); | ||
| 161 | declare!(EXTI0); | ||
| 162 | declare!(EXTI1); | ||
| 163 | declare!(EXTI15_10); | ||
| 164 | declare!(EXTI2); | ||
| 165 | declare!(EXTI3); | ||
| 166 | declare!(EXTI4); | ||
| 167 | declare!(EXTI9_5); | ||
| 168 | declare!(FLASH); | ||
| 169 | declare!(FMC); | ||
| 170 | declare!(FPU); | ||
| 171 | declare!(I2C1_ER); | ||
| 172 | declare!(I2C1_EV); | ||
| 173 | declare!(I2C2_ER); | ||
| 174 | declare!(I2C2_EV); | ||
| 175 | declare!(I2C3_ER); | ||
| 176 | declare!(I2C3_EV); | ||
| 177 | declare!(I2C4_ER); | ||
| 178 | declare!(I2C4_EV); | ||
| 179 | declare!(LCD); | ||
| 180 | declare!(LPTIM1); | ||
| 181 | declare!(LPTIM2); | ||
| 182 | declare!(LPUART1); | ||
| 183 | declare!(OTG_FS); | ||
| 184 | declare!(PVD_PVM); | ||
| 185 | declare!(QUADSPI); | ||
| 186 | declare!(RCC); | ||
| 187 | declare!(RNG); | ||
| 188 | declare!(RTC_Alarm); | ||
| 189 | declare!(RTC_WKUP); | ||
| 190 | declare!(SAI1); | ||
| 191 | declare!(SAI2); | ||
| 192 | declare!(SDMMC1); | ||
| 193 | declare!(SPI1); | ||
| 194 | declare!(SPI2); | ||
| 195 | declare!(SPI3); | ||
| 196 | declare!(SWPMI1); | ||
| 197 | declare!(TAMP_STAMP); | ||
| 198 | declare!(TIM1_BRK_TIM15); | ||
| 199 | declare!(TIM1_CC); | ||
| 200 | declare!(TIM1_TRG_COM_TIM17); | ||
| 201 | declare!(TIM1_UP_TIM16); | ||
| 202 | declare!(TIM2); | ||
| 203 | declare!(TIM3); | ||
| 204 | declare!(TIM4); | ||
| 205 | declare!(TIM5); | ||
| 206 | declare!(TIM6_DAC); | ||
| 207 | declare!(TIM7); | ||
| 208 | declare!(TIM8_BRK); | ||
| 209 | declare!(TIM8_CC); | ||
| 210 | declare!(TIM8_TRG_COM); | ||
| 211 | declare!(TIM8_UP); | ||
| 212 | declare!(TSC); | ||
| 213 | declare!(UART4); | ||
| 214 | declare!(UART5); | ||
| 215 | declare!(USART1); | ||
| 216 | declare!(USART2); | ||
| 217 | declare!(USART3); | ||
| 218 | declare!(WWDG); | ||
| 219 | } | ||
| 220 | mod interrupt_vector { | ||
| 221 | extern "C" { | ||
| 222 | fn ADC1_2(); | ||
| 223 | fn ADC3(); | ||
| 224 | fn CAN1_RX0(); | ||
| 225 | fn CAN1_RX1(); | ||
| 226 | fn CAN1_SCE(); | ||
| 227 | fn CAN1_TX(); | ||
| 228 | fn CAN2_RX0(); | ||
| 229 | fn CAN2_RX1(); | ||
| 230 | fn CAN2_SCE(); | ||
| 231 | fn CAN2_TX(); | ||
| 232 | fn COMP(); | ||
| 233 | fn CRS(); | ||
| 234 | fn DCMI(); | ||
| 235 | fn DFSDM1_FLT0(); | ||
| 236 | fn DFSDM1_FLT1(); | ||
| 237 | fn DFSDM1_FLT2(); | ||
| 238 | fn DFSDM1_FLT3(); | ||
| 239 | fn DMA1_Channel1(); | ||
| 240 | fn DMA1_Channel2(); | ||
| 241 | fn DMA1_Channel3(); | ||
| 242 | fn DMA1_Channel4(); | ||
| 243 | fn DMA1_Channel5(); | ||
| 244 | fn DMA1_Channel6(); | ||
| 245 | fn DMA1_Channel7(); | ||
| 246 | fn DMA2D(); | ||
| 247 | fn DMA2_Channel1(); | ||
| 248 | fn DMA2_Channel2(); | ||
| 249 | fn DMA2_Channel3(); | ||
| 250 | fn DMA2_Channel4(); | ||
| 251 | fn DMA2_Channel5(); | ||
| 252 | fn DMA2_Channel6(); | ||
| 253 | fn DMA2_Channel7(); | ||
| 254 | fn EXTI0(); | ||
| 255 | fn EXTI1(); | ||
| 256 | fn EXTI15_10(); | ||
| 257 | fn EXTI2(); | ||
| 258 | fn EXTI3(); | ||
| 259 | fn EXTI4(); | ||
| 260 | fn EXTI9_5(); | ||
| 261 | fn FLASH(); | ||
| 262 | fn FMC(); | ||
| 263 | fn FPU(); | ||
| 264 | fn I2C1_ER(); | ||
| 265 | fn I2C1_EV(); | ||
| 266 | fn I2C2_ER(); | ||
| 267 | fn I2C2_EV(); | ||
| 268 | fn I2C3_ER(); | ||
| 269 | fn I2C3_EV(); | ||
| 270 | fn I2C4_ER(); | ||
| 271 | fn I2C4_EV(); | ||
| 272 | fn LCD(); | ||
| 273 | fn LPTIM1(); | ||
| 274 | fn LPTIM2(); | ||
| 275 | fn LPUART1(); | ||
| 276 | fn OTG_FS(); | ||
| 277 | fn PVD_PVM(); | ||
| 278 | fn QUADSPI(); | ||
| 279 | fn RCC(); | ||
| 280 | fn RNG(); | ||
| 281 | fn RTC_Alarm(); | ||
| 282 | fn RTC_WKUP(); | ||
| 283 | fn SAI1(); | ||
| 284 | fn SAI2(); | ||
| 285 | fn SDMMC1(); | ||
| 286 | fn SPI1(); | ||
| 287 | fn SPI2(); | ||
| 288 | fn SPI3(); | ||
| 289 | fn SWPMI1(); | ||
| 290 | fn TAMP_STAMP(); | ||
| 291 | fn TIM1_BRK_TIM15(); | ||
| 292 | fn TIM1_CC(); | ||
| 293 | fn TIM1_TRG_COM_TIM17(); | ||
| 294 | fn TIM1_UP_TIM16(); | ||
| 295 | fn TIM2(); | ||
| 296 | fn TIM3(); | ||
| 297 | fn TIM4(); | ||
| 298 | fn TIM5(); | ||
| 299 | fn TIM6_DAC(); | ||
| 300 | fn TIM7(); | ||
| 301 | fn TIM8_BRK(); | ||
| 302 | fn TIM8_CC(); | ||
| 303 | fn TIM8_TRG_COM(); | ||
| 304 | fn TIM8_UP(); | ||
| 305 | fn TSC(); | ||
| 306 | fn UART4(); | ||
| 307 | fn UART5(); | ||
| 308 | fn USART1(); | ||
| 309 | fn USART2(); | ||
| 310 | fn USART3(); | ||
| 311 | fn WWDG(); | ||
| 312 | } | ||
| 313 | pub union Vector { | ||
| 314 | _handler: unsafe extern "C" fn(), | ||
| 315 | _reserved: u32, | ||
| 316 | } | ||
| 317 | #[link_section = ".vector_table.interrupts"] | ||
| 318 | #[no_mangle] | ||
| 319 | pub static __INTERRUPTS: [Vector; 91] = [ | ||
| 320 | Vector { _handler: WWDG }, | ||
| 321 | Vector { _handler: PVD_PVM }, | ||
| 322 | Vector { | ||
| 323 | _handler: TAMP_STAMP, | ||
| 324 | }, | ||
| 325 | Vector { _handler: RTC_WKUP }, | ||
| 326 | Vector { _handler: FLASH }, | ||
| 327 | Vector { _handler: RCC }, | ||
| 328 | Vector { _handler: EXTI0 }, | ||
| 329 | Vector { _handler: EXTI1 }, | ||
| 330 | Vector { _handler: EXTI2 }, | ||
| 331 | Vector { _handler: EXTI3 }, | ||
| 332 | Vector { _handler: EXTI4 }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel1, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel2, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel3, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel4, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel5, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel6, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA1_Channel7, | ||
| 353 | }, | ||
| 354 | Vector { _handler: ADC1_2 }, | ||
| 355 | Vector { _handler: CAN1_TX }, | ||
| 356 | Vector { _handler: CAN1_RX0 }, | ||
| 357 | Vector { _handler: CAN1_RX1 }, | ||
| 358 | Vector { _handler: CAN1_SCE }, | ||
| 359 | Vector { _handler: EXTI9_5 }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_BRK_TIM15, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_UP_TIM16, | ||
| 365 | }, | ||
| 366 | Vector { | ||
| 367 | _handler: TIM1_TRG_COM_TIM17, | ||
| 368 | }, | ||
| 369 | Vector { _handler: TIM1_CC }, | ||
| 370 | Vector { _handler: TIM2 }, | ||
| 371 | Vector { _handler: TIM3 }, | ||
| 372 | Vector { _handler: TIM4 }, | ||
| 373 | Vector { _handler: I2C1_EV }, | ||
| 374 | Vector { _handler: I2C1_ER }, | ||
| 375 | Vector { _handler: I2C2_EV }, | ||
| 376 | Vector { _handler: I2C2_ER }, | ||
| 377 | Vector { _handler: SPI1 }, | ||
| 378 | Vector { _handler: SPI2 }, | ||
| 379 | Vector { _handler: USART1 }, | ||
| 380 | Vector { _handler: USART2 }, | ||
| 381 | Vector { _handler: USART3 }, | ||
| 382 | Vector { | ||
| 383 | _handler: EXTI15_10, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: RTC_Alarm, | ||
| 387 | }, | ||
| 388 | Vector { | ||
| 389 | _handler: DFSDM1_FLT3, | ||
| 390 | }, | ||
| 391 | Vector { _handler: TIM8_BRK }, | ||
| 392 | Vector { _handler: TIM8_UP }, | ||
| 393 | Vector { | ||
| 394 | _handler: TIM8_TRG_COM, | ||
| 395 | }, | ||
| 396 | Vector { _handler: TIM8_CC }, | ||
| 397 | Vector { _handler: ADC3 }, | ||
| 398 | Vector { _handler: FMC }, | ||
| 399 | Vector { _handler: SDMMC1 }, | ||
| 400 | Vector { _handler: TIM5 }, | ||
| 401 | Vector { _handler: SPI3 }, | ||
| 402 | Vector { _handler: UART4 }, | ||
| 403 | Vector { _handler: UART5 }, | ||
| 404 | Vector { _handler: TIM6_DAC }, | ||
| 405 | Vector { _handler: TIM7 }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel1, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel2, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel3, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel4, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel5, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT0, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT1, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DFSDM1_FLT2, | ||
| 429 | }, | ||
| 430 | Vector { _handler: COMP }, | ||
| 431 | Vector { _handler: LPTIM1 }, | ||
| 432 | Vector { _handler: LPTIM2 }, | ||
| 433 | Vector { _handler: OTG_FS }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel6, | ||
| 436 | }, | ||
| 437 | Vector { | ||
| 438 | _handler: DMA2_Channel7, | ||
| 439 | }, | ||
| 440 | Vector { _handler: LPUART1 }, | ||
| 441 | Vector { _handler: QUADSPI }, | ||
| 442 | Vector { _handler: I2C3_EV }, | ||
| 443 | Vector { _handler: I2C3_ER }, | ||
| 444 | Vector { _handler: SAI1 }, | ||
| 445 | Vector { _handler: SAI2 }, | ||
| 446 | Vector { _handler: SWPMI1 }, | ||
| 447 | Vector { _handler: TSC }, | ||
| 448 | Vector { _handler: LCD }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { _handler: RNG }, | ||
| 451 | Vector { _handler: FPU }, | ||
| 452 | Vector { _handler: CRS }, | ||
| 453 | Vector { _handler: I2C4_EV }, | ||
| 454 | Vector { _handler: I2C4_ER }, | ||
| 455 | Vector { _handler: DCMI }, | ||
| 456 | Vector { _handler: CAN2_TX }, | ||
| 457 | Vector { _handler: CAN2_RX0 }, | ||
| 458 | Vector { _handler: CAN2_RX1 }, | ||
| 459 | Vector { _handler: CAN2_SCE }, | ||
| 460 | Vector { _handler: DMA2D }, | ||
| 461 | ]; | ||
| 462 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 463 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 464 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 465 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l496re.rs b/embassy-stm32/src/chip/stm32l496re.rs index 5200ecd80..e54e0774d 100644 --- a/embassy-stm32/src/chip/stm32l496re.rs +++ b/embassy-stm32/src/chip/stm32l496re.rs | |||
| @@ -1,12 +1,12 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, |
| 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, | 5 | PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, |
| 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, | 6 | PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, |
| 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, | 7 | PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, |
| 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, | 8 | PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, |
| 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, | 9 | PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| @@ -15,8 +15,451 @@ peripherals!( | |||
| 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, | 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 16 | USART3, USB_OTG_FS, WWDG | 16 | USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | ADC3 = 47, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | CAN2_RX0 = 87, | ||
| 38 | CAN2_RX1 = 88, | ||
| 39 | CAN2_SCE = 89, | ||
| 40 | CAN2_TX = 86, | ||
| 41 | COMP = 64, | ||
| 42 | CRS = 82, | ||
| 43 | DCMI = 85, | ||
| 44 | DFSDM1_FLT0 = 61, | ||
| 45 | DFSDM1_FLT1 = 62, | ||
| 46 | DFSDM1_FLT2 = 63, | ||
| 47 | DFSDM1_FLT3 = 42, | ||
| 48 | DMA1_Channel1 = 11, | ||
| 49 | DMA1_Channel2 = 12, | ||
| 50 | DMA1_Channel3 = 13, | ||
| 51 | DMA1_Channel4 = 14, | ||
| 52 | DMA1_Channel5 = 15, | ||
| 53 | DMA1_Channel6 = 16, | ||
| 54 | DMA1_Channel7 = 17, | ||
| 55 | DMA2D = 90, | ||
| 56 | DMA2_Channel1 = 56, | ||
| 57 | DMA2_Channel2 = 57, | ||
| 58 | DMA2_Channel3 = 58, | ||
| 59 | DMA2_Channel4 = 59, | ||
| 60 | DMA2_Channel5 = 60, | ||
| 61 | DMA2_Channel6 = 68, | ||
| 62 | DMA2_Channel7 = 69, | ||
| 63 | EXTI0 = 6, | ||
| 64 | EXTI1 = 7, | ||
| 65 | EXTI15_10 = 40, | ||
| 66 | EXTI2 = 8, | ||
| 67 | EXTI3 = 9, | ||
| 68 | EXTI4 = 10, | ||
| 69 | EXTI9_5 = 23, | ||
| 70 | FLASH = 4, | ||
| 71 | FMC = 48, | ||
| 72 | FPU = 81, | ||
| 73 | I2C1_ER = 32, | ||
| 74 | I2C1_EV = 31, | ||
| 75 | I2C2_ER = 34, | ||
| 76 | I2C2_EV = 33, | ||
| 77 | I2C3_ER = 73, | ||
| 78 | I2C3_EV = 72, | ||
| 79 | I2C4_ER = 84, | ||
| 80 | I2C4_EV = 83, | ||
| 81 | LCD = 78, | ||
| 82 | LPTIM1 = 65, | ||
| 83 | LPTIM2 = 66, | ||
| 84 | LPUART1 = 70, | ||
| 85 | OTG_FS = 67, | ||
| 86 | PVD_PVM = 1, | ||
| 87 | QUADSPI = 71, | ||
| 88 | RCC = 5, | ||
| 89 | RNG = 80, | ||
| 90 | RTC_Alarm = 41, | ||
| 91 | RTC_WKUP = 3, | ||
| 92 | SAI1 = 74, | ||
| 93 | SAI2 = 75, | ||
| 94 | SDMMC1 = 49, | ||
| 95 | SPI1 = 35, | ||
| 96 | SPI2 = 36, | ||
| 97 | SPI3 = 51, | ||
| 98 | SWPMI1 = 76, | ||
| 99 | TAMP_STAMP = 2, | ||
| 100 | TIM1_BRK_TIM15 = 24, | ||
| 101 | TIM1_CC = 27, | ||
| 102 | TIM1_TRG_COM_TIM17 = 26, | ||
| 103 | TIM1_UP_TIM16 = 25, | ||
| 104 | TIM2 = 28, | ||
| 105 | TIM3 = 29, | ||
| 106 | TIM4 = 30, | ||
| 107 | TIM5 = 50, | ||
| 108 | TIM6_DAC = 54, | ||
| 109 | TIM7 = 55, | ||
| 110 | TIM8_BRK = 43, | ||
| 111 | TIM8_CC = 46, | ||
| 112 | TIM8_TRG_COM = 45, | ||
| 113 | TIM8_UP = 44, | ||
| 114 | TSC = 77, | ||
| 115 | UART4 = 52, | ||
| 116 | UART5 = 53, | ||
| 117 | USART1 = 37, | ||
| 118 | USART2 = 38, | ||
| 119 | USART3 = 39, | ||
| 120 | WWDG = 0, | ||
| 121 | } | ||
| 122 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 123 | #[inline(always)] | ||
| 124 | fn number(self) -> u16 { | ||
| 125 | self as u16 | ||
| 126 | } | ||
| 127 | } | ||
| 128 | |||
| 129 | declare!(ADC1_2); | ||
| 130 | declare!(ADC3); | ||
| 131 | declare!(CAN1_RX0); | ||
| 132 | declare!(CAN1_RX1); | ||
| 133 | declare!(CAN1_SCE); | ||
| 134 | declare!(CAN1_TX); | ||
| 135 | declare!(CAN2_RX0); | ||
| 136 | declare!(CAN2_RX1); | ||
| 137 | declare!(CAN2_SCE); | ||
| 138 | declare!(CAN2_TX); | ||
| 139 | declare!(COMP); | ||
| 140 | declare!(CRS); | ||
| 141 | declare!(DCMI); | ||
| 142 | declare!(DFSDM1_FLT0); | ||
| 143 | declare!(DFSDM1_FLT1); | ||
| 144 | declare!(DFSDM1_FLT2); | ||
| 145 | declare!(DFSDM1_FLT3); | ||
| 146 | declare!(DMA1_Channel1); | ||
| 147 | declare!(DMA1_Channel2); | ||
| 148 | declare!(DMA1_Channel3); | ||
| 149 | declare!(DMA1_Channel4); | ||
| 150 | declare!(DMA1_Channel5); | ||
| 151 | declare!(DMA1_Channel6); | ||
| 152 | declare!(DMA1_Channel7); | ||
| 153 | declare!(DMA2D); | ||
| 154 | declare!(DMA2_Channel1); | ||
| 155 | declare!(DMA2_Channel2); | ||
| 156 | declare!(DMA2_Channel3); | ||
| 157 | declare!(DMA2_Channel4); | ||
| 158 | declare!(DMA2_Channel5); | ||
| 159 | declare!(DMA2_Channel6); | ||
| 160 | declare!(DMA2_Channel7); | ||
| 161 | declare!(EXTI0); | ||
| 162 | declare!(EXTI1); | ||
| 163 | declare!(EXTI15_10); | ||
| 164 | declare!(EXTI2); | ||
| 165 | declare!(EXTI3); | ||
| 166 | declare!(EXTI4); | ||
| 167 | declare!(EXTI9_5); | ||
| 168 | declare!(FLASH); | ||
| 169 | declare!(FMC); | ||
| 170 | declare!(FPU); | ||
| 171 | declare!(I2C1_ER); | ||
| 172 | declare!(I2C1_EV); | ||
| 173 | declare!(I2C2_ER); | ||
| 174 | declare!(I2C2_EV); | ||
| 175 | declare!(I2C3_ER); | ||
| 176 | declare!(I2C3_EV); | ||
| 177 | declare!(I2C4_ER); | ||
| 178 | declare!(I2C4_EV); | ||
| 179 | declare!(LCD); | ||
| 180 | declare!(LPTIM1); | ||
| 181 | declare!(LPTIM2); | ||
| 182 | declare!(LPUART1); | ||
| 183 | declare!(OTG_FS); | ||
| 184 | declare!(PVD_PVM); | ||
| 185 | declare!(QUADSPI); | ||
| 186 | declare!(RCC); | ||
| 187 | declare!(RNG); | ||
| 188 | declare!(RTC_Alarm); | ||
| 189 | declare!(RTC_WKUP); | ||
| 190 | declare!(SAI1); | ||
| 191 | declare!(SAI2); | ||
| 192 | declare!(SDMMC1); | ||
| 193 | declare!(SPI1); | ||
| 194 | declare!(SPI2); | ||
| 195 | declare!(SPI3); | ||
| 196 | declare!(SWPMI1); | ||
| 197 | declare!(TAMP_STAMP); | ||
| 198 | declare!(TIM1_BRK_TIM15); | ||
| 199 | declare!(TIM1_CC); | ||
| 200 | declare!(TIM1_TRG_COM_TIM17); | ||
| 201 | declare!(TIM1_UP_TIM16); | ||
| 202 | declare!(TIM2); | ||
| 203 | declare!(TIM3); | ||
| 204 | declare!(TIM4); | ||
| 205 | declare!(TIM5); | ||
| 206 | declare!(TIM6_DAC); | ||
| 207 | declare!(TIM7); | ||
| 208 | declare!(TIM8_BRK); | ||
| 209 | declare!(TIM8_CC); | ||
| 210 | declare!(TIM8_TRG_COM); | ||
| 211 | declare!(TIM8_UP); | ||
| 212 | declare!(TSC); | ||
| 213 | declare!(UART4); | ||
| 214 | declare!(UART5); | ||
| 215 | declare!(USART1); | ||
| 216 | declare!(USART2); | ||
| 217 | declare!(USART3); | ||
| 218 | declare!(WWDG); | ||
| 219 | } | ||
| 220 | mod interrupt_vector { | ||
| 221 | extern "C" { | ||
| 222 | fn ADC1_2(); | ||
| 223 | fn ADC3(); | ||
| 224 | fn CAN1_RX0(); | ||
| 225 | fn CAN1_RX1(); | ||
| 226 | fn CAN1_SCE(); | ||
| 227 | fn CAN1_TX(); | ||
| 228 | fn CAN2_RX0(); | ||
| 229 | fn CAN2_RX1(); | ||
| 230 | fn CAN2_SCE(); | ||
| 231 | fn CAN2_TX(); | ||
| 232 | fn COMP(); | ||
| 233 | fn CRS(); | ||
| 234 | fn DCMI(); | ||
| 235 | fn DFSDM1_FLT0(); | ||
| 236 | fn DFSDM1_FLT1(); | ||
| 237 | fn DFSDM1_FLT2(); | ||
| 238 | fn DFSDM1_FLT3(); | ||
| 239 | fn DMA1_Channel1(); | ||
| 240 | fn DMA1_Channel2(); | ||
| 241 | fn DMA1_Channel3(); | ||
| 242 | fn DMA1_Channel4(); | ||
| 243 | fn DMA1_Channel5(); | ||
| 244 | fn DMA1_Channel6(); | ||
| 245 | fn DMA1_Channel7(); | ||
| 246 | fn DMA2D(); | ||
| 247 | fn DMA2_Channel1(); | ||
| 248 | fn DMA2_Channel2(); | ||
| 249 | fn DMA2_Channel3(); | ||
| 250 | fn DMA2_Channel4(); | ||
| 251 | fn DMA2_Channel5(); | ||
| 252 | fn DMA2_Channel6(); | ||
| 253 | fn DMA2_Channel7(); | ||
| 254 | fn EXTI0(); | ||
| 255 | fn EXTI1(); | ||
| 256 | fn EXTI15_10(); | ||
| 257 | fn EXTI2(); | ||
| 258 | fn EXTI3(); | ||
| 259 | fn EXTI4(); | ||
| 260 | fn EXTI9_5(); | ||
| 261 | fn FLASH(); | ||
| 262 | fn FMC(); | ||
| 263 | fn FPU(); | ||
| 264 | fn I2C1_ER(); | ||
| 265 | fn I2C1_EV(); | ||
| 266 | fn I2C2_ER(); | ||
| 267 | fn I2C2_EV(); | ||
| 268 | fn I2C3_ER(); | ||
| 269 | fn I2C3_EV(); | ||
| 270 | fn I2C4_ER(); | ||
| 271 | fn I2C4_EV(); | ||
| 272 | fn LCD(); | ||
| 273 | fn LPTIM1(); | ||
| 274 | fn LPTIM2(); | ||
| 275 | fn LPUART1(); | ||
| 276 | fn OTG_FS(); | ||
| 277 | fn PVD_PVM(); | ||
| 278 | fn QUADSPI(); | ||
| 279 | fn RCC(); | ||
| 280 | fn RNG(); | ||
| 281 | fn RTC_Alarm(); | ||
| 282 | fn RTC_WKUP(); | ||
| 283 | fn SAI1(); | ||
| 284 | fn SAI2(); | ||
| 285 | fn SDMMC1(); | ||
| 286 | fn SPI1(); | ||
| 287 | fn SPI2(); | ||
| 288 | fn SPI3(); | ||
| 289 | fn SWPMI1(); | ||
| 290 | fn TAMP_STAMP(); | ||
| 291 | fn TIM1_BRK_TIM15(); | ||
| 292 | fn TIM1_CC(); | ||
| 293 | fn TIM1_TRG_COM_TIM17(); | ||
| 294 | fn TIM1_UP_TIM16(); | ||
| 295 | fn TIM2(); | ||
| 296 | fn TIM3(); | ||
| 297 | fn TIM4(); | ||
| 298 | fn TIM5(); | ||
| 299 | fn TIM6_DAC(); | ||
| 300 | fn TIM7(); | ||
| 301 | fn TIM8_BRK(); | ||
| 302 | fn TIM8_CC(); | ||
| 303 | fn TIM8_TRG_COM(); | ||
| 304 | fn TIM8_UP(); | ||
| 305 | fn TSC(); | ||
| 306 | fn UART4(); | ||
| 307 | fn UART5(); | ||
| 308 | fn USART1(); | ||
| 309 | fn USART2(); | ||
| 310 | fn USART3(); | ||
| 311 | fn WWDG(); | ||
| 312 | } | ||
| 313 | pub union Vector { | ||
| 314 | _handler: unsafe extern "C" fn(), | ||
| 315 | _reserved: u32, | ||
| 316 | } | ||
| 317 | #[link_section = ".vector_table.interrupts"] | ||
| 318 | #[no_mangle] | ||
| 319 | pub static __INTERRUPTS: [Vector; 91] = [ | ||
| 320 | Vector { _handler: WWDG }, | ||
| 321 | Vector { _handler: PVD_PVM }, | ||
| 322 | Vector { | ||
| 323 | _handler: TAMP_STAMP, | ||
| 324 | }, | ||
| 325 | Vector { _handler: RTC_WKUP }, | ||
| 326 | Vector { _handler: FLASH }, | ||
| 327 | Vector { _handler: RCC }, | ||
| 328 | Vector { _handler: EXTI0 }, | ||
| 329 | Vector { _handler: EXTI1 }, | ||
| 330 | Vector { _handler: EXTI2 }, | ||
| 331 | Vector { _handler: EXTI3 }, | ||
| 332 | Vector { _handler: EXTI4 }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel1, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel2, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel3, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel4, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel5, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel6, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA1_Channel7, | ||
| 353 | }, | ||
| 354 | Vector { _handler: ADC1_2 }, | ||
| 355 | Vector { _handler: CAN1_TX }, | ||
| 356 | Vector { _handler: CAN1_RX0 }, | ||
| 357 | Vector { _handler: CAN1_RX1 }, | ||
| 358 | Vector { _handler: CAN1_SCE }, | ||
| 359 | Vector { _handler: EXTI9_5 }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_BRK_TIM15, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_UP_TIM16, | ||
| 365 | }, | ||
| 366 | Vector { | ||
| 367 | _handler: TIM1_TRG_COM_TIM17, | ||
| 368 | }, | ||
| 369 | Vector { _handler: TIM1_CC }, | ||
| 370 | Vector { _handler: TIM2 }, | ||
| 371 | Vector { _handler: TIM3 }, | ||
| 372 | Vector { _handler: TIM4 }, | ||
| 373 | Vector { _handler: I2C1_EV }, | ||
| 374 | Vector { _handler: I2C1_ER }, | ||
| 375 | Vector { _handler: I2C2_EV }, | ||
| 376 | Vector { _handler: I2C2_ER }, | ||
| 377 | Vector { _handler: SPI1 }, | ||
| 378 | Vector { _handler: SPI2 }, | ||
| 379 | Vector { _handler: USART1 }, | ||
| 380 | Vector { _handler: USART2 }, | ||
| 381 | Vector { _handler: USART3 }, | ||
| 382 | Vector { | ||
| 383 | _handler: EXTI15_10, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: RTC_Alarm, | ||
| 387 | }, | ||
| 388 | Vector { | ||
| 389 | _handler: DFSDM1_FLT3, | ||
| 390 | }, | ||
| 391 | Vector { _handler: TIM8_BRK }, | ||
| 392 | Vector { _handler: TIM8_UP }, | ||
| 393 | Vector { | ||
| 394 | _handler: TIM8_TRG_COM, | ||
| 395 | }, | ||
| 396 | Vector { _handler: TIM8_CC }, | ||
| 397 | Vector { _handler: ADC3 }, | ||
| 398 | Vector { _handler: FMC }, | ||
| 399 | Vector { _handler: SDMMC1 }, | ||
| 400 | Vector { _handler: TIM5 }, | ||
| 401 | Vector { _handler: SPI3 }, | ||
| 402 | Vector { _handler: UART4 }, | ||
| 403 | Vector { _handler: UART5 }, | ||
| 404 | Vector { _handler: TIM6_DAC }, | ||
| 405 | Vector { _handler: TIM7 }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel1, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel2, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel3, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel4, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel5, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT0, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT1, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DFSDM1_FLT2, | ||
| 429 | }, | ||
| 430 | Vector { _handler: COMP }, | ||
| 431 | Vector { _handler: LPTIM1 }, | ||
| 432 | Vector { _handler: LPTIM2 }, | ||
| 433 | Vector { _handler: OTG_FS }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel6, | ||
| 436 | }, | ||
| 437 | Vector { | ||
| 438 | _handler: DMA2_Channel7, | ||
| 439 | }, | ||
| 440 | Vector { _handler: LPUART1 }, | ||
| 441 | Vector { _handler: QUADSPI }, | ||
| 442 | Vector { _handler: I2C3_EV }, | ||
| 443 | Vector { _handler: I2C3_ER }, | ||
| 444 | Vector { _handler: SAI1 }, | ||
| 445 | Vector { _handler: SAI2 }, | ||
| 446 | Vector { _handler: SWPMI1 }, | ||
| 447 | Vector { _handler: TSC }, | ||
| 448 | Vector { _handler: LCD }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { _handler: RNG }, | ||
| 451 | Vector { _handler: FPU }, | ||
| 452 | Vector { _handler: CRS }, | ||
| 453 | Vector { _handler: I2C4_EV }, | ||
| 454 | Vector { _handler: I2C4_ER }, | ||
| 455 | Vector { _handler: DCMI }, | ||
| 456 | Vector { _handler: CAN2_TX }, | ||
| 457 | Vector { _handler: CAN2_RX0 }, | ||
| 458 | Vector { _handler: CAN2_RX1 }, | ||
| 459 | Vector { _handler: CAN2_SCE }, | ||
| 460 | Vector { _handler: DMA2D }, | ||
| 461 | ]; | ||
| 462 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 463 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 464 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 465 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l496rg.rs b/embassy-stm32/src/chip/stm32l496rg.rs index 5200ecd80..e54e0774d 100644 --- a/embassy-stm32/src/chip/stm32l496rg.rs +++ b/embassy-stm32/src/chip/stm32l496rg.rs | |||
| @@ -1,12 +1,12 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, |
| 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, | 5 | PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, |
| 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, | 6 | PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, |
| 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, | 7 | PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, |
| 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, | 8 | PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, |
| 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, | 9 | PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| @@ -15,8 +15,451 @@ peripherals!( | |||
| 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, | 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 16 | USART3, USB_OTG_FS, WWDG | 16 | USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | ADC3 = 47, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | CAN2_RX0 = 87, | ||
| 38 | CAN2_RX1 = 88, | ||
| 39 | CAN2_SCE = 89, | ||
| 40 | CAN2_TX = 86, | ||
| 41 | COMP = 64, | ||
| 42 | CRS = 82, | ||
| 43 | DCMI = 85, | ||
| 44 | DFSDM1_FLT0 = 61, | ||
| 45 | DFSDM1_FLT1 = 62, | ||
| 46 | DFSDM1_FLT2 = 63, | ||
| 47 | DFSDM1_FLT3 = 42, | ||
| 48 | DMA1_Channel1 = 11, | ||
| 49 | DMA1_Channel2 = 12, | ||
| 50 | DMA1_Channel3 = 13, | ||
| 51 | DMA1_Channel4 = 14, | ||
| 52 | DMA1_Channel5 = 15, | ||
| 53 | DMA1_Channel6 = 16, | ||
| 54 | DMA1_Channel7 = 17, | ||
| 55 | DMA2D = 90, | ||
| 56 | DMA2_Channel1 = 56, | ||
| 57 | DMA2_Channel2 = 57, | ||
| 58 | DMA2_Channel3 = 58, | ||
| 59 | DMA2_Channel4 = 59, | ||
| 60 | DMA2_Channel5 = 60, | ||
| 61 | DMA2_Channel6 = 68, | ||
| 62 | DMA2_Channel7 = 69, | ||
| 63 | EXTI0 = 6, | ||
| 64 | EXTI1 = 7, | ||
| 65 | EXTI15_10 = 40, | ||
| 66 | EXTI2 = 8, | ||
| 67 | EXTI3 = 9, | ||
| 68 | EXTI4 = 10, | ||
| 69 | EXTI9_5 = 23, | ||
| 70 | FLASH = 4, | ||
| 71 | FMC = 48, | ||
| 72 | FPU = 81, | ||
| 73 | I2C1_ER = 32, | ||
| 74 | I2C1_EV = 31, | ||
| 75 | I2C2_ER = 34, | ||
| 76 | I2C2_EV = 33, | ||
| 77 | I2C3_ER = 73, | ||
| 78 | I2C3_EV = 72, | ||
| 79 | I2C4_ER = 84, | ||
| 80 | I2C4_EV = 83, | ||
| 81 | LCD = 78, | ||
| 82 | LPTIM1 = 65, | ||
| 83 | LPTIM2 = 66, | ||
| 84 | LPUART1 = 70, | ||
| 85 | OTG_FS = 67, | ||
| 86 | PVD_PVM = 1, | ||
| 87 | QUADSPI = 71, | ||
| 88 | RCC = 5, | ||
| 89 | RNG = 80, | ||
| 90 | RTC_Alarm = 41, | ||
| 91 | RTC_WKUP = 3, | ||
| 92 | SAI1 = 74, | ||
| 93 | SAI2 = 75, | ||
| 94 | SDMMC1 = 49, | ||
| 95 | SPI1 = 35, | ||
| 96 | SPI2 = 36, | ||
| 97 | SPI3 = 51, | ||
| 98 | SWPMI1 = 76, | ||
| 99 | TAMP_STAMP = 2, | ||
| 100 | TIM1_BRK_TIM15 = 24, | ||
| 101 | TIM1_CC = 27, | ||
| 102 | TIM1_TRG_COM_TIM17 = 26, | ||
| 103 | TIM1_UP_TIM16 = 25, | ||
| 104 | TIM2 = 28, | ||
| 105 | TIM3 = 29, | ||
| 106 | TIM4 = 30, | ||
| 107 | TIM5 = 50, | ||
| 108 | TIM6_DAC = 54, | ||
| 109 | TIM7 = 55, | ||
| 110 | TIM8_BRK = 43, | ||
| 111 | TIM8_CC = 46, | ||
| 112 | TIM8_TRG_COM = 45, | ||
| 113 | TIM8_UP = 44, | ||
| 114 | TSC = 77, | ||
| 115 | UART4 = 52, | ||
| 116 | UART5 = 53, | ||
| 117 | USART1 = 37, | ||
| 118 | USART2 = 38, | ||
| 119 | USART3 = 39, | ||
| 120 | WWDG = 0, | ||
| 121 | } | ||
| 122 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 123 | #[inline(always)] | ||
| 124 | fn number(self) -> u16 { | ||
| 125 | self as u16 | ||
| 126 | } | ||
| 127 | } | ||
| 128 | |||
| 129 | declare!(ADC1_2); | ||
| 130 | declare!(ADC3); | ||
| 131 | declare!(CAN1_RX0); | ||
| 132 | declare!(CAN1_RX1); | ||
| 133 | declare!(CAN1_SCE); | ||
| 134 | declare!(CAN1_TX); | ||
| 135 | declare!(CAN2_RX0); | ||
| 136 | declare!(CAN2_RX1); | ||
| 137 | declare!(CAN2_SCE); | ||
| 138 | declare!(CAN2_TX); | ||
| 139 | declare!(COMP); | ||
| 140 | declare!(CRS); | ||
| 141 | declare!(DCMI); | ||
| 142 | declare!(DFSDM1_FLT0); | ||
| 143 | declare!(DFSDM1_FLT1); | ||
| 144 | declare!(DFSDM1_FLT2); | ||
| 145 | declare!(DFSDM1_FLT3); | ||
| 146 | declare!(DMA1_Channel1); | ||
| 147 | declare!(DMA1_Channel2); | ||
| 148 | declare!(DMA1_Channel3); | ||
| 149 | declare!(DMA1_Channel4); | ||
| 150 | declare!(DMA1_Channel5); | ||
| 151 | declare!(DMA1_Channel6); | ||
| 152 | declare!(DMA1_Channel7); | ||
| 153 | declare!(DMA2D); | ||
| 154 | declare!(DMA2_Channel1); | ||
| 155 | declare!(DMA2_Channel2); | ||
| 156 | declare!(DMA2_Channel3); | ||
| 157 | declare!(DMA2_Channel4); | ||
| 158 | declare!(DMA2_Channel5); | ||
| 159 | declare!(DMA2_Channel6); | ||
| 160 | declare!(DMA2_Channel7); | ||
| 161 | declare!(EXTI0); | ||
| 162 | declare!(EXTI1); | ||
| 163 | declare!(EXTI15_10); | ||
| 164 | declare!(EXTI2); | ||
| 165 | declare!(EXTI3); | ||
| 166 | declare!(EXTI4); | ||
| 167 | declare!(EXTI9_5); | ||
| 168 | declare!(FLASH); | ||
| 169 | declare!(FMC); | ||
| 170 | declare!(FPU); | ||
| 171 | declare!(I2C1_ER); | ||
| 172 | declare!(I2C1_EV); | ||
| 173 | declare!(I2C2_ER); | ||
| 174 | declare!(I2C2_EV); | ||
| 175 | declare!(I2C3_ER); | ||
| 176 | declare!(I2C3_EV); | ||
| 177 | declare!(I2C4_ER); | ||
| 178 | declare!(I2C4_EV); | ||
| 179 | declare!(LCD); | ||
| 180 | declare!(LPTIM1); | ||
| 181 | declare!(LPTIM2); | ||
| 182 | declare!(LPUART1); | ||
| 183 | declare!(OTG_FS); | ||
| 184 | declare!(PVD_PVM); | ||
| 185 | declare!(QUADSPI); | ||
| 186 | declare!(RCC); | ||
| 187 | declare!(RNG); | ||
| 188 | declare!(RTC_Alarm); | ||
| 189 | declare!(RTC_WKUP); | ||
| 190 | declare!(SAI1); | ||
| 191 | declare!(SAI2); | ||
| 192 | declare!(SDMMC1); | ||
| 193 | declare!(SPI1); | ||
| 194 | declare!(SPI2); | ||
| 195 | declare!(SPI3); | ||
| 196 | declare!(SWPMI1); | ||
| 197 | declare!(TAMP_STAMP); | ||
| 198 | declare!(TIM1_BRK_TIM15); | ||
| 199 | declare!(TIM1_CC); | ||
| 200 | declare!(TIM1_TRG_COM_TIM17); | ||
| 201 | declare!(TIM1_UP_TIM16); | ||
| 202 | declare!(TIM2); | ||
| 203 | declare!(TIM3); | ||
| 204 | declare!(TIM4); | ||
| 205 | declare!(TIM5); | ||
| 206 | declare!(TIM6_DAC); | ||
| 207 | declare!(TIM7); | ||
| 208 | declare!(TIM8_BRK); | ||
| 209 | declare!(TIM8_CC); | ||
| 210 | declare!(TIM8_TRG_COM); | ||
| 211 | declare!(TIM8_UP); | ||
| 212 | declare!(TSC); | ||
| 213 | declare!(UART4); | ||
| 214 | declare!(UART5); | ||
| 215 | declare!(USART1); | ||
| 216 | declare!(USART2); | ||
| 217 | declare!(USART3); | ||
| 218 | declare!(WWDG); | ||
| 219 | } | ||
| 220 | mod interrupt_vector { | ||
| 221 | extern "C" { | ||
| 222 | fn ADC1_2(); | ||
| 223 | fn ADC3(); | ||
| 224 | fn CAN1_RX0(); | ||
| 225 | fn CAN1_RX1(); | ||
| 226 | fn CAN1_SCE(); | ||
| 227 | fn CAN1_TX(); | ||
| 228 | fn CAN2_RX0(); | ||
| 229 | fn CAN2_RX1(); | ||
| 230 | fn CAN2_SCE(); | ||
| 231 | fn CAN2_TX(); | ||
| 232 | fn COMP(); | ||
| 233 | fn CRS(); | ||
| 234 | fn DCMI(); | ||
| 235 | fn DFSDM1_FLT0(); | ||
| 236 | fn DFSDM1_FLT1(); | ||
| 237 | fn DFSDM1_FLT2(); | ||
| 238 | fn DFSDM1_FLT3(); | ||
| 239 | fn DMA1_Channel1(); | ||
| 240 | fn DMA1_Channel2(); | ||
| 241 | fn DMA1_Channel3(); | ||
| 242 | fn DMA1_Channel4(); | ||
| 243 | fn DMA1_Channel5(); | ||
| 244 | fn DMA1_Channel6(); | ||
| 245 | fn DMA1_Channel7(); | ||
| 246 | fn DMA2D(); | ||
| 247 | fn DMA2_Channel1(); | ||
| 248 | fn DMA2_Channel2(); | ||
| 249 | fn DMA2_Channel3(); | ||
| 250 | fn DMA2_Channel4(); | ||
| 251 | fn DMA2_Channel5(); | ||
| 252 | fn DMA2_Channel6(); | ||
| 253 | fn DMA2_Channel7(); | ||
| 254 | fn EXTI0(); | ||
| 255 | fn EXTI1(); | ||
| 256 | fn EXTI15_10(); | ||
| 257 | fn EXTI2(); | ||
| 258 | fn EXTI3(); | ||
| 259 | fn EXTI4(); | ||
| 260 | fn EXTI9_5(); | ||
| 261 | fn FLASH(); | ||
| 262 | fn FMC(); | ||
| 263 | fn FPU(); | ||
| 264 | fn I2C1_ER(); | ||
| 265 | fn I2C1_EV(); | ||
| 266 | fn I2C2_ER(); | ||
| 267 | fn I2C2_EV(); | ||
| 268 | fn I2C3_ER(); | ||
| 269 | fn I2C3_EV(); | ||
| 270 | fn I2C4_ER(); | ||
| 271 | fn I2C4_EV(); | ||
| 272 | fn LCD(); | ||
| 273 | fn LPTIM1(); | ||
| 274 | fn LPTIM2(); | ||
| 275 | fn LPUART1(); | ||
| 276 | fn OTG_FS(); | ||
| 277 | fn PVD_PVM(); | ||
| 278 | fn QUADSPI(); | ||
| 279 | fn RCC(); | ||
| 280 | fn RNG(); | ||
| 281 | fn RTC_Alarm(); | ||
| 282 | fn RTC_WKUP(); | ||
| 283 | fn SAI1(); | ||
| 284 | fn SAI2(); | ||
| 285 | fn SDMMC1(); | ||
| 286 | fn SPI1(); | ||
| 287 | fn SPI2(); | ||
| 288 | fn SPI3(); | ||
| 289 | fn SWPMI1(); | ||
| 290 | fn TAMP_STAMP(); | ||
| 291 | fn TIM1_BRK_TIM15(); | ||
| 292 | fn TIM1_CC(); | ||
| 293 | fn TIM1_TRG_COM_TIM17(); | ||
| 294 | fn TIM1_UP_TIM16(); | ||
| 295 | fn TIM2(); | ||
| 296 | fn TIM3(); | ||
| 297 | fn TIM4(); | ||
| 298 | fn TIM5(); | ||
| 299 | fn TIM6_DAC(); | ||
| 300 | fn TIM7(); | ||
| 301 | fn TIM8_BRK(); | ||
| 302 | fn TIM8_CC(); | ||
| 303 | fn TIM8_TRG_COM(); | ||
| 304 | fn TIM8_UP(); | ||
| 305 | fn TSC(); | ||
| 306 | fn UART4(); | ||
| 307 | fn UART5(); | ||
| 308 | fn USART1(); | ||
| 309 | fn USART2(); | ||
| 310 | fn USART3(); | ||
| 311 | fn WWDG(); | ||
| 312 | } | ||
| 313 | pub union Vector { | ||
| 314 | _handler: unsafe extern "C" fn(), | ||
| 315 | _reserved: u32, | ||
| 316 | } | ||
| 317 | #[link_section = ".vector_table.interrupts"] | ||
| 318 | #[no_mangle] | ||
| 319 | pub static __INTERRUPTS: [Vector; 91] = [ | ||
| 320 | Vector { _handler: WWDG }, | ||
| 321 | Vector { _handler: PVD_PVM }, | ||
| 322 | Vector { | ||
| 323 | _handler: TAMP_STAMP, | ||
| 324 | }, | ||
| 325 | Vector { _handler: RTC_WKUP }, | ||
| 326 | Vector { _handler: FLASH }, | ||
| 327 | Vector { _handler: RCC }, | ||
| 328 | Vector { _handler: EXTI0 }, | ||
| 329 | Vector { _handler: EXTI1 }, | ||
| 330 | Vector { _handler: EXTI2 }, | ||
| 331 | Vector { _handler: EXTI3 }, | ||
| 332 | Vector { _handler: EXTI4 }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel1, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel2, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel3, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel4, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel5, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel6, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA1_Channel7, | ||
| 353 | }, | ||
| 354 | Vector { _handler: ADC1_2 }, | ||
| 355 | Vector { _handler: CAN1_TX }, | ||
| 356 | Vector { _handler: CAN1_RX0 }, | ||
| 357 | Vector { _handler: CAN1_RX1 }, | ||
| 358 | Vector { _handler: CAN1_SCE }, | ||
| 359 | Vector { _handler: EXTI9_5 }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_BRK_TIM15, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_UP_TIM16, | ||
| 365 | }, | ||
| 366 | Vector { | ||
| 367 | _handler: TIM1_TRG_COM_TIM17, | ||
| 368 | }, | ||
| 369 | Vector { _handler: TIM1_CC }, | ||
| 370 | Vector { _handler: TIM2 }, | ||
| 371 | Vector { _handler: TIM3 }, | ||
| 372 | Vector { _handler: TIM4 }, | ||
| 373 | Vector { _handler: I2C1_EV }, | ||
| 374 | Vector { _handler: I2C1_ER }, | ||
| 375 | Vector { _handler: I2C2_EV }, | ||
| 376 | Vector { _handler: I2C2_ER }, | ||
| 377 | Vector { _handler: SPI1 }, | ||
| 378 | Vector { _handler: SPI2 }, | ||
| 379 | Vector { _handler: USART1 }, | ||
| 380 | Vector { _handler: USART2 }, | ||
| 381 | Vector { _handler: USART3 }, | ||
| 382 | Vector { | ||
| 383 | _handler: EXTI15_10, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: RTC_Alarm, | ||
| 387 | }, | ||
| 388 | Vector { | ||
| 389 | _handler: DFSDM1_FLT3, | ||
| 390 | }, | ||
| 391 | Vector { _handler: TIM8_BRK }, | ||
| 392 | Vector { _handler: TIM8_UP }, | ||
| 393 | Vector { | ||
| 394 | _handler: TIM8_TRG_COM, | ||
| 395 | }, | ||
| 396 | Vector { _handler: TIM8_CC }, | ||
| 397 | Vector { _handler: ADC3 }, | ||
| 398 | Vector { _handler: FMC }, | ||
| 399 | Vector { _handler: SDMMC1 }, | ||
| 400 | Vector { _handler: TIM5 }, | ||
| 401 | Vector { _handler: SPI3 }, | ||
| 402 | Vector { _handler: UART4 }, | ||
| 403 | Vector { _handler: UART5 }, | ||
| 404 | Vector { _handler: TIM6_DAC }, | ||
| 405 | Vector { _handler: TIM7 }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel1, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel2, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel3, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel4, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel5, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT0, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT1, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DFSDM1_FLT2, | ||
| 429 | }, | ||
| 430 | Vector { _handler: COMP }, | ||
| 431 | Vector { _handler: LPTIM1 }, | ||
| 432 | Vector { _handler: LPTIM2 }, | ||
| 433 | Vector { _handler: OTG_FS }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel6, | ||
| 436 | }, | ||
| 437 | Vector { | ||
| 438 | _handler: DMA2_Channel7, | ||
| 439 | }, | ||
| 440 | Vector { _handler: LPUART1 }, | ||
| 441 | Vector { _handler: QUADSPI }, | ||
| 442 | Vector { _handler: I2C3_EV }, | ||
| 443 | Vector { _handler: I2C3_ER }, | ||
| 444 | Vector { _handler: SAI1 }, | ||
| 445 | Vector { _handler: SAI2 }, | ||
| 446 | Vector { _handler: SWPMI1 }, | ||
| 447 | Vector { _handler: TSC }, | ||
| 448 | Vector { _handler: LCD }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { _handler: RNG }, | ||
| 451 | Vector { _handler: FPU }, | ||
| 452 | Vector { _handler: CRS }, | ||
| 453 | Vector { _handler: I2C4_EV }, | ||
| 454 | Vector { _handler: I2C4_ER }, | ||
| 455 | Vector { _handler: DCMI }, | ||
| 456 | Vector { _handler: CAN2_TX }, | ||
| 457 | Vector { _handler: CAN2_RX0 }, | ||
| 458 | Vector { _handler: CAN2_RX1 }, | ||
| 459 | Vector { _handler: CAN2_SCE }, | ||
| 460 | Vector { _handler: DMA2D }, | ||
| 461 | ]; | ||
| 462 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 463 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 464 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 465 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l496ve.rs b/embassy-stm32/src/chip/stm32l496ve.rs index 5200ecd80..e54e0774d 100644 --- a/embassy-stm32/src/chip/stm32l496ve.rs +++ b/embassy-stm32/src/chip/stm32l496ve.rs | |||
| @@ -1,12 +1,12 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, |
| 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, | 5 | PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, |
| 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, | 6 | PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, |
| 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, | 7 | PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, |
| 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, | 8 | PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, |
| 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, | 9 | PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| @@ -15,8 +15,451 @@ peripherals!( | |||
| 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, | 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 16 | USART3, USB_OTG_FS, WWDG | 16 | USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | ADC3 = 47, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | CAN2_RX0 = 87, | ||
| 38 | CAN2_RX1 = 88, | ||
| 39 | CAN2_SCE = 89, | ||
| 40 | CAN2_TX = 86, | ||
| 41 | COMP = 64, | ||
| 42 | CRS = 82, | ||
| 43 | DCMI = 85, | ||
| 44 | DFSDM1_FLT0 = 61, | ||
| 45 | DFSDM1_FLT1 = 62, | ||
| 46 | DFSDM1_FLT2 = 63, | ||
| 47 | DFSDM1_FLT3 = 42, | ||
| 48 | DMA1_Channel1 = 11, | ||
| 49 | DMA1_Channel2 = 12, | ||
| 50 | DMA1_Channel3 = 13, | ||
| 51 | DMA1_Channel4 = 14, | ||
| 52 | DMA1_Channel5 = 15, | ||
| 53 | DMA1_Channel6 = 16, | ||
| 54 | DMA1_Channel7 = 17, | ||
| 55 | DMA2D = 90, | ||
| 56 | DMA2_Channel1 = 56, | ||
| 57 | DMA2_Channel2 = 57, | ||
| 58 | DMA2_Channel3 = 58, | ||
| 59 | DMA2_Channel4 = 59, | ||
| 60 | DMA2_Channel5 = 60, | ||
| 61 | DMA2_Channel6 = 68, | ||
| 62 | DMA2_Channel7 = 69, | ||
| 63 | EXTI0 = 6, | ||
| 64 | EXTI1 = 7, | ||
| 65 | EXTI15_10 = 40, | ||
| 66 | EXTI2 = 8, | ||
| 67 | EXTI3 = 9, | ||
| 68 | EXTI4 = 10, | ||
| 69 | EXTI9_5 = 23, | ||
| 70 | FLASH = 4, | ||
| 71 | FMC = 48, | ||
| 72 | FPU = 81, | ||
| 73 | I2C1_ER = 32, | ||
| 74 | I2C1_EV = 31, | ||
| 75 | I2C2_ER = 34, | ||
| 76 | I2C2_EV = 33, | ||
| 77 | I2C3_ER = 73, | ||
| 78 | I2C3_EV = 72, | ||
| 79 | I2C4_ER = 84, | ||
| 80 | I2C4_EV = 83, | ||
| 81 | LCD = 78, | ||
| 82 | LPTIM1 = 65, | ||
| 83 | LPTIM2 = 66, | ||
| 84 | LPUART1 = 70, | ||
| 85 | OTG_FS = 67, | ||
| 86 | PVD_PVM = 1, | ||
| 87 | QUADSPI = 71, | ||
| 88 | RCC = 5, | ||
| 89 | RNG = 80, | ||
| 90 | RTC_Alarm = 41, | ||
| 91 | RTC_WKUP = 3, | ||
| 92 | SAI1 = 74, | ||
| 93 | SAI2 = 75, | ||
| 94 | SDMMC1 = 49, | ||
| 95 | SPI1 = 35, | ||
| 96 | SPI2 = 36, | ||
| 97 | SPI3 = 51, | ||
| 98 | SWPMI1 = 76, | ||
| 99 | TAMP_STAMP = 2, | ||
| 100 | TIM1_BRK_TIM15 = 24, | ||
| 101 | TIM1_CC = 27, | ||
| 102 | TIM1_TRG_COM_TIM17 = 26, | ||
| 103 | TIM1_UP_TIM16 = 25, | ||
| 104 | TIM2 = 28, | ||
| 105 | TIM3 = 29, | ||
| 106 | TIM4 = 30, | ||
| 107 | TIM5 = 50, | ||
| 108 | TIM6_DAC = 54, | ||
| 109 | TIM7 = 55, | ||
| 110 | TIM8_BRK = 43, | ||
| 111 | TIM8_CC = 46, | ||
| 112 | TIM8_TRG_COM = 45, | ||
| 113 | TIM8_UP = 44, | ||
| 114 | TSC = 77, | ||
| 115 | UART4 = 52, | ||
| 116 | UART5 = 53, | ||
| 117 | USART1 = 37, | ||
| 118 | USART2 = 38, | ||
| 119 | USART3 = 39, | ||
| 120 | WWDG = 0, | ||
| 121 | } | ||
| 122 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 123 | #[inline(always)] | ||
| 124 | fn number(self) -> u16 { | ||
| 125 | self as u16 | ||
| 126 | } | ||
| 127 | } | ||
| 128 | |||
| 129 | declare!(ADC1_2); | ||
| 130 | declare!(ADC3); | ||
| 131 | declare!(CAN1_RX0); | ||
| 132 | declare!(CAN1_RX1); | ||
| 133 | declare!(CAN1_SCE); | ||
| 134 | declare!(CAN1_TX); | ||
| 135 | declare!(CAN2_RX0); | ||
| 136 | declare!(CAN2_RX1); | ||
| 137 | declare!(CAN2_SCE); | ||
| 138 | declare!(CAN2_TX); | ||
| 139 | declare!(COMP); | ||
| 140 | declare!(CRS); | ||
| 141 | declare!(DCMI); | ||
| 142 | declare!(DFSDM1_FLT0); | ||
| 143 | declare!(DFSDM1_FLT1); | ||
| 144 | declare!(DFSDM1_FLT2); | ||
| 145 | declare!(DFSDM1_FLT3); | ||
| 146 | declare!(DMA1_Channel1); | ||
| 147 | declare!(DMA1_Channel2); | ||
| 148 | declare!(DMA1_Channel3); | ||
| 149 | declare!(DMA1_Channel4); | ||
| 150 | declare!(DMA1_Channel5); | ||
| 151 | declare!(DMA1_Channel6); | ||
| 152 | declare!(DMA1_Channel7); | ||
| 153 | declare!(DMA2D); | ||
| 154 | declare!(DMA2_Channel1); | ||
| 155 | declare!(DMA2_Channel2); | ||
| 156 | declare!(DMA2_Channel3); | ||
| 157 | declare!(DMA2_Channel4); | ||
| 158 | declare!(DMA2_Channel5); | ||
| 159 | declare!(DMA2_Channel6); | ||
| 160 | declare!(DMA2_Channel7); | ||
| 161 | declare!(EXTI0); | ||
| 162 | declare!(EXTI1); | ||
| 163 | declare!(EXTI15_10); | ||
| 164 | declare!(EXTI2); | ||
| 165 | declare!(EXTI3); | ||
| 166 | declare!(EXTI4); | ||
| 167 | declare!(EXTI9_5); | ||
| 168 | declare!(FLASH); | ||
| 169 | declare!(FMC); | ||
| 170 | declare!(FPU); | ||
| 171 | declare!(I2C1_ER); | ||
| 172 | declare!(I2C1_EV); | ||
| 173 | declare!(I2C2_ER); | ||
| 174 | declare!(I2C2_EV); | ||
| 175 | declare!(I2C3_ER); | ||
| 176 | declare!(I2C3_EV); | ||
| 177 | declare!(I2C4_ER); | ||
| 178 | declare!(I2C4_EV); | ||
| 179 | declare!(LCD); | ||
| 180 | declare!(LPTIM1); | ||
| 181 | declare!(LPTIM2); | ||
| 182 | declare!(LPUART1); | ||
| 183 | declare!(OTG_FS); | ||
| 184 | declare!(PVD_PVM); | ||
| 185 | declare!(QUADSPI); | ||
| 186 | declare!(RCC); | ||
| 187 | declare!(RNG); | ||
| 188 | declare!(RTC_Alarm); | ||
| 189 | declare!(RTC_WKUP); | ||
| 190 | declare!(SAI1); | ||
| 191 | declare!(SAI2); | ||
| 192 | declare!(SDMMC1); | ||
| 193 | declare!(SPI1); | ||
| 194 | declare!(SPI2); | ||
| 195 | declare!(SPI3); | ||
| 196 | declare!(SWPMI1); | ||
| 197 | declare!(TAMP_STAMP); | ||
| 198 | declare!(TIM1_BRK_TIM15); | ||
| 199 | declare!(TIM1_CC); | ||
| 200 | declare!(TIM1_TRG_COM_TIM17); | ||
| 201 | declare!(TIM1_UP_TIM16); | ||
| 202 | declare!(TIM2); | ||
| 203 | declare!(TIM3); | ||
| 204 | declare!(TIM4); | ||
| 205 | declare!(TIM5); | ||
| 206 | declare!(TIM6_DAC); | ||
| 207 | declare!(TIM7); | ||
| 208 | declare!(TIM8_BRK); | ||
| 209 | declare!(TIM8_CC); | ||
| 210 | declare!(TIM8_TRG_COM); | ||
| 211 | declare!(TIM8_UP); | ||
| 212 | declare!(TSC); | ||
| 213 | declare!(UART4); | ||
| 214 | declare!(UART5); | ||
| 215 | declare!(USART1); | ||
| 216 | declare!(USART2); | ||
| 217 | declare!(USART3); | ||
| 218 | declare!(WWDG); | ||
| 219 | } | ||
| 220 | mod interrupt_vector { | ||
| 221 | extern "C" { | ||
| 222 | fn ADC1_2(); | ||
| 223 | fn ADC3(); | ||
| 224 | fn CAN1_RX0(); | ||
| 225 | fn CAN1_RX1(); | ||
| 226 | fn CAN1_SCE(); | ||
| 227 | fn CAN1_TX(); | ||
| 228 | fn CAN2_RX0(); | ||
| 229 | fn CAN2_RX1(); | ||
| 230 | fn CAN2_SCE(); | ||
| 231 | fn CAN2_TX(); | ||
| 232 | fn COMP(); | ||
| 233 | fn CRS(); | ||
| 234 | fn DCMI(); | ||
| 235 | fn DFSDM1_FLT0(); | ||
| 236 | fn DFSDM1_FLT1(); | ||
| 237 | fn DFSDM1_FLT2(); | ||
| 238 | fn DFSDM1_FLT3(); | ||
| 239 | fn DMA1_Channel1(); | ||
| 240 | fn DMA1_Channel2(); | ||
| 241 | fn DMA1_Channel3(); | ||
| 242 | fn DMA1_Channel4(); | ||
| 243 | fn DMA1_Channel5(); | ||
| 244 | fn DMA1_Channel6(); | ||
| 245 | fn DMA1_Channel7(); | ||
| 246 | fn DMA2D(); | ||
| 247 | fn DMA2_Channel1(); | ||
| 248 | fn DMA2_Channel2(); | ||
| 249 | fn DMA2_Channel3(); | ||
| 250 | fn DMA2_Channel4(); | ||
| 251 | fn DMA2_Channel5(); | ||
| 252 | fn DMA2_Channel6(); | ||
| 253 | fn DMA2_Channel7(); | ||
| 254 | fn EXTI0(); | ||
| 255 | fn EXTI1(); | ||
| 256 | fn EXTI15_10(); | ||
| 257 | fn EXTI2(); | ||
| 258 | fn EXTI3(); | ||
| 259 | fn EXTI4(); | ||
| 260 | fn EXTI9_5(); | ||
| 261 | fn FLASH(); | ||
| 262 | fn FMC(); | ||
| 263 | fn FPU(); | ||
| 264 | fn I2C1_ER(); | ||
| 265 | fn I2C1_EV(); | ||
| 266 | fn I2C2_ER(); | ||
| 267 | fn I2C2_EV(); | ||
| 268 | fn I2C3_ER(); | ||
| 269 | fn I2C3_EV(); | ||
| 270 | fn I2C4_ER(); | ||
| 271 | fn I2C4_EV(); | ||
| 272 | fn LCD(); | ||
| 273 | fn LPTIM1(); | ||
| 274 | fn LPTIM2(); | ||
| 275 | fn LPUART1(); | ||
| 276 | fn OTG_FS(); | ||
| 277 | fn PVD_PVM(); | ||
| 278 | fn QUADSPI(); | ||
| 279 | fn RCC(); | ||
| 280 | fn RNG(); | ||
| 281 | fn RTC_Alarm(); | ||
| 282 | fn RTC_WKUP(); | ||
| 283 | fn SAI1(); | ||
| 284 | fn SAI2(); | ||
| 285 | fn SDMMC1(); | ||
| 286 | fn SPI1(); | ||
| 287 | fn SPI2(); | ||
| 288 | fn SPI3(); | ||
| 289 | fn SWPMI1(); | ||
| 290 | fn TAMP_STAMP(); | ||
| 291 | fn TIM1_BRK_TIM15(); | ||
| 292 | fn TIM1_CC(); | ||
| 293 | fn TIM1_TRG_COM_TIM17(); | ||
| 294 | fn TIM1_UP_TIM16(); | ||
| 295 | fn TIM2(); | ||
| 296 | fn TIM3(); | ||
| 297 | fn TIM4(); | ||
| 298 | fn TIM5(); | ||
| 299 | fn TIM6_DAC(); | ||
| 300 | fn TIM7(); | ||
| 301 | fn TIM8_BRK(); | ||
| 302 | fn TIM8_CC(); | ||
| 303 | fn TIM8_TRG_COM(); | ||
| 304 | fn TIM8_UP(); | ||
| 305 | fn TSC(); | ||
| 306 | fn UART4(); | ||
| 307 | fn UART5(); | ||
| 308 | fn USART1(); | ||
| 309 | fn USART2(); | ||
| 310 | fn USART3(); | ||
| 311 | fn WWDG(); | ||
| 312 | } | ||
| 313 | pub union Vector { | ||
| 314 | _handler: unsafe extern "C" fn(), | ||
| 315 | _reserved: u32, | ||
| 316 | } | ||
| 317 | #[link_section = ".vector_table.interrupts"] | ||
| 318 | #[no_mangle] | ||
| 319 | pub static __INTERRUPTS: [Vector; 91] = [ | ||
| 320 | Vector { _handler: WWDG }, | ||
| 321 | Vector { _handler: PVD_PVM }, | ||
| 322 | Vector { | ||
| 323 | _handler: TAMP_STAMP, | ||
| 324 | }, | ||
| 325 | Vector { _handler: RTC_WKUP }, | ||
| 326 | Vector { _handler: FLASH }, | ||
| 327 | Vector { _handler: RCC }, | ||
| 328 | Vector { _handler: EXTI0 }, | ||
| 329 | Vector { _handler: EXTI1 }, | ||
| 330 | Vector { _handler: EXTI2 }, | ||
| 331 | Vector { _handler: EXTI3 }, | ||
| 332 | Vector { _handler: EXTI4 }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel1, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel2, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel3, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel4, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel5, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel6, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA1_Channel7, | ||
| 353 | }, | ||
| 354 | Vector { _handler: ADC1_2 }, | ||
| 355 | Vector { _handler: CAN1_TX }, | ||
| 356 | Vector { _handler: CAN1_RX0 }, | ||
| 357 | Vector { _handler: CAN1_RX1 }, | ||
| 358 | Vector { _handler: CAN1_SCE }, | ||
| 359 | Vector { _handler: EXTI9_5 }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_BRK_TIM15, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_UP_TIM16, | ||
| 365 | }, | ||
| 366 | Vector { | ||
| 367 | _handler: TIM1_TRG_COM_TIM17, | ||
| 368 | }, | ||
| 369 | Vector { _handler: TIM1_CC }, | ||
| 370 | Vector { _handler: TIM2 }, | ||
| 371 | Vector { _handler: TIM3 }, | ||
| 372 | Vector { _handler: TIM4 }, | ||
| 373 | Vector { _handler: I2C1_EV }, | ||
| 374 | Vector { _handler: I2C1_ER }, | ||
| 375 | Vector { _handler: I2C2_EV }, | ||
| 376 | Vector { _handler: I2C2_ER }, | ||
| 377 | Vector { _handler: SPI1 }, | ||
| 378 | Vector { _handler: SPI2 }, | ||
| 379 | Vector { _handler: USART1 }, | ||
| 380 | Vector { _handler: USART2 }, | ||
| 381 | Vector { _handler: USART3 }, | ||
| 382 | Vector { | ||
| 383 | _handler: EXTI15_10, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: RTC_Alarm, | ||
| 387 | }, | ||
| 388 | Vector { | ||
| 389 | _handler: DFSDM1_FLT3, | ||
| 390 | }, | ||
| 391 | Vector { _handler: TIM8_BRK }, | ||
| 392 | Vector { _handler: TIM8_UP }, | ||
| 393 | Vector { | ||
| 394 | _handler: TIM8_TRG_COM, | ||
| 395 | }, | ||
| 396 | Vector { _handler: TIM8_CC }, | ||
| 397 | Vector { _handler: ADC3 }, | ||
| 398 | Vector { _handler: FMC }, | ||
| 399 | Vector { _handler: SDMMC1 }, | ||
| 400 | Vector { _handler: TIM5 }, | ||
| 401 | Vector { _handler: SPI3 }, | ||
| 402 | Vector { _handler: UART4 }, | ||
| 403 | Vector { _handler: UART5 }, | ||
| 404 | Vector { _handler: TIM6_DAC }, | ||
| 405 | Vector { _handler: TIM7 }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel1, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel2, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel3, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel4, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel5, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT0, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT1, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DFSDM1_FLT2, | ||
| 429 | }, | ||
| 430 | Vector { _handler: COMP }, | ||
| 431 | Vector { _handler: LPTIM1 }, | ||
| 432 | Vector { _handler: LPTIM2 }, | ||
| 433 | Vector { _handler: OTG_FS }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel6, | ||
| 436 | }, | ||
| 437 | Vector { | ||
| 438 | _handler: DMA2_Channel7, | ||
| 439 | }, | ||
| 440 | Vector { _handler: LPUART1 }, | ||
| 441 | Vector { _handler: QUADSPI }, | ||
| 442 | Vector { _handler: I2C3_EV }, | ||
| 443 | Vector { _handler: I2C3_ER }, | ||
| 444 | Vector { _handler: SAI1 }, | ||
| 445 | Vector { _handler: SAI2 }, | ||
| 446 | Vector { _handler: SWPMI1 }, | ||
| 447 | Vector { _handler: TSC }, | ||
| 448 | Vector { _handler: LCD }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { _handler: RNG }, | ||
| 451 | Vector { _handler: FPU }, | ||
| 452 | Vector { _handler: CRS }, | ||
| 453 | Vector { _handler: I2C4_EV }, | ||
| 454 | Vector { _handler: I2C4_ER }, | ||
| 455 | Vector { _handler: DCMI }, | ||
| 456 | Vector { _handler: CAN2_TX }, | ||
| 457 | Vector { _handler: CAN2_RX0 }, | ||
| 458 | Vector { _handler: CAN2_RX1 }, | ||
| 459 | Vector { _handler: CAN2_SCE }, | ||
| 460 | Vector { _handler: DMA2D }, | ||
| 461 | ]; | ||
| 462 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 463 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 464 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 465 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l496vg.rs b/embassy-stm32/src/chip/stm32l496vg.rs index 5200ecd80..e54e0774d 100644 --- a/embassy-stm32/src/chip/stm32l496vg.rs +++ b/embassy-stm32/src/chip/stm32l496vg.rs | |||
| @@ -1,12 +1,12 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, |
| 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, | 5 | PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, |
| 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, | 6 | PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, |
| 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, | 7 | PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, |
| 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, | 8 | PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, |
| 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, | 9 | PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| @@ -15,8 +15,451 @@ peripherals!( | |||
| 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, | 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 16 | USART3, USB_OTG_FS, WWDG | 16 | USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | ADC3 = 47, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | CAN2_RX0 = 87, | ||
| 38 | CAN2_RX1 = 88, | ||
| 39 | CAN2_SCE = 89, | ||
| 40 | CAN2_TX = 86, | ||
| 41 | COMP = 64, | ||
| 42 | CRS = 82, | ||
| 43 | DCMI = 85, | ||
| 44 | DFSDM1_FLT0 = 61, | ||
| 45 | DFSDM1_FLT1 = 62, | ||
| 46 | DFSDM1_FLT2 = 63, | ||
| 47 | DFSDM1_FLT3 = 42, | ||
| 48 | DMA1_Channel1 = 11, | ||
| 49 | DMA1_Channel2 = 12, | ||
| 50 | DMA1_Channel3 = 13, | ||
| 51 | DMA1_Channel4 = 14, | ||
| 52 | DMA1_Channel5 = 15, | ||
| 53 | DMA1_Channel6 = 16, | ||
| 54 | DMA1_Channel7 = 17, | ||
| 55 | DMA2D = 90, | ||
| 56 | DMA2_Channel1 = 56, | ||
| 57 | DMA2_Channel2 = 57, | ||
| 58 | DMA2_Channel3 = 58, | ||
| 59 | DMA2_Channel4 = 59, | ||
| 60 | DMA2_Channel5 = 60, | ||
| 61 | DMA2_Channel6 = 68, | ||
| 62 | DMA2_Channel7 = 69, | ||
| 63 | EXTI0 = 6, | ||
| 64 | EXTI1 = 7, | ||
| 65 | EXTI15_10 = 40, | ||
| 66 | EXTI2 = 8, | ||
| 67 | EXTI3 = 9, | ||
| 68 | EXTI4 = 10, | ||
| 69 | EXTI9_5 = 23, | ||
| 70 | FLASH = 4, | ||
| 71 | FMC = 48, | ||
| 72 | FPU = 81, | ||
| 73 | I2C1_ER = 32, | ||
| 74 | I2C1_EV = 31, | ||
| 75 | I2C2_ER = 34, | ||
| 76 | I2C2_EV = 33, | ||
| 77 | I2C3_ER = 73, | ||
| 78 | I2C3_EV = 72, | ||
| 79 | I2C4_ER = 84, | ||
| 80 | I2C4_EV = 83, | ||
| 81 | LCD = 78, | ||
| 82 | LPTIM1 = 65, | ||
| 83 | LPTIM2 = 66, | ||
| 84 | LPUART1 = 70, | ||
| 85 | OTG_FS = 67, | ||
| 86 | PVD_PVM = 1, | ||
| 87 | QUADSPI = 71, | ||
| 88 | RCC = 5, | ||
| 89 | RNG = 80, | ||
| 90 | RTC_Alarm = 41, | ||
| 91 | RTC_WKUP = 3, | ||
| 92 | SAI1 = 74, | ||
| 93 | SAI2 = 75, | ||
| 94 | SDMMC1 = 49, | ||
| 95 | SPI1 = 35, | ||
| 96 | SPI2 = 36, | ||
| 97 | SPI3 = 51, | ||
| 98 | SWPMI1 = 76, | ||
| 99 | TAMP_STAMP = 2, | ||
| 100 | TIM1_BRK_TIM15 = 24, | ||
| 101 | TIM1_CC = 27, | ||
| 102 | TIM1_TRG_COM_TIM17 = 26, | ||
| 103 | TIM1_UP_TIM16 = 25, | ||
| 104 | TIM2 = 28, | ||
| 105 | TIM3 = 29, | ||
| 106 | TIM4 = 30, | ||
| 107 | TIM5 = 50, | ||
| 108 | TIM6_DAC = 54, | ||
| 109 | TIM7 = 55, | ||
| 110 | TIM8_BRK = 43, | ||
| 111 | TIM8_CC = 46, | ||
| 112 | TIM8_TRG_COM = 45, | ||
| 113 | TIM8_UP = 44, | ||
| 114 | TSC = 77, | ||
| 115 | UART4 = 52, | ||
| 116 | UART5 = 53, | ||
| 117 | USART1 = 37, | ||
| 118 | USART2 = 38, | ||
| 119 | USART3 = 39, | ||
| 120 | WWDG = 0, | ||
| 121 | } | ||
| 122 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 123 | #[inline(always)] | ||
| 124 | fn number(self) -> u16 { | ||
| 125 | self as u16 | ||
| 126 | } | ||
| 127 | } | ||
| 128 | |||
| 129 | declare!(ADC1_2); | ||
| 130 | declare!(ADC3); | ||
| 131 | declare!(CAN1_RX0); | ||
| 132 | declare!(CAN1_RX1); | ||
| 133 | declare!(CAN1_SCE); | ||
| 134 | declare!(CAN1_TX); | ||
| 135 | declare!(CAN2_RX0); | ||
| 136 | declare!(CAN2_RX1); | ||
| 137 | declare!(CAN2_SCE); | ||
| 138 | declare!(CAN2_TX); | ||
| 139 | declare!(COMP); | ||
| 140 | declare!(CRS); | ||
| 141 | declare!(DCMI); | ||
| 142 | declare!(DFSDM1_FLT0); | ||
| 143 | declare!(DFSDM1_FLT1); | ||
| 144 | declare!(DFSDM1_FLT2); | ||
| 145 | declare!(DFSDM1_FLT3); | ||
| 146 | declare!(DMA1_Channel1); | ||
| 147 | declare!(DMA1_Channel2); | ||
| 148 | declare!(DMA1_Channel3); | ||
| 149 | declare!(DMA1_Channel4); | ||
| 150 | declare!(DMA1_Channel5); | ||
| 151 | declare!(DMA1_Channel6); | ||
| 152 | declare!(DMA1_Channel7); | ||
| 153 | declare!(DMA2D); | ||
| 154 | declare!(DMA2_Channel1); | ||
| 155 | declare!(DMA2_Channel2); | ||
| 156 | declare!(DMA2_Channel3); | ||
| 157 | declare!(DMA2_Channel4); | ||
| 158 | declare!(DMA2_Channel5); | ||
| 159 | declare!(DMA2_Channel6); | ||
| 160 | declare!(DMA2_Channel7); | ||
| 161 | declare!(EXTI0); | ||
| 162 | declare!(EXTI1); | ||
| 163 | declare!(EXTI15_10); | ||
| 164 | declare!(EXTI2); | ||
| 165 | declare!(EXTI3); | ||
| 166 | declare!(EXTI4); | ||
| 167 | declare!(EXTI9_5); | ||
| 168 | declare!(FLASH); | ||
| 169 | declare!(FMC); | ||
| 170 | declare!(FPU); | ||
| 171 | declare!(I2C1_ER); | ||
| 172 | declare!(I2C1_EV); | ||
| 173 | declare!(I2C2_ER); | ||
| 174 | declare!(I2C2_EV); | ||
| 175 | declare!(I2C3_ER); | ||
| 176 | declare!(I2C3_EV); | ||
| 177 | declare!(I2C4_ER); | ||
| 178 | declare!(I2C4_EV); | ||
| 179 | declare!(LCD); | ||
| 180 | declare!(LPTIM1); | ||
| 181 | declare!(LPTIM2); | ||
| 182 | declare!(LPUART1); | ||
| 183 | declare!(OTG_FS); | ||
| 184 | declare!(PVD_PVM); | ||
| 185 | declare!(QUADSPI); | ||
| 186 | declare!(RCC); | ||
| 187 | declare!(RNG); | ||
| 188 | declare!(RTC_Alarm); | ||
| 189 | declare!(RTC_WKUP); | ||
| 190 | declare!(SAI1); | ||
| 191 | declare!(SAI2); | ||
| 192 | declare!(SDMMC1); | ||
| 193 | declare!(SPI1); | ||
| 194 | declare!(SPI2); | ||
| 195 | declare!(SPI3); | ||
| 196 | declare!(SWPMI1); | ||
| 197 | declare!(TAMP_STAMP); | ||
| 198 | declare!(TIM1_BRK_TIM15); | ||
| 199 | declare!(TIM1_CC); | ||
| 200 | declare!(TIM1_TRG_COM_TIM17); | ||
| 201 | declare!(TIM1_UP_TIM16); | ||
| 202 | declare!(TIM2); | ||
| 203 | declare!(TIM3); | ||
| 204 | declare!(TIM4); | ||
| 205 | declare!(TIM5); | ||
| 206 | declare!(TIM6_DAC); | ||
| 207 | declare!(TIM7); | ||
| 208 | declare!(TIM8_BRK); | ||
| 209 | declare!(TIM8_CC); | ||
| 210 | declare!(TIM8_TRG_COM); | ||
| 211 | declare!(TIM8_UP); | ||
| 212 | declare!(TSC); | ||
| 213 | declare!(UART4); | ||
| 214 | declare!(UART5); | ||
| 215 | declare!(USART1); | ||
| 216 | declare!(USART2); | ||
| 217 | declare!(USART3); | ||
| 218 | declare!(WWDG); | ||
| 219 | } | ||
| 220 | mod interrupt_vector { | ||
| 221 | extern "C" { | ||
| 222 | fn ADC1_2(); | ||
| 223 | fn ADC3(); | ||
| 224 | fn CAN1_RX0(); | ||
| 225 | fn CAN1_RX1(); | ||
| 226 | fn CAN1_SCE(); | ||
| 227 | fn CAN1_TX(); | ||
| 228 | fn CAN2_RX0(); | ||
| 229 | fn CAN2_RX1(); | ||
| 230 | fn CAN2_SCE(); | ||
| 231 | fn CAN2_TX(); | ||
| 232 | fn COMP(); | ||
| 233 | fn CRS(); | ||
| 234 | fn DCMI(); | ||
| 235 | fn DFSDM1_FLT0(); | ||
| 236 | fn DFSDM1_FLT1(); | ||
| 237 | fn DFSDM1_FLT2(); | ||
| 238 | fn DFSDM1_FLT3(); | ||
| 239 | fn DMA1_Channel1(); | ||
| 240 | fn DMA1_Channel2(); | ||
| 241 | fn DMA1_Channel3(); | ||
| 242 | fn DMA1_Channel4(); | ||
| 243 | fn DMA1_Channel5(); | ||
| 244 | fn DMA1_Channel6(); | ||
| 245 | fn DMA1_Channel7(); | ||
| 246 | fn DMA2D(); | ||
| 247 | fn DMA2_Channel1(); | ||
| 248 | fn DMA2_Channel2(); | ||
| 249 | fn DMA2_Channel3(); | ||
| 250 | fn DMA2_Channel4(); | ||
| 251 | fn DMA2_Channel5(); | ||
| 252 | fn DMA2_Channel6(); | ||
| 253 | fn DMA2_Channel7(); | ||
| 254 | fn EXTI0(); | ||
| 255 | fn EXTI1(); | ||
| 256 | fn EXTI15_10(); | ||
| 257 | fn EXTI2(); | ||
| 258 | fn EXTI3(); | ||
| 259 | fn EXTI4(); | ||
| 260 | fn EXTI9_5(); | ||
| 261 | fn FLASH(); | ||
| 262 | fn FMC(); | ||
| 263 | fn FPU(); | ||
| 264 | fn I2C1_ER(); | ||
| 265 | fn I2C1_EV(); | ||
| 266 | fn I2C2_ER(); | ||
| 267 | fn I2C2_EV(); | ||
| 268 | fn I2C3_ER(); | ||
| 269 | fn I2C3_EV(); | ||
| 270 | fn I2C4_ER(); | ||
| 271 | fn I2C4_EV(); | ||
| 272 | fn LCD(); | ||
| 273 | fn LPTIM1(); | ||
| 274 | fn LPTIM2(); | ||
| 275 | fn LPUART1(); | ||
| 276 | fn OTG_FS(); | ||
| 277 | fn PVD_PVM(); | ||
| 278 | fn QUADSPI(); | ||
| 279 | fn RCC(); | ||
| 280 | fn RNG(); | ||
| 281 | fn RTC_Alarm(); | ||
| 282 | fn RTC_WKUP(); | ||
| 283 | fn SAI1(); | ||
| 284 | fn SAI2(); | ||
| 285 | fn SDMMC1(); | ||
| 286 | fn SPI1(); | ||
| 287 | fn SPI2(); | ||
| 288 | fn SPI3(); | ||
| 289 | fn SWPMI1(); | ||
| 290 | fn TAMP_STAMP(); | ||
| 291 | fn TIM1_BRK_TIM15(); | ||
| 292 | fn TIM1_CC(); | ||
| 293 | fn TIM1_TRG_COM_TIM17(); | ||
| 294 | fn TIM1_UP_TIM16(); | ||
| 295 | fn TIM2(); | ||
| 296 | fn TIM3(); | ||
| 297 | fn TIM4(); | ||
| 298 | fn TIM5(); | ||
| 299 | fn TIM6_DAC(); | ||
| 300 | fn TIM7(); | ||
| 301 | fn TIM8_BRK(); | ||
| 302 | fn TIM8_CC(); | ||
| 303 | fn TIM8_TRG_COM(); | ||
| 304 | fn TIM8_UP(); | ||
| 305 | fn TSC(); | ||
| 306 | fn UART4(); | ||
| 307 | fn UART5(); | ||
| 308 | fn USART1(); | ||
| 309 | fn USART2(); | ||
| 310 | fn USART3(); | ||
| 311 | fn WWDG(); | ||
| 312 | } | ||
| 313 | pub union Vector { | ||
| 314 | _handler: unsafe extern "C" fn(), | ||
| 315 | _reserved: u32, | ||
| 316 | } | ||
| 317 | #[link_section = ".vector_table.interrupts"] | ||
| 318 | #[no_mangle] | ||
| 319 | pub static __INTERRUPTS: [Vector; 91] = [ | ||
| 320 | Vector { _handler: WWDG }, | ||
| 321 | Vector { _handler: PVD_PVM }, | ||
| 322 | Vector { | ||
| 323 | _handler: TAMP_STAMP, | ||
| 324 | }, | ||
| 325 | Vector { _handler: RTC_WKUP }, | ||
| 326 | Vector { _handler: FLASH }, | ||
| 327 | Vector { _handler: RCC }, | ||
| 328 | Vector { _handler: EXTI0 }, | ||
| 329 | Vector { _handler: EXTI1 }, | ||
| 330 | Vector { _handler: EXTI2 }, | ||
| 331 | Vector { _handler: EXTI3 }, | ||
| 332 | Vector { _handler: EXTI4 }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel1, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel2, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel3, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel4, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel5, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel6, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA1_Channel7, | ||
| 353 | }, | ||
| 354 | Vector { _handler: ADC1_2 }, | ||
| 355 | Vector { _handler: CAN1_TX }, | ||
| 356 | Vector { _handler: CAN1_RX0 }, | ||
| 357 | Vector { _handler: CAN1_RX1 }, | ||
| 358 | Vector { _handler: CAN1_SCE }, | ||
| 359 | Vector { _handler: EXTI9_5 }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_BRK_TIM15, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_UP_TIM16, | ||
| 365 | }, | ||
| 366 | Vector { | ||
| 367 | _handler: TIM1_TRG_COM_TIM17, | ||
| 368 | }, | ||
| 369 | Vector { _handler: TIM1_CC }, | ||
| 370 | Vector { _handler: TIM2 }, | ||
| 371 | Vector { _handler: TIM3 }, | ||
| 372 | Vector { _handler: TIM4 }, | ||
| 373 | Vector { _handler: I2C1_EV }, | ||
| 374 | Vector { _handler: I2C1_ER }, | ||
| 375 | Vector { _handler: I2C2_EV }, | ||
| 376 | Vector { _handler: I2C2_ER }, | ||
| 377 | Vector { _handler: SPI1 }, | ||
| 378 | Vector { _handler: SPI2 }, | ||
| 379 | Vector { _handler: USART1 }, | ||
| 380 | Vector { _handler: USART2 }, | ||
| 381 | Vector { _handler: USART3 }, | ||
| 382 | Vector { | ||
| 383 | _handler: EXTI15_10, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: RTC_Alarm, | ||
| 387 | }, | ||
| 388 | Vector { | ||
| 389 | _handler: DFSDM1_FLT3, | ||
| 390 | }, | ||
| 391 | Vector { _handler: TIM8_BRK }, | ||
| 392 | Vector { _handler: TIM8_UP }, | ||
| 393 | Vector { | ||
| 394 | _handler: TIM8_TRG_COM, | ||
| 395 | }, | ||
| 396 | Vector { _handler: TIM8_CC }, | ||
| 397 | Vector { _handler: ADC3 }, | ||
| 398 | Vector { _handler: FMC }, | ||
| 399 | Vector { _handler: SDMMC1 }, | ||
| 400 | Vector { _handler: TIM5 }, | ||
| 401 | Vector { _handler: SPI3 }, | ||
| 402 | Vector { _handler: UART4 }, | ||
| 403 | Vector { _handler: UART5 }, | ||
| 404 | Vector { _handler: TIM6_DAC }, | ||
| 405 | Vector { _handler: TIM7 }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel1, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel2, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel3, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel4, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel5, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT0, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT1, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DFSDM1_FLT2, | ||
| 429 | }, | ||
| 430 | Vector { _handler: COMP }, | ||
| 431 | Vector { _handler: LPTIM1 }, | ||
| 432 | Vector { _handler: LPTIM2 }, | ||
| 433 | Vector { _handler: OTG_FS }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel6, | ||
| 436 | }, | ||
| 437 | Vector { | ||
| 438 | _handler: DMA2_Channel7, | ||
| 439 | }, | ||
| 440 | Vector { _handler: LPUART1 }, | ||
| 441 | Vector { _handler: QUADSPI }, | ||
| 442 | Vector { _handler: I2C3_EV }, | ||
| 443 | Vector { _handler: I2C3_ER }, | ||
| 444 | Vector { _handler: SAI1 }, | ||
| 445 | Vector { _handler: SAI2 }, | ||
| 446 | Vector { _handler: SWPMI1 }, | ||
| 447 | Vector { _handler: TSC }, | ||
| 448 | Vector { _handler: LCD }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { _handler: RNG }, | ||
| 451 | Vector { _handler: FPU }, | ||
| 452 | Vector { _handler: CRS }, | ||
| 453 | Vector { _handler: I2C4_EV }, | ||
| 454 | Vector { _handler: I2C4_ER }, | ||
| 455 | Vector { _handler: DCMI }, | ||
| 456 | Vector { _handler: CAN2_TX }, | ||
| 457 | Vector { _handler: CAN2_RX0 }, | ||
| 458 | Vector { _handler: CAN2_RX1 }, | ||
| 459 | Vector { _handler: CAN2_SCE }, | ||
| 460 | Vector { _handler: DMA2D }, | ||
| 461 | ]; | ||
| 462 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 463 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 464 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 465 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l496wg.rs b/embassy-stm32/src/chip/stm32l496wg.rs index 5200ecd80..e54e0774d 100644 --- a/embassy-stm32/src/chip/stm32l496wg.rs +++ b/embassy-stm32/src/chip/stm32l496wg.rs | |||
| @@ -1,12 +1,12 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, |
| 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, | 5 | PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, |
| 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, | 6 | PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, |
| 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, | 7 | PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, |
| 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, | 8 | PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, |
| 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, | 9 | PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| @@ -15,8 +15,451 @@ peripherals!( | |||
| 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, | 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 16 | USART3, USB_OTG_FS, WWDG | 16 | USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | ADC3 = 47, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | CAN2_RX0 = 87, | ||
| 38 | CAN2_RX1 = 88, | ||
| 39 | CAN2_SCE = 89, | ||
| 40 | CAN2_TX = 86, | ||
| 41 | COMP = 64, | ||
| 42 | CRS = 82, | ||
| 43 | DCMI = 85, | ||
| 44 | DFSDM1_FLT0 = 61, | ||
| 45 | DFSDM1_FLT1 = 62, | ||
| 46 | DFSDM1_FLT2 = 63, | ||
| 47 | DFSDM1_FLT3 = 42, | ||
| 48 | DMA1_Channel1 = 11, | ||
| 49 | DMA1_Channel2 = 12, | ||
| 50 | DMA1_Channel3 = 13, | ||
| 51 | DMA1_Channel4 = 14, | ||
| 52 | DMA1_Channel5 = 15, | ||
| 53 | DMA1_Channel6 = 16, | ||
| 54 | DMA1_Channel7 = 17, | ||
| 55 | DMA2D = 90, | ||
| 56 | DMA2_Channel1 = 56, | ||
| 57 | DMA2_Channel2 = 57, | ||
| 58 | DMA2_Channel3 = 58, | ||
| 59 | DMA2_Channel4 = 59, | ||
| 60 | DMA2_Channel5 = 60, | ||
| 61 | DMA2_Channel6 = 68, | ||
| 62 | DMA2_Channel7 = 69, | ||
| 63 | EXTI0 = 6, | ||
| 64 | EXTI1 = 7, | ||
| 65 | EXTI15_10 = 40, | ||
| 66 | EXTI2 = 8, | ||
| 67 | EXTI3 = 9, | ||
| 68 | EXTI4 = 10, | ||
| 69 | EXTI9_5 = 23, | ||
| 70 | FLASH = 4, | ||
| 71 | FMC = 48, | ||
| 72 | FPU = 81, | ||
| 73 | I2C1_ER = 32, | ||
| 74 | I2C1_EV = 31, | ||
| 75 | I2C2_ER = 34, | ||
| 76 | I2C2_EV = 33, | ||
| 77 | I2C3_ER = 73, | ||
| 78 | I2C3_EV = 72, | ||
| 79 | I2C4_ER = 84, | ||
| 80 | I2C4_EV = 83, | ||
| 81 | LCD = 78, | ||
| 82 | LPTIM1 = 65, | ||
| 83 | LPTIM2 = 66, | ||
| 84 | LPUART1 = 70, | ||
| 85 | OTG_FS = 67, | ||
| 86 | PVD_PVM = 1, | ||
| 87 | QUADSPI = 71, | ||
| 88 | RCC = 5, | ||
| 89 | RNG = 80, | ||
| 90 | RTC_Alarm = 41, | ||
| 91 | RTC_WKUP = 3, | ||
| 92 | SAI1 = 74, | ||
| 93 | SAI2 = 75, | ||
| 94 | SDMMC1 = 49, | ||
| 95 | SPI1 = 35, | ||
| 96 | SPI2 = 36, | ||
| 97 | SPI3 = 51, | ||
| 98 | SWPMI1 = 76, | ||
| 99 | TAMP_STAMP = 2, | ||
| 100 | TIM1_BRK_TIM15 = 24, | ||
| 101 | TIM1_CC = 27, | ||
| 102 | TIM1_TRG_COM_TIM17 = 26, | ||
| 103 | TIM1_UP_TIM16 = 25, | ||
| 104 | TIM2 = 28, | ||
| 105 | TIM3 = 29, | ||
| 106 | TIM4 = 30, | ||
| 107 | TIM5 = 50, | ||
| 108 | TIM6_DAC = 54, | ||
| 109 | TIM7 = 55, | ||
| 110 | TIM8_BRK = 43, | ||
| 111 | TIM8_CC = 46, | ||
| 112 | TIM8_TRG_COM = 45, | ||
| 113 | TIM8_UP = 44, | ||
| 114 | TSC = 77, | ||
| 115 | UART4 = 52, | ||
| 116 | UART5 = 53, | ||
| 117 | USART1 = 37, | ||
| 118 | USART2 = 38, | ||
| 119 | USART3 = 39, | ||
| 120 | WWDG = 0, | ||
| 121 | } | ||
| 122 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 123 | #[inline(always)] | ||
| 124 | fn number(self) -> u16 { | ||
| 125 | self as u16 | ||
| 126 | } | ||
| 127 | } | ||
| 128 | |||
| 129 | declare!(ADC1_2); | ||
| 130 | declare!(ADC3); | ||
| 131 | declare!(CAN1_RX0); | ||
| 132 | declare!(CAN1_RX1); | ||
| 133 | declare!(CAN1_SCE); | ||
| 134 | declare!(CAN1_TX); | ||
| 135 | declare!(CAN2_RX0); | ||
| 136 | declare!(CAN2_RX1); | ||
| 137 | declare!(CAN2_SCE); | ||
| 138 | declare!(CAN2_TX); | ||
| 139 | declare!(COMP); | ||
| 140 | declare!(CRS); | ||
| 141 | declare!(DCMI); | ||
| 142 | declare!(DFSDM1_FLT0); | ||
| 143 | declare!(DFSDM1_FLT1); | ||
| 144 | declare!(DFSDM1_FLT2); | ||
| 145 | declare!(DFSDM1_FLT3); | ||
| 146 | declare!(DMA1_Channel1); | ||
| 147 | declare!(DMA1_Channel2); | ||
| 148 | declare!(DMA1_Channel3); | ||
| 149 | declare!(DMA1_Channel4); | ||
| 150 | declare!(DMA1_Channel5); | ||
| 151 | declare!(DMA1_Channel6); | ||
| 152 | declare!(DMA1_Channel7); | ||
| 153 | declare!(DMA2D); | ||
| 154 | declare!(DMA2_Channel1); | ||
| 155 | declare!(DMA2_Channel2); | ||
| 156 | declare!(DMA2_Channel3); | ||
| 157 | declare!(DMA2_Channel4); | ||
| 158 | declare!(DMA2_Channel5); | ||
| 159 | declare!(DMA2_Channel6); | ||
| 160 | declare!(DMA2_Channel7); | ||
| 161 | declare!(EXTI0); | ||
| 162 | declare!(EXTI1); | ||
| 163 | declare!(EXTI15_10); | ||
| 164 | declare!(EXTI2); | ||
| 165 | declare!(EXTI3); | ||
| 166 | declare!(EXTI4); | ||
| 167 | declare!(EXTI9_5); | ||
| 168 | declare!(FLASH); | ||
| 169 | declare!(FMC); | ||
| 170 | declare!(FPU); | ||
| 171 | declare!(I2C1_ER); | ||
| 172 | declare!(I2C1_EV); | ||
| 173 | declare!(I2C2_ER); | ||
| 174 | declare!(I2C2_EV); | ||
| 175 | declare!(I2C3_ER); | ||
| 176 | declare!(I2C3_EV); | ||
| 177 | declare!(I2C4_ER); | ||
| 178 | declare!(I2C4_EV); | ||
| 179 | declare!(LCD); | ||
| 180 | declare!(LPTIM1); | ||
| 181 | declare!(LPTIM2); | ||
| 182 | declare!(LPUART1); | ||
| 183 | declare!(OTG_FS); | ||
| 184 | declare!(PVD_PVM); | ||
| 185 | declare!(QUADSPI); | ||
| 186 | declare!(RCC); | ||
| 187 | declare!(RNG); | ||
| 188 | declare!(RTC_Alarm); | ||
| 189 | declare!(RTC_WKUP); | ||
| 190 | declare!(SAI1); | ||
| 191 | declare!(SAI2); | ||
| 192 | declare!(SDMMC1); | ||
| 193 | declare!(SPI1); | ||
| 194 | declare!(SPI2); | ||
| 195 | declare!(SPI3); | ||
| 196 | declare!(SWPMI1); | ||
| 197 | declare!(TAMP_STAMP); | ||
| 198 | declare!(TIM1_BRK_TIM15); | ||
| 199 | declare!(TIM1_CC); | ||
| 200 | declare!(TIM1_TRG_COM_TIM17); | ||
| 201 | declare!(TIM1_UP_TIM16); | ||
| 202 | declare!(TIM2); | ||
| 203 | declare!(TIM3); | ||
| 204 | declare!(TIM4); | ||
| 205 | declare!(TIM5); | ||
| 206 | declare!(TIM6_DAC); | ||
| 207 | declare!(TIM7); | ||
| 208 | declare!(TIM8_BRK); | ||
| 209 | declare!(TIM8_CC); | ||
| 210 | declare!(TIM8_TRG_COM); | ||
| 211 | declare!(TIM8_UP); | ||
| 212 | declare!(TSC); | ||
| 213 | declare!(UART4); | ||
| 214 | declare!(UART5); | ||
| 215 | declare!(USART1); | ||
| 216 | declare!(USART2); | ||
| 217 | declare!(USART3); | ||
| 218 | declare!(WWDG); | ||
| 219 | } | ||
| 220 | mod interrupt_vector { | ||
| 221 | extern "C" { | ||
| 222 | fn ADC1_2(); | ||
| 223 | fn ADC3(); | ||
| 224 | fn CAN1_RX0(); | ||
| 225 | fn CAN1_RX1(); | ||
| 226 | fn CAN1_SCE(); | ||
| 227 | fn CAN1_TX(); | ||
| 228 | fn CAN2_RX0(); | ||
| 229 | fn CAN2_RX1(); | ||
| 230 | fn CAN2_SCE(); | ||
| 231 | fn CAN2_TX(); | ||
| 232 | fn COMP(); | ||
| 233 | fn CRS(); | ||
| 234 | fn DCMI(); | ||
| 235 | fn DFSDM1_FLT0(); | ||
| 236 | fn DFSDM1_FLT1(); | ||
| 237 | fn DFSDM1_FLT2(); | ||
| 238 | fn DFSDM1_FLT3(); | ||
| 239 | fn DMA1_Channel1(); | ||
| 240 | fn DMA1_Channel2(); | ||
| 241 | fn DMA1_Channel3(); | ||
| 242 | fn DMA1_Channel4(); | ||
| 243 | fn DMA1_Channel5(); | ||
| 244 | fn DMA1_Channel6(); | ||
| 245 | fn DMA1_Channel7(); | ||
| 246 | fn DMA2D(); | ||
| 247 | fn DMA2_Channel1(); | ||
| 248 | fn DMA2_Channel2(); | ||
| 249 | fn DMA2_Channel3(); | ||
| 250 | fn DMA2_Channel4(); | ||
| 251 | fn DMA2_Channel5(); | ||
| 252 | fn DMA2_Channel6(); | ||
| 253 | fn DMA2_Channel7(); | ||
| 254 | fn EXTI0(); | ||
| 255 | fn EXTI1(); | ||
| 256 | fn EXTI15_10(); | ||
| 257 | fn EXTI2(); | ||
| 258 | fn EXTI3(); | ||
| 259 | fn EXTI4(); | ||
| 260 | fn EXTI9_5(); | ||
| 261 | fn FLASH(); | ||
| 262 | fn FMC(); | ||
| 263 | fn FPU(); | ||
| 264 | fn I2C1_ER(); | ||
| 265 | fn I2C1_EV(); | ||
| 266 | fn I2C2_ER(); | ||
| 267 | fn I2C2_EV(); | ||
| 268 | fn I2C3_ER(); | ||
| 269 | fn I2C3_EV(); | ||
| 270 | fn I2C4_ER(); | ||
| 271 | fn I2C4_EV(); | ||
| 272 | fn LCD(); | ||
| 273 | fn LPTIM1(); | ||
| 274 | fn LPTIM2(); | ||
| 275 | fn LPUART1(); | ||
| 276 | fn OTG_FS(); | ||
| 277 | fn PVD_PVM(); | ||
| 278 | fn QUADSPI(); | ||
| 279 | fn RCC(); | ||
| 280 | fn RNG(); | ||
| 281 | fn RTC_Alarm(); | ||
| 282 | fn RTC_WKUP(); | ||
| 283 | fn SAI1(); | ||
| 284 | fn SAI2(); | ||
| 285 | fn SDMMC1(); | ||
| 286 | fn SPI1(); | ||
| 287 | fn SPI2(); | ||
| 288 | fn SPI3(); | ||
| 289 | fn SWPMI1(); | ||
| 290 | fn TAMP_STAMP(); | ||
| 291 | fn TIM1_BRK_TIM15(); | ||
| 292 | fn TIM1_CC(); | ||
| 293 | fn TIM1_TRG_COM_TIM17(); | ||
| 294 | fn TIM1_UP_TIM16(); | ||
| 295 | fn TIM2(); | ||
| 296 | fn TIM3(); | ||
| 297 | fn TIM4(); | ||
| 298 | fn TIM5(); | ||
| 299 | fn TIM6_DAC(); | ||
| 300 | fn TIM7(); | ||
| 301 | fn TIM8_BRK(); | ||
| 302 | fn TIM8_CC(); | ||
| 303 | fn TIM8_TRG_COM(); | ||
| 304 | fn TIM8_UP(); | ||
| 305 | fn TSC(); | ||
| 306 | fn UART4(); | ||
| 307 | fn UART5(); | ||
| 308 | fn USART1(); | ||
| 309 | fn USART2(); | ||
| 310 | fn USART3(); | ||
| 311 | fn WWDG(); | ||
| 312 | } | ||
| 313 | pub union Vector { | ||
| 314 | _handler: unsafe extern "C" fn(), | ||
| 315 | _reserved: u32, | ||
| 316 | } | ||
| 317 | #[link_section = ".vector_table.interrupts"] | ||
| 318 | #[no_mangle] | ||
| 319 | pub static __INTERRUPTS: [Vector; 91] = [ | ||
| 320 | Vector { _handler: WWDG }, | ||
| 321 | Vector { _handler: PVD_PVM }, | ||
| 322 | Vector { | ||
| 323 | _handler: TAMP_STAMP, | ||
| 324 | }, | ||
| 325 | Vector { _handler: RTC_WKUP }, | ||
| 326 | Vector { _handler: FLASH }, | ||
| 327 | Vector { _handler: RCC }, | ||
| 328 | Vector { _handler: EXTI0 }, | ||
| 329 | Vector { _handler: EXTI1 }, | ||
| 330 | Vector { _handler: EXTI2 }, | ||
| 331 | Vector { _handler: EXTI3 }, | ||
| 332 | Vector { _handler: EXTI4 }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel1, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel2, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel3, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel4, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel5, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel6, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA1_Channel7, | ||
| 353 | }, | ||
| 354 | Vector { _handler: ADC1_2 }, | ||
| 355 | Vector { _handler: CAN1_TX }, | ||
| 356 | Vector { _handler: CAN1_RX0 }, | ||
| 357 | Vector { _handler: CAN1_RX1 }, | ||
| 358 | Vector { _handler: CAN1_SCE }, | ||
| 359 | Vector { _handler: EXTI9_5 }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_BRK_TIM15, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_UP_TIM16, | ||
| 365 | }, | ||
| 366 | Vector { | ||
| 367 | _handler: TIM1_TRG_COM_TIM17, | ||
| 368 | }, | ||
| 369 | Vector { _handler: TIM1_CC }, | ||
| 370 | Vector { _handler: TIM2 }, | ||
| 371 | Vector { _handler: TIM3 }, | ||
| 372 | Vector { _handler: TIM4 }, | ||
| 373 | Vector { _handler: I2C1_EV }, | ||
| 374 | Vector { _handler: I2C1_ER }, | ||
| 375 | Vector { _handler: I2C2_EV }, | ||
| 376 | Vector { _handler: I2C2_ER }, | ||
| 377 | Vector { _handler: SPI1 }, | ||
| 378 | Vector { _handler: SPI2 }, | ||
| 379 | Vector { _handler: USART1 }, | ||
| 380 | Vector { _handler: USART2 }, | ||
| 381 | Vector { _handler: USART3 }, | ||
| 382 | Vector { | ||
| 383 | _handler: EXTI15_10, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: RTC_Alarm, | ||
| 387 | }, | ||
| 388 | Vector { | ||
| 389 | _handler: DFSDM1_FLT3, | ||
| 390 | }, | ||
| 391 | Vector { _handler: TIM8_BRK }, | ||
| 392 | Vector { _handler: TIM8_UP }, | ||
| 393 | Vector { | ||
| 394 | _handler: TIM8_TRG_COM, | ||
| 395 | }, | ||
| 396 | Vector { _handler: TIM8_CC }, | ||
| 397 | Vector { _handler: ADC3 }, | ||
| 398 | Vector { _handler: FMC }, | ||
| 399 | Vector { _handler: SDMMC1 }, | ||
| 400 | Vector { _handler: TIM5 }, | ||
| 401 | Vector { _handler: SPI3 }, | ||
| 402 | Vector { _handler: UART4 }, | ||
| 403 | Vector { _handler: UART5 }, | ||
| 404 | Vector { _handler: TIM6_DAC }, | ||
| 405 | Vector { _handler: TIM7 }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel1, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel2, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel3, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel4, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel5, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT0, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT1, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DFSDM1_FLT2, | ||
| 429 | }, | ||
| 430 | Vector { _handler: COMP }, | ||
| 431 | Vector { _handler: LPTIM1 }, | ||
| 432 | Vector { _handler: LPTIM2 }, | ||
| 433 | Vector { _handler: OTG_FS }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel6, | ||
| 436 | }, | ||
| 437 | Vector { | ||
| 438 | _handler: DMA2_Channel7, | ||
| 439 | }, | ||
| 440 | Vector { _handler: LPUART1 }, | ||
| 441 | Vector { _handler: QUADSPI }, | ||
| 442 | Vector { _handler: I2C3_EV }, | ||
| 443 | Vector { _handler: I2C3_ER }, | ||
| 444 | Vector { _handler: SAI1 }, | ||
| 445 | Vector { _handler: SAI2 }, | ||
| 446 | Vector { _handler: SWPMI1 }, | ||
| 447 | Vector { _handler: TSC }, | ||
| 448 | Vector { _handler: LCD }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { _handler: RNG }, | ||
| 451 | Vector { _handler: FPU }, | ||
| 452 | Vector { _handler: CRS }, | ||
| 453 | Vector { _handler: I2C4_EV }, | ||
| 454 | Vector { _handler: I2C4_ER }, | ||
| 455 | Vector { _handler: DCMI }, | ||
| 456 | Vector { _handler: CAN2_TX }, | ||
| 457 | Vector { _handler: CAN2_RX0 }, | ||
| 458 | Vector { _handler: CAN2_RX1 }, | ||
| 459 | Vector { _handler: CAN2_SCE }, | ||
| 460 | Vector { _handler: DMA2D }, | ||
| 461 | ]; | ||
| 462 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 463 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 464 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 465 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l496ze.rs b/embassy-stm32/src/chip/stm32l496ze.rs index 5200ecd80..e54e0774d 100644 --- a/embassy-stm32/src/chip/stm32l496ze.rs +++ b/embassy-stm32/src/chip/stm32l496ze.rs | |||
| @@ -1,12 +1,12 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, |
| 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, | 5 | PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, |
| 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, | 6 | PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, |
| 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, | 7 | PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, |
| 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, | 8 | PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, |
| 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, | 9 | PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| @@ -15,8 +15,451 @@ peripherals!( | |||
| 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, | 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 16 | USART3, USB_OTG_FS, WWDG | 16 | USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | ADC3 = 47, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | CAN2_RX0 = 87, | ||
| 38 | CAN2_RX1 = 88, | ||
| 39 | CAN2_SCE = 89, | ||
| 40 | CAN2_TX = 86, | ||
| 41 | COMP = 64, | ||
| 42 | CRS = 82, | ||
| 43 | DCMI = 85, | ||
| 44 | DFSDM1_FLT0 = 61, | ||
| 45 | DFSDM1_FLT1 = 62, | ||
| 46 | DFSDM1_FLT2 = 63, | ||
| 47 | DFSDM1_FLT3 = 42, | ||
| 48 | DMA1_Channel1 = 11, | ||
| 49 | DMA1_Channel2 = 12, | ||
| 50 | DMA1_Channel3 = 13, | ||
| 51 | DMA1_Channel4 = 14, | ||
| 52 | DMA1_Channel5 = 15, | ||
| 53 | DMA1_Channel6 = 16, | ||
| 54 | DMA1_Channel7 = 17, | ||
| 55 | DMA2D = 90, | ||
| 56 | DMA2_Channel1 = 56, | ||
| 57 | DMA2_Channel2 = 57, | ||
| 58 | DMA2_Channel3 = 58, | ||
| 59 | DMA2_Channel4 = 59, | ||
| 60 | DMA2_Channel5 = 60, | ||
| 61 | DMA2_Channel6 = 68, | ||
| 62 | DMA2_Channel7 = 69, | ||
| 63 | EXTI0 = 6, | ||
| 64 | EXTI1 = 7, | ||
| 65 | EXTI15_10 = 40, | ||
| 66 | EXTI2 = 8, | ||
| 67 | EXTI3 = 9, | ||
| 68 | EXTI4 = 10, | ||
| 69 | EXTI9_5 = 23, | ||
| 70 | FLASH = 4, | ||
| 71 | FMC = 48, | ||
| 72 | FPU = 81, | ||
| 73 | I2C1_ER = 32, | ||
| 74 | I2C1_EV = 31, | ||
| 75 | I2C2_ER = 34, | ||
| 76 | I2C2_EV = 33, | ||
| 77 | I2C3_ER = 73, | ||
| 78 | I2C3_EV = 72, | ||
| 79 | I2C4_ER = 84, | ||
| 80 | I2C4_EV = 83, | ||
| 81 | LCD = 78, | ||
| 82 | LPTIM1 = 65, | ||
| 83 | LPTIM2 = 66, | ||
| 84 | LPUART1 = 70, | ||
| 85 | OTG_FS = 67, | ||
| 86 | PVD_PVM = 1, | ||
| 87 | QUADSPI = 71, | ||
| 88 | RCC = 5, | ||
| 89 | RNG = 80, | ||
| 90 | RTC_Alarm = 41, | ||
| 91 | RTC_WKUP = 3, | ||
| 92 | SAI1 = 74, | ||
| 93 | SAI2 = 75, | ||
| 94 | SDMMC1 = 49, | ||
| 95 | SPI1 = 35, | ||
| 96 | SPI2 = 36, | ||
| 97 | SPI3 = 51, | ||
| 98 | SWPMI1 = 76, | ||
| 99 | TAMP_STAMP = 2, | ||
| 100 | TIM1_BRK_TIM15 = 24, | ||
| 101 | TIM1_CC = 27, | ||
| 102 | TIM1_TRG_COM_TIM17 = 26, | ||
| 103 | TIM1_UP_TIM16 = 25, | ||
| 104 | TIM2 = 28, | ||
| 105 | TIM3 = 29, | ||
| 106 | TIM4 = 30, | ||
| 107 | TIM5 = 50, | ||
| 108 | TIM6_DAC = 54, | ||
| 109 | TIM7 = 55, | ||
| 110 | TIM8_BRK = 43, | ||
| 111 | TIM8_CC = 46, | ||
| 112 | TIM8_TRG_COM = 45, | ||
| 113 | TIM8_UP = 44, | ||
| 114 | TSC = 77, | ||
| 115 | UART4 = 52, | ||
| 116 | UART5 = 53, | ||
| 117 | USART1 = 37, | ||
| 118 | USART2 = 38, | ||
| 119 | USART3 = 39, | ||
| 120 | WWDG = 0, | ||
| 121 | } | ||
| 122 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 123 | #[inline(always)] | ||
| 124 | fn number(self) -> u16 { | ||
| 125 | self as u16 | ||
| 126 | } | ||
| 127 | } | ||
| 128 | |||
| 129 | declare!(ADC1_2); | ||
| 130 | declare!(ADC3); | ||
| 131 | declare!(CAN1_RX0); | ||
| 132 | declare!(CAN1_RX1); | ||
| 133 | declare!(CAN1_SCE); | ||
| 134 | declare!(CAN1_TX); | ||
| 135 | declare!(CAN2_RX0); | ||
| 136 | declare!(CAN2_RX1); | ||
| 137 | declare!(CAN2_SCE); | ||
| 138 | declare!(CAN2_TX); | ||
| 139 | declare!(COMP); | ||
| 140 | declare!(CRS); | ||
| 141 | declare!(DCMI); | ||
| 142 | declare!(DFSDM1_FLT0); | ||
| 143 | declare!(DFSDM1_FLT1); | ||
| 144 | declare!(DFSDM1_FLT2); | ||
| 145 | declare!(DFSDM1_FLT3); | ||
| 146 | declare!(DMA1_Channel1); | ||
| 147 | declare!(DMA1_Channel2); | ||
| 148 | declare!(DMA1_Channel3); | ||
| 149 | declare!(DMA1_Channel4); | ||
| 150 | declare!(DMA1_Channel5); | ||
| 151 | declare!(DMA1_Channel6); | ||
| 152 | declare!(DMA1_Channel7); | ||
| 153 | declare!(DMA2D); | ||
| 154 | declare!(DMA2_Channel1); | ||
| 155 | declare!(DMA2_Channel2); | ||
| 156 | declare!(DMA2_Channel3); | ||
| 157 | declare!(DMA2_Channel4); | ||
| 158 | declare!(DMA2_Channel5); | ||
| 159 | declare!(DMA2_Channel6); | ||
| 160 | declare!(DMA2_Channel7); | ||
| 161 | declare!(EXTI0); | ||
| 162 | declare!(EXTI1); | ||
| 163 | declare!(EXTI15_10); | ||
| 164 | declare!(EXTI2); | ||
| 165 | declare!(EXTI3); | ||
| 166 | declare!(EXTI4); | ||
| 167 | declare!(EXTI9_5); | ||
| 168 | declare!(FLASH); | ||
| 169 | declare!(FMC); | ||
| 170 | declare!(FPU); | ||
| 171 | declare!(I2C1_ER); | ||
| 172 | declare!(I2C1_EV); | ||
| 173 | declare!(I2C2_ER); | ||
| 174 | declare!(I2C2_EV); | ||
| 175 | declare!(I2C3_ER); | ||
| 176 | declare!(I2C3_EV); | ||
| 177 | declare!(I2C4_ER); | ||
| 178 | declare!(I2C4_EV); | ||
| 179 | declare!(LCD); | ||
| 180 | declare!(LPTIM1); | ||
| 181 | declare!(LPTIM2); | ||
| 182 | declare!(LPUART1); | ||
| 183 | declare!(OTG_FS); | ||
| 184 | declare!(PVD_PVM); | ||
| 185 | declare!(QUADSPI); | ||
| 186 | declare!(RCC); | ||
| 187 | declare!(RNG); | ||
| 188 | declare!(RTC_Alarm); | ||
| 189 | declare!(RTC_WKUP); | ||
| 190 | declare!(SAI1); | ||
| 191 | declare!(SAI2); | ||
| 192 | declare!(SDMMC1); | ||
| 193 | declare!(SPI1); | ||
| 194 | declare!(SPI2); | ||
| 195 | declare!(SPI3); | ||
| 196 | declare!(SWPMI1); | ||
| 197 | declare!(TAMP_STAMP); | ||
| 198 | declare!(TIM1_BRK_TIM15); | ||
| 199 | declare!(TIM1_CC); | ||
| 200 | declare!(TIM1_TRG_COM_TIM17); | ||
| 201 | declare!(TIM1_UP_TIM16); | ||
| 202 | declare!(TIM2); | ||
| 203 | declare!(TIM3); | ||
| 204 | declare!(TIM4); | ||
| 205 | declare!(TIM5); | ||
| 206 | declare!(TIM6_DAC); | ||
| 207 | declare!(TIM7); | ||
| 208 | declare!(TIM8_BRK); | ||
| 209 | declare!(TIM8_CC); | ||
| 210 | declare!(TIM8_TRG_COM); | ||
| 211 | declare!(TIM8_UP); | ||
| 212 | declare!(TSC); | ||
| 213 | declare!(UART4); | ||
| 214 | declare!(UART5); | ||
| 215 | declare!(USART1); | ||
| 216 | declare!(USART2); | ||
| 217 | declare!(USART3); | ||
| 218 | declare!(WWDG); | ||
| 219 | } | ||
| 220 | mod interrupt_vector { | ||
| 221 | extern "C" { | ||
| 222 | fn ADC1_2(); | ||
| 223 | fn ADC3(); | ||
| 224 | fn CAN1_RX0(); | ||
| 225 | fn CAN1_RX1(); | ||
| 226 | fn CAN1_SCE(); | ||
| 227 | fn CAN1_TX(); | ||
| 228 | fn CAN2_RX0(); | ||
| 229 | fn CAN2_RX1(); | ||
| 230 | fn CAN2_SCE(); | ||
| 231 | fn CAN2_TX(); | ||
| 232 | fn COMP(); | ||
| 233 | fn CRS(); | ||
| 234 | fn DCMI(); | ||
| 235 | fn DFSDM1_FLT0(); | ||
| 236 | fn DFSDM1_FLT1(); | ||
| 237 | fn DFSDM1_FLT2(); | ||
| 238 | fn DFSDM1_FLT3(); | ||
| 239 | fn DMA1_Channel1(); | ||
| 240 | fn DMA1_Channel2(); | ||
| 241 | fn DMA1_Channel3(); | ||
| 242 | fn DMA1_Channel4(); | ||
| 243 | fn DMA1_Channel5(); | ||
| 244 | fn DMA1_Channel6(); | ||
| 245 | fn DMA1_Channel7(); | ||
| 246 | fn DMA2D(); | ||
| 247 | fn DMA2_Channel1(); | ||
| 248 | fn DMA2_Channel2(); | ||
| 249 | fn DMA2_Channel3(); | ||
| 250 | fn DMA2_Channel4(); | ||
| 251 | fn DMA2_Channel5(); | ||
| 252 | fn DMA2_Channel6(); | ||
| 253 | fn DMA2_Channel7(); | ||
| 254 | fn EXTI0(); | ||
| 255 | fn EXTI1(); | ||
| 256 | fn EXTI15_10(); | ||
| 257 | fn EXTI2(); | ||
| 258 | fn EXTI3(); | ||
| 259 | fn EXTI4(); | ||
| 260 | fn EXTI9_5(); | ||
| 261 | fn FLASH(); | ||
| 262 | fn FMC(); | ||
| 263 | fn FPU(); | ||
| 264 | fn I2C1_ER(); | ||
| 265 | fn I2C1_EV(); | ||
| 266 | fn I2C2_ER(); | ||
| 267 | fn I2C2_EV(); | ||
| 268 | fn I2C3_ER(); | ||
| 269 | fn I2C3_EV(); | ||
| 270 | fn I2C4_ER(); | ||
| 271 | fn I2C4_EV(); | ||
| 272 | fn LCD(); | ||
| 273 | fn LPTIM1(); | ||
| 274 | fn LPTIM2(); | ||
| 275 | fn LPUART1(); | ||
| 276 | fn OTG_FS(); | ||
| 277 | fn PVD_PVM(); | ||
| 278 | fn QUADSPI(); | ||
| 279 | fn RCC(); | ||
| 280 | fn RNG(); | ||
| 281 | fn RTC_Alarm(); | ||
| 282 | fn RTC_WKUP(); | ||
| 283 | fn SAI1(); | ||
| 284 | fn SAI2(); | ||
| 285 | fn SDMMC1(); | ||
| 286 | fn SPI1(); | ||
| 287 | fn SPI2(); | ||
| 288 | fn SPI3(); | ||
| 289 | fn SWPMI1(); | ||
| 290 | fn TAMP_STAMP(); | ||
| 291 | fn TIM1_BRK_TIM15(); | ||
| 292 | fn TIM1_CC(); | ||
| 293 | fn TIM1_TRG_COM_TIM17(); | ||
| 294 | fn TIM1_UP_TIM16(); | ||
| 295 | fn TIM2(); | ||
| 296 | fn TIM3(); | ||
| 297 | fn TIM4(); | ||
| 298 | fn TIM5(); | ||
| 299 | fn TIM6_DAC(); | ||
| 300 | fn TIM7(); | ||
| 301 | fn TIM8_BRK(); | ||
| 302 | fn TIM8_CC(); | ||
| 303 | fn TIM8_TRG_COM(); | ||
| 304 | fn TIM8_UP(); | ||
| 305 | fn TSC(); | ||
| 306 | fn UART4(); | ||
| 307 | fn UART5(); | ||
| 308 | fn USART1(); | ||
| 309 | fn USART2(); | ||
| 310 | fn USART3(); | ||
| 311 | fn WWDG(); | ||
| 312 | } | ||
| 313 | pub union Vector { | ||
| 314 | _handler: unsafe extern "C" fn(), | ||
| 315 | _reserved: u32, | ||
| 316 | } | ||
| 317 | #[link_section = ".vector_table.interrupts"] | ||
| 318 | #[no_mangle] | ||
| 319 | pub static __INTERRUPTS: [Vector; 91] = [ | ||
| 320 | Vector { _handler: WWDG }, | ||
| 321 | Vector { _handler: PVD_PVM }, | ||
| 322 | Vector { | ||
| 323 | _handler: TAMP_STAMP, | ||
| 324 | }, | ||
| 325 | Vector { _handler: RTC_WKUP }, | ||
| 326 | Vector { _handler: FLASH }, | ||
| 327 | Vector { _handler: RCC }, | ||
| 328 | Vector { _handler: EXTI0 }, | ||
| 329 | Vector { _handler: EXTI1 }, | ||
| 330 | Vector { _handler: EXTI2 }, | ||
| 331 | Vector { _handler: EXTI3 }, | ||
| 332 | Vector { _handler: EXTI4 }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel1, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel2, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel3, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel4, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel5, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel6, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA1_Channel7, | ||
| 353 | }, | ||
| 354 | Vector { _handler: ADC1_2 }, | ||
| 355 | Vector { _handler: CAN1_TX }, | ||
| 356 | Vector { _handler: CAN1_RX0 }, | ||
| 357 | Vector { _handler: CAN1_RX1 }, | ||
| 358 | Vector { _handler: CAN1_SCE }, | ||
| 359 | Vector { _handler: EXTI9_5 }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_BRK_TIM15, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_UP_TIM16, | ||
| 365 | }, | ||
| 366 | Vector { | ||
| 367 | _handler: TIM1_TRG_COM_TIM17, | ||
| 368 | }, | ||
| 369 | Vector { _handler: TIM1_CC }, | ||
| 370 | Vector { _handler: TIM2 }, | ||
| 371 | Vector { _handler: TIM3 }, | ||
| 372 | Vector { _handler: TIM4 }, | ||
| 373 | Vector { _handler: I2C1_EV }, | ||
| 374 | Vector { _handler: I2C1_ER }, | ||
| 375 | Vector { _handler: I2C2_EV }, | ||
| 376 | Vector { _handler: I2C2_ER }, | ||
| 377 | Vector { _handler: SPI1 }, | ||
| 378 | Vector { _handler: SPI2 }, | ||
| 379 | Vector { _handler: USART1 }, | ||
| 380 | Vector { _handler: USART2 }, | ||
| 381 | Vector { _handler: USART3 }, | ||
| 382 | Vector { | ||
| 383 | _handler: EXTI15_10, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: RTC_Alarm, | ||
| 387 | }, | ||
| 388 | Vector { | ||
| 389 | _handler: DFSDM1_FLT3, | ||
| 390 | }, | ||
| 391 | Vector { _handler: TIM8_BRK }, | ||
| 392 | Vector { _handler: TIM8_UP }, | ||
| 393 | Vector { | ||
| 394 | _handler: TIM8_TRG_COM, | ||
| 395 | }, | ||
| 396 | Vector { _handler: TIM8_CC }, | ||
| 397 | Vector { _handler: ADC3 }, | ||
| 398 | Vector { _handler: FMC }, | ||
| 399 | Vector { _handler: SDMMC1 }, | ||
| 400 | Vector { _handler: TIM5 }, | ||
| 401 | Vector { _handler: SPI3 }, | ||
| 402 | Vector { _handler: UART4 }, | ||
| 403 | Vector { _handler: UART5 }, | ||
| 404 | Vector { _handler: TIM6_DAC }, | ||
| 405 | Vector { _handler: TIM7 }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel1, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel2, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel3, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel4, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel5, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT0, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT1, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DFSDM1_FLT2, | ||
| 429 | }, | ||
| 430 | Vector { _handler: COMP }, | ||
| 431 | Vector { _handler: LPTIM1 }, | ||
| 432 | Vector { _handler: LPTIM2 }, | ||
| 433 | Vector { _handler: OTG_FS }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel6, | ||
| 436 | }, | ||
| 437 | Vector { | ||
| 438 | _handler: DMA2_Channel7, | ||
| 439 | }, | ||
| 440 | Vector { _handler: LPUART1 }, | ||
| 441 | Vector { _handler: QUADSPI }, | ||
| 442 | Vector { _handler: I2C3_EV }, | ||
| 443 | Vector { _handler: I2C3_ER }, | ||
| 444 | Vector { _handler: SAI1 }, | ||
| 445 | Vector { _handler: SAI2 }, | ||
| 446 | Vector { _handler: SWPMI1 }, | ||
| 447 | Vector { _handler: TSC }, | ||
| 448 | Vector { _handler: LCD }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { _handler: RNG }, | ||
| 451 | Vector { _handler: FPU }, | ||
| 452 | Vector { _handler: CRS }, | ||
| 453 | Vector { _handler: I2C4_EV }, | ||
| 454 | Vector { _handler: I2C4_ER }, | ||
| 455 | Vector { _handler: DCMI }, | ||
| 456 | Vector { _handler: CAN2_TX }, | ||
| 457 | Vector { _handler: CAN2_RX0 }, | ||
| 458 | Vector { _handler: CAN2_RX1 }, | ||
| 459 | Vector { _handler: CAN2_SCE }, | ||
| 460 | Vector { _handler: DMA2D }, | ||
| 461 | ]; | ||
| 462 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 463 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 464 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 465 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l496zg.rs b/embassy-stm32/src/chip/stm32l496zg.rs index 5200ecd80..e54e0774d 100644 --- a/embassy-stm32/src/chip/stm32l496zg.rs +++ b/embassy-stm32/src/chip/stm32l496zg.rs | |||
| @@ -1,12 +1,12 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, |
| 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, | 5 | PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, |
| 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, | 6 | PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, |
| 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, | 7 | PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, |
| 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, | 8 | PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, |
| 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, | 9 | PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| @@ -15,8 +15,451 @@ peripherals!( | |||
| 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, | 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 16 | USART3, USB_OTG_FS, WWDG | 16 | USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | ADC3 = 47, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | CAN2_RX0 = 87, | ||
| 38 | CAN2_RX1 = 88, | ||
| 39 | CAN2_SCE = 89, | ||
| 40 | CAN2_TX = 86, | ||
| 41 | COMP = 64, | ||
| 42 | CRS = 82, | ||
| 43 | DCMI = 85, | ||
| 44 | DFSDM1_FLT0 = 61, | ||
| 45 | DFSDM1_FLT1 = 62, | ||
| 46 | DFSDM1_FLT2 = 63, | ||
| 47 | DFSDM1_FLT3 = 42, | ||
| 48 | DMA1_Channel1 = 11, | ||
| 49 | DMA1_Channel2 = 12, | ||
| 50 | DMA1_Channel3 = 13, | ||
| 51 | DMA1_Channel4 = 14, | ||
| 52 | DMA1_Channel5 = 15, | ||
| 53 | DMA1_Channel6 = 16, | ||
| 54 | DMA1_Channel7 = 17, | ||
| 55 | DMA2D = 90, | ||
| 56 | DMA2_Channel1 = 56, | ||
| 57 | DMA2_Channel2 = 57, | ||
| 58 | DMA2_Channel3 = 58, | ||
| 59 | DMA2_Channel4 = 59, | ||
| 60 | DMA2_Channel5 = 60, | ||
| 61 | DMA2_Channel6 = 68, | ||
| 62 | DMA2_Channel7 = 69, | ||
| 63 | EXTI0 = 6, | ||
| 64 | EXTI1 = 7, | ||
| 65 | EXTI15_10 = 40, | ||
| 66 | EXTI2 = 8, | ||
| 67 | EXTI3 = 9, | ||
| 68 | EXTI4 = 10, | ||
| 69 | EXTI9_5 = 23, | ||
| 70 | FLASH = 4, | ||
| 71 | FMC = 48, | ||
| 72 | FPU = 81, | ||
| 73 | I2C1_ER = 32, | ||
| 74 | I2C1_EV = 31, | ||
| 75 | I2C2_ER = 34, | ||
| 76 | I2C2_EV = 33, | ||
| 77 | I2C3_ER = 73, | ||
| 78 | I2C3_EV = 72, | ||
| 79 | I2C4_ER = 84, | ||
| 80 | I2C4_EV = 83, | ||
| 81 | LCD = 78, | ||
| 82 | LPTIM1 = 65, | ||
| 83 | LPTIM2 = 66, | ||
| 84 | LPUART1 = 70, | ||
| 85 | OTG_FS = 67, | ||
| 86 | PVD_PVM = 1, | ||
| 87 | QUADSPI = 71, | ||
| 88 | RCC = 5, | ||
| 89 | RNG = 80, | ||
| 90 | RTC_Alarm = 41, | ||
| 91 | RTC_WKUP = 3, | ||
| 92 | SAI1 = 74, | ||
| 93 | SAI2 = 75, | ||
| 94 | SDMMC1 = 49, | ||
| 95 | SPI1 = 35, | ||
| 96 | SPI2 = 36, | ||
| 97 | SPI3 = 51, | ||
| 98 | SWPMI1 = 76, | ||
| 99 | TAMP_STAMP = 2, | ||
| 100 | TIM1_BRK_TIM15 = 24, | ||
| 101 | TIM1_CC = 27, | ||
| 102 | TIM1_TRG_COM_TIM17 = 26, | ||
| 103 | TIM1_UP_TIM16 = 25, | ||
| 104 | TIM2 = 28, | ||
| 105 | TIM3 = 29, | ||
| 106 | TIM4 = 30, | ||
| 107 | TIM5 = 50, | ||
| 108 | TIM6_DAC = 54, | ||
| 109 | TIM7 = 55, | ||
| 110 | TIM8_BRK = 43, | ||
| 111 | TIM8_CC = 46, | ||
| 112 | TIM8_TRG_COM = 45, | ||
| 113 | TIM8_UP = 44, | ||
| 114 | TSC = 77, | ||
| 115 | UART4 = 52, | ||
| 116 | UART5 = 53, | ||
| 117 | USART1 = 37, | ||
| 118 | USART2 = 38, | ||
| 119 | USART3 = 39, | ||
| 120 | WWDG = 0, | ||
| 121 | } | ||
| 122 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 123 | #[inline(always)] | ||
| 124 | fn number(self) -> u16 { | ||
| 125 | self as u16 | ||
| 126 | } | ||
| 127 | } | ||
| 128 | |||
| 129 | declare!(ADC1_2); | ||
| 130 | declare!(ADC3); | ||
| 131 | declare!(CAN1_RX0); | ||
| 132 | declare!(CAN1_RX1); | ||
| 133 | declare!(CAN1_SCE); | ||
| 134 | declare!(CAN1_TX); | ||
| 135 | declare!(CAN2_RX0); | ||
| 136 | declare!(CAN2_RX1); | ||
| 137 | declare!(CAN2_SCE); | ||
| 138 | declare!(CAN2_TX); | ||
| 139 | declare!(COMP); | ||
| 140 | declare!(CRS); | ||
| 141 | declare!(DCMI); | ||
| 142 | declare!(DFSDM1_FLT0); | ||
| 143 | declare!(DFSDM1_FLT1); | ||
| 144 | declare!(DFSDM1_FLT2); | ||
| 145 | declare!(DFSDM1_FLT3); | ||
| 146 | declare!(DMA1_Channel1); | ||
| 147 | declare!(DMA1_Channel2); | ||
| 148 | declare!(DMA1_Channel3); | ||
| 149 | declare!(DMA1_Channel4); | ||
| 150 | declare!(DMA1_Channel5); | ||
| 151 | declare!(DMA1_Channel6); | ||
| 152 | declare!(DMA1_Channel7); | ||
| 153 | declare!(DMA2D); | ||
| 154 | declare!(DMA2_Channel1); | ||
| 155 | declare!(DMA2_Channel2); | ||
| 156 | declare!(DMA2_Channel3); | ||
| 157 | declare!(DMA2_Channel4); | ||
| 158 | declare!(DMA2_Channel5); | ||
| 159 | declare!(DMA2_Channel6); | ||
| 160 | declare!(DMA2_Channel7); | ||
| 161 | declare!(EXTI0); | ||
| 162 | declare!(EXTI1); | ||
| 163 | declare!(EXTI15_10); | ||
| 164 | declare!(EXTI2); | ||
| 165 | declare!(EXTI3); | ||
| 166 | declare!(EXTI4); | ||
| 167 | declare!(EXTI9_5); | ||
| 168 | declare!(FLASH); | ||
| 169 | declare!(FMC); | ||
| 170 | declare!(FPU); | ||
| 171 | declare!(I2C1_ER); | ||
| 172 | declare!(I2C1_EV); | ||
| 173 | declare!(I2C2_ER); | ||
| 174 | declare!(I2C2_EV); | ||
| 175 | declare!(I2C3_ER); | ||
| 176 | declare!(I2C3_EV); | ||
| 177 | declare!(I2C4_ER); | ||
| 178 | declare!(I2C4_EV); | ||
| 179 | declare!(LCD); | ||
| 180 | declare!(LPTIM1); | ||
| 181 | declare!(LPTIM2); | ||
| 182 | declare!(LPUART1); | ||
| 183 | declare!(OTG_FS); | ||
| 184 | declare!(PVD_PVM); | ||
| 185 | declare!(QUADSPI); | ||
| 186 | declare!(RCC); | ||
| 187 | declare!(RNG); | ||
| 188 | declare!(RTC_Alarm); | ||
| 189 | declare!(RTC_WKUP); | ||
| 190 | declare!(SAI1); | ||
| 191 | declare!(SAI2); | ||
| 192 | declare!(SDMMC1); | ||
| 193 | declare!(SPI1); | ||
| 194 | declare!(SPI2); | ||
| 195 | declare!(SPI3); | ||
| 196 | declare!(SWPMI1); | ||
| 197 | declare!(TAMP_STAMP); | ||
| 198 | declare!(TIM1_BRK_TIM15); | ||
| 199 | declare!(TIM1_CC); | ||
| 200 | declare!(TIM1_TRG_COM_TIM17); | ||
| 201 | declare!(TIM1_UP_TIM16); | ||
| 202 | declare!(TIM2); | ||
| 203 | declare!(TIM3); | ||
| 204 | declare!(TIM4); | ||
| 205 | declare!(TIM5); | ||
| 206 | declare!(TIM6_DAC); | ||
| 207 | declare!(TIM7); | ||
| 208 | declare!(TIM8_BRK); | ||
| 209 | declare!(TIM8_CC); | ||
| 210 | declare!(TIM8_TRG_COM); | ||
| 211 | declare!(TIM8_UP); | ||
| 212 | declare!(TSC); | ||
| 213 | declare!(UART4); | ||
| 214 | declare!(UART5); | ||
| 215 | declare!(USART1); | ||
| 216 | declare!(USART2); | ||
| 217 | declare!(USART3); | ||
| 218 | declare!(WWDG); | ||
| 219 | } | ||
| 220 | mod interrupt_vector { | ||
| 221 | extern "C" { | ||
| 222 | fn ADC1_2(); | ||
| 223 | fn ADC3(); | ||
| 224 | fn CAN1_RX0(); | ||
| 225 | fn CAN1_RX1(); | ||
| 226 | fn CAN1_SCE(); | ||
| 227 | fn CAN1_TX(); | ||
| 228 | fn CAN2_RX0(); | ||
| 229 | fn CAN2_RX1(); | ||
| 230 | fn CAN2_SCE(); | ||
| 231 | fn CAN2_TX(); | ||
| 232 | fn COMP(); | ||
| 233 | fn CRS(); | ||
| 234 | fn DCMI(); | ||
| 235 | fn DFSDM1_FLT0(); | ||
| 236 | fn DFSDM1_FLT1(); | ||
| 237 | fn DFSDM1_FLT2(); | ||
| 238 | fn DFSDM1_FLT3(); | ||
| 239 | fn DMA1_Channel1(); | ||
| 240 | fn DMA1_Channel2(); | ||
| 241 | fn DMA1_Channel3(); | ||
| 242 | fn DMA1_Channel4(); | ||
| 243 | fn DMA1_Channel5(); | ||
| 244 | fn DMA1_Channel6(); | ||
| 245 | fn DMA1_Channel7(); | ||
| 246 | fn DMA2D(); | ||
| 247 | fn DMA2_Channel1(); | ||
| 248 | fn DMA2_Channel2(); | ||
| 249 | fn DMA2_Channel3(); | ||
| 250 | fn DMA2_Channel4(); | ||
| 251 | fn DMA2_Channel5(); | ||
| 252 | fn DMA2_Channel6(); | ||
| 253 | fn DMA2_Channel7(); | ||
| 254 | fn EXTI0(); | ||
| 255 | fn EXTI1(); | ||
| 256 | fn EXTI15_10(); | ||
| 257 | fn EXTI2(); | ||
| 258 | fn EXTI3(); | ||
| 259 | fn EXTI4(); | ||
| 260 | fn EXTI9_5(); | ||
| 261 | fn FLASH(); | ||
| 262 | fn FMC(); | ||
| 263 | fn FPU(); | ||
| 264 | fn I2C1_ER(); | ||
| 265 | fn I2C1_EV(); | ||
| 266 | fn I2C2_ER(); | ||
| 267 | fn I2C2_EV(); | ||
| 268 | fn I2C3_ER(); | ||
| 269 | fn I2C3_EV(); | ||
| 270 | fn I2C4_ER(); | ||
| 271 | fn I2C4_EV(); | ||
| 272 | fn LCD(); | ||
| 273 | fn LPTIM1(); | ||
| 274 | fn LPTIM2(); | ||
| 275 | fn LPUART1(); | ||
| 276 | fn OTG_FS(); | ||
| 277 | fn PVD_PVM(); | ||
| 278 | fn QUADSPI(); | ||
| 279 | fn RCC(); | ||
| 280 | fn RNG(); | ||
| 281 | fn RTC_Alarm(); | ||
| 282 | fn RTC_WKUP(); | ||
| 283 | fn SAI1(); | ||
| 284 | fn SAI2(); | ||
| 285 | fn SDMMC1(); | ||
| 286 | fn SPI1(); | ||
| 287 | fn SPI2(); | ||
| 288 | fn SPI3(); | ||
| 289 | fn SWPMI1(); | ||
| 290 | fn TAMP_STAMP(); | ||
| 291 | fn TIM1_BRK_TIM15(); | ||
| 292 | fn TIM1_CC(); | ||
| 293 | fn TIM1_TRG_COM_TIM17(); | ||
| 294 | fn TIM1_UP_TIM16(); | ||
| 295 | fn TIM2(); | ||
| 296 | fn TIM3(); | ||
| 297 | fn TIM4(); | ||
| 298 | fn TIM5(); | ||
| 299 | fn TIM6_DAC(); | ||
| 300 | fn TIM7(); | ||
| 301 | fn TIM8_BRK(); | ||
| 302 | fn TIM8_CC(); | ||
| 303 | fn TIM8_TRG_COM(); | ||
| 304 | fn TIM8_UP(); | ||
| 305 | fn TSC(); | ||
| 306 | fn UART4(); | ||
| 307 | fn UART5(); | ||
| 308 | fn USART1(); | ||
| 309 | fn USART2(); | ||
| 310 | fn USART3(); | ||
| 311 | fn WWDG(); | ||
| 312 | } | ||
| 313 | pub union Vector { | ||
| 314 | _handler: unsafe extern "C" fn(), | ||
| 315 | _reserved: u32, | ||
| 316 | } | ||
| 317 | #[link_section = ".vector_table.interrupts"] | ||
| 318 | #[no_mangle] | ||
| 319 | pub static __INTERRUPTS: [Vector; 91] = [ | ||
| 320 | Vector { _handler: WWDG }, | ||
| 321 | Vector { _handler: PVD_PVM }, | ||
| 322 | Vector { | ||
| 323 | _handler: TAMP_STAMP, | ||
| 324 | }, | ||
| 325 | Vector { _handler: RTC_WKUP }, | ||
| 326 | Vector { _handler: FLASH }, | ||
| 327 | Vector { _handler: RCC }, | ||
| 328 | Vector { _handler: EXTI0 }, | ||
| 329 | Vector { _handler: EXTI1 }, | ||
| 330 | Vector { _handler: EXTI2 }, | ||
| 331 | Vector { _handler: EXTI3 }, | ||
| 332 | Vector { _handler: EXTI4 }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel1, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel2, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel3, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel4, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel5, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel6, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA1_Channel7, | ||
| 353 | }, | ||
| 354 | Vector { _handler: ADC1_2 }, | ||
| 355 | Vector { _handler: CAN1_TX }, | ||
| 356 | Vector { _handler: CAN1_RX0 }, | ||
| 357 | Vector { _handler: CAN1_RX1 }, | ||
| 358 | Vector { _handler: CAN1_SCE }, | ||
| 359 | Vector { _handler: EXTI9_5 }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_BRK_TIM15, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_UP_TIM16, | ||
| 365 | }, | ||
| 366 | Vector { | ||
| 367 | _handler: TIM1_TRG_COM_TIM17, | ||
| 368 | }, | ||
| 369 | Vector { _handler: TIM1_CC }, | ||
| 370 | Vector { _handler: TIM2 }, | ||
| 371 | Vector { _handler: TIM3 }, | ||
| 372 | Vector { _handler: TIM4 }, | ||
| 373 | Vector { _handler: I2C1_EV }, | ||
| 374 | Vector { _handler: I2C1_ER }, | ||
| 375 | Vector { _handler: I2C2_EV }, | ||
| 376 | Vector { _handler: I2C2_ER }, | ||
| 377 | Vector { _handler: SPI1 }, | ||
| 378 | Vector { _handler: SPI2 }, | ||
| 379 | Vector { _handler: USART1 }, | ||
| 380 | Vector { _handler: USART2 }, | ||
| 381 | Vector { _handler: USART3 }, | ||
| 382 | Vector { | ||
| 383 | _handler: EXTI15_10, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: RTC_Alarm, | ||
| 387 | }, | ||
| 388 | Vector { | ||
| 389 | _handler: DFSDM1_FLT3, | ||
| 390 | }, | ||
| 391 | Vector { _handler: TIM8_BRK }, | ||
| 392 | Vector { _handler: TIM8_UP }, | ||
| 393 | Vector { | ||
| 394 | _handler: TIM8_TRG_COM, | ||
| 395 | }, | ||
| 396 | Vector { _handler: TIM8_CC }, | ||
| 397 | Vector { _handler: ADC3 }, | ||
| 398 | Vector { _handler: FMC }, | ||
| 399 | Vector { _handler: SDMMC1 }, | ||
| 400 | Vector { _handler: TIM5 }, | ||
| 401 | Vector { _handler: SPI3 }, | ||
| 402 | Vector { _handler: UART4 }, | ||
| 403 | Vector { _handler: UART5 }, | ||
| 404 | Vector { _handler: TIM6_DAC }, | ||
| 405 | Vector { _handler: TIM7 }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel1, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel2, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel3, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel4, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel5, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT0, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT1, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DFSDM1_FLT2, | ||
| 429 | }, | ||
| 430 | Vector { _handler: COMP }, | ||
| 431 | Vector { _handler: LPTIM1 }, | ||
| 432 | Vector { _handler: LPTIM2 }, | ||
| 433 | Vector { _handler: OTG_FS }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel6, | ||
| 436 | }, | ||
| 437 | Vector { | ||
| 438 | _handler: DMA2_Channel7, | ||
| 439 | }, | ||
| 440 | Vector { _handler: LPUART1 }, | ||
| 441 | Vector { _handler: QUADSPI }, | ||
| 442 | Vector { _handler: I2C3_EV }, | ||
| 443 | Vector { _handler: I2C3_ER }, | ||
| 444 | Vector { _handler: SAI1 }, | ||
| 445 | Vector { _handler: SAI2 }, | ||
| 446 | Vector { _handler: SWPMI1 }, | ||
| 447 | Vector { _handler: TSC }, | ||
| 448 | Vector { _handler: LCD }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { _handler: RNG }, | ||
| 451 | Vector { _handler: FPU }, | ||
| 452 | Vector { _handler: CRS }, | ||
| 453 | Vector { _handler: I2C4_EV }, | ||
| 454 | Vector { _handler: I2C4_ER }, | ||
| 455 | Vector { _handler: DCMI }, | ||
| 456 | Vector { _handler: CAN2_TX }, | ||
| 457 | Vector { _handler: CAN2_RX0 }, | ||
| 458 | Vector { _handler: CAN2_RX1 }, | ||
| 459 | Vector { _handler: CAN2_SCE }, | ||
| 460 | Vector { _handler: DMA2D }, | ||
| 461 | ]; | ||
| 462 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 463 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 464 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 465 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4a6ag.rs b/embassy-stm32/src/chip/stm32l4a6ag.rs index d758caee1..a3e227f1f 100644 --- a/embassy-stm32/src/chip/stm32l4a6ag.rs +++ b/embassy-stm32/src/chip/stm32l4a6ag.rs | |||
| @@ -2,21 +2,467 @@ use embassy_extras::peripherals; | |||
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, |
| 5 | PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, | 5 | EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, |
| 6 | PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, | 6 | PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, |
| 7 | PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, | 7 | PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, |
| 8 | PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, | 8 | PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, |
| 9 | PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, | 9 | PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, |
| 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, | 10 | PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, |
| 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, | 11 | PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, |
| 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, | 12 | PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, |
| 13 | PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, | 13 | PI12, PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, |
| 14 | OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, | 14 | OPAMP1, OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, |
| 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, | 15 | TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, |
| 16 | USART2, USART3, USB_OTG_FS, WWDG | 16 | USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | ADC3 = 47, | ||
| 33 | AES = 79, | ||
| 34 | CAN1_RX0 = 20, | ||
| 35 | CAN1_RX1 = 21, | ||
| 36 | CAN1_SCE = 22, | ||
| 37 | CAN1_TX = 19, | ||
| 38 | CAN2_RX0 = 87, | ||
| 39 | CAN2_RX1 = 88, | ||
| 40 | CAN2_SCE = 89, | ||
| 41 | CAN2_TX = 86, | ||
| 42 | COMP = 64, | ||
| 43 | CRS = 82, | ||
| 44 | DCMI = 85, | ||
| 45 | DFSDM1_FLT0 = 61, | ||
| 46 | DFSDM1_FLT1 = 62, | ||
| 47 | DFSDM1_FLT2 = 63, | ||
| 48 | DFSDM1_FLT3 = 42, | ||
| 49 | DMA1_Channel1 = 11, | ||
| 50 | DMA1_Channel2 = 12, | ||
| 51 | DMA1_Channel3 = 13, | ||
| 52 | DMA1_Channel4 = 14, | ||
| 53 | DMA1_Channel5 = 15, | ||
| 54 | DMA1_Channel6 = 16, | ||
| 55 | DMA1_Channel7 = 17, | ||
| 56 | DMA2D = 90, | ||
| 57 | DMA2_Channel1 = 56, | ||
| 58 | DMA2_Channel2 = 57, | ||
| 59 | DMA2_Channel3 = 58, | ||
| 60 | DMA2_Channel4 = 59, | ||
| 61 | DMA2_Channel5 = 60, | ||
| 62 | DMA2_Channel6 = 68, | ||
| 63 | DMA2_Channel7 = 69, | ||
| 64 | EXTI0 = 6, | ||
| 65 | EXTI1 = 7, | ||
| 66 | EXTI15_10 = 40, | ||
| 67 | EXTI2 = 8, | ||
| 68 | EXTI3 = 9, | ||
| 69 | EXTI4 = 10, | ||
| 70 | EXTI9_5 = 23, | ||
| 71 | FLASH = 4, | ||
| 72 | FMC = 48, | ||
| 73 | FPU = 81, | ||
| 74 | HASH_RNG = 80, | ||
| 75 | I2C1_ER = 32, | ||
| 76 | I2C1_EV = 31, | ||
| 77 | I2C2_ER = 34, | ||
| 78 | I2C2_EV = 33, | ||
| 79 | I2C3_ER = 73, | ||
| 80 | I2C3_EV = 72, | ||
| 81 | I2C4_ER = 84, | ||
| 82 | I2C4_EV = 83, | ||
| 83 | LCD = 78, | ||
| 84 | LPTIM1 = 65, | ||
| 85 | LPTIM2 = 66, | ||
| 86 | LPUART1 = 70, | ||
| 87 | OTG_FS = 67, | ||
| 88 | PVD_PVM = 1, | ||
| 89 | QUADSPI = 71, | ||
| 90 | RCC = 5, | ||
| 91 | RTC_Alarm = 41, | ||
| 92 | RTC_WKUP = 3, | ||
| 93 | SAI1 = 74, | ||
| 94 | SAI2 = 75, | ||
| 95 | SDMMC1 = 49, | ||
| 96 | SPI1 = 35, | ||
| 97 | SPI2 = 36, | ||
| 98 | SPI3 = 51, | ||
| 99 | SWPMI1 = 76, | ||
| 100 | TAMP_STAMP = 2, | ||
| 101 | TIM1_BRK_TIM15 = 24, | ||
| 102 | TIM1_CC = 27, | ||
| 103 | TIM1_TRG_COM_TIM17 = 26, | ||
| 104 | TIM1_UP_TIM16 = 25, | ||
| 105 | TIM2 = 28, | ||
| 106 | TIM3 = 29, | ||
| 107 | TIM4 = 30, | ||
| 108 | TIM5 = 50, | ||
| 109 | TIM6_DAC = 54, | ||
| 110 | TIM7 = 55, | ||
| 111 | TIM8_BRK = 43, | ||
| 112 | TIM8_CC = 46, | ||
| 113 | TIM8_TRG_COM = 45, | ||
| 114 | TIM8_UP = 44, | ||
| 115 | TSC = 77, | ||
| 116 | UART4 = 52, | ||
| 117 | UART5 = 53, | ||
| 118 | USART1 = 37, | ||
| 119 | USART2 = 38, | ||
| 120 | USART3 = 39, | ||
| 121 | WWDG = 0, | ||
| 122 | } | ||
| 123 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 124 | #[inline(always)] | ||
| 125 | fn number(self) -> u16 { | ||
| 126 | self as u16 | ||
| 127 | } | ||
| 128 | } | ||
| 129 | |||
| 130 | declare!(ADC1_2); | ||
| 131 | declare!(ADC3); | ||
| 132 | declare!(AES); | ||
| 133 | declare!(CAN1_RX0); | ||
| 134 | declare!(CAN1_RX1); | ||
| 135 | declare!(CAN1_SCE); | ||
| 136 | declare!(CAN1_TX); | ||
| 137 | declare!(CAN2_RX0); | ||
| 138 | declare!(CAN2_RX1); | ||
| 139 | declare!(CAN2_SCE); | ||
| 140 | declare!(CAN2_TX); | ||
| 141 | declare!(COMP); | ||
| 142 | declare!(CRS); | ||
| 143 | declare!(DCMI); | ||
| 144 | declare!(DFSDM1_FLT0); | ||
| 145 | declare!(DFSDM1_FLT1); | ||
| 146 | declare!(DFSDM1_FLT2); | ||
| 147 | declare!(DFSDM1_FLT3); | ||
| 148 | declare!(DMA1_Channel1); | ||
| 149 | declare!(DMA1_Channel2); | ||
| 150 | declare!(DMA1_Channel3); | ||
| 151 | declare!(DMA1_Channel4); | ||
| 152 | declare!(DMA1_Channel5); | ||
| 153 | declare!(DMA1_Channel6); | ||
| 154 | declare!(DMA1_Channel7); | ||
| 155 | declare!(DMA2D); | ||
| 156 | declare!(DMA2_Channel1); | ||
| 157 | declare!(DMA2_Channel2); | ||
| 158 | declare!(DMA2_Channel3); | ||
| 159 | declare!(DMA2_Channel4); | ||
| 160 | declare!(DMA2_Channel5); | ||
| 161 | declare!(DMA2_Channel6); | ||
| 162 | declare!(DMA2_Channel7); | ||
| 163 | declare!(EXTI0); | ||
| 164 | declare!(EXTI1); | ||
| 165 | declare!(EXTI15_10); | ||
| 166 | declare!(EXTI2); | ||
| 167 | declare!(EXTI3); | ||
| 168 | declare!(EXTI4); | ||
| 169 | declare!(EXTI9_5); | ||
| 170 | declare!(FLASH); | ||
| 171 | declare!(FMC); | ||
| 172 | declare!(FPU); | ||
| 173 | declare!(HASH_RNG); | ||
| 174 | declare!(I2C1_ER); | ||
| 175 | declare!(I2C1_EV); | ||
| 176 | declare!(I2C2_ER); | ||
| 177 | declare!(I2C2_EV); | ||
| 178 | declare!(I2C3_ER); | ||
| 179 | declare!(I2C3_EV); | ||
| 180 | declare!(I2C4_ER); | ||
| 181 | declare!(I2C4_EV); | ||
| 182 | declare!(LCD); | ||
| 183 | declare!(LPTIM1); | ||
| 184 | declare!(LPTIM2); | ||
| 185 | declare!(LPUART1); | ||
| 186 | declare!(OTG_FS); | ||
| 187 | declare!(PVD_PVM); | ||
| 188 | declare!(QUADSPI); | ||
| 189 | declare!(RCC); | ||
| 190 | declare!(RTC_Alarm); | ||
| 191 | declare!(RTC_WKUP); | ||
| 192 | declare!(SAI1); | ||
| 193 | declare!(SAI2); | ||
| 194 | declare!(SDMMC1); | ||
| 195 | declare!(SPI1); | ||
| 196 | declare!(SPI2); | ||
| 197 | declare!(SPI3); | ||
| 198 | declare!(SWPMI1); | ||
| 199 | declare!(TAMP_STAMP); | ||
| 200 | declare!(TIM1_BRK_TIM15); | ||
| 201 | declare!(TIM1_CC); | ||
| 202 | declare!(TIM1_TRG_COM_TIM17); | ||
| 203 | declare!(TIM1_UP_TIM16); | ||
| 204 | declare!(TIM2); | ||
| 205 | declare!(TIM3); | ||
| 206 | declare!(TIM4); | ||
| 207 | declare!(TIM5); | ||
| 208 | declare!(TIM6_DAC); | ||
| 209 | declare!(TIM7); | ||
| 210 | declare!(TIM8_BRK); | ||
| 211 | declare!(TIM8_CC); | ||
| 212 | declare!(TIM8_TRG_COM); | ||
| 213 | declare!(TIM8_UP); | ||
| 214 | declare!(TSC); | ||
| 215 | declare!(UART4); | ||
| 216 | declare!(UART5); | ||
| 217 | declare!(USART1); | ||
| 218 | declare!(USART2); | ||
| 219 | declare!(USART3); | ||
| 220 | declare!(WWDG); | ||
| 221 | } | ||
| 222 | mod interrupt_vector { | ||
| 223 | extern "C" { | ||
| 224 | fn ADC1_2(); | ||
| 225 | fn ADC3(); | ||
| 226 | fn AES(); | ||
| 227 | fn CAN1_RX0(); | ||
| 228 | fn CAN1_RX1(); | ||
| 229 | fn CAN1_SCE(); | ||
| 230 | fn CAN1_TX(); | ||
| 231 | fn CAN2_RX0(); | ||
| 232 | fn CAN2_RX1(); | ||
| 233 | fn CAN2_SCE(); | ||
| 234 | fn CAN2_TX(); | ||
| 235 | fn COMP(); | ||
| 236 | fn CRS(); | ||
| 237 | fn DCMI(); | ||
| 238 | fn DFSDM1_FLT0(); | ||
| 239 | fn DFSDM1_FLT1(); | ||
| 240 | fn DFSDM1_FLT2(); | ||
| 241 | fn DFSDM1_FLT3(); | ||
| 242 | fn DMA1_Channel1(); | ||
| 243 | fn DMA1_Channel2(); | ||
| 244 | fn DMA1_Channel3(); | ||
| 245 | fn DMA1_Channel4(); | ||
| 246 | fn DMA1_Channel5(); | ||
| 247 | fn DMA1_Channel6(); | ||
| 248 | fn DMA1_Channel7(); | ||
| 249 | fn DMA2D(); | ||
| 250 | fn DMA2_Channel1(); | ||
| 251 | fn DMA2_Channel2(); | ||
| 252 | fn DMA2_Channel3(); | ||
| 253 | fn DMA2_Channel4(); | ||
| 254 | fn DMA2_Channel5(); | ||
| 255 | fn DMA2_Channel6(); | ||
| 256 | fn DMA2_Channel7(); | ||
| 257 | fn EXTI0(); | ||
| 258 | fn EXTI1(); | ||
| 259 | fn EXTI15_10(); | ||
| 260 | fn EXTI2(); | ||
| 261 | fn EXTI3(); | ||
| 262 | fn EXTI4(); | ||
| 263 | fn EXTI9_5(); | ||
| 264 | fn FLASH(); | ||
| 265 | fn FMC(); | ||
| 266 | fn FPU(); | ||
| 267 | fn HASH_RNG(); | ||
| 268 | fn I2C1_ER(); | ||
| 269 | fn I2C1_EV(); | ||
| 270 | fn I2C2_ER(); | ||
| 271 | fn I2C2_EV(); | ||
| 272 | fn I2C3_ER(); | ||
| 273 | fn I2C3_EV(); | ||
| 274 | fn I2C4_ER(); | ||
| 275 | fn I2C4_EV(); | ||
| 276 | fn LCD(); | ||
| 277 | fn LPTIM1(); | ||
| 278 | fn LPTIM2(); | ||
| 279 | fn LPUART1(); | ||
| 280 | fn OTG_FS(); | ||
| 281 | fn PVD_PVM(); | ||
| 282 | fn QUADSPI(); | ||
| 283 | fn RCC(); | ||
| 284 | fn RTC_Alarm(); | ||
| 285 | fn RTC_WKUP(); | ||
| 286 | fn SAI1(); | ||
| 287 | fn SAI2(); | ||
| 288 | fn SDMMC1(); | ||
| 289 | fn SPI1(); | ||
| 290 | fn SPI2(); | ||
| 291 | fn SPI3(); | ||
| 292 | fn SWPMI1(); | ||
| 293 | fn TAMP_STAMP(); | ||
| 294 | fn TIM1_BRK_TIM15(); | ||
| 295 | fn TIM1_CC(); | ||
| 296 | fn TIM1_TRG_COM_TIM17(); | ||
| 297 | fn TIM1_UP_TIM16(); | ||
| 298 | fn TIM2(); | ||
| 299 | fn TIM3(); | ||
| 300 | fn TIM4(); | ||
| 301 | fn TIM5(); | ||
| 302 | fn TIM6_DAC(); | ||
| 303 | fn TIM7(); | ||
| 304 | fn TIM8_BRK(); | ||
| 305 | fn TIM8_CC(); | ||
| 306 | fn TIM8_TRG_COM(); | ||
| 307 | fn TIM8_UP(); | ||
| 308 | fn TSC(); | ||
| 309 | fn UART4(); | ||
| 310 | fn UART5(); | ||
| 311 | fn USART1(); | ||
| 312 | fn USART2(); | ||
| 313 | fn USART3(); | ||
| 314 | fn WWDG(); | ||
| 315 | } | ||
| 316 | pub union Vector { | ||
| 317 | _handler: unsafe extern "C" fn(), | ||
| 318 | _reserved: u32, | ||
| 319 | } | ||
| 320 | #[link_section = ".vector_table.interrupts"] | ||
| 321 | #[no_mangle] | ||
| 322 | pub static __INTERRUPTS: [Vector; 91] = [ | ||
| 323 | Vector { _handler: WWDG }, | ||
| 324 | Vector { _handler: PVD_PVM }, | ||
| 325 | Vector { | ||
| 326 | _handler: TAMP_STAMP, | ||
| 327 | }, | ||
| 328 | Vector { _handler: RTC_WKUP }, | ||
| 329 | Vector { _handler: FLASH }, | ||
| 330 | Vector { _handler: RCC }, | ||
| 331 | Vector { _handler: EXTI0 }, | ||
| 332 | Vector { _handler: EXTI1 }, | ||
| 333 | Vector { _handler: EXTI2 }, | ||
| 334 | Vector { _handler: EXTI3 }, | ||
| 335 | Vector { _handler: EXTI4 }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel1, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel2, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel3, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel4, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel5, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA1_Channel6, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: DMA1_Channel7, | ||
| 356 | }, | ||
| 357 | Vector { _handler: ADC1_2 }, | ||
| 358 | Vector { _handler: CAN1_TX }, | ||
| 359 | Vector { _handler: CAN1_RX0 }, | ||
| 360 | Vector { _handler: CAN1_RX1 }, | ||
| 361 | Vector { _handler: CAN1_SCE }, | ||
| 362 | Vector { _handler: EXTI9_5 }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_BRK_TIM15, | ||
| 365 | }, | ||
| 366 | Vector { | ||
| 367 | _handler: TIM1_UP_TIM16, | ||
| 368 | }, | ||
| 369 | Vector { | ||
| 370 | _handler: TIM1_TRG_COM_TIM17, | ||
| 371 | }, | ||
| 372 | Vector { _handler: TIM1_CC }, | ||
| 373 | Vector { _handler: TIM2 }, | ||
| 374 | Vector { _handler: TIM3 }, | ||
| 375 | Vector { _handler: TIM4 }, | ||
| 376 | Vector { _handler: I2C1_EV }, | ||
| 377 | Vector { _handler: I2C1_ER }, | ||
| 378 | Vector { _handler: I2C2_EV }, | ||
| 379 | Vector { _handler: I2C2_ER }, | ||
| 380 | Vector { _handler: SPI1 }, | ||
| 381 | Vector { _handler: SPI2 }, | ||
| 382 | Vector { _handler: USART1 }, | ||
| 383 | Vector { _handler: USART2 }, | ||
| 384 | Vector { _handler: USART3 }, | ||
| 385 | Vector { | ||
| 386 | _handler: EXTI15_10, | ||
| 387 | }, | ||
| 388 | Vector { | ||
| 389 | _handler: RTC_Alarm, | ||
| 390 | }, | ||
| 391 | Vector { | ||
| 392 | _handler: DFSDM1_FLT3, | ||
| 393 | }, | ||
| 394 | Vector { _handler: TIM8_BRK }, | ||
| 395 | Vector { _handler: TIM8_UP }, | ||
| 396 | Vector { | ||
| 397 | _handler: TIM8_TRG_COM, | ||
| 398 | }, | ||
| 399 | Vector { _handler: TIM8_CC }, | ||
| 400 | Vector { _handler: ADC3 }, | ||
| 401 | Vector { _handler: FMC }, | ||
| 402 | Vector { _handler: SDMMC1 }, | ||
| 403 | Vector { _handler: TIM5 }, | ||
| 404 | Vector { _handler: SPI3 }, | ||
| 405 | Vector { _handler: UART4 }, | ||
| 406 | Vector { _handler: UART5 }, | ||
| 407 | Vector { _handler: TIM6_DAC }, | ||
| 408 | Vector { _handler: TIM7 }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel1, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel2, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel3, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel4, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DMA2_Channel5, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT0, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DFSDM1_FLT1, | ||
| 429 | }, | ||
| 430 | Vector { | ||
| 431 | _handler: DFSDM1_FLT2, | ||
| 432 | }, | ||
| 433 | Vector { _handler: COMP }, | ||
| 434 | Vector { _handler: LPTIM1 }, | ||
| 435 | Vector { _handler: LPTIM2 }, | ||
| 436 | Vector { _handler: OTG_FS }, | ||
| 437 | Vector { | ||
| 438 | _handler: DMA2_Channel6, | ||
| 439 | }, | ||
| 440 | Vector { | ||
| 441 | _handler: DMA2_Channel7, | ||
| 442 | }, | ||
| 443 | Vector { _handler: LPUART1 }, | ||
| 444 | Vector { _handler: QUADSPI }, | ||
| 445 | Vector { _handler: I2C3_EV }, | ||
| 446 | Vector { _handler: I2C3_ER }, | ||
| 447 | Vector { _handler: SAI1 }, | ||
| 448 | Vector { _handler: SAI2 }, | ||
| 449 | Vector { _handler: SWPMI1 }, | ||
| 450 | Vector { _handler: TSC }, | ||
| 451 | Vector { _handler: LCD }, | ||
| 452 | Vector { _handler: AES }, | ||
| 453 | Vector { _handler: HASH_RNG }, | ||
| 454 | Vector { _handler: FPU }, | ||
| 455 | Vector { _handler: CRS }, | ||
| 456 | Vector { _handler: I2C4_EV }, | ||
| 457 | Vector { _handler: I2C4_ER }, | ||
| 458 | Vector { _handler: DCMI }, | ||
| 459 | Vector { _handler: CAN2_TX }, | ||
| 460 | Vector { _handler: CAN2_RX0 }, | ||
| 461 | Vector { _handler: CAN2_RX1 }, | ||
| 462 | Vector { _handler: CAN2_SCE }, | ||
| 463 | Vector { _handler: DMA2D }, | ||
| 464 | ]; | ||
| 465 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 466 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 467 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 468 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4a6qg.rs b/embassy-stm32/src/chip/stm32l4a6qg.rs index d758caee1..a3e227f1f 100644 --- a/embassy-stm32/src/chip/stm32l4a6qg.rs +++ b/embassy-stm32/src/chip/stm32l4a6qg.rs | |||
| @@ -2,21 +2,467 @@ use embassy_extras::peripherals; | |||
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, |
| 5 | PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, | 5 | EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, |
| 6 | PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, | 6 | PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, |
| 7 | PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, | 7 | PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, |
| 8 | PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, | 8 | PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, |
| 9 | PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, | 9 | PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, |
| 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, | 10 | PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, |
| 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, | 11 | PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, |
| 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, | 12 | PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, |
| 13 | PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, | 13 | PI12, PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, |
| 14 | OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, | 14 | OPAMP1, OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, |
| 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, | 15 | TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, |
| 16 | USART2, USART3, USB_OTG_FS, WWDG | 16 | USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | ADC3 = 47, | ||
| 33 | AES = 79, | ||
| 34 | CAN1_RX0 = 20, | ||
| 35 | CAN1_RX1 = 21, | ||
| 36 | CAN1_SCE = 22, | ||
| 37 | CAN1_TX = 19, | ||
| 38 | CAN2_RX0 = 87, | ||
| 39 | CAN2_RX1 = 88, | ||
| 40 | CAN2_SCE = 89, | ||
| 41 | CAN2_TX = 86, | ||
| 42 | COMP = 64, | ||
| 43 | CRS = 82, | ||
| 44 | DCMI = 85, | ||
| 45 | DFSDM1_FLT0 = 61, | ||
| 46 | DFSDM1_FLT1 = 62, | ||
| 47 | DFSDM1_FLT2 = 63, | ||
| 48 | DFSDM1_FLT3 = 42, | ||
| 49 | DMA1_Channel1 = 11, | ||
| 50 | DMA1_Channel2 = 12, | ||
| 51 | DMA1_Channel3 = 13, | ||
| 52 | DMA1_Channel4 = 14, | ||
| 53 | DMA1_Channel5 = 15, | ||
| 54 | DMA1_Channel6 = 16, | ||
| 55 | DMA1_Channel7 = 17, | ||
| 56 | DMA2D = 90, | ||
| 57 | DMA2_Channel1 = 56, | ||
| 58 | DMA2_Channel2 = 57, | ||
| 59 | DMA2_Channel3 = 58, | ||
| 60 | DMA2_Channel4 = 59, | ||
| 61 | DMA2_Channel5 = 60, | ||
| 62 | DMA2_Channel6 = 68, | ||
| 63 | DMA2_Channel7 = 69, | ||
| 64 | EXTI0 = 6, | ||
| 65 | EXTI1 = 7, | ||
| 66 | EXTI15_10 = 40, | ||
| 67 | EXTI2 = 8, | ||
| 68 | EXTI3 = 9, | ||
| 69 | EXTI4 = 10, | ||
| 70 | EXTI9_5 = 23, | ||
| 71 | FLASH = 4, | ||
| 72 | FMC = 48, | ||
| 73 | FPU = 81, | ||
| 74 | HASH_RNG = 80, | ||
| 75 | I2C1_ER = 32, | ||
| 76 | I2C1_EV = 31, | ||
| 77 | I2C2_ER = 34, | ||
| 78 | I2C2_EV = 33, | ||
| 79 | I2C3_ER = 73, | ||
| 80 | I2C3_EV = 72, | ||
| 81 | I2C4_ER = 84, | ||
| 82 | I2C4_EV = 83, | ||
| 83 | LCD = 78, | ||
| 84 | LPTIM1 = 65, | ||
| 85 | LPTIM2 = 66, | ||
| 86 | LPUART1 = 70, | ||
| 87 | OTG_FS = 67, | ||
| 88 | PVD_PVM = 1, | ||
| 89 | QUADSPI = 71, | ||
| 90 | RCC = 5, | ||
| 91 | RTC_Alarm = 41, | ||
| 92 | RTC_WKUP = 3, | ||
| 93 | SAI1 = 74, | ||
| 94 | SAI2 = 75, | ||
| 95 | SDMMC1 = 49, | ||
| 96 | SPI1 = 35, | ||
| 97 | SPI2 = 36, | ||
| 98 | SPI3 = 51, | ||
| 99 | SWPMI1 = 76, | ||
| 100 | TAMP_STAMP = 2, | ||
| 101 | TIM1_BRK_TIM15 = 24, | ||
| 102 | TIM1_CC = 27, | ||
| 103 | TIM1_TRG_COM_TIM17 = 26, | ||
| 104 | TIM1_UP_TIM16 = 25, | ||
| 105 | TIM2 = 28, | ||
| 106 | TIM3 = 29, | ||
| 107 | TIM4 = 30, | ||
| 108 | TIM5 = 50, | ||
| 109 | TIM6_DAC = 54, | ||
| 110 | TIM7 = 55, | ||
| 111 | TIM8_BRK = 43, | ||
| 112 | TIM8_CC = 46, | ||
| 113 | TIM8_TRG_COM = 45, | ||
| 114 | TIM8_UP = 44, | ||
| 115 | TSC = 77, | ||
| 116 | UART4 = 52, | ||
| 117 | UART5 = 53, | ||
| 118 | USART1 = 37, | ||
| 119 | USART2 = 38, | ||
| 120 | USART3 = 39, | ||
| 121 | WWDG = 0, | ||
| 122 | } | ||
| 123 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 124 | #[inline(always)] | ||
| 125 | fn number(self) -> u16 { | ||
| 126 | self as u16 | ||
| 127 | } | ||
| 128 | } | ||
| 129 | |||
| 130 | declare!(ADC1_2); | ||
| 131 | declare!(ADC3); | ||
| 132 | declare!(AES); | ||
| 133 | declare!(CAN1_RX0); | ||
| 134 | declare!(CAN1_RX1); | ||
| 135 | declare!(CAN1_SCE); | ||
| 136 | declare!(CAN1_TX); | ||
| 137 | declare!(CAN2_RX0); | ||
| 138 | declare!(CAN2_RX1); | ||
| 139 | declare!(CAN2_SCE); | ||
| 140 | declare!(CAN2_TX); | ||
| 141 | declare!(COMP); | ||
| 142 | declare!(CRS); | ||
| 143 | declare!(DCMI); | ||
| 144 | declare!(DFSDM1_FLT0); | ||
| 145 | declare!(DFSDM1_FLT1); | ||
| 146 | declare!(DFSDM1_FLT2); | ||
| 147 | declare!(DFSDM1_FLT3); | ||
| 148 | declare!(DMA1_Channel1); | ||
| 149 | declare!(DMA1_Channel2); | ||
| 150 | declare!(DMA1_Channel3); | ||
| 151 | declare!(DMA1_Channel4); | ||
| 152 | declare!(DMA1_Channel5); | ||
| 153 | declare!(DMA1_Channel6); | ||
| 154 | declare!(DMA1_Channel7); | ||
| 155 | declare!(DMA2D); | ||
| 156 | declare!(DMA2_Channel1); | ||
| 157 | declare!(DMA2_Channel2); | ||
| 158 | declare!(DMA2_Channel3); | ||
| 159 | declare!(DMA2_Channel4); | ||
| 160 | declare!(DMA2_Channel5); | ||
| 161 | declare!(DMA2_Channel6); | ||
| 162 | declare!(DMA2_Channel7); | ||
| 163 | declare!(EXTI0); | ||
| 164 | declare!(EXTI1); | ||
| 165 | declare!(EXTI15_10); | ||
| 166 | declare!(EXTI2); | ||
| 167 | declare!(EXTI3); | ||
| 168 | declare!(EXTI4); | ||
| 169 | declare!(EXTI9_5); | ||
| 170 | declare!(FLASH); | ||
| 171 | declare!(FMC); | ||
| 172 | declare!(FPU); | ||
| 173 | declare!(HASH_RNG); | ||
| 174 | declare!(I2C1_ER); | ||
| 175 | declare!(I2C1_EV); | ||
| 176 | declare!(I2C2_ER); | ||
| 177 | declare!(I2C2_EV); | ||
| 178 | declare!(I2C3_ER); | ||
| 179 | declare!(I2C3_EV); | ||
| 180 | declare!(I2C4_ER); | ||
| 181 | declare!(I2C4_EV); | ||
| 182 | declare!(LCD); | ||
| 183 | declare!(LPTIM1); | ||
| 184 | declare!(LPTIM2); | ||
| 185 | declare!(LPUART1); | ||
| 186 | declare!(OTG_FS); | ||
| 187 | declare!(PVD_PVM); | ||
| 188 | declare!(QUADSPI); | ||
| 189 | declare!(RCC); | ||
| 190 | declare!(RTC_Alarm); | ||
| 191 | declare!(RTC_WKUP); | ||
| 192 | declare!(SAI1); | ||
| 193 | declare!(SAI2); | ||
| 194 | declare!(SDMMC1); | ||
| 195 | declare!(SPI1); | ||
| 196 | declare!(SPI2); | ||
| 197 | declare!(SPI3); | ||
| 198 | declare!(SWPMI1); | ||
| 199 | declare!(TAMP_STAMP); | ||
| 200 | declare!(TIM1_BRK_TIM15); | ||
| 201 | declare!(TIM1_CC); | ||
| 202 | declare!(TIM1_TRG_COM_TIM17); | ||
| 203 | declare!(TIM1_UP_TIM16); | ||
| 204 | declare!(TIM2); | ||
| 205 | declare!(TIM3); | ||
| 206 | declare!(TIM4); | ||
| 207 | declare!(TIM5); | ||
| 208 | declare!(TIM6_DAC); | ||
| 209 | declare!(TIM7); | ||
| 210 | declare!(TIM8_BRK); | ||
| 211 | declare!(TIM8_CC); | ||
| 212 | declare!(TIM8_TRG_COM); | ||
| 213 | declare!(TIM8_UP); | ||
| 214 | declare!(TSC); | ||
| 215 | declare!(UART4); | ||
| 216 | declare!(UART5); | ||
| 217 | declare!(USART1); | ||
| 218 | declare!(USART2); | ||
| 219 | declare!(USART3); | ||
| 220 | declare!(WWDG); | ||
| 221 | } | ||
| 222 | mod interrupt_vector { | ||
| 223 | extern "C" { | ||
| 224 | fn ADC1_2(); | ||
| 225 | fn ADC3(); | ||
| 226 | fn AES(); | ||
| 227 | fn CAN1_RX0(); | ||
| 228 | fn CAN1_RX1(); | ||
| 229 | fn CAN1_SCE(); | ||
| 230 | fn CAN1_TX(); | ||
| 231 | fn CAN2_RX0(); | ||
| 232 | fn CAN2_RX1(); | ||
| 233 | fn CAN2_SCE(); | ||
| 234 | fn CAN2_TX(); | ||
| 235 | fn COMP(); | ||
| 236 | fn CRS(); | ||
| 237 | fn DCMI(); | ||
| 238 | fn DFSDM1_FLT0(); | ||
| 239 | fn DFSDM1_FLT1(); | ||
| 240 | fn DFSDM1_FLT2(); | ||
| 241 | fn DFSDM1_FLT3(); | ||
| 242 | fn DMA1_Channel1(); | ||
| 243 | fn DMA1_Channel2(); | ||
| 244 | fn DMA1_Channel3(); | ||
| 245 | fn DMA1_Channel4(); | ||
| 246 | fn DMA1_Channel5(); | ||
| 247 | fn DMA1_Channel6(); | ||
| 248 | fn DMA1_Channel7(); | ||
| 249 | fn DMA2D(); | ||
| 250 | fn DMA2_Channel1(); | ||
| 251 | fn DMA2_Channel2(); | ||
| 252 | fn DMA2_Channel3(); | ||
| 253 | fn DMA2_Channel4(); | ||
| 254 | fn DMA2_Channel5(); | ||
| 255 | fn DMA2_Channel6(); | ||
| 256 | fn DMA2_Channel7(); | ||
| 257 | fn EXTI0(); | ||
| 258 | fn EXTI1(); | ||
| 259 | fn EXTI15_10(); | ||
| 260 | fn EXTI2(); | ||
| 261 | fn EXTI3(); | ||
| 262 | fn EXTI4(); | ||
| 263 | fn EXTI9_5(); | ||
| 264 | fn FLASH(); | ||
| 265 | fn FMC(); | ||
| 266 | fn FPU(); | ||
| 267 | fn HASH_RNG(); | ||
| 268 | fn I2C1_ER(); | ||
| 269 | fn I2C1_EV(); | ||
| 270 | fn I2C2_ER(); | ||
| 271 | fn I2C2_EV(); | ||
| 272 | fn I2C3_ER(); | ||
| 273 | fn I2C3_EV(); | ||
| 274 | fn I2C4_ER(); | ||
| 275 | fn I2C4_EV(); | ||
| 276 | fn LCD(); | ||
| 277 | fn LPTIM1(); | ||
| 278 | fn LPTIM2(); | ||
| 279 | fn LPUART1(); | ||
| 280 | fn OTG_FS(); | ||
| 281 | fn PVD_PVM(); | ||
| 282 | fn QUADSPI(); | ||
| 283 | fn RCC(); | ||
| 284 | fn RTC_Alarm(); | ||
| 285 | fn RTC_WKUP(); | ||
| 286 | fn SAI1(); | ||
| 287 | fn SAI2(); | ||
| 288 | fn SDMMC1(); | ||
| 289 | fn SPI1(); | ||
| 290 | fn SPI2(); | ||
| 291 | fn SPI3(); | ||
| 292 | fn SWPMI1(); | ||
| 293 | fn TAMP_STAMP(); | ||
| 294 | fn TIM1_BRK_TIM15(); | ||
| 295 | fn TIM1_CC(); | ||
| 296 | fn TIM1_TRG_COM_TIM17(); | ||
| 297 | fn TIM1_UP_TIM16(); | ||
| 298 | fn TIM2(); | ||
| 299 | fn TIM3(); | ||
| 300 | fn TIM4(); | ||
| 301 | fn TIM5(); | ||
| 302 | fn TIM6_DAC(); | ||
| 303 | fn TIM7(); | ||
| 304 | fn TIM8_BRK(); | ||
| 305 | fn TIM8_CC(); | ||
| 306 | fn TIM8_TRG_COM(); | ||
| 307 | fn TIM8_UP(); | ||
| 308 | fn TSC(); | ||
| 309 | fn UART4(); | ||
| 310 | fn UART5(); | ||
| 311 | fn USART1(); | ||
| 312 | fn USART2(); | ||
| 313 | fn USART3(); | ||
| 314 | fn WWDG(); | ||
| 315 | } | ||
| 316 | pub union Vector { | ||
| 317 | _handler: unsafe extern "C" fn(), | ||
| 318 | _reserved: u32, | ||
| 319 | } | ||
| 320 | #[link_section = ".vector_table.interrupts"] | ||
| 321 | #[no_mangle] | ||
| 322 | pub static __INTERRUPTS: [Vector; 91] = [ | ||
| 323 | Vector { _handler: WWDG }, | ||
| 324 | Vector { _handler: PVD_PVM }, | ||
| 325 | Vector { | ||
| 326 | _handler: TAMP_STAMP, | ||
| 327 | }, | ||
| 328 | Vector { _handler: RTC_WKUP }, | ||
| 329 | Vector { _handler: FLASH }, | ||
| 330 | Vector { _handler: RCC }, | ||
| 331 | Vector { _handler: EXTI0 }, | ||
| 332 | Vector { _handler: EXTI1 }, | ||
| 333 | Vector { _handler: EXTI2 }, | ||
| 334 | Vector { _handler: EXTI3 }, | ||
| 335 | Vector { _handler: EXTI4 }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel1, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel2, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel3, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel4, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel5, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA1_Channel6, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: DMA1_Channel7, | ||
| 356 | }, | ||
| 357 | Vector { _handler: ADC1_2 }, | ||
| 358 | Vector { _handler: CAN1_TX }, | ||
| 359 | Vector { _handler: CAN1_RX0 }, | ||
| 360 | Vector { _handler: CAN1_RX1 }, | ||
| 361 | Vector { _handler: CAN1_SCE }, | ||
| 362 | Vector { _handler: EXTI9_5 }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_BRK_TIM15, | ||
| 365 | }, | ||
| 366 | Vector { | ||
| 367 | _handler: TIM1_UP_TIM16, | ||
| 368 | }, | ||
| 369 | Vector { | ||
| 370 | _handler: TIM1_TRG_COM_TIM17, | ||
| 371 | }, | ||
| 372 | Vector { _handler: TIM1_CC }, | ||
| 373 | Vector { _handler: TIM2 }, | ||
| 374 | Vector { _handler: TIM3 }, | ||
| 375 | Vector { _handler: TIM4 }, | ||
| 376 | Vector { _handler: I2C1_EV }, | ||
| 377 | Vector { _handler: I2C1_ER }, | ||
| 378 | Vector { _handler: I2C2_EV }, | ||
| 379 | Vector { _handler: I2C2_ER }, | ||
| 380 | Vector { _handler: SPI1 }, | ||
| 381 | Vector { _handler: SPI2 }, | ||
| 382 | Vector { _handler: USART1 }, | ||
| 383 | Vector { _handler: USART2 }, | ||
| 384 | Vector { _handler: USART3 }, | ||
| 385 | Vector { | ||
| 386 | _handler: EXTI15_10, | ||
| 387 | }, | ||
| 388 | Vector { | ||
| 389 | _handler: RTC_Alarm, | ||
| 390 | }, | ||
| 391 | Vector { | ||
| 392 | _handler: DFSDM1_FLT3, | ||
| 393 | }, | ||
| 394 | Vector { _handler: TIM8_BRK }, | ||
| 395 | Vector { _handler: TIM8_UP }, | ||
| 396 | Vector { | ||
| 397 | _handler: TIM8_TRG_COM, | ||
| 398 | }, | ||
| 399 | Vector { _handler: TIM8_CC }, | ||
| 400 | Vector { _handler: ADC3 }, | ||
| 401 | Vector { _handler: FMC }, | ||
| 402 | Vector { _handler: SDMMC1 }, | ||
| 403 | Vector { _handler: TIM5 }, | ||
| 404 | Vector { _handler: SPI3 }, | ||
| 405 | Vector { _handler: UART4 }, | ||
| 406 | Vector { _handler: UART5 }, | ||
| 407 | Vector { _handler: TIM6_DAC }, | ||
| 408 | Vector { _handler: TIM7 }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel1, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel2, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel3, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel4, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DMA2_Channel5, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT0, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DFSDM1_FLT1, | ||
| 429 | }, | ||
| 430 | Vector { | ||
| 431 | _handler: DFSDM1_FLT2, | ||
| 432 | }, | ||
| 433 | Vector { _handler: COMP }, | ||
| 434 | Vector { _handler: LPTIM1 }, | ||
| 435 | Vector { _handler: LPTIM2 }, | ||
| 436 | Vector { _handler: OTG_FS }, | ||
| 437 | Vector { | ||
| 438 | _handler: DMA2_Channel6, | ||
| 439 | }, | ||
| 440 | Vector { | ||
| 441 | _handler: DMA2_Channel7, | ||
| 442 | }, | ||
| 443 | Vector { _handler: LPUART1 }, | ||
| 444 | Vector { _handler: QUADSPI }, | ||
| 445 | Vector { _handler: I2C3_EV }, | ||
| 446 | Vector { _handler: I2C3_ER }, | ||
| 447 | Vector { _handler: SAI1 }, | ||
| 448 | Vector { _handler: SAI2 }, | ||
| 449 | Vector { _handler: SWPMI1 }, | ||
| 450 | Vector { _handler: TSC }, | ||
| 451 | Vector { _handler: LCD }, | ||
| 452 | Vector { _handler: AES }, | ||
| 453 | Vector { _handler: HASH_RNG }, | ||
| 454 | Vector { _handler: FPU }, | ||
| 455 | Vector { _handler: CRS }, | ||
| 456 | Vector { _handler: I2C4_EV }, | ||
| 457 | Vector { _handler: I2C4_ER }, | ||
| 458 | Vector { _handler: DCMI }, | ||
| 459 | Vector { _handler: CAN2_TX }, | ||
| 460 | Vector { _handler: CAN2_RX0 }, | ||
| 461 | Vector { _handler: CAN2_RX1 }, | ||
| 462 | Vector { _handler: CAN2_SCE }, | ||
| 463 | Vector { _handler: DMA2D }, | ||
| 464 | ]; | ||
| 465 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 466 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 467 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 468 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4a6rg.rs b/embassy-stm32/src/chip/stm32l4a6rg.rs index d758caee1..a3e227f1f 100644 --- a/embassy-stm32/src/chip/stm32l4a6rg.rs +++ b/embassy-stm32/src/chip/stm32l4a6rg.rs | |||
| @@ -2,21 +2,467 @@ use embassy_extras::peripherals; | |||
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, |
| 5 | PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, | 5 | EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, |
| 6 | PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, | 6 | PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, |
| 7 | PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, | 7 | PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, |
| 8 | PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, | 8 | PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, |
| 9 | PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, | 9 | PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, |
| 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, | 10 | PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, |
| 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, | 11 | PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, |
| 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, | 12 | PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, |
| 13 | PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, | 13 | PI12, PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, |
| 14 | OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, | 14 | OPAMP1, OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, |
| 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, | 15 | TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, |
| 16 | USART2, USART3, USB_OTG_FS, WWDG | 16 | USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | ADC3 = 47, | ||
| 33 | AES = 79, | ||
| 34 | CAN1_RX0 = 20, | ||
| 35 | CAN1_RX1 = 21, | ||
| 36 | CAN1_SCE = 22, | ||
| 37 | CAN1_TX = 19, | ||
| 38 | CAN2_RX0 = 87, | ||
| 39 | CAN2_RX1 = 88, | ||
| 40 | CAN2_SCE = 89, | ||
| 41 | CAN2_TX = 86, | ||
| 42 | COMP = 64, | ||
| 43 | CRS = 82, | ||
| 44 | DCMI = 85, | ||
| 45 | DFSDM1_FLT0 = 61, | ||
| 46 | DFSDM1_FLT1 = 62, | ||
| 47 | DFSDM1_FLT2 = 63, | ||
| 48 | DFSDM1_FLT3 = 42, | ||
| 49 | DMA1_Channel1 = 11, | ||
| 50 | DMA1_Channel2 = 12, | ||
| 51 | DMA1_Channel3 = 13, | ||
| 52 | DMA1_Channel4 = 14, | ||
| 53 | DMA1_Channel5 = 15, | ||
| 54 | DMA1_Channel6 = 16, | ||
| 55 | DMA1_Channel7 = 17, | ||
| 56 | DMA2D = 90, | ||
| 57 | DMA2_Channel1 = 56, | ||
| 58 | DMA2_Channel2 = 57, | ||
| 59 | DMA2_Channel3 = 58, | ||
| 60 | DMA2_Channel4 = 59, | ||
| 61 | DMA2_Channel5 = 60, | ||
| 62 | DMA2_Channel6 = 68, | ||
| 63 | DMA2_Channel7 = 69, | ||
| 64 | EXTI0 = 6, | ||
| 65 | EXTI1 = 7, | ||
| 66 | EXTI15_10 = 40, | ||
| 67 | EXTI2 = 8, | ||
| 68 | EXTI3 = 9, | ||
| 69 | EXTI4 = 10, | ||
| 70 | EXTI9_5 = 23, | ||
| 71 | FLASH = 4, | ||
| 72 | FMC = 48, | ||
| 73 | FPU = 81, | ||
| 74 | HASH_RNG = 80, | ||
| 75 | I2C1_ER = 32, | ||
| 76 | I2C1_EV = 31, | ||
| 77 | I2C2_ER = 34, | ||
| 78 | I2C2_EV = 33, | ||
| 79 | I2C3_ER = 73, | ||
| 80 | I2C3_EV = 72, | ||
| 81 | I2C4_ER = 84, | ||
| 82 | I2C4_EV = 83, | ||
| 83 | LCD = 78, | ||
| 84 | LPTIM1 = 65, | ||
| 85 | LPTIM2 = 66, | ||
| 86 | LPUART1 = 70, | ||
| 87 | OTG_FS = 67, | ||
| 88 | PVD_PVM = 1, | ||
| 89 | QUADSPI = 71, | ||
| 90 | RCC = 5, | ||
| 91 | RTC_Alarm = 41, | ||
| 92 | RTC_WKUP = 3, | ||
| 93 | SAI1 = 74, | ||
| 94 | SAI2 = 75, | ||
| 95 | SDMMC1 = 49, | ||
| 96 | SPI1 = 35, | ||
| 97 | SPI2 = 36, | ||
| 98 | SPI3 = 51, | ||
| 99 | SWPMI1 = 76, | ||
| 100 | TAMP_STAMP = 2, | ||
| 101 | TIM1_BRK_TIM15 = 24, | ||
| 102 | TIM1_CC = 27, | ||
| 103 | TIM1_TRG_COM_TIM17 = 26, | ||
| 104 | TIM1_UP_TIM16 = 25, | ||
| 105 | TIM2 = 28, | ||
| 106 | TIM3 = 29, | ||
| 107 | TIM4 = 30, | ||
| 108 | TIM5 = 50, | ||
| 109 | TIM6_DAC = 54, | ||
| 110 | TIM7 = 55, | ||
| 111 | TIM8_BRK = 43, | ||
| 112 | TIM8_CC = 46, | ||
| 113 | TIM8_TRG_COM = 45, | ||
| 114 | TIM8_UP = 44, | ||
| 115 | TSC = 77, | ||
| 116 | UART4 = 52, | ||
| 117 | UART5 = 53, | ||
| 118 | USART1 = 37, | ||
| 119 | USART2 = 38, | ||
| 120 | USART3 = 39, | ||
| 121 | WWDG = 0, | ||
| 122 | } | ||
| 123 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 124 | #[inline(always)] | ||
| 125 | fn number(self) -> u16 { | ||
| 126 | self as u16 | ||
| 127 | } | ||
| 128 | } | ||
| 129 | |||
| 130 | declare!(ADC1_2); | ||
| 131 | declare!(ADC3); | ||
| 132 | declare!(AES); | ||
| 133 | declare!(CAN1_RX0); | ||
| 134 | declare!(CAN1_RX1); | ||
| 135 | declare!(CAN1_SCE); | ||
| 136 | declare!(CAN1_TX); | ||
| 137 | declare!(CAN2_RX0); | ||
| 138 | declare!(CAN2_RX1); | ||
| 139 | declare!(CAN2_SCE); | ||
| 140 | declare!(CAN2_TX); | ||
| 141 | declare!(COMP); | ||
| 142 | declare!(CRS); | ||
| 143 | declare!(DCMI); | ||
| 144 | declare!(DFSDM1_FLT0); | ||
| 145 | declare!(DFSDM1_FLT1); | ||
| 146 | declare!(DFSDM1_FLT2); | ||
| 147 | declare!(DFSDM1_FLT3); | ||
| 148 | declare!(DMA1_Channel1); | ||
| 149 | declare!(DMA1_Channel2); | ||
| 150 | declare!(DMA1_Channel3); | ||
| 151 | declare!(DMA1_Channel4); | ||
| 152 | declare!(DMA1_Channel5); | ||
| 153 | declare!(DMA1_Channel6); | ||
| 154 | declare!(DMA1_Channel7); | ||
| 155 | declare!(DMA2D); | ||
| 156 | declare!(DMA2_Channel1); | ||
| 157 | declare!(DMA2_Channel2); | ||
| 158 | declare!(DMA2_Channel3); | ||
| 159 | declare!(DMA2_Channel4); | ||
| 160 | declare!(DMA2_Channel5); | ||
| 161 | declare!(DMA2_Channel6); | ||
| 162 | declare!(DMA2_Channel7); | ||
| 163 | declare!(EXTI0); | ||
| 164 | declare!(EXTI1); | ||
| 165 | declare!(EXTI15_10); | ||
| 166 | declare!(EXTI2); | ||
| 167 | declare!(EXTI3); | ||
| 168 | declare!(EXTI4); | ||
| 169 | declare!(EXTI9_5); | ||
| 170 | declare!(FLASH); | ||
| 171 | declare!(FMC); | ||
| 172 | declare!(FPU); | ||
| 173 | declare!(HASH_RNG); | ||
| 174 | declare!(I2C1_ER); | ||
| 175 | declare!(I2C1_EV); | ||
| 176 | declare!(I2C2_ER); | ||
| 177 | declare!(I2C2_EV); | ||
| 178 | declare!(I2C3_ER); | ||
| 179 | declare!(I2C3_EV); | ||
| 180 | declare!(I2C4_ER); | ||
| 181 | declare!(I2C4_EV); | ||
| 182 | declare!(LCD); | ||
| 183 | declare!(LPTIM1); | ||
| 184 | declare!(LPTIM2); | ||
| 185 | declare!(LPUART1); | ||
| 186 | declare!(OTG_FS); | ||
| 187 | declare!(PVD_PVM); | ||
| 188 | declare!(QUADSPI); | ||
| 189 | declare!(RCC); | ||
| 190 | declare!(RTC_Alarm); | ||
| 191 | declare!(RTC_WKUP); | ||
| 192 | declare!(SAI1); | ||
| 193 | declare!(SAI2); | ||
| 194 | declare!(SDMMC1); | ||
| 195 | declare!(SPI1); | ||
| 196 | declare!(SPI2); | ||
| 197 | declare!(SPI3); | ||
| 198 | declare!(SWPMI1); | ||
| 199 | declare!(TAMP_STAMP); | ||
| 200 | declare!(TIM1_BRK_TIM15); | ||
| 201 | declare!(TIM1_CC); | ||
| 202 | declare!(TIM1_TRG_COM_TIM17); | ||
| 203 | declare!(TIM1_UP_TIM16); | ||
| 204 | declare!(TIM2); | ||
| 205 | declare!(TIM3); | ||
| 206 | declare!(TIM4); | ||
| 207 | declare!(TIM5); | ||
| 208 | declare!(TIM6_DAC); | ||
| 209 | declare!(TIM7); | ||
| 210 | declare!(TIM8_BRK); | ||
| 211 | declare!(TIM8_CC); | ||
| 212 | declare!(TIM8_TRG_COM); | ||
| 213 | declare!(TIM8_UP); | ||
| 214 | declare!(TSC); | ||
| 215 | declare!(UART4); | ||
| 216 | declare!(UART5); | ||
| 217 | declare!(USART1); | ||
| 218 | declare!(USART2); | ||
| 219 | declare!(USART3); | ||
| 220 | declare!(WWDG); | ||
| 221 | } | ||
| 222 | mod interrupt_vector { | ||
| 223 | extern "C" { | ||
| 224 | fn ADC1_2(); | ||
| 225 | fn ADC3(); | ||
| 226 | fn AES(); | ||
| 227 | fn CAN1_RX0(); | ||
| 228 | fn CAN1_RX1(); | ||
| 229 | fn CAN1_SCE(); | ||
| 230 | fn CAN1_TX(); | ||
| 231 | fn CAN2_RX0(); | ||
| 232 | fn CAN2_RX1(); | ||
| 233 | fn CAN2_SCE(); | ||
| 234 | fn CAN2_TX(); | ||
| 235 | fn COMP(); | ||
| 236 | fn CRS(); | ||
| 237 | fn DCMI(); | ||
| 238 | fn DFSDM1_FLT0(); | ||
| 239 | fn DFSDM1_FLT1(); | ||
| 240 | fn DFSDM1_FLT2(); | ||
| 241 | fn DFSDM1_FLT3(); | ||
| 242 | fn DMA1_Channel1(); | ||
| 243 | fn DMA1_Channel2(); | ||
| 244 | fn DMA1_Channel3(); | ||
| 245 | fn DMA1_Channel4(); | ||
| 246 | fn DMA1_Channel5(); | ||
| 247 | fn DMA1_Channel6(); | ||
| 248 | fn DMA1_Channel7(); | ||
| 249 | fn DMA2D(); | ||
| 250 | fn DMA2_Channel1(); | ||
| 251 | fn DMA2_Channel2(); | ||
| 252 | fn DMA2_Channel3(); | ||
| 253 | fn DMA2_Channel4(); | ||
| 254 | fn DMA2_Channel5(); | ||
| 255 | fn DMA2_Channel6(); | ||
| 256 | fn DMA2_Channel7(); | ||
| 257 | fn EXTI0(); | ||
| 258 | fn EXTI1(); | ||
| 259 | fn EXTI15_10(); | ||
| 260 | fn EXTI2(); | ||
| 261 | fn EXTI3(); | ||
| 262 | fn EXTI4(); | ||
| 263 | fn EXTI9_5(); | ||
| 264 | fn FLASH(); | ||
| 265 | fn FMC(); | ||
| 266 | fn FPU(); | ||
| 267 | fn HASH_RNG(); | ||
| 268 | fn I2C1_ER(); | ||
| 269 | fn I2C1_EV(); | ||
| 270 | fn I2C2_ER(); | ||
| 271 | fn I2C2_EV(); | ||
| 272 | fn I2C3_ER(); | ||
| 273 | fn I2C3_EV(); | ||
| 274 | fn I2C4_ER(); | ||
| 275 | fn I2C4_EV(); | ||
| 276 | fn LCD(); | ||
| 277 | fn LPTIM1(); | ||
| 278 | fn LPTIM2(); | ||
| 279 | fn LPUART1(); | ||
| 280 | fn OTG_FS(); | ||
| 281 | fn PVD_PVM(); | ||
| 282 | fn QUADSPI(); | ||
| 283 | fn RCC(); | ||
| 284 | fn RTC_Alarm(); | ||
| 285 | fn RTC_WKUP(); | ||
| 286 | fn SAI1(); | ||
| 287 | fn SAI2(); | ||
| 288 | fn SDMMC1(); | ||
| 289 | fn SPI1(); | ||
| 290 | fn SPI2(); | ||
| 291 | fn SPI3(); | ||
| 292 | fn SWPMI1(); | ||
| 293 | fn TAMP_STAMP(); | ||
| 294 | fn TIM1_BRK_TIM15(); | ||
| 295 | fn TIM1_CC(); | ||
| 296 | fn TIM1_TRG_COM_TIM17(); | ||
| 297 | fn TIM1_UP_TIM16(); | ||
| 298 | fn TIM2(); | ||
| 299 | fn TIM3(); | ||
| 300 | fn TIM4(); | ||
| 301 | fn TIM5(); | ||
| 302 | fn TIM6_DAC(); | ||
| 303 | fn TIM7(); | ||
| 304 | fn TIM8_BRK(); | ||
| 305 | fn TIM8_CC(); | ||
| 306 | fn TIM8_TRG_COM(); | ||
| 307 | fn TIM8_UP(); | ||
| 308 | fn TSC(); | ||
| 309 | fn UART4(); | ||
| 310 | fn UART5(); | ||
| 311 | fn USART1(); | ||
| 312 | fn USART2(); | ||
| 313 | fn USART3(); | ||
| 314 | fn WWDG(); | ||
| 315 | } | ||
| 316 | pub union Vector { | ||
| 317 | _handler: unsafe extern "C" fn(), | ||
| 318 | _reserved: u32, | ||
| 319 | } | ||
| 320 | #[link_section = ".vector_table.interrupts"] | ||
| 321 | #[no_mangle] | ||
| 322 | pub static __INTERRUPTS: [Vector; 91] = [ | ||
| 323 | Vector { _handler: WWDG }, | ||
| 324 | Vector { _handler: PVD_PVM }, | ||
| 325 | Vector { | ||
| 326 | _handler: TAMP_STAMP, | ||
| 327 | }, | ||
| 328 | Vector { _handler: RTC_WKUP }, | ||
| 329 | Vector { _handler: FLASH }, | ||
| 330 | Vector { _handler: RCC }, | ||
| 331 | Vector { _handler: EXTI0 }, | ||
| 332 | Vector { _handler: EXTI1 }, | ||
| 333 | Vector { _handler: EXTI2 }, | ||
| 334 | Vector { _handler: EXTI3 }, | ||
| 335 | Vector { _handler: EXTI4 }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel1, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel2, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel3, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel4, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel5, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA1_Channel6, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: DMA1_Channel7, | ||
| 356 | }, | ||
| 357 | Vector { _handler: ADC1_2 }, | ||
| 358 | Vector { _handler: CAN1_TX }, | ||
| 359 | Vector { _handler: CAN1_RX0 }, | ||
| 360 | Vector { _handler: CAN1_RX1 }, | ||
| 361 | Vector { _handler: CAN1_SCE }, | ||
| 362 | Vector { _handler: EXTI9_5 }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_BRK_TIM15, | ||
| 365 | }, | ||
| 366 | Vector { | ||
| 367 | _handler: TIM1_UP_TIM16, | ||
| 368 | }, | ||
| 369 | Vector { | ||
| 370 | _handler: TIM1_TRG_COM_TIM17, | ||
| 371 | }, | ||
| 372 | Vector { _handler: TIM1_CC }, | ||
| 373 | Vector { _handler: TIM2 }, | ||
| 374 | Vector { _handler: TIM3 }, | ||
| 375 | Vector { _handler: TIM4 }, | ||
| 376 | Vector { _handler: I2C1_EV }, | ||
| 377 | Vector { _handler: I2C1_ER }, | ||
| 378 | Vector { _handler: I2C2_EV }, | ||
| 379 | Vector { _handler: I2C2_ER }, | ||
| 380 | Vector { _handler: SPI1 }, | ||
| 381 | Vector { _handler: SPI2 }, | ||
| 382 | Vector { _handler: USART1 }, | ||
| 383 | Vector { _handler: USART2 }, | ||
| 384 | Vector { _handler: USART3 }, | ||
| 385 | Vector { | ||
| 386 | _handler: EXTI15_10, | ||
| 387 | }, | ||
| 388 | Vector { | ||
| 389 | _handler: RTC_Alarm, | ||
| 390 | }, | ||
| 391 | Vector { | ||
| 392 | _handler: DFSDM1_FLT3, | ||
| 393 | }, | ||
| 394 | Vector { _handler: TIM8_BRK }, | ||
| 395 | Vector { _handler: TIM8_UP }, | ||
| 396 | Vector { | ||
| 397 | _handler: TIM8_TRG_COM, | ||
| 398 | }, | ||
| 399 | Vector { _handler: TIM8_CC }, | ||
| 400 | Vector { _handler: ADC3 }, | ||
| 401 | Vector { _handler: FMC }, | ||
| 402 | Vector { _handler: SDMMC1 }, | ||
| 403 | Vector { _handler: TIM5 }, | ||
| 404 | Vector { _handler: SPI3 }, | ||
| 405 | Vector { _handler: UART4 }, | ||
| 406 | Vector { _handler: UART5 }, | ||
| 407 | Vector { _handler: TIM6_DAC }, | ||
| 408 | Vector { _handler: TIM7 }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel1, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel2, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel3, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel4, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DMA2_Channel5, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT0, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DFSDM1_FLT1, | ||
| 429 | }, | ||
| 430 | Vector { | ||
| 431 | _handler: DFSDM1_FLT2, | ||
| 432 | }, | ||
| 433 | Vector { _handler: COMP }, | ||
| 434 | Vector { _handler: LPTIM1 }, | ||
| 435 | Vector { _handler: LPTIM2 }, | ||
| 436 | Vector { _handler: OTG_FS }, | ||
| 437 | Vector { | ||
| 438 | _handler: DMA2_Channel6, | ||
| 439 | }, | ||
| 440 | Vector { | ||
| 441 | _handler: DMA2_Channel7, | ||
| 442 | }, | ||
| 443 | Vector { _handler: LPUART1 }, | ||
| 444 | Vector { _handler: QUADSPI }, | ||
| 445 | Vector { _handler: I2C3_EV }, | ||
| 446 | Vector { _handler: I2C3_ER }, | ||
| 447 | Vector { _handler: SAI1 }, | ||
| 448 | Vector { _handler: SAI2 }, | ||
| 449 | Vector { _handler: SWPMI1 }, | ||
| 450 | Vector { _handler: TSC }, | ||
| 451 | Vector { _handler: LCD }, | ||
| 452 | Vector { _handler: AES }, | ||
| 453 | Vector { _handler: HASH_RNG }, | ||
| 454 | Vector { _handler: FPU }, | ||
| 455 | Vector { _handler: CRS }, | ||
| 456 | Vector { _handler: I2C4_EV }, | ||
| 457 | Vector { _handler: I2C4_ER }, | ||
| 458 | Vector { _handler: DCMI }, | ||
| 459 | Vector { _handler: CAN2_TX }, | ||
| 460 | Vector { _handler: CAN2_RX0 }, | ||
| 461 | Vector { _handler: CAN2_RX1 }, | ||
| 462 | Vector { _handler: CAN2_SCE }, | ||
| 463 | Vector { _handler: DMA2D }, | ||
| 464 | ]; | ||
| 465 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 466 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 467 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 468 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4a6vg.rs b/embassy-stm32/src/chip/stm32l4a6vg.rs index d758caee1..a3e227f1f 100644 --- a/embassy-stm32/src/chip/stm32l4a6vg.rs +++ b/embassy-stm32/src/chip/stm32l4a6vg.rs | |||
| @@ -2,21 +2,467 @@ use embassy_extras::peripherals; | |||
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, |
| 5 | PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, | 5 | EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, |
| 6 | PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, | 6 | PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, |
| 7 | PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, | 7 | PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, |
| 8 | PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, | 8 | PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, |
| 9 | PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, | 9 | PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, |
| 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, | 10 | PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, |
| 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, | 11 | PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, |
| 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, | 12 | PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, |
| 13 | PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, | 13 | PI12, PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, |
| 14 | OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, | 14 | OPAMP1, OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, |
| 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, | 15 | TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, |
| 16 | USART2, USART3, USB_OTG_FS, WWDG | 16 | USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | ADC3 = 47, | ||
| 33 | AES = 79, | ||
| 34 | CAN1_RX0 = 20, | ||
| 35 | CAN1_RX1 = 21, | ||
| 36 | CAN1_SCE = 22, | ||
| 37 | CAN1_TX = 19, | ||
| 38 | CAN2_RX0 = 87, | ||
| 39 | CAN2_RX1 = 88, | ||
| 40 | CAN2_SCE = 89, | ||
| 41 | CAN2_TX = 86, | ||
| 42 | COMP = 64, | ||
| 43 | CRS = 82, | ||
| 44 | DCMI = 85, | ||
| 45 | DFSDM1_FLT0 = 61, | ||
| 46 | DFSDM1_FLT1 = 62, | ||
| 47 | DFSDM1_FLT2 = 63, | ||
| 48 | DFSDM1_FLT3 = 42, | ||
| 49 | DMA1_Channel1 = 11, | ||
| 50 | DMA1_Channel2 = 12, | ||
| 51 | DMA1_Channel3 = 13, | ||
| 52 | DMA1_Channel4 = 14, | ||
| 53 | DMA1_Channel5 = 15, | ||
| 54 | DMA1_Channel6 = 16, | ||
| 55 | DMA1_Channel7 = 17, | ||
| 56 | DMA2D = 90, | ||
| 57 | DMA2_Channel1 = 56, | ||
| 58 | DMA2_Channel2 = 57, | ||
| 59 | DMA2_Channel3 = 58, | ||
| 60 | DMA2_Channel4 = 59, | ||
| 61 | DMA2_Channel5 = 60, | ||
| 62 | DMA2_Channel6 = 68, | ||
| 63 | DMA2_Channel7 = 69, | ||
| 64 | EXTI0 = 6, | ||
| 65 | EXTI1 = 7, | ||
| 66 | EXTI15_10 = 40, | ||
| 67 | EXTI2 = 8, | ||
| 68 | EXTI3 = 9, | ||
| 69 | EXTI4 = 10, | ||
| 70 | EXTI9_5 = 23, | ||
| 71 | FLASH = 4, | ||
| 72 | FMC = 48, | ||
| 73 | FPU = 81, | ||
| 74 | HASH_RNG = 80, | ||
| 75 | I2C1_ER = 32, | ||
| 76 | I2C1_EV = 31, | ||
| 77 | I2C2_ER = 34, | ||
| 78 | I2C2_EV = 33, | ||
| 79 | I2C3_ER = 73, | ||
| 80 | I2C3_EV = 72, | ||
| 81 | I2C4_ER = 84, | ||
| 82 | I2C4_EV = 83, | ||
| 83 | LCD = 78, | ||
| 84 | LPTIM1 = 65, | ||
| 85 | LPTIM2 = 66, | ||
| 86 | LPUART1 = 70, | ||
| 87 | OTG_FS = 67, | ||
| 88 | PVD_PVM = 1, | ||
| 89 | QUADSPI = 71, | ||
| 90 | RCC = 5, | ||
| 91 | RTC_Alarm = 41, | ||
| 92 | RTC_WKUP = 3, | ||
| 93 | SAI1 = 74, | ||
| 94 | SAI2 = 75, | ||
| 95 | SDMMC1 = 49, | ||
| 96 | SPI1 = 35, | ||
| 97 | SPI2 = 36, | ||
| 98 | SPI3 = 51, | ||
| 99 | SWPMI1 = 76, | ||
| 100 | TAMP_STAMP = 2, | ||
| 101 | TIM1_BRK_TIM15 = 24, | ||
| 102 | TIM1_CC = 27, | ||
| 103 | TIM1_TRG_COM_TIM17 = 26, | ||
| 104 | TIM1_UP_TIM16 = 25, | ||
| 105 | TIM2 = 28, | ||
| 106 | TIM3 = 29, | ||
| 107 | TIM4 = 30, | ||
| 108 | TIM5 = 50, | ||
| 109 | TIM6_DAC = 54, | ||
| 110 | TIM7 = 55, | ||
| 111 | TIM8_BRK = 43, | ||
| 112 | TIM8_CC = 46, | ||
| 113 | TIM8_TRG_COM = 45, | ||
| 114 | TIM8_UP = 44, | ||
| 115 | TSC = 77, | ||
| 116 | UART4 = 52, | ||
| 117 | UART5 = 53, | ||
| 118 | USART1 = 37, | ||
| 119 | USART2 = 38, | ||
| 120 | USART3 = 39, | ||
| 121 | WWDG = 0, | ||
| 122 | } | ||
| 123 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 124 | #[inline(always)] | ||
| 125 | fn number(self) -> u16 { | ||
| 126 | self as u16 | ||
| 127 | } | ||
| 128 | } | ||
| 129 | |||
| 130 | declare!(ADC1_2); | ||
| 131 | declare!(ADC3); | ||
| 132 | declare!(AES); | ||
| 133 | declare!(CAN1_RX0); | ||
| 134 | declare!(CAN1_RX1); | ||
| 135 | declare!(CAN1_SCE); | ||
| 136 | declare!(CAN1_TX); | ||
| 137 | declare!(CAN2_RX0); | ||
| 138 | declare!(CAN2_RX1); | ||
| 139 | declare!(CAN2_SCE); | ||
| 140 | declare!(CAN2_TX); | ||
| 141 | declare!(COMP); | ||
| 142 | declare!(CRS); | ||
| 143 | declare!(DCMI); | ||
| 144 | declare!(DFSDM1_FLT0); | ||
| 145 | declare!(DFSDM1_FLT1); | ||
| 146 | declare!(DFSDM1_FLT2); | ||
| 147 | declare!(DFSDM1_FLT3); | ||
| 148 | declare!(DMA1_Channel1); | ||
| 149 | declare!(DMA1_Channel2); | ||
| 150 | declare!(DMA1_Channel3); | ||
| 151 | declare!(DMA1_Channel4); | ||
| 152 | declare!(DMA1_Channel5); | ||
| 153 | declare!(DMA1_Channel6); | ||
| 154 | declare!(DMA1_Channel7); | ||
| 155 | declare!(DMA2D); | ||
| 156 | declare!(DMA2_Channel1); | ||
| 157 | declare!(DMA2_Channel2); | ||
| 158 | declare!(DMA2_Channel3); | ||
| 159 | declare!(DMA2_Channel4); | ||
| 160 | declare!(DMA2_Channel5); | ||
| 161 | declare!(DMA2_Channel6); | ||
| 162 | declare!(DMA2_Channel7); | ||
| 163 | declare!(EXTI0); | ||
| 164 | declare!(EXTI1); | ||
| 165 | declare!(EXTI15_10); | ||
| 166 | declare!(EXTI2); | ||
| 167 | declare!(EXTI3); | ||
| 168 | declare!(EXTI4); | ||
| 169 | declare!(EXTI9_5); | ||
| 170 | declare!(FLASH); | ||
| 171 | declare!(FMC); | ||
| 172 | declare!(FPU); | ||
| 173 | declare!(HASH_RNG); | ||
| 174 | declare!(I2C1_ER); | ||
| 175 | declare!(I2C1_EV); | ||
| 176 | declare!(I2C2_ER); | ||
| 177 | declare!(I2C2_EV); | ||
| 178 | declare!(I2C3_ER); | ||
| 179 | declare!(I2C3_EV); | ||
| 180 | declare!(I2C4_ER); | ||
| 181 | declare!(I2C4_EV); | ||
| 182 | declare!(LCD); | ||
| 183 | declare!(LPTIM1); | ||
| 184 | declare!(LPTIM2); | ||
| 185 | declare!(LPUART1); | ||
| 186 | declare!(OTG_FS); | ||
| 187 | declare!(PVD_PVM); | ||
| 188 | declare!(QUADSPI); | ||
| 189 | declare!(RCC); | ||
| 190 | declare!(RTC_Alarm); | ||
| 191 | declare!(RTC_WKUP); | ||
| 192 | declare!(SAI1); | ||
| 193 | declare!(SAI2); | ||
| 194 | declare!(SDMMC1); | ||
| 195 | declare!(SPI1); | ||
| 196 | declare!(SPI2); | ||
| 197 | declare!(SPI3); | ||
| 198 | declare!(SWPMI1); | ||
| 199 | declare!(TAMP_STAMP); | ||
| 200 | declare!(TIM1_BRK_TIM15); | ||
| 201 | declare!(TIM1_CC); | ||
| 202 | declare!(TIM1_TRG_COM_TIM17); | ||
| 203 | declare!(TIM1_UP_TIM16); | ||
| 204 | declare!(TIM2); | ||
| 205 | declare!(TIM3); | ||
| 206 | declare!(TIM4); | ||
| 207 | declare!(TIM5); | ||
| 208 | declare!(TIM6_DAC); | ||
| 209 | declare!(TIM7); | ||
| 210 | declare!(TIM8_BRK); | ||
| 211 | declare!(TIM8_CC); | ||
| 212 | declare!(TIM8_TRG_COM); | ||
| 213 | declare!(TIM8_UP); | ||
| 214 | declare!(TSC); | ||
| 215 | declare!(UART4); | ||
| 216 | declare!(UART5); | ||
| 217 | declare!(USART1); | ||
| 218 | declare!(USART2); | ||
| 219 | declare!(USART3); | ||
| 220 | declare!(WWDG); | ||
| 221 | } | ||
| 222 | mod interrupt_vector { | ||
| 223 | extern "C" { | ||
| 224 | fn ADC1_2(); | ||
| 225 | fn ADC3(); | ||
| 226 | fn AES(); | ||
| 227 | fn CAN1_RX0(); | ||
| 228 | fn CAN1_RX1(); | ||
| 229 | fn CAN1_SCE(); | ||
| 230 | fn CAN1_TX(); | ||
| 231 | fn CAN2_RX0(); | ||
| 232 | fn CAN2_RX1(); | ||
| 233 | fn CAN2_SCE(); | ||
| 234 | fn CAN2_TX(); | ||
| 235 | fn COMP(); | ||
| 236 | fn CRS(); | ||
| 237 | fn DCMI(); | ||
| 238 | fn DFSDM1_FLT0(); | ||
| 239 | fn DFSDM1_FLT1(); | ||
| 240 | fn DFSDM1_FLT2(); | ||
| 241 | fn DFSDM1_FLT3(); | ||
| 242 | fn DMA1_Channel1(); | ||
| 243 | fn DMA1_Channel2(); | ||
| 244 | fn DMA1_Channel3(); | ||
| 245 | fn DMA1_Channel4(); | ||
| 246 | fn DMA1_Channel5(); | ||
| 247 | fn DMA1_Channel6(); | ||
| 248 | fn DMA1_Channel7(); | ||
| 249 | fn DMA2D(); | ||
| 250 | fn DMA2_Channel1(); | ||
| 251 | fn DMA2_Channel2(); | ||
| 252 | fn DMA2_Channel3(); | ||
| 253 | fn DMA2_Channel4(); | ||
| 254 | fn DMA2_Channel5(); | ||
| 255 | fn DMA2_Channel6(); | ||
| 256 | fn DMA2_Channel7(); | ||
| 257 | fn EXTI0(); | ||
| 258 | fn EXTI1(); | ||
| 259 | fn EXTI15_10(); | ||
| 260 | fn EXTI2(); | ||
| 261 | fn EXTI3(); | ||
| 262 | fn EXTI4(); | ||
| 263 | fn EXTI9_5(); | ||
| 264 | fn FLASH(); | ||
| 265 | fn FMC(); | ||
| 266 | fn FPU(); | ||
| 267 | fn HASH_RNG(); | ||
| 268 | fn I2C1_ER(); | ||
| 269 | fn I2C1_EV(); | ||
| 270 | fn I2C2_ER(); | ||
| 271 | fn I2C2_EV(); | ||
| 272 | fn I2C3_ER(); | ||
| 273 | fn I2C3_EV(); | ||
| 274 | fn I2C4_ER(); | ||
| 275 | fn I2C4_EV(); | ||
| 276 | fn LCD(); | ||
| 277 | fn LPTIM1(); | ||
| 278 | fn LPTIM2(); | ||
| 279 | fn LPUART1(); | ||
| 280 | fn OTG_FS(); | ||
| 281 | fn PVD_PVM(); | ||
| 282 | fn QUADSPI(); | ||
| 283 | fn RCC(); | ||
| 284 | fn RTC_Alarm(); | ||
| 285 | fn RTC_WKUP(); | ||
| 286 | fn SAI1(); | ||
| 287 | fn SAI2(); | ||
| 288 | fn SDMMC1(); | ||
| 289 | fn SPI1(); | ||
| 290 | fn SPI2(); | ||
| 291 | fn SPI3(); | ||
| 292 | fn SWPMI1(); | ||
| 293 | fn TAMP_STAMP(); | ||
| 294 | fn TIM1_BRK_TIM15(); | ||
| 295 | fn TIM1_CC(); | ||
| 296 | fn TIM1_TRG_COM_TIM17(); | ||
| 297 | fn TIM1_UP_TIM16(); | ||
| 298 | fn TIM2(); | ||
| 299 | fn TIM3(); | ||
| 300 | fn TIM4(); | ||
| 301 | fn TIM5(); | ||
| 302 | fn TIM6_DAC(); | ||
| 303 | fn TIM7(); | ||
| 304 | fn TIM8_BRK(); | ||
| 305 | fn TIM8_CC(); | ||
| 306 | fn TIM8_TRG_COM(); | ||
| 307 | fn TIM8_UP(); | ||
| 308 | fn TSC(); | ||
| 309 | fn UART4(); | ||
| 310 | fn UART5(); | ||
| 311 | fn USART1(); | ||
| 312 | fn USART2(); | ||
| 313 | fn USART3(); | ||
| 314 | fn WWDG(); | ||
| 315 | } | ||
| 316 | pub union Vector { | ||
| 317 | _handler: unsafe extern "C" fn(), | ||
| 318 | _reserved: u32, | ||
| 319 | } | ||
| 320 | #[link_section = ".vector_table.interrupts"] | ||
| 321 | #[no_mangle] | ||
| 322 | pub static __INTERRUPTS: [Vector; 91] = [ | ||
| 323 | Vector { _handler: WWDG }, | ||
| 324 | Vector { _handler: PVD_PVM }, | ||
| 325 | Vector { | ||
| 326 | _handler: TAMP_STAMP, | ||
| 327 | }, | ||
| 328 | Vector { _handler: RTC_WKUP }, | ||
| 329 | Vector { _handler: FLASH }, | ||
| 330 | Vector { _handler: RCC }, | ||
| 331 | Vector { _handler: EXTI0 }, | ||
| 332 | Vector { _handler: EXTI1 }, | ||
| 333 | Vector { _handler: EXTI2 }, | ||
| 334 | Vector { _handler: EXTI3 }, | ||
| 335 | Vector { _handler: EXTI4 }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel1, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel2, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel3, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel4, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel5, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA1_Channel6, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: DMA1_Channel7, | ||
| 356 | }, | ||
| 357 | Vector { _handler: ADC1_2 }, | ||
| 358 | Vector { _handler: CAN1_TX }, | ||
| 359 | Vector { _handler: CAN1_RX0 }, | ||
| 360 | Vector { _handler: CAN1_RX1 }, | ||
| 361 | Vector { _handler: CAN1_SCE }, | ||
| 362 | Vector { _handler: EXTI9_5 }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_BRK_TIM15, | ||
| 365 | }, | ||
| 366 | Vector { | ||
| 367 | _handler: TIM1_UP_TIM16, | ||
| 368 | }, | ||
| 369 | Vector { | ||
| 370 | _handler: TIM1_TRG_COM_TIM17, | ||
| 371 | }, | ||
| 372 | Vector { _handler: TIM1_CC }, | ||
| 373 | Vector { _handler: TIM2 }, | ||
| 374 | Vector { _handler: TIM3 }, | ||
| 375 | Vector { _handler: TIM4 }, | ||
| 376 | Vector { _handler: I2C1_EV }, | ||
| 377 | Vector { _handler: I2C1_ER }, | ||
| 378 | Vector { _handler: I2C2_EV }, | ||
| 379 | Vector { _handler: I2C2_ER }, | ||
| 380 | Vector { _handler: SPI1 }, | ||
| 381 | Vector { _handler: SPI2 }, | ||
| 382 | Vector { _handler: USART1 }, | ||
| 383 | Vector { _handler: USART2 }, | ||
| 384 | Vector { _handler: USART3 }, | ||
| 385 | Vector { | ||
| 386 | _handler: EXTI15_10, | ||
| 387 | }, | ||
| 388 | Vector { | ||
| 389 | _handler: RTC_Alarm, | ||
| 390 | }, | ||
| 391 | Vector { | ||
| 392 | _handler: DFSDM1_FLT3, | ||
| 393 | }, | ||
| 394 | Vector { _handler: TIM8_BRK }, | ||
| 395 | Vector { _handler: TIM8_UP }, | ||
| 396 | Vector { | ||
| 397 | _handler: TIM8_TRG_COM, | ||
| 398 | }, | ||
| 399 | Vector { _handler: TIM8_CC }, | ||
| 400 | Vector { _handler: ADC3 }, | ||
| 401 | Vector { _handler: FMC }, | ||
| 402 | Vector { _handler: SDMMC1 }, | ||
| 403 | Vector { _handler: TIM5 }, | ||
| 404 | Vector { _handler: SPI3 }, | ||
| 405 | Vector { _handler: UART4 }, | ||
| 406 | Vector { _handler: UART5 }, | ||
| 407 | Vector { _handler: TIM6_DAC }, | ||
| 408 | Vector { _handler: TIM7 }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel1, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel2, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel3, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel4, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DMA2_Channel5, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT0, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DFSDM1_FLT1, | ||
| 429 | }, | ||
| 430 | Vector { | ||
| 431 | _handler: DFSDM1_FLT2, | ||
| 432 | }, | ||
| 433 | Vector { _handler: COMP }, | ||
| 434 | Vector { _handler: LPTIM1 }, | ||
| 435 | Vector { _handler: LPTIM2 }, | ||
| 436 | Vector { _handler: OTG_FS }, | ||
| 437 | Vector { | ||
| 438 | _handler: DMA2_Channel6, | ||
| 439 | }, | ||
| 440 | Vector { | ||
| 441 | _handler: DMA2_Channel7, | ||
| 442 | }, | ||
| 443 | Vector { _handler: LPUART1 }, | ||
| 444 | Vector { _handler: QUADSPI }, | ||
| 445 | Vector { _handler: I2C3_EV }, | ||
| 446 | Vector { _handler: I2C3_ER }, | ||
| 447 | Vector { _handler: SAI1 }, | ||
| 448 | Vector { _handler: SAI2 }, | ||
| 449 | Vector { _handler: SWPMI1 }, | ||
| 450 | Vector { _handler: TSC }, | ||
| 451 | Vector { _handler: LCD }, | ||
| 452 | Vector { _handler: AES }, | ||
| 453 | Vector { _handler: HASH_RNG }, | ||
| 454 | Vector { _handler: FPU }, | ||
| 455 | Vector { _handler: CRS }, | ||
| 456 | Vector { _handler: I2C4_EV }, | ||
| 457 | Vector { _handler: I2C4_ER }, | ||
| 458 | Vector { _handler: DCMI }, | ||
| 459 | Vector { _handler: CAN2_TX }, | ||
| 460 | Vector { _handler: CAN2_RX0 }, | ||
| 461 | Vector { _handler: CAN2_RX1 }, | ||
| 462 | Vector { _handler: CAN2_SCE }, | ||
| 463 | Vector { _handler: DMA2D }, | ||
| 464 | ]; | ||
| 465 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 466 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 467 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 468 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4a6zg.rs b/embassy-stm32/src/chip/stm32l4a6zg.rs index d758caee1..a3e227f1f 100644 --- a/embassy-stm32/src/chip/stm32l4a6zg.rs +++ b/embassy-stm32/src/chip/stm32l4a6zg.rs | |||
| @@ -2,21 +2,467 @@ use embassy_extras::peripherals; | |||
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, |
| 5 | PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, | 5 | EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, |
| 6 | PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, | 6 | PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, |
| 7 | PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, | 7 | PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, |
| 8 | PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, | 8 | PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, |
| 9 | PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, | 9 | PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, |
| 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, | 10 | PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, |
| 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, | 11 | PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, |
| 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, | 12 | PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, |
| 13 | PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, | 13 | PI12, PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, |
| 14 | OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, | 14 | OPAMP1, OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, |
| 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, | 15 | TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, |
| 16 | USART2, USART3, USB_OTG_FS, WWDG | 16 | USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | ADC3 = 47, | ||
| 33 | AES = 79, | ||
| 34 | CAN1_RX0 = 20, | ||
| 35 | CAN1_RX1 = 21, | ||
| 36 | CAN1_SCE = 22, | ||
| 37 | CAN1_TX = 19, | ||
| 38 | CAN2_RX0 = 87, | ||
| 39 | CAN2_RX1 = 88, | ||
| 40 | CAN2_SCE = 89, | ||
| 41 | CAN2_TX = 86, | ||
| 42 | COMP = 64, | ||
| 43 | CRS = 82, | ||
| 44 | DCMI = 85, | ||
| 45 | DFSDM1_FLT0 = 61, | ||
| 46 | DFSDM1_FLT1 = 62, | ||
| 47 | DFSDM1_FLT2 = 63, | ||
| 48 | DFSDM1_FLT3 = 42, | ||
| 49 | DMA1_Channel1 = 11, | ||
| 50 | DMA1_Channel2 = 12, | ||
| 51 | DMA1_Channel3 = 13, | ||
| 52 | DMA1_Channel4 = 14, | ||
| 53 | DMA1_Channel5 = 15, | ||
| 54 | DMA1_Channel6 = 16, | ||
| 55 | DMA1_Channel7 = 17, | ||
| 56 | DMA2D = 90, | ||
| 57 | DMA2_Channel1 = 56, | ||
| 58 | DMA2_Channel2 = 57, | ||
| 59 | DMA2_Channel3 = 58, | ||
| 60 | DMA2_Channel4 = 59, | ||
| 61 | DMA2_Channel5 = 60, | ||
| 62 | DMA2_Channel6 = 68, | ||
| 63 | DMA2_Channel7 = 69, | ||
| 64 | EXTI0 = 6, | ||
| 65 | EXTI1 = 7, | ||
| 66 | EXTI15_10 = 40, | ||
| 67 | EXTI2 = 8, | ||
| 68 | EXTI3 = 9, | ||
| 69 | EXTI4 = 10, | ||
| 70 | EXTI9_5 = 23, | ||
| 71 | FLASH = 4, | ||
| 72 | FMC = 48, | ||
| 73 | FPU = 81, | ||
| 74 | HASH_RNG = 80, | ||
| 75 | I2C1_ER = 32, | ||
| 76 | I2C1_EV = 31, | ||
| 77 | I2C2_ER = 34, | ||
| 78 | I2C2_EV = 33, | ||
| 79 | I2C3_ER = 73, | ||
| 80 | I2C3_EV = 72, | ||
| 81 | I2C4_ER = 84, | ||
| 82 | I2C4_EV = 83, | ||
| 83 | LCD = 78, | ||
| 84 | LPTIM1 = 65, | ||
| 85 | LPTIM2 = 66, | ||
| 86 | LPUART1 = 70, | ||
| 87 | OTG_FS = 67, | ||
| 88 | PVD_PVM = 1, | ||
| 89 | QUADSPI = 71, | ||
| 90 | RCC = 5, | ||
| 91 | RTC_Alarm = 41, | ||
| 92 | RTC_WKUP = 3, | ||
| 93 | SAI1 = 74, | ||
| 94 | SAI2 = 75, | ||
| 95 | SDMMC1 = 49, | ||
| 96 | SPI1 = 35, | ||
| 97 | SPI2 = 36, | ||
| 98 | SPI3 = 51, | ||
| 99 | SWPMI1 = 76, | ||
| 100 | TAMP_STAMP = 2, | ||
| 101 | TIM1_BRK_TIM15 = 24, | ||
| 102 | TIM1_CC = 27, | ||
| 103 | TIM1_TRG_COM_TIM17 = 26, | ||
| 104 | TIM1_UP_TIM16 = 25, | ||
| 105 | TIM2 = 28, | ||
| 106 | TIM3 = 29, | ||
| 107 | TIM4 = 30, | ||
| 108 | TIM5 = 50, | ||
| 109 | TIM6_DAC = 54, | ||
| 110 | TIM7 = 55, | ||
| 111 | TIM8_BRK = 43, | ||
| 112 | TIM8_CC = 46, | ||
| 113 | TIM8_TRG_COM = 45, | ||
| 114 | TIM8_UP = 44, | ||
| 115 | TSC = 77, | ||
| 116 | UART4 = 52, | ||
| 117 | UART5 = 53, | ||
| 118 | USART1 = 37, | ||
| 119 | USART2 = 38, | ||
| 120 | USART3 = 39, | ||
| 121 | WWDG = 0, | ||
| 122 | } | ||
| 123 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 124 | #[inline(always)] | ||
| 125 | fn number(self) -> u16 { | ||
| 126 | self as u16 | ||
| 127 | } | ||
| 128 | } | ||
| 129 | |||
| 130 | declare!(ADC1_2); | ||
| 131 | declare!(ADC3); | ||
| 132 | declare!(AES); | ||
| 133 | declare!(CAN1_RX0); | ||
| 134 | declare!(CAN1_RX1); | ||
| 135 | declare!(CAN1_SCE); | ||
| 136 | declare!(CAN1_TX); | ||
| 137 | declare!(CAN2_RX0); | ||
| 138 | declare!(CAN2_RX1); | ||
| 139 | declare!(CAN2_SCE); | ||
| 140 | declare!(CAN2_TX); | ||
| 141 | declare!(COMP); | ||
| 142 | declare!(CRS); | ||
| 143 | declare!(DCMI); | ||
| 144 | declare!(DFSDM1_FLT0); | ||
| 145 | declare!(DFSDM1_FLT1); | ||
| 146 | declare!(DFSDM1_FLT2); | ||
| 147 | declare!(DFSDM1_FLT3); | ||
| 148 | declare!(DMA1_Channel1); | ||
| 149 | declare!(DMA1_Channel2); | ||
| 150 | declare!(DMA1_Channel3); | ||
| 151 | declare!(DMA1_Channel4); | ||
| 152 | declare!(DMA1_Channel5); | ||
| 153 | declare!(DMA1_Channel6); | ||
| 154 | declare!(DMA1_Channel7); | ||
| 155 | declare!(DMA2D); | ||
| 156 | declare!(DMA2_Channel1); | ||
| 157 | declare!(DMA2_Channel2); | ||
| 158 | declare!(DMA2_Channel3); | ||
| 159 | declare!(DMA2_Channel4); | ||
| 160 | declare!(DMA2_Channel5); | ||
| 161 | declare!(DMA2_Channel6); | ||
| 162 | declare!(DMA2_Channel7); | ||
| 163 | declare!(EXTI0); | ||
| 164 | declare!(EXTI1); | ||
| 165 | declare!(EXTI15_10); | ||
| 166 | declare!(EXTI2); | ||
| 167 | declare!(EXTI3); | ||
| 168 | declare!(EXTI4); | ||
| 169 | declare!(EXTI9_5); | ||
| 170 | declare!(FLASH); | ||
| 171 | declare!(FMC); | ||
| 172 | declare!(FPU); | ||
| 173 | declare!(HASH_RNG); | ||
| 174 | declare!(I2C1_ER); | ||
| 175 | declare!(I2C1_EV); | ||
| 176 | declare!(I2C2_ER); | ||
| 177 | declare!(I2C2_EV); | ||
| 178 | declare!(I2C3_ER); | ||
| 179 | declare!(I2C3_EV); | ||
| 180 | declare!(I2C4_ER); | ||
| 181 | declare!(I2C4_EV); | ||
| 182 | declare!(LCD); | ||
| 183 | declare!(LPTIM1); | ||
| 184 | declare!(LPTIM2); | ||
| 185 | declare!(LPUART1); | ||
| 186 | declare!(OTG_FS); | ||
| 187 | declare!(PVD_PVM); | ||
| 188 | declare!(QUADSPI); | ||
| 189 | declare!(RCC); | ||
| 190 | declare!(RTC_Alarm); | ||
| 191 | declare!(RTC_WKUP); | ||
| 192 | declare!(SAI1); | ||
| 193 | declare!(SAI2); | ||
| 194 | declare!(SDMMC1); | ||
| 195 | declare!(SPI1); | ||
| 196 | declare!(SPI2); | ||
| 197 | declare!(SPI3); | ||
| 198 | declare!(SWPMI1); | ||
| 199 | declare!(TAMP_STAMP); | ||
| 200 | declare!(TIM1_BRK_TIM15); | ||
| 201 | declare!(TIM1_CC); | ||
| 202 | declare!(TIM1_TRG_COM_TIM17); | ||
| 203 | declare!(TIM1_UP_TIM16); | ||
| 204 | declare!(TIM2); | ||
| 205 | declare!(TIM3); | ||
| 206 | declare!(TIM4); | ||
| 207 | declare!(TIM5); | ||
| 208 | declare!(TIM6_DAC); | ||
| 209 | declare!(TIM7); | ||
| 210 | declare!(TIM8_BRK); | ||
| 211 | declare!(TIM8_CC); | ||
| 212 | declare!(TIM8_TRG_COM); | ||
| 213 | declare!(TIM8_UP); | ||
| 214 | declare!(TSC); | ||
| 215 | declare!(UART4); | ||
| 216 | declare!(UART5); | ||
| 217 | declare!(USART1); | ||
| 218 | declare!(USART2); | ||
| 219 | declare!(USART3); | ||
| 220 | declare!(WWDG); | ||
| 221 | } | ||
| 222 | mod interrupt_vector { | ||
| 223 | extern "C" { | ||
| 224 | fn ADC1_2(); | ||
| 225 | fn ADC3(); | ||
| 226 | fn AES(); | ||
| 227 | fn CAN1_RX0(); | ||
| 228 | fn CAN1_RX1(); | ||
| 229 | fn CAN1_SCE(); | ||
| 230 | fn CAN1_TX(); | ||
| 231 | fn CAN2_RX0(); | ||
| 232 | fn CAN2_RX1(); | ||
| 233 | fn CAN2_SCE(); | ||
| 234 | fn CAN2_TX(); | ||
| 235 | fn COMP(); | ||
| 236 | fn CRS(); | ||
| 237 | fn DCMI(); | ||
| 238 | fn DFSDM1_FLT0(); | ||
| 239 | fn DFSDM1_FLT1(); | ||
| 240 | fn DFSDM1_FLT2(); | ||
| 241 | fn DFSDM1_FLT3(); | ||
| 242 | fn DMA1_Channel1(); | ||
| 243 | fn DMA1_Channel2(); | ||
| 244 | fn DMA1_Channel3(); | ||
| 245 | fn DMA1_Channel4(); | ||
| 246 | fn DMA1_Channel5(); | ||
| 247 | fn DMA1_Channel6(); | ||
| 248 | fn DMA1_Channel7(); | ||
| 249 | fn DMA2D(); | ||
| 250 | fn DMA2_Channel1(); | ||
| 251 | fn DMA2_Channel2(); | ||
| 252 | fn DMA2_Channel3(); | ||
| 253 | fn DMA2_Channel4(); | ||
| 254 | fn DMA2_Channel5(); | ||
| 255 | fn DMA2_Channel6(); | ||
| 256 | fn DMA2_Channel7(); | ||
| 257 | fn EXTI0(); | ||
| 258 | fn EXTI1(); | ||
| 259 | fn EXTI15_10(); | ||
| 260 | fn EXTI2(); | ||
| 261 | fn EXTI3(); | ||
| 262 | fn EXTI4(); | ||
| 263 | fn EXTI9_5(); | ||
| 264 | fn FLASH(); | ||
| 265 | fn FMC(); | ||
| 266 | fn FPU(); | ||
| 267 | fn HASH_RNG(); | ||
| 268 | fn I2C1_ER(); | ||
| 269 | fn I2C1_EV(); | ||
| 270 | fn I2C2_ER(); | ||
| 271 | fn I2C2_EV(); | ||
| 272 | fn I2C3_ER(); | ||
| 273 | fn I2C3_EV(); | ||
| 274 | fn I2C4_ER(); | ||
| 275 | fn I2C4_EV(); | ||
| 276 | fn LCD(); | ||
| 277 | fn LPTIM1(); | ||
| 278 | fn LPTIM2(); | ||
| 279 | fn LPUART1(); | ||
| 280 | fn OTG_FS(); | ||
| 281 | fn PVD_PVM(); | ||
| 282 | fn QUADSPI(); | ||
| 283 | fn RCC(); | ||
| 284 | fn RTC_Alarm(); | ||
| 285 | fn RTC_WKUP(); | ||
| 286 | fn SAI1(); | ||
| 287 | fn SAI2(); | ||
| 288 | fn SDMMC1(); | ||
| 289 | fn SPI1(); | ||
| 290 | fn SPI2(); | ||
| 291 | fn SPI3(); | ||
| 292 | fn SWPMI1(); | ||
| 293 | fn TAMP_STAMP(); | ||
| 294 | fn TIM1_BRK_TIM15(); | ||
| 295 | fn TIM1_CC(); | ||
| 296 | fn TIM1_TRG_COM_TIM17(); | ||
| 297 | fn TIM1_UP_TIM16(); | ||
| 298 | fn TIM2(); | ||
| 299 | fn TIM3(); | ||
| 300 | fn TIM4(); | ||
| 301 | fn TIM5(); | ||
| 302 | fn TIM6_DAC(); | ||
| 303 | fn TIM7(); | ||
| 304 | fn TIM8_BRK(); | ||
| 305 | fn TIM8_CC(); | ||
| 306 | fn TIM8_TRG_COM(); | ||
| 307 | fn TIM8_UP(); | ||
| 308 | fn TSC(); | ||
| 309 | fn UART4(); | ||
| 310 | fn UART5(); | ||
| 311 | fn USART1(); | ||
| 312 | fn USART2(); | ||
| 313 | fn USART3(); | ||
| 314 | fn WWDG(); | ||
| 315 | } | ||
| 316 | pub union Vector { | ||
| 317 | _handler: unsafe extern "C" fn(), | ||
| 318 | _reserved: u32, | ||
| 319 | } | ||
| 320 | #[link_section = ".vector_table.interrupts"] | ||
| 321 | #[no_mangle] | ||
| 322 | pub static __INTERRUPTS: [Vector; 91] = [ | ||
| 323 | Vector { _handler: WWDG }, | ||
| 324 | Vector { _handler: PVD_PVM }, | ||
| 325 | Vector { | ||
| 326 | _handler: TAMP_STAMP, | ||
| 327 | }, | ||
| 328 | Vector { _handler: RTC_WKUP }, | ||
| 329 | Vector { _handler: FLASH }, | ||
| 330 | Vector { _handler: RCC }, | ||
| 331 | Vector { _handler: EXTI0 }, | ||
| 332 | Vector { _handler: EXTI1 }, | ||
| 333 | Vector { _handler: EXTI2 }, | ||
| 334 | Vector { _handler: EXTI3 }, | ||
| 335 | Vector { _handler: EXTI4 }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel1, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel2, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel3, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel4, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel5, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA1_Channel6, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: DMA1_Channel7, | ||
| 356 | }, | ||
| 357 | Vector { _handler: ADC1_2 }, | ||
| 358 | Vector { _handler: CAN1_TX }, | ||
| 359 | Vector { _handler: CAN1_RX0 }, | ||
| 360 | Vector { _handler: CAN1_RX1 }, | ||
| 361 | Vector { _handler: CAN1_SCE }, | ||
| 362 | Vector { _handler: EXTI9_5 }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_BRK_TIM15, | ||
| 365 | }, | ||
| 366 | Vector { | ||
| 367 | _handler: TIM1_UP_TIM16, | ||
| 368 | }, | ||
| 369 | Vector { | ||
| 370 | _handler: TIM1_TRG_COM_TIM17, | ||
| 371 | }, | ||
| 372 | Vector { _handler: TIM1_CC }, | ||
| 373 | Vector { _handler: TIM2 }, | ||
| 374 | Vector { _handler: TIM3 }, | ||
| 375 | Vector { _handler: TIM4 }, | ||
| 376 | Vector { _handler: I2C1_EV }, | ||
| 377 | Vector { _handler: I2C1_ER }, | ||
| 378 | Vector { _handler: I2C2_EV }, | ||
| 379 | Vector { _handler: I2C2_ER }, | ||
| 380 | Vector { _handler: SPI1 }, | ||
| 381 | Vector { _handler: SPI2 }, | ||
| 382 | Vector { _handler: USART1 }, | ||
| 383 | Vector { _handler: USART2 }, | ||
| 384 | Vector { _handler: USART3 }, | ||
| 385 | Vector { | ||
| 386 | _handler: EXTI15_10, | ||
| 387 | }, | ||
| 388 | Vector { | ||
| 389 | _handler: RTC_Alarm, | ||
| 390 | }, | ||
| 391 | Vector { | ||
| 392 | _handler: DFSDM1_FLT3, | ||
| 393 | }, | ||
| 394 | Vector { _handler: TIM8_BRK }, | ||
| 395 | Vector { _handler: TIM8_UP }, | ||
| 396 | Vector { | ||
| 397 | _handler: TIM8_TRG_COM, | ||
| 398 | }, | ||
| 399 | Vector { _handler: TIM8_CC }, | ||
| 400 | Vector { _handler: ADC3 }, | ||
| 401 | Vector { _handler: FMC }, | ||
| 402 | Vector { _handler: SDMMC1 }, | ||
| 403 | Vector { _handler: TIM5 }, | ||
| 404 | Vector { _handler: SPI3 }, | ||
| 405 | Vector { _handler: UART4 }, | ||
| 406 | Vector { _handler: UART5 }, | ||
| 407 | Vector { _handler: TIM6_DAC }, | ||
| 408 | Vector { _handler: TIM7 }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel1, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel2, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel3, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel4, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DMA2_Channel5, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT0, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DFSDM1_FLT1, | ||
| 429 | }, | ||
| 430 | Vector { | ||
| 431 | _handler: DFSDM1_FLT2, | ||
| 432 | }, | ||
| 433 | Vector { _handler: COMP }, | ||
| 434 | Vector { _handler: LPTIM1 }, | ||
| 435 | Vector { _handler: LPTIM2 }, | ||
| 436 | Vector { _handler: OTG_FS }, | ||
| 437 | Vector { | ||
| 438 | _handler: DMA2_Channel6, | ||
| 439 | }, | ||
| 440 | Vector { | ||
| 441 | _handler: DMA2_Channel7, | ||
| 442 | }, | ||
| 443 | Vector { _handler: LPUART1 }, | ||
| 444 | Vector { _handler: QUADSPI }, | ||
| 445 | Vector { _handler: I2C3_EV }, | ||
| 446 | Vector { _handler: I2C3_ER }, | ||
| 447 | Vector { _handler: SAI1 }, | ||
| 448 | Vector { _handler: SAI2 }, | ||
| 449 | Vector { _handler: SWPMI1 }, | ||
| 450 | Vector { _handler: TSC }, | ||
| 451 | Vector { _handler: LCD }, | ||
| 452 | Vector { _handler: AES }, | ||
| 453 | Vector { _handler: HASH_RNG }, | ||
| 454 | Vector { _handler: FPU }, | ||
| 455 | Vector { _handler: CRS }, | ||
| 456 | Vector { _handler: I2C4_EV }, | ||
| 457 | Vector { _handler: I2C4_ER }, | ||
| 458 | Vector { _handler: DCMI }, | ||
| 459 | Vector { _handler: CAN2_TX }, | ||
| 460 | Vector { _handler: CAN2_RX0 }, | ||
| 461 | Vector { _handler: CAN2_RX1 }, | ||
| 462 | Vector { _handler: CAN2_SCE }, | ||
| 463 | Vector { _handler: DMA2D }, | ||
| 464 | ]; | ||
| 465 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 466 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 467 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 468 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4p5ae.rs b/embassy-stm32/src/chip/stm32l4p5ae.rs index 6d2a25917..66034e537 100644 --- a/embassy-stm32/src/chip/stm32l4p5ae.rs +++ b/embassy-stm32/src/chip/stm32l4p5ae.rs | |||
| @@ -1,22 +1,457 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, | 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, |
| 14 | OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, SPI2, SPI3, | 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, |
| 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, | 15 | SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, |
| 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG | 16 | UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DCMI_PSSI = 85, | ||
| 38 | DFSDM1_FLT0 = 61, | ||
| 39 | DFSDM1_FLT1 = 62, | ||
| 40 | DMA1_Channel1 = 11, | ||
| 41 | DMA1_Channel2 = 12, | ||
| 42 | DMA1_Channel3 = 13, | ||
| 43 | DMA1_Channel4 = 14, | ||
| 44 | DMA1_Channel5 = 15, | ||
| 45 | DMA1_Channel6 = 16, | ||
| 46 | DMA1_Channel7 = 17, | ||
| 47 | DMA2D = 90, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | DMAMUX1_OVR = 94, | ||
| 56 | EXTI0 = 6, | ||
| 57 | EXTI1 = 7, | ||
| 58 | EXTI15_10 = 40, | ||
| 59 | EXTI2 = 8, | ||
| 60 | EXTI3 = 9, | ||
| 61 | EXTI4 = 10, | ||
| 62 | EXTI9_5 = 23, | ||
| 63 | FLASH = 4, | ||
| 64 | FMC = 48, | ||
| 65 | FPU = 81, | ||
| 66 | HASH_CRS = 82, | ||
| 67 | I2C1_ER = 32, | ||
| 68 | I2C1_EV = 31, | ||
| 69 | I2C2_ER = 34, | ||
| 70 | I2C2_EV = 33, | ||
| 71 | I2C3_ER = 73, | ||
| 72 | I2C3_EV = 72, | ||
| 73 | I2C4_ER = 83, | ||
| 74 | I2C4_EV = 84, | ||
| 75 | LPTIM1 = 65, | ||
| 76 | LPTIM2 = 66, | ||
| 77 | LPUART1 = 70, | ||
| 78 | LTDC = 91, | ||
| 79 | LTDC_ER = 92, | ||
| 80 | OCTOSPI1 = 71, | ||
| 81 | OCTOSPI2 = 76, | ||
| 82 | OTG_FS = 67, | ||
| 83 | PVD_PVM = 1, | ||
| 84 | RCC = 5, | ||
| 85 | RNG = 80, | ||
| 86 | RTC_Alarm = 41, | ||
| 87 | RTC_WKUP = 3, | ||
| 88 | SAI1 = 74, | ||
| 89 | SAI2 = 75, | ||
| 90 | SDMMC1 = 49, | ||
| 91 | SDMMC2 = 47, | ||
| 92 | SPI1 = 35, | ||
| 93 | SPI2 = 36, | ||
| 94 | SPI3 = 51, | ||
| 95 | TAMP_STAMP = 2, | ||
| 96 | TIM1_BRK_TIM15 = 24, | ||
| 97 | TIM1_CC = 27, | ||
| 98 | TIM1_TRG_COM_TIM17 = 26, | ||
| 99 | TIM1_UP_TIM16 = 25, | ||
| 100 | TIM2 = 28, | ||
| 101 | TIM3 = 29, | ||
| 102 | TIM4 = 30, | ||
| 103 | TIM5 = 50, | ||
| 104 | TIM6_DAC = 54, | ||
| 105 | TIM7 = 55, | ||
| 106 | TIM8_BRK = 43, | ||
| 107 | TIM8_CC = 46, | ||
| 108 | TIM8_TRG_COM = 45, | ||
| 109 | TIM8_UP = 44, | ||
| 110 | TSC = 77, | ||
| 111 | UART4 = 52, | ||
| 112 | UART5 = 53, | ||
| 113 | USART1 = 37, | ||
| 114 | USART2 = 38, | ||
| 115 | USART3 = 39, | ||
| 116 | WWDG = 0, | ||
| 117 | } | ||
| 118 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 119 | #[inline(always)] | ||
| 120 | fn number(self) -> u16 { | ||
| 121 | self as u16 | ||
| 122 | } | ||
| 123 | } | ||
| 124 | |||
| 125 | declare!(ADC1_2); | ||
| 126 | declare!(CAN1_RX0); | ||
| 127 | declare!(CAN1_RX1); | ||
| 128 | declare!(CAN1_SCE); | ||
| 129 | declare!(CAN1_TX); | ||
| 130 | declare!(COMP); | ||
| 131 | declare!(DCMI_PSSI); | ||
| 132 | declare!(DFSDM1_FLT0); | ||
| 133 | declare!(DFSDM1_FLT1); | ||
| 134 | declare!(DMA1_Channel1); | ||
| 135 | declare!(DMA1_Channel2); | ||
| 136 | declare!(DMA1_Channel3); | ||
| 137 | declare!(DMA1_Channel4); | ||
| 138 | declare!(DMA1_Channel5); | ||
| 139 | declare!(DMA1_Channel6); | ||
| 140 | declare!(DMA1_Channel7); | ||
| 141 | declare!(DMA2D); | ||
| 142 | declare!(DMA2_Channel1); | ||
| 143 | declare!(DMA2_Channel2); | ||
| 144 | declare!(DMA2_Channel3); | ||
| 145 | declare!(DMA2_Channel4); | ||
| 146 | declare!(DMA2_Channel5); | ||
| 147 | declare!(DMA2_Channel6); | ||
| 148 | declare!(DMA2_Channel7); | ||
| 149 | declare!(DMAMUX1_OVR); | ||
| 150 | declare!(EXTI0); | ||
| 151 | declare!(EXTI1); | ||
| 152 | declare!(EXTI15_10); | ||
| 153 | declare!(EXTI2); | ||
| 154 | declare!(EXTI3); | ||
| 155 | declare!(EXTI4); | ||
| 156 | declare!(EXTI9_5); | ||
| 157 | declare!(FLASH); | ||
| 158 | declare!(FMC); | ||
| 159 | declare!(FPU); | ||
| 160 | declare!(HASH_CRS); | ||
| 161 | declare!(I2C1_ER); | ||
| 162 | declare!(I2C1_EV); | ||
| 163 | declare!(I2C2_ER); | ||
| 164 | declare!(I2C2_EV); | ||
| 165 | declare!(I2C3_ER); | ||
| 166 | declare!(I2C3_EV); | ||
| 167 | declare!(I2C4_ER); | ||
| 168 | declare!(I2C4_EV); | ||
| 169 | declare!(LPTIM1); | ||
| 170 | declare!(LPTIM2); | ||
| 171 | declare!(LPUART1); | ||
| 172 | declare!(LTDC); | ||
| 173 | declare!(LTDC_ER); | ||
| 174 | declare!(OCTOSPI1); | ||
| 175 | declare!(OCTOSPI2); | ||
| 176 | declare!(OTG_FS); | ||
| 177 | declare!(PVD_PVM); | ||
| 178 | declare!(RCC); | ||
| 179 | declare!(RNG); | ||
| 180 | declare!(RTC_Alarm); | ||
| 181 | declare!(RTC_WKUP); | ||
| 182 | declare!(SAI1); | ||
| 183 | declare!(SAI2); | ||
| 184 | declare!(SDMMC1); | ||
| 185 | declare!(SDMMC2); | ||
| 186 | declare!(SPI1); | ||
| 187 | declare!(SPI2); | ||
| 188 | declare!(SPI3); | ||
| 189 | declare!(TAMP_STAMP); | ||
| 190 | declare!(TIM1_BRK_TIM15); | ||
| 191 | declare!(TIM1_CC); | ||
| 192 | declare!(TIM1_TRG_COM_TIM17); | ||
| 193 | declare!(TIM1_UP_TIM16); | ||
| 194 | declare!(TIM2); | ||
| 195 | declare!(TIM3); | ||
| 196 | declare!(TIM4); | ||
| 197 | declare!(TIM5); | ||
| 198 | declare!(TIM6_DAC); | ||
| 199 | declare!(TIM7); | ||
| 200 | declare!(TIM8_BRK); | ||
| 201 | declare!(TIM8_CC); | ||
| 202 | declare!(TIM8_TRG_COM); | ||
| 203 | declare!(TIM8_UP); | ||
| 204 | declare!(TSC); | ||
| 205 | declare!(UART4); | ||
| 206 | declare!(UART5); | ||
| 207 | declare!(USART1); | ||
| 208 | declare!(USART2); | ||
| 209 | declare!(USART3); | ||
| 210 | declare!(WWDG); | ||
| 211 | } | ||
| 212 | mod interrupt_vector { | ||
| 213 | extern "C" { | ||
| 214 | fn ADC1_2(); | ||
| 215 | fn CAN1_RX0(); | ||
| 216 | fn CAN1_RX1(); | ||
| 217 | fn CAN1_SCE(); | ||
| 218 | fn CAN1_TX(); | ||
| 219 | fn COMP(); | ||
| 220 | fn DCMI_PSSI(); | ||
| 221 | fn DFSDM1_FLT0(); | ||
| 222 | fn DFSDM1_FLT1(); | ||
| 223 | fn DMA1_Channel1(); | ||
| 224 | fn DMA1_Channel2(); | ||
| 225 | fn DMA1_Channel3(); | ||
| 226 | fn DMA1_Channel4(); | ||
| 227 | fn DMA1_Channel5(); | ||
| 228 | fn DMA1_Channel6(); | ||
| 229 | fn DMA1_Channel7(); | ||
| 230 | fn DMA2D(); | ||
| 231 | fn DMA2_Channel1(); | ||
| 232 | fn DMA2_Channel2(); | ||
| 233 | fn DMA2_Channel3(); | ||
| 234 | fn DMA2_Channel4(); | ||
| 235 | fn DMA2_Channel5(); | ||
| 236 | fn DMA2_Channel6(); | ||
| 237 | fn DMA2_Channel7(); | ||
| 238 | fn DMAMUX1_OVR(); | ||
| 239 | fn EXTI0(); | ||
| 240 | fn EXTI1(); | ||
| 241 | fn EXTI15_10(); | ||
| 242 | fn EXTI2(); | ||
| 243 | fn EXTI3(); | ||
| 244 | fn EXTI4(); | ||
| 245 | fn EXTI9_5(); | ||
| 246 | fn FLASH(); | ||
| 247 | fn FMC(); | ||
| 248 | fn FPU(); | ||
| 249 | fn HASH_CRS(); | ||
| 250 | fn I2C1_ER(); | ||
| 251 | fn I2C1_EV(); | ||
| 252 | fn I2C2_ER(); | ||
| 253 | fn I2C2_EV(); | ||
| 254 | fn I2C3_ER(); | ||
| 255 | fn I2C3_EV(); | ||
| 256 | fn I2C4_ER(); | ||
| 257 | fn I2C4_EV(); | ||
| 258 | fn LPTIM1(); | ||
| 259 | fn LPTIM2(); | ||
| 260 | fn LPUART1(); | ||
| 261 | fn LTDC(); | ||
| 262 | fn LTDC_ER(); | ||
| 263 | fn OCTOSPI1(); | ||
| 264 | fn OCTOSPI2(); | ||
| 265 | fn OTG_FS(); | ||
| 266 | fn PVD_PVM(); | ||
| 267 | fn RCC(); | ||
| 268 | fn RNG(); | ||
| 269 | fn RTC_Alarm(); | ||
| 270 | fn RTC_WKUP(); | ||
| 271 | fn SAI1(); | ||
| 272 | fn SAI2(); | ||
| 273 | fn SDMMC1(); | ||
| 274 | fn SDMMC2(); | ||
| 275 | fn SPI1(); | ||
| 276 | fn SPI2(); | ||
| 277 | fn SPI3(); | ||
| 278 | fn TAMP_STAMP(); | ||
| 279 | fn TIM1_BRK_TIM15(); | ||
| 280 | fn TIM1_CC(); | ||
| 281 | fn TIM1_TRG_COM_TIM17(); | ||
| 282 | fn TIM1_UP_TIM16(); | ||
| 283 | fn TIM2(); | ||
| 284 | fn TIM3(); | ||
| 285 | fn TIM4(); | ||
| 286 | fn TIM5(); | ||
| 287 | fn TIM6_DAC(); | ||
| 288 | fn TIM7(); | ||
| 289 | fn TIM8_BRK(); | ||
| 290 | fn TIM8_CC(); | ||
| 291 | fn TIM8_TRG_COM(); | ||
| 292 | fn TIM8_UP(); | ||
| 293 | fn TSC(); | ||
| 294 | fn UART4(); | ||
| 295 | fn UART5(); | ||
| 296 | fn USART1(); | ||
| 297 | fn USART2(); | ||
| 298 | fn USART3(); | ||
| 299 | fn WWDG(); | ||
| 300 | } | ||
| 301 | pub union Vector { | ||
| 302 | _handler: unsafe extern "C" fn(), | ||
| 303 | _reserved: u32, | ||
| 304 | } | ||
| 305 | #[link_section = ".vector_table.interrupts"] | ||
| 306 | #[no_mangle] | ||
| 307 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 308 | Vector { _handler: WWDG }, | ||
| 309 | Vector { _handler: PVD_PVM }, | ||
| 310 | Vector { | ||
| 311 | _handler: TAMP_STAMP, | ||
| 312 | }, | ||
| 313 | Vector { _handler: RTC_WKUP }, | ||
| 314 | Vector { _handler: FLASH }, | ||
| 315 | Vector { _handler: RCC }, | ||
| 316 | Vector { _handler: EXTI0 }, | ||
| 317 | Vector { _handler: EXTI1 }, | ||
| 318 | Vector { _handler: EXTI2 }, | ||
| 319 | Vector { _handler: EXTI3 }, | ||
| 320 | Vector { _handler: EXTI4 }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel1, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel2, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel3, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel4, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel5, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel6, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel7, | ||
| 341 | }, | ||
| 342 | Vector { _handler: ADC1_2 }, | ||
| 343 | Vector { _handler: CAN1_TX }, | ||
| 344 | Vector { _handler: CAN1_RX0 }, | ||
| 345 | Vector { _handler: CAN1_RX1 }, | ||
| 346 | Vector { _handler: CAN1_SCE }, | ||
| 347 | Vector { _handler: EXTI9_5 }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_BRK_TIM15, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_UP_TIM16, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_TRG_COM_TIM17, | ||
| 356 | }, | ||
| 357 | Vector { _handler: TIM1_CC }, | ||
| 358 | Vector { _handler: TIM2 }, | ||
| 359 | Vector { _handler: TIM3 }, | ||
| 360 | Vector { _handler: TIM4 }, | ||
| 361 | Vector { _handler: I2C1_EV }, | ||
| 362 | Vector { _handler: I2C1_ER }, | ||
| 363 | Vector { _handler: I2C2_EV }, | ||
| 364 | Vector { _handler: I2C2_ER }, | ||
| 365 | Vector { _handler: SPI1 }, | ||
| 366 | Vector { _handler: SPI2 }, | ||
| 367 | Vector { _handler: USART1 }, | ||
| 368 | Vector { _handler: USART2 }, | ||
| 369 | Vector { _handler: USART3 }, | ||
| 370 | Vector { | ||
| 371 | _handler: EXTI15_10, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: RTC_Alarm, | ||
| 375 | }, | ||
| 376 | Vector { _reserved: 0 }, | ||
| 377 | Vector { _handler: TIM8_BRK }, | ||
| 378 | Vector { _handler: TIM8_UP }, | ||
| 379 | Vector { | ||
| 380 | _handler: TIM8_TRG_COM, | ||
| 381 | }, | ||
| 382 | Vector { _handler: TIM8_CC }, | ||
| 383 | Vector { _handler: SDMMC2 }, | ||
| 384 | Vector { _handler: FMC }, | ||
| 385 | Vector { _handler: SDMMC1 }, | ||
| 386 | Vector { _handler: TIM5 }, | ||
| 387 | Vector { _handler: SPI3 }, | ||
| 388 | Vector { _handler: UART4 }, | ||
| 389 | Vector { _handler: UART5 }, | ||
| 390 | Vector { _handler: TIM6_DAC }, | ||
| 391 | Vector { _handler: TIM7 }, | ||
| 392 | Vector { | ||
| 393 | _handler: DMA2_Channel1, | ||
| 394 | }, | ||
| 395 | Vector { | ||
| 396 | _handler: DMA2_Channel2, | ||
| 397 | }, | ||
| 398 | Vector { | ||
| 399 | _handler: DMA2_Channel3, | ||
| 400 | }, | ||
| 401 | Vector { | ||
| 402 | _handler: DMA2_Channel4, | ||
| 403 | }, | ||
| 404 | Vector { | ||
| 405 | _handler: DMA2_Channel5, | ||
| 406 | }, | ||
| 407 | Vector { | ||
| 408 | _handler: DFSDM1_FLT0, | ||
| 409 | }, | ||
| 410 | Vector { | ||
| 411 | _handler: DFSDM1_FLT1, | ||
| 412 | }, | ||
| 413 | Vector { _reserved: 0 }, | ||
| 414 | Vector { _handler: COMP }, | ||
| 415 | Vector { _handler: LPTIM1 }, | ||
| 416 | Vector { _handler: LPTIM2 }, | ||
| 417 | Vector { _handler: OTG_FS }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel6, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DMA2_Channel7, | ||
| 423 | }, | ||
| 424 | Vector { _handler: LPUART1 }, | ||
| 425 | Vector { _handler: OCTOSPI1 }, | ||
| 426 | Vector { _handler: I2C3_EV }, | ||
| 427 | Vector { _handler: I2C3_ER }, | ||
| 428 | Vector { _handler: SAI1 }, | ||
| 429 | Vector { _handler: SAI2 }, | ||
| 430 | Vector { _handler: OCTOSPI2 }, | ||
| 431 | Vector { _handler: TSC }, | ||
| 432 | Vector { _reserved: 0 }, | ||
| 433 | Vector { _reserved: 0 }, | ||
| 434 | Vector { _handler: RNG }, | ||
| 435 | Vector { _handler: FPU }, | ||
| 436 | Vector { _handler: HASH_CRS }, | ||
| 437 | Vector { _handler: I2C4_ER }, | ||
| 438 | Vector { _handler: I2C4_EV }, | ||
| 439 | Vector { | ||
| 440 | _handler: DCMI_PSSI, | ||
| 441 | }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _reserved: 0 }, | ||
| 446 | Vector { _handler: DMA2D }, | ||
| 447 | Vector { _handler: LTDC }, | ||
| 448 | Vector { _handler: LTDC_ER }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { | ||
| 451 | _handler: DMAMUX1_OVR, | ||
| 452 | }, | ||
| 453 | ]; | ||
| 454 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 455 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 456 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 457 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4p5ag.rs b/embassy-stm32/src/chip/stm32l4p5ag.rs index 6d2a25917..66034e537 100644 --- a/embassy-stm32/src/chip/stm32l4p5ag.rs +++ b/embassy-stm32/src/chip/stm32l4p5ag.rs | |||
| @@ -1,22 +1,457 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, | 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, |
| 14 | OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, SPI2, SPI3, | 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, |
| 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, | 15 | SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, |
| 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG | 16 | UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DCMI_PSSI = 85, | ||
| 38 | DFSDM1_FLT0 = 61, | ||
| 39 | DFSDM1_FLT1 = 62, | ||
| 40 | DMA1_Channel1 = 11, | ||
| 41 | DMA1_Channel2 = 12, | ||
| 42 | DMA1_Channel3 = 13, | ||
| 43 | DMA1_Channel4 = 14, | ||
| 44 | DMA1_Channel5 = 15, | ||
| 45 | DMA1_Channel6 = 16, | ||
| 46 | DMA1_Channel7 = 17, | ||
| 47 | DMA2D = 90, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | DMAMUX1_OVR = 94, | ||
| 56 | EXTI0 = 6, | ||
| 57 | EXTI1 = 7, | ||
| 58 | EXTI15_10 = 40, | ||
| 59 | EXTI2 = 8, | ||
| 60 | EXTI3 = 9, | ||
| 61 | EXTI4 = 10, | ||
| 62 | EXTI9_5 = 23, | ||
| 63 | FLASH = 4, | ||
| 64 | FMC = 48, | ||
| 65 | FPU = 81, | ||
| 66 | HASH_CRS = 82, | ||
| 67 | I2C1_ER = 32, | ||
| 68 | I2C1_EV = 31, | ||
| 69 | I2C2_ER = 34, | ||
| 70 | I2C2_EV = 33, | ||
| 71 | I2C3_ER = 73, | ||
| 72 | I2C3_EV = 72, | ||
| 73 | I2C4_ER = 83, | ||
| 74 | I2C4_EV = 84, | ||
| 75 | LPTIM1 = 65, | ||
| 76 | LPTIM2 = 66, | ||
| 77 | LPUART1 = 70, | ||
| 78 | LTDC = 91, | ||
| 79 | LTDC_ER = 92, | ||
| 80 | OCTOSPI1 = 71, | ||
| 81 | OCTOSPI2 = 76, | ||
| 82 | OTG_FS = 67, | ||
| 83 | PVD_PVM = 1, | ||
| 84 | RCC = 5, | ||
| 85 | RNG = 80, | ||
| 86 | RTC_Alarm = 41, | ||
| 87 | RTC_WKUP = 3, | ||
| 88 | SAI1 = 74, | ||
| 89 | SAI2 = 75, | ||
| 90 | SDMMC1 = 49, | ||
| 91 | SDMMC2 = 47, | ||
| 92 | SPI1 = 35, | ||
| 93 | SPI2 = 36, | ||
| 94 | SPI3 = 51, | ||
| 95 | TAMP_STAMP = 2, | ||
| 96 | TIM1_BRK_TIM15 = 24, | ||
| 97 | TIM1_CC = 27, | ||
| 98 | TIM1_TRG_COM_TIM17 = 26, | ||
| 99 | TIM1_UP_TIM16 = 25, | ||
| 100 | TIM2 = 28, | ||
| 101 | TIM3 = 29, | ||
| 102 | TIM4 = 30, | ||
| 103 | TIM5 = 50, | ||
| 104 | TIM6_DAC = 54, | ||
| 105 | TIM7 = 55, | ||
| 106 | TIM8_BRK = 43, | ||
| 107 | TIM8_CC = 46, | ||
| 108 | TIM8_TRG_COM = 45, | ||
| 109 | TIM8_UP = 44, | ||
| 110 | TSC = 77, | ||
| 111 | UART4 = 52, | ||
| 112 | UART5 = 53, | ||
| 113 | USART1 = 37, | ||
| 114 | USART2 = 38, | ||
| 115 | USART3 = 39, | ||
| 116 | WWDG = 0, | ||
| 117 | } | ||
| 118 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 119 | #[inline(always)] | ||
| 120 | fn number(self) -> u16 { | ||
| 121 | self as u16 | ||
| 122 | } | ||
| 123 | } | ||
| 124 | |||
| 125 | declare!(ADC1_2); | ||
| 126 | declare!(CAN1_RX0); | ||
| 127 | declare!(CAN1_RX1); | ||
| 128 | declare!(CAN1_SCE); | ||
| 129 | declare!(CAN1_TX); | ||
| 130 | declare!(COMP); | ||
| 131 | declare!(DCMI_PSSI); | ||
| 132 | declare!(DFSDM1_FLT0); | ||
| 133 | declare!(DFSDM1_FLT1); | ||
| 134 | declare!(DMA1_Channel1); | ||
| 135 | declare!(DMA1_Channel2); | ||
| 136 | declare!(DMA1_Channel3); | ||
| 137 | declare!(DMA1_Channel4); | ||
| 138 | declare!(DMA1_Channel5); | ||
| 139 | declare!(DMA1_Channel6); | ||
| 140 | declare!(DMA1_Channel7); | ||
| 141 | declare!(DMA2D); | ||
| 142 | declare!(DMA2_Channel1); | ||
| 143 | declare!(DMA2_Channel2); | ||
| 144 | declare!(DMA2_Channel3); | ||
| 145 | declare!(DMA2_Channel4); | ||
| 146 | declare!(DMA2_Channel5); | ||
| 147 | declare!(DMA2_Channel6); | ||
| 148 | declare!(DMA2_Channel7); | ||
| 149 | declare!(DMAMUX1_OVR); | ||
| 150 | declare!(EXTI0); | ||
| 151 | declare!(EXTI1); | ||
| 152 | declare!(EXTI15_10); | ||
| 153 | declare!(EXTI2); | ||
| 154 | declare!(EXTI3); | ||
| 155 | declare!(EXTI4); | ||
| 156 | declare!(EXTI9_5); | ||
| 157 | declare!(FLASH); | ||
| 158 | declare!(FMC); | ||
| 159 | declare!(FPU); | ||
| 160 | declare!(HASH_CRS); | ||
| 161 | declare!(I2C1_ER); | ||
| 162 | declare!(I2C1_EV); | ||
| 163 | declare!(I2C2_ER); | ||
| 164 | declare!(I2C2_EV); | ||
| 165 | declare!(I2C3_ER); | ||
| 166 | declare!(I2C3_EV); | ||
| 167 | declare!(I2C4_ER); | ||
| 168 | declare!(I2C4_EV); | ||
| 169 | declare!(LPTIM1); | ||
| 170 | declare!(LPTIM2); | ||
| 171 | declare!(LPUART1); | ||
| 172 | declare!(LTDC); | ||
| 173 | declare!(LTDC_ER); | ||
| 174 | declare!(OCTOSPI1); | ||
| 175 | declare!(OCTOSPI2); | ||
| 176 | declare!(OTG_FS); | ||
| 177 | declare!(PVD_PVM); | ||
| 178 | declare!(RCC); | ||
| 179 | declare!(RNG); | ||
| 180 | declare!(RTC_Alarm); | ||
| 181 | declare!(RTC_WKUP); | ||
| 182 | declare!(SAI1); | ||
| 183 | declare!(SAI2); | ||
| 184 | declare!(SDMMC1); | ||
| 185 | declare!(SDMMC2); | ||
| 186 | declare!(SPI1); | ||
| 187 | declare!(SPI2); | ||
| 188 | declare!(SPI3); | ||
| 189 | declare!(TAMP_STAMP); | ||
| 190 | declare!(TIM1_BRK_TIM15); | ||
| 191 | declare!(TIM1_CC); | ||
| 192 | declare!(TIM1_TRG_COM_TIM17); | ||
| 193 | declare!(TIM1_UP_TIM16); | ||
| 194 | declare!(TIM2); | ||
| 195 | declare!(TIM3); | ||
| 196 | declare!(TIM4); | ||
| 197 | declare!(TIM5); | ||
| 198 | declare!(TIM6_DAC); | ||
| 199 | declare!(TIM7); | ||
| 200 | declare!(TIM8_BRK); | ||
| 201 | declare!(TIM8_CC); | ||
| 202 | declare!(TIM8_TRG_COM); | ||
| 203 | declare!(TIM8_UP); | ||
| 204 | declare!(TSC); | ||
| 205 | declare!(UART4); | ||
| 206 | declare!(UART5); | ||
| 207 | declare!(USART1); | ||
| 208 | declare!(USART2); | ||
| 209 | declare!(USART3); | ||
| 210 | declare!(WWDG); | ||
| 211 | } | ||
| 212 | mod interrupt_vector { | ||
| 213 | extern "C" { | ||
| 214 | fn ADC1_2(); | ||
| 215 | fn CAN1_RX0(); | ||
| 216 | fn CAN1_RX1(); | ||
| 217 | fn CAN1_SCE(); | ||
| 218 | fn CAN1_TX(); | ||
| 219 | fn COMP(); | ||
| 220 | fn DCMI_PSSI(); | ||
| 221 | fn DFSDM1_FLT0(); | ||
| 222 | fn DFSDM1_FLT1(); | ||
| 223 | fn DMA1_Channel1(); | ||
| 224 | fn DMA1_Channel2(); | ||
| 225 | fn DMA1_Channel3(); | ||
| 226 | fn DMA1_Channel4(); | ||
| 227 | fn DMA1_Channel5(); | ||
| 228 | fn DMA1_Channel6(); | ||
| 229 | fn DMA1_Channel7(); | ||
| 230 | fn DMA2D(); | ||
| 231 | fn DMA2_Channel1(); | ||
| 232 | fn DMA2_Channel2(); | ||
| 233 | fn DMA2_Channel3(); | ||
| 234 | fn DMA2_Channel4(); | ||
| 235 | fn DMA2_Channel5(); | ||
| 236 | fn DMA2_Channel6(); | ||
| 237 | fn DMA2_Channel7(); | ||
| 238 | fn DMAMUX1_OVR(); | ||
| 239 | fn EXTI0(); | ||
| 240 | fn EXTI1(); | ||
| 241 | fn EXTI15_10(); | ||
| 242 | fn EXTI2(); | ||
| 243 | fn EXTI3(); | ||
| 244 | fn EXTI4(); | ||
| 245 | fn EXTI9_5(); | ||
| 246 | fn FLASH(); | ||
| 247 | fn FMC(); | ||
| 248 | fn FPU(); | ||
| 249 | fn HASH_CRS(); | ||
| 250 | fn I2C1_ER(); | ||
| 251 | fn I2C1_EV(); | ||
| 252 | fn I2C2_ER(); | ||
| 253 | fn I2C2_EV(); | ||
| 254 | fn I2C3_ER(); | ||
| 255 | fn I2C3_EV(); | ||
| 256 | fn I2C4_ER(); | ||
| 257 | fn I2C4_EV(); | ||
| 258 | fn LPTIM1(); | ||
| 259 | fn LPTIM2(); | ||
| 260 | fn LPUART1(); | ||
| 261 | fn LTDC(); | ||
| 262 | fn LTDC_ER(); | ||
| 263 | fn OCTOSPI1(); | ||
| 264 | fn OCTOSPI2(); | ||
| 265 | fn OTG_FS(); | ||
| 266 | fn PVD_PVM(); | ||
| 267 | fn RCC(); | ||
| 268 | fn RNG(); | ||
| 269 | fn RTC_Alarm(); | ||
| 270 | fn RTC_WKUP(); | ||
| 271 | fn SAI1(); | ||
| 272 | fn SAI2(); | ||
| 273 | fn SDMMC1(); | ||
| 274 | fn SDMMC2(); | ||
| 275 | fn SPI1(); | ||
| 276 | fn SPI2(); | ||
| 277 | fn SPI3(); | ||
| 278 | fn TAMP_STAMP(); | ||
| 279 | fn TIM1_BRK_TIM15(); | ||
| 280 | fn TIM1_CC(); | ||
| 281 | fn TIM1_TRG_COM_TIM17(); | ||
| 282 | fn TIM1_UP_TIM16(); | ||
| 283 | fn TIM2(); | ||
| 284 | fn TIM3(); | ||
| 285 | fn TIM4(); | ||
| 286 | fn TIM5(); | ||
| 287 | fn TIM6_DAC(); | ||
| 288 | fn TIM7(); | ||
| 289 | fn TIM8_BRK(); | ||
| 290 | fn TIM8_CC(); | ||
| 291 | fn TIM8_TRG_COM(); | ||
| 292 | fn TIM8_UP(); | ||
| 293 | fn TSC(); | ||
| 294 | fn UART4(); | ||
| 295 | fn UART5(); | ||
| 296 | fn USART1(); | ||
| 297 | fn USART2(); | ||
| 298 | fn USART3(); | ||
| 299 | fn WWDG(); | ||
| 300 | } | ||
| 301 | pub union Vector { | ||
| 302 | _handler: unsafe extern "C" fn(), | ||
| 303 | _reserved: u32, | ||
| 304 | } | ||
| 305 | #[link_section = ".vector_table.interrupts"] | ||
| 306 | #[no_mangle] | ||
| 307 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 308 | Vector { _handler: WWDG }, | ||
| 309 | Vector { _handler: PVD_PVM }, | ||
| 310 | Vector { | ||
| 311 | _handler: TAMP_STAMP, | ||
| 312 | }, | ||
| 313 | Vector { _handler: RTC_WKUP }, | ||
| 314 | Vector { _handler: FLASH }, | ||
| 315 | Vector { _handler: RCC }, | ||
| 316 | Vector { _handler: EXTI0 }, | ||
| 317 | Vector { _handler: EXTI1 }, | ||
| 318 | Vector { _handler: EXTI2 }, | ||
| 319 | Vector { _handler: EXTI3 }, | ||
| 320 | Vector { _handler: EXTI4 }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel1, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel2, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel3, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel4, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel5, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel6, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel7, | ||
| 341 | }, | ||
| 342 | Vector { _handler: ADC1_2 }, | ||
| 343 | Vector { _handler: CAN1_TX }, | ||
| 344 | Vector { _handler: CAN1_RX0 }, | ||
| 345 | Vector { _handler: CAN1_RX1 }, | ||
| 346 | Vector { _handler: CAN1_SCE }, | ||
| 347 | Vector { _handler: EXTI9_5 }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_BRK_TIM15, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_UP_TIM16, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_TRG_COM_TIM17, | ||
| 356 | }, | ||
| 357 | Vector { _handler: TIM1_CC }, | ||
| 358 | Vector { _handler: TIM2 }, | ||
| 359 | Vector { _handler: TIM3 }, | ||
| 360 | Vector { _handler: TIM4 }, | ||
| 361 | Vector { _handler: I2C1_EV }, | ||
| 362 | Vector { _handler: I2C1_ER }, | ||
| 363 | Vector { _handler: I2C2_EV }, | ||
| 364 | Vector { _handler: I2C2_ER }, | ||
| 365 | Vector { _handler: SPI1 }, | ||
| 366 | Vector { _handler: SPI2 }, | ||
| 367 | Vector { _handler: USART1 }, | ||
| 368 | Vector { _handler: USART2 }, | ||
| 369 | Vector { _handler: USART3 }, | ||
| 370 | Vector { | ||
| 371 | _handler: EXTI15_10, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: RTC_Alarm, | ||
| 375 | }, | ||
| 376 | Vector { _reserved: 0 }, | ||
| 377 | Vector { _handler: TIM8_BRK }, | ||
| 378 | Vector { _handler: TIM8_UP }, | ||
| 379 | Vector { | ||
| 380 | _handler: TIM8_TRG_COM, | ||
| 381 | }, | ||
| 382 | Vector { _handler: TIM8_CC }, | ||
| 383 | Vector { _handler: SDMMC2 }, | ||
| 384 | Vector { _handler: FMC }, | ||
| 385 | Vector { _handler: SDMMC1 }, | ||
| 386 | Vector { _handler: TIM5 }, | ||
| 387 | Vector { _handler: SPI3 }, | ||
| 388 | Vector { _handler: UART4 }, | ||
| 389 | Vector { _handler: UART5 }, | ||
| 390 | Vector { _handler: TIM6_DAC }, | ||
| 391 | Vector { _handler: TIM7 }, | ||
| 392 | Vector { | ||
| 393 | _handler: DMA2_Channel1, | ||
| 394 | }, | ||
| 395 | Vector { | ||
| 396 | _handler: DMA2_Channel2, | ||
| 397 | }, | ||
| 398 | Vector { | ||
| 399 | _handler: DMA2_Channel3, | ||
| 400 | }, | ||
| 401 | Vector { | ||
| 402 | _handler: DMA2_Channel4, | ||
| 403 | }, | ||
| 404 | Vector { | ||
| 405 | _handler: DMA2_Channel5, | ||
| 406 | }, | ||
| 407 | Vector { | ||
| 408 | _handler: DFSDM1_FLT0, | ||
| 409 | }, | ||
| 410 | Vector { | ||
| 411 | _handler: DFSDM1_FLT1, | ||
| 412 | }, | ||
| 413 | Vector { _reserved: 0 }, | ||
| 414 | Vector { _handler: COMP }, | ||
| 415 | Vector { _handler: LPTIM1 }, | ||
| 416 | Vector { _handler: LPTIM2 }, | ||
| 417 | Vector { _handler: OTG_FS }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel6, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DMA2_Channel7, | ||
| 423 | }, | ||
| 424 | Vector { _handler: LPUART1 }, | ||
| 425 | Vector { _handler: OCTOSPI1 }, | ||
| 426 | Vector { _handler: I2C3_EV }, | ||
| 427 | Vector { _handler: I2C3_ER }, | ||
| 428 | Vector { _handler: SAI1 }, | ||
| 429 | Vector { _handler: SAI2 }, | ||
| 430 | Vector { _handler: OCTOSPI2 }, | ||
| 431 | Vector { _handler: TSC }, | ||
| 432 | Vector { _reserved: 0 }, | ||
| 433 | Vector { _reserved: 0 }, | ||
| 434 | Vector { _handler: RNG }, | ||
| 435 | Vector { _handler: FPU }, | ||
| 436 | Vector { _handler: HASH_CRS }, | ||
| 437 | Vector { _handler: I2C4_ER }, | ||
| 438 | Vector { _handler: I2C4_EV }, | ||
| 439 | Vector { | ||
| 440 | _handler: DCMI_PSSI, | ||
| 441 | }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _reserved: 0 }, | ||
| 446 | Vector { _handler: DMA2D }, | ||
| 447 | Vector { _handler: LTDC }, | ||
| 448 | Vector { _handler: LTDC_ER }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { | ||
| 451 | _handler: DMAMUX1_OVR, | ||
| 452 | }, | ||
| 453 | ]; | ||
| 454 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 455 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 456 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 457 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4p5ce.rs b/embassy-stm32/src/chip/stm32l4p5ce.rs index f0ddb6b8d..e3622c0ec 100644 --- a/embassy-stm32/src/chip/stm32l4p5ce.rs +++ b/embassy-stm32/src/chip/stm32l4p5ce.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DMA2D, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DMA2D, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -15,8 +15,443 @@ peripherals!( | |||
| 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, USART1, USART2, | 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, USART1, USART2, |
| 16 | USART3, USB_OTG_FS, WWDG | 16 | USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DCMI_PSSI = 85, | ||
| 38 | DFSDM1_FLT0 = 61, | ||
| 39 | DFSDM1_FLT1 = 62, | ||
| 40 | DMA1_Channel1 = 11, | ||
| 41 | DMA1_Channel2 = 12, | ||
| 42 | DMA1_Channel3 = 13, | ||
| 43 | DMA1_Channel4 = 14, | ||
| 44 | DMA1_Channel5 = 15, | ||
| 45 | DMA1_Channel6 = 16, | ||
| 46 | DMA1_Channel7 = 17, | ||
| 47 | DMA2D = 90, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | DMAMUX1_OVR = 94, | ||
| 56 | EXTI0 = 6, | ||
| 57 | EXTI1 = 7, | ||
| 58 | EXTI15_10 = 40, | ||
| 59 | EXTI2 = 8, | ||
| 60 | EXTI3 = 9, | ||
| 61 | EXTI4 = 10, | ||
| 62 | EXTI9_5 = 23, | ||
| 63 | FLASH = 4, | ||
| 64 | FMC = 48, | ||
| 65 | FPU = 81, | ||
| 66 | HASH_CRS = 82, | ||
| 67 | I2C1_ER = 32, | ||
| 68 | I2C1_EV = 31, | ||
| 69 | I2C2_ER = 34, | ||
| 70 | I2C2_EV = 33, | ||
| 71 | I2C3_ER = 73, | ||
| 72 | I2C3_EV = 72, | ||
| 73 | I2C4_ER = 83, | ||
| 74 | I2C4_EV = 84, | ||
| 75 | LPTIM1 = 65, | ||
| 76 | LPTIM2 = 66, | ||
| 77 | LPUART1 = 70, | ||
| 78 | LTDC = 91, | ||
| 79 | LTDC_ER = 92, | ||
| 80 | OCTOSPI1 = 71, | ||
| 81 | OCTOSPI2 = 76, | ||
| 82 | OTG_FS = 67, | ||
| 83 | PVD_PVM = 1, | ||
| 84 | RCC = 5, | ||
| 85 | RNG = 80, | ||
| 86 | RTC_Alarm = 41, | ||
| 87 | RTC_WKUP = 3, | ||
| 88 | SAI1 = 74, | ||
| 89 | SAI2 = 75, | ||
| 90 | SDMMC1 = 49, | ||
| 91 | SDMMC2 = 47, | ||
| 92 | SPI1 = 35, | ||
| 93 | SPI2 = 36, | ||
| 94 | SPI3 = 51, | ||
| 95 | TAMP_STAMP = 2, | ||
| 96 | TIM1_BRK_TIM15 = 24, | ||
| 97 | TIM1_CC = 27, | ||
| 98 | TIM1_TRG_COM_TIM17 = 26, | ||
| 99 | TIM1_UP_TIM16 = 25, | ||
| 100 | TIM2 = 28, | ||
| 101 | TIM3 = 29, | ||
| 102 | TIM4 = 30, | ||
| 103 | TIM5 = 50, | ||
| 104 | TIM6_DAC = 54, | ||
| 105 | TIM7 = 55, | ||
| 106 | TIM8_BRK = 43, | ||
| 107 | TIM8_CC = 46, | ||
| 108 | TIM8_TRG_COM = 45, | ||
| 109 | TIM8_UP = 44, | ||
| 110 | TSC = 77, | ||
| 111 | UART4 = 52, | ||
| 112 | UART5 = 53, | ||
| 113 | USART1 = 37, | ||
| 114 | USART2 = 38, | ||
| 115 | USART3 = 39, | ||
| 116 | WWDG = 0, | ||
| 117 | } | ||
| 118 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 119 | #[inline(always)] | ||
| 120 | fn number(self) -> u16 { | ||
| 121 | self as u16 | ||
| 122 | } | ||
| 123 | } | ||
| 124 | |||
| 125 | declare!(ADC1_2); | ||
| 126 | declare!(CAN1_RX0); | ||
| 127 | declare!(CAN1_RX1); | ||
| 128 | declare!(CAN1_SCE); | ||
| 129 | declare!(CAN1_TX); | ||
| 130 | declare!(COMP); | ||
| 131 | declare!(DCMI_PSSI); | ||
| 132 | declare!(DFSDM1_FLT0); | ||
| 133 | declare!(DFSDM1_FLT1); | ||
| 134 | declare!(DMA1_Channel1); | ||
| 135 | declare!(DMA1_Channel2); | ||
| 136 | declare!(DMA1_Channel3); | ||
| 137 | declare!(DMA1_Channel4); | ||
| 138 | declare!(DMA1_Channel5); | ||
| 139 | declare!(DMA1_Channel6); | ||
| 140 | declare!(DMA1_Channel7); | ||
| 141 | declare!(DMA2D); | ||
| 142 | declare!(DMA2_Channel1); | ||
| 143 | declare!(DMA2_Channel2); | ||
| 144 | declare!(DMA2_Channel3); | ||
| 145 | declare!(DMA2_Channel4); | ||
| 146 | declare!(DMA2_Channel5); | ||
| 147 | declare!(DMA2_Channel6); | ||
| 148 | declare!(DMA2_Channel7); | ||
| 149 | declare!(DMAMUX1_OVR); | ||
| 150 | declare!(EXTI0); | ||
| 151 | declare!(EXTI1); | ||
| 152 | declare!(EXTI15_10); | ||
| 153 | declare!(EXTI2); | ||
| 154 | declare!(EXTI3); | ||
| 155 | declare!(EXTI4); | ||
| 156 | declare!(EXTI9_5); | ||
| 157 | declare!(FLASH); | ||
| 158 | declare!(FMC); | ||
| 159 | declare!(FPU); | ||
| 160 | declare!(HASH_CRS); | ||
| 161 | declare!(I2C1_ER); | ||
| 162 | declare!(I2C1_EV); | ||
| 163 | declare!(I2C2_ER); | ||
| 164 | declare!(I2C2_EV); | ||
| 165 | declare!(I2C3_ER); | ||
| 166 | declare!(I2C3_EV); | ||
| 167 | declare!(I2C4_ER); | ||
| 168 | declare!(I2C4_EV); | ||
| 169 | declare!(LPTIM1); | ||
| 170 | declare!(LPTIM2); | ||
| 171 | declare!(LPUART1); | ||
| 172 | declare!(LTDC); | ||
| 173 | declare!(LTDC_ER); | ||
| 174 | declare!(OCTOSPI1); | ||
| 175 | declare!(OCTOSPI2); | ||
| 176 | declare!(OTG_FS); | ||
| 177 | declare!(PVD_PVM); | ||
| 178 | declare!(RCC); | ||
| 179 | declare!(RNG); | ||
| 180 | declare!(RTC_Alarm); | ||
| 181 | declare!(RTC_WKUP); | ||
| 182 | declare!(SAI1); | ||
| 183 | declare!(SAI2); | ||
| 184 | declare!(SDMMC1); | ||
| 185 | declare!(SDMMC2); | ||
| 186 | declare!(SPI1); | ||
| 187 | declare!(SPI2); | ||
| 188 | declare!(SPI3); | ||
| 189 | declare!(TAMP_STAMP); | ||
| 190 | declare!(TIM1_BRK_TIM15); | ||
| 191 | declare!(TIM1_CC); | ||
| 192 | declare!(TIM1_TRG_COM_TIM17); | ||
| 193 | declare!(TIM1_UP_TIM16); | ||
| 194 | declare!(TIM2); | ||
| 195 | declare!(TIM3); | ||
| 196 | declare!(TIM4); | ||
| 197 | declare!(TIM5); | ||
| 198 | declare!(TIM6_DAC); | ||
| 199 | declare!(TIM7); | ||
| 200 | declare!(TIM8_BRK); | ||
| 201 | declare!(TIM8_CC); | ||
| 202 | declare!(TIM8_TRG_COM); | ||
| 203 | declare!(TIM8_UP); | ||
| 204 | declare!(TSC); | ||
| 205 | declare!(UART4); | ||
| 206 | declare!(UART5); | ||
| 207 | declare!(USART1); | ||
| 208 | declare!(USART2); | ||
| 209 | declare!(USART3); | ||
| 210 | declare!(WWDG); | ||
| 211 | } | ||
| 212 | mod interrupt_vector { | ||
| 213 | extern "C" { | ||
| 214 | fn ADC1_2(); | ||
| 215 | fn CAN1_RX0(); | ||
| 216 | fn CAN1_RX1(); | ||
| 217 | fn CAN1_SCE(); | ||
| 218 | fn CAN1_TX(); | ||
| 219 | fn COMP(); | ||
| 220 | fn DCMI_PSSI(); | ||
| 221 | fn DFSDM1_FLT0(); | ||
| 222 | fn DFSDM1_FLT1(); | ||
| 223 | fn DMA1_Channel1(); | ||
| 224 | fn DMA1_Channel2(); | ||
| 225 | fn DMA1_Channel3(); | ||
| 226 | fn DMA1_Channel4(); | ||
| 227 | fn DMA1_Channel5(); | ||
| 228 | fn DMA1_Channel6(); | ||
| 229 | fn DMA1_Channel7(); | ||
| 230 | fn DMA2D(); | ||
| 231 | fn DMA2_Channel1(); | ||
| 232 | fn DMA2_Channel2(); | ||
| 233 | fn DMA2_Channel3(); | ||
| 234 | fn DMA2_Channel4(); | ||
| 235 | fn DMA2_Channel5(); | ||
| 236 | fn DMA2_Channel6(); | ||
| 237 | fn DMA2_Channel7(); | ||
| 238 | fn DMAMUX1_OVR(); | ||
| 239 | fn EXTI0(); | ||
| 240 | fn EXTI1(); | ||
| 241 | fn EXTI15_10(); | ||
| 242 | fn EXTI2(); | ||
| 243 | fn EXTI3(); | ||
| 244 | fn EXTI4(); | ||
| 245 | fn EXTI9_5(); | ||
| 246 | fn FLASH(); | ||
| 247 | fn FMC(); | ||
| 248 | fn FPU(); | ||
| 249 | fn HASH_CRS(); | ||
| 250 | fn I2C1_ER(); | ||
| 251 | fn I2C1_EV(); | ||
| 252 | fn I2C2_ER(); | ||
| 253 | fn I2C2_EV(); | ||
| 254 | fn I2C3_ER(); | ||
| 255 | fn I2C3_EV(); | ||
| 256 | fn I2C4_ER(); | ||
| 257 | fn I2C4_EV(); | ||
| 258 | fn LPTIM1(); | ||
| 259 | fn LPTIM2(); | ||
| 260 | fn LPUART1(); | ||
| 261 | fn LTDC(); | ||
| 262 | fn LTDC_ER(); | ||
| 263 | fn OCTOSPI1(); | ||
| 264 | fn OCTOSPI2(); | ||
| 265 | fn OTG_FS(); | ||
| 266 | fn PVD_PVM(); | ||
| 267 | fn RCC(); | ||
| 268 | fn RNG(); | ||
| 269 | fn RTC_Alarm(); | ||
| 270 | fn RTC_WKUP(); | ||
| 271 | fn SAI1(); | ||
| 272 | fn SAI2(); | ||
| 273 | fn SDMMC1(); | ||
| 274 | fn SDMMC2(); | ||
| 275 | fn SPI1(); | ||
| 276 | fn SPI2(); | ||
| 277 | fn SPI3(); | ||
| 278 | fn TAMP_STAMP(); | ||
| 279 | fn TIM1_BRK_TIM15(); | ||
| 280 | fn TIM1_CC(); | ||
| 281 | fn TIM1_TRG_COM_TIM17(); | ||
| 282 | fn TIM1_UP_TIM16(); | ||
| 283 | fn TIM2(); | ||
| 284 | fn TIM3(); | ||
| 285 | fn TIM4(); | ||
| 286 | fn TIM5(); | ||
| 287 | fn TIM6_DAC(); | ||
| 288 | fn TIM7(); | ||
| 289 | fn TIM8_BRK(); | ||
| 290 | fn TIM8_CC(); | ||
| 291 | fn TIM8_TRG_COM(); | ||
| 292 | fn TIM8_UP(); | ||
| 293 | fn TSC(); | ||
| 294 | fn UART4(); | ||
| 295 | fn UART5(); | ||
| 296 | fn USART1(); | ||
| 297 | fn USART2(); | ||
| 298 | fn USART3(); | ||
| 299 | fn WWDG(); | ||
| 300 | } | ||
| 301 | pub union Vector { | ||
| 302 | _handler: unsafe extern "C" fn(), | ||
| 303 | _reserved: u32, | ||
| 304 | } | ||
| 305 | #[link_section = ".vector_table.interrupts"] | ||
| 306 | #[no_mangle] | ||
| 307 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 308 | Vector { _handler: WWDG }, | ||
| 309 | Vector { _handler: PVD_PVM }, | ||
| 310 | Vector { | ||
| 311 | _handler: TAMP_STAMP, | ||
| 312 | }, | ||
| 313 | Vector { _handler: RTC_WKUP }, | ||
| 314 | Vector { _handler: FLASH }, | ||
| 315 | Vector { _handler: RCC }, | ||
| 316 | Vector { _handler: EXTI0 }, | ||
| 317 | Vector { _handler: EXTI1 }, | ||
| 318 | Vector { _handler: EXTI2 }, | ||
| 319 | Vector { _handler: EXTI3 }, | ||
| 320 | Vector { _handler: EXTI4 }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel1, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel2, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel3, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel4, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel5, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel6, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel7, | ||
| 341 | }, | ||
| 342 | Vector { _handler: ADC1_2 }, | ||
| 343 | Vector { _handler: CAN1_TX }, | ||
| 344 | Vector { _handler: CAN1_RX0 }, | ||
| 345 | Vector { _handler: CAN1_RX1 }, | ||
| 346 | Vector { _handler: CAN1_SCE }, | ||
| 347 | Vector { _handler: EXTI9_5 }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_BRK_TIM15, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_UP_TIM16, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_TRG_COM_TIM17, | ||
| 356 | }, | ||
| 357 | Vector { _handler: TIM1_CC }, | ||
| 358 | Vector { _handler: TIM2 }, | ||
| 359 | Vector { _handler: TIM3 }, | ||
| 360 | Vector { _handler: TIM4 }, | ||
| 361 | Vector { _handler: I2C1_EV }, | ||
| 362 | Vector { _handler: I2C1_ER }, | ||
| 363 | Vector { _handler: I2C2_EV }, | ||
| 364 | Vector { _handler: I2C2_ER }, | ||
| 365 | Vector { _handler: SPI1 }, | ||
| 366 | Vector { _handler: SPI2 }, | ||
| 367 | Vector { _handler: USART1 }, | ||
| 368 | Vector { _handler: USART2 }, | ||
| 369 | Vector { _handler: USART3 }, | ||
| 370 | Vector { | ||
| 371 | _handler: EXTI15_10, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: RTC_Alarm, | ||
| 375 | }, | ||
| 376 | Vector { _reserved: 0 }, | ||
| 377 | Vector { _handler: TIM8_BRK }, | ||
| 378 | Vector { _handler: TIM8_UP }, | ||
| 379 | Vector { | ||
| 380 | _handler: TIM8_TRG_COM, | ||
| 381 | }, | ||
| 382 | Vector { _handler: TIM8_CC }, | ||
| 383 | Vector { _handler: SDMMC2 }, | ||
| 384 | Vector { _handler: FMC }, | ||
| 385 | Vector { _handler: SDMMC1 }, | ||
| 386 | Vector { _handler: TIM5 }, | ||
| 387 | Vector { _handler: SPI3 }, | ||
| 388 | Vector { _handler: UART4 }, | ||
| 389 | Vector { _handler: UART5 }, | ||
| 390 | Vector { _handler: TIM6_DAC }, | ||
| 391 | Vector { _handler: TIM7 }, | ||
| 392 | Vector { | ||
| 393 | _handler: DMA2_Channel1, | ||
| 394 | }, | ||
| 395 | Vector { | ||
| 396 | _handler: DMA2_Channel2, | ||
| 397 | }, | ||
| 398 | Vector { | ||
| 399 | _handler: DMA2_Channel3, | ||
| 400 | }, | ||
| 401 | Vector { | ||
| 402 | _handler: DMA2_Channel4, | ||
| 403 | }, | ||
| 404 | Vector { | ||
| 405 | _handler: DMA2_Channel5, | ||
| 406 | }, | ||
| 407 | Vector { | ||
| 408 | _handler: DFSDM1_FLT0, | ||
| 409 | }, | ||
| 410 | Vector { | ||
| 411 | _handler: DFSDM1_FLT1, | ||
| 412 | }, | ||
| 413 | Vector { _reserved: 0 }, | ||
| 414 | Vector { _handler: COMP }, | ||
| 415 | Vector { _handler: LPTIM1 }, | ||
| 416 | Vector { _handler: LPTIM2 }, | ||
| 417 | Vector { _handler: OTG_FS }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel6, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DMA2_Channel7, | ||
| 423 | }, | ||
| 424 | Vector { _handler: LPUART1 }, | ||
| 425 | Vector { _handler: OCTOSPI1 }, | ||
| 426 | Vector { _handler: I2C3_EV }, | ||
| 427 | Vector { _handler: I2C3_ER }, | ||
| 428 | Vector { _handler: SAI1 }, | ||
| 429 | Vector { _handler: SAI2 }, | ||
| 430 | Vector { _handler: OCTOSPI2 }, | ||
| 431 | Vector { _handler: TSC }, | ||
| 432 | Vector { _reserved: 0 }, | ||
| 433 | Vector { _reserved: 0 }, | ||
| 434 | Vector { _handler: RNG }, | ||
| 435 | Vector { _handler: FPU }, | ||
| 436 | Vector { _handler: HASH_CRS }, | ||
| 437 | Vector { _handler: I2C4_ER }, | ||
| 438 | Vector { _handler: I2C4_EV }, | ||
| 439 | Vector { | ||
| 440 | _handler: DCMI_PSSI, | ||
| 441 | }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _reserved: 0 }, | ||
| 446 | Vector { _handler: DMA2D }, | ||
| 447 | Vector { _handler: LTDC }, | ||
| 448 | Vector { _handler: LTDC_ER }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { | ||
| 451 | _handler: DMAMUX1_OVR, | ||
| 452 | }, | ||
| 453 | ]; | ||
| 454 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 455 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 456 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 457 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4p5cg.rs b/embassy-stm32/src/chip/stm32l4p5cg.rs index f0ddb6b8d..e3622c0ec 100644 --- a/embassy-stm32/src/chip/stm32l4p5cg.rs +++ b/embassy-stm32/src/chip/stm32l4p5cg.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DMA2D, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DMA2D, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -15,8 +15,443 @@ peripherals!( | |||
| 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, USART1, USART2, | 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, USART1, USART2, |
| 16 | USART3, USB_OTG_FS, WWDG | 16 | USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DCMI_PSSI = 85, | ||
| 38 | DFSDM1_FLT0 = 61, | ||
| 39 | DFSDM1_FLT1 = 62, | ||
| 40 | DMA1_Channel1 = 11, | ||
| 41 | DMA1_Channel2 = 12, | ||
| 42 | DMA1_Channel3 = 13, | ||
| 43 | DMA1_Channel4 = 14, | ||
| 44 | DMA1_Channel5 = 15, | ||
| 45 | DMA1_Channel6 = 16, | ||
| 46 | DMA1_Channel7 = 17, | ||
| 47 | DMA2D = 90, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | DMAMUX1_OVR = 94, | ||
| 56 | EXTI0 = 6, | ||
| 57 | EXTI1 = 7, | ||
| 58 | EXTI15_10 = 40, | ||
| 59 | EXTI2 = 8, | ||
| 60 | EXTI3 = 9, | ||
| 61 | EXTI4 = 10, | ||
| 62 | EXTI9_5 = 23, | ||
| 63 | FLASH = 4, | ||
| 64 | FMC = 48, | ||
| 65 | FPU = 81, | ||
| 66 | HASH_CRS = 82, | ||
| 67 | I2C1_ER = 32, | ||
| 68 | I2C1_EV = 31, | ||
| 69 | I2C2_ER = 34, | ||
| 70 | I2C2_EV = 33, | ||
| 71 | I2C3_ER = 73, | ||
| 72 | I2C3_EV = 72, | ||
| 73 | I2C4_ER = 83, | ||
| 74 | I2C4_EV = 84, | ||
| 75 | LPTIM1 = 65, | ||
| 76 | LPTIM2 = 66, | ||
| 77 | LPUART1 = 70, | ||
| 78 | LTDC = 91, | ||
| 79 | LTDC_ER = 92, | ||
| 80 | OCTOSPI1 = 71, | ||
| 81 | OCTOSPI2 = 76, | ||
| 82 | OTG_FS = 67, | ||
| 83 | PVD_PVM = 1, | ||
| 84 | RCC = 5, | ||
| 85 | RNG = 80, | ||
| 86 | RTC_Alarm = 41, | ||
| 87 | RTC_WKUP = 3, | ||
| 88 | SAI1 = 74, | ||
| 89 | SAI2 = 75, | ||
| 90 | SDMMC1 = 49, | ||
| 91 | SDMMC2 = 47, | ||
| 92 | SPI1 = 35, | ||
| 93 | SPI2 = 36, | ||
| 94 | SPI3 = 51, | ||
| 95 | TAMP_STAMP = 2, | ||
| 96 | TIM1_BRK_TIM15 = 24, | ||
| 97 | TIM1_CC = 27, | ||
| 98 | TIM1_TRG_COM_TIM17 = 26, | ||
| 99 | TIM1_UP_TIM16 = 25, | ||
| 100 | TIM2 = 28, | ||
| 101 | TIM3 = 29, | ||
| 102 | TIM4 = 30, | ||
| 103 | TIM5 = 50, | ||
| 104 | TIM6_DAC = 54, | ||
| 105 | TIM7 = 55, | ||
| 106 | TIM8_BRK = 43, | ||
| 107 | TIM8_CC = 46, | ||
| 108 | TIM8_TRG_COM = 45, | ||
| 109 | TIM8_UP = 44, | ||
| 110 | TSC = 77, | ||
| 111 | UART4 = 52, | ||
| 112 | UART5 = 53, | ||
| 113 | USART1 = 37, | ||
| 114 | USART2 = 38, | ||
| 115 | USART3 = 39, | ||
| 116 | WWDG = 0, | ||
| 117 | } | ||
| 118 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 119 | #[inline(always)] | ||
| 120 | fn number(self) -> u16 { | ||
| 121 | self as u16 | ||
| 122 | } | ||
| 123 | } | ||
| 124 | |||
| 125 | declare!(ADC1_2); | ||
| 126 | declare!(CAN1_RX0); | ||
| 127 | declare!(CAN1_RX1); | ||
| 128 | declare!(CAN1_SCE); | ||
| 129 | declare!(CAN1_TX); | ||
| 130 | declare!(COMP); | ||
| 131 | declare!(DCMI_PSSI); | ||
| 132 | declare!(DFSDM1_FLT0); | ||
| 133 | declare!(DFSDM1_FLT1); | ||
| 134 | declare!(DMA1_Channel1); | ||
| 135 | declare!(DMA1_Channel2); | ||
| 136 | declare!(DMA1_Channel3); | ||
| 137 | declare!(DMA1_Channel4); | ||
| 138 | declare!(DMA1_Channel5); | ||
| 139 | declare!(DMA1_Channel6); | ||
| 140 | declare!(DMA1_Channel7); | ||
| 141 | declare!(DMA2D); | ||
| 142 | declare!(DMA2_Channel1); | ||
| 143 | declare!(DMA2_Channel2); | ||
| 144 | declare!(DMA2_Channel3); | ||
| 145 | declare!(DMA2_Channel4); | ||
| 146 | declare!(DMA2_Channel5); | ||
| 147 | declare!(DMA2_Channel6); | ||
| 148 | declare!(DMA2_Channel7); | ||
| 149 | declare!(DMAMUX1_OVR); | ||
| 150 | declare!(EXTI0); | ||
| 151 | declare!(EXTI1); | ||
| 152 | declare!(EXTI15_10); | ||
| 153 | declare!(EXTI2); | ||
| 154 | declare!(EXTI3); | ||
| 155 | declare!(EXTI4); | ||
| 156 | declare!(EXTI9_5); | ||
| 157 | declare!(FLASH); | ||
| 158 | declare!(FMC); | ||
| 159 | declare!(FPU); | ||
| 160 | declare!(HASH_CRS); | ||
| 161 | declare!(I2C1_ER); | ||
| 162 | declare!(I2C1_EV); | ||
| 163 | declare!(I2C2_ER); | ||
| 164 | declare!(I2C2_EV); | ||
| 165 | declare!(I2C3_ER); | ||
| 166 | declare!(I2C3_EV); | ||
| 167 | declare!(I2C4_ER); | ||
| 168 | declare!(I2C4_EV); | ||
| 169 | declare!(LPTIM1); | ||
| 170 | declare!(LPTIM2); | ||
| 171 | declare!(LPUART1); | ||
| 172 | declare!(LTDC); | ||
| 173 | declare!(LTDC_ER); | ||
| 174 | declare!(OCTOSPI1); | ||
| 175 | declare!(OCTOSPI2); | ||
| 176 | declare!(OTG_FS); | ||
| 177 | declare!(PVD_PVM); | ||
| 178 | declare!(RCC); | ||
| 179 | declare!(RNG); | ||
| 180 | declare!(RTC_Alarm); | ||
| 181 | declare!(RTC_WKUP); | ||
| 182 | declare!(SAI1); | ||
| 183 | declare!(SAI2); | ||
| 184 | declare!(SDMMC1); | ||
| 185 | declare!(SDMMC2); | ||
| 186 | declare!(SPI1); | ||
| 187 | declare!(SPI2); | ||
| 188 | declare!(SPI3); | ||
| 189 | declare!(TAMP_STAMP); | ||
| 190 | declare!(TIM1_BRK_TIM15); | ||
| 191 | declare!(TIM1_CC); | ||
| 192 | declare!(TIM1_TRG_COM_TIM17); | ||
| 193 | declare!(TIM1_UP_TIM16); | ||
| 194 | declare!(TIM2); | ||
| 195 | declare!(TIM3); | ||
| 196 | declare!(TIM4); | ||
| 197 | declare!(TIM5); | ||
| 198 | declare!(TIM6_DAC); | ||
| 199 | declare!(TIM7); | ||
| 200 | declare!(TIM8_BRK); | ||
| 201 | declare!(TIM8_CC); | ||
| 202 | declare!(TIM8_TRG_COM); | ||
| 203 | declare!(TIM8_UP); | ||
| 204 | declare!(TSC); | ||
| 205 | declare!(UART4); | ||
| 206 | declare!(UART5); | ||
| 207 | declare!(USART1); | ||
| 208 | declare!(USART2); | ||
| 209 | declare!(USART3); | ||
| 210 | declare!(WWDG); | ||
| 211 | } | ||
| 212 | mod interrupt_vector { | ||
| 213 | extern "C" { | ||
| 214 | fn ADC1_2(); | ||
| 215 | fn CAN1_RX0(); | ||
| 216 | fn CAN1_RX1(); | ||
| 217 | fn CAN1_SCE(); | ||
| 218 | fn CAN1_TX(); | ||
| 219 | fn COMP(); | ||
| 220 | fn DCMI_PSSI(); | ||
| 221 | fn DFSDM1_FLT0(); | ||
| 222 | fn DFSDM1_FLT1(); | ||
| 223 | fn DMA1_Channel1(); | ||
| 224 | fn DMA1_Channel2(); | ||
| 225 | fn DMA1_Channel3(); | ||
| 226 | fn DMA1_Channel4(); | ||
| 227 | fn DMA1_Channel5(); | ||
| 228 | fn DMA1_Channel6(); | ||
| 229 | fn DMA1_Channel7(); | ||
| 230 | fn DMA2D(); | ||
| 231 | fn DMA2_Channel1(); | ||
| 232 | fn DMA2_Channel2(); | ||
| 233 | fn DMA2_Channel3(); | ||
| 234 | fn DMA2_Channel4(); | ||
| 235 | fn DMA2_Channel5(); | ||
| 236 | fn DMA2_Channel6(); | ||
| 237 | fn DMA2_Channel7(); | ||
| 238 | fn DMAMUX1_OVR(); | ||
| 239 | fn EXTI0(); | ||
| 240 | fn EXTI1(); | ||
| 241 | fn EXTI15_10(); | ||
| 242 | fn EXTI2(); | ||
| 243 | fn EXTI3(); | ||
| 244 | fn EXTI4(); | ||
| 245 | fn EXTI9_5(); | ||
| 246 | fn FLASH(); | ||
| 247 | fn FMC(); | ||
| 248 | fn FPU(); | ||
| 249 | fn HASH_CRS(); | ||
| 250 | fn I2C1_ER(); | ||
| 251 | fn I2C1_EV(); | ||
| 252 | fn I2C2_ER(); | ||
| 253 | fn I2C2_EV(); | ||
| 254 | fn I2C3_ER(); | ||
| 255 | fn I2C3_EV(); | ||
| 256 | fn I2C4_ER(); | ||
| 257 | fn I2C4_EV(); | ||
| 258 | fn LPTIM1(); | ||
| 259 | fn LPTIM2(); | ||
| 260 | fn LPUART1(); | ||
| 261 | fn LTDC(); | ||
| 262 | fn LTDC_ER(); | ||
| 263 | fn OCTOSPI1(); | ||
| 264 | fn OCTOSPI2(); | ||
| 265 | fn OTG_FS(); | ||
| 266 | fn PVD_PVM(); | ||
| 267 | fn RCC(); | ||
| 268 | fn RNG(); | ||
| 269 | fn RTC_Alarm(); | ||
| 270 | fn RTC_WKUP(); | ||
| 271 | fn SAI1(); | ||
| 272 | fn SAI2(); | ||
| 273 | fn SDMMC1(); | ||
| 274 | fn SDMMC2(); | ||
| 275 | fn SPI1(); | ||
| 276 | fn SPI2(); | ||
| 277 | fn SPI3(); | ||
| 278 | fn TAMP_STAMP(); | ||
| 279 | fn TIM1_BRK_TIM15(); | ||
| 280 | fn TIM1_CC(); | ||
| 281 | fn TIM1_TRG_COM_TIM17(); | ||
| 282 | fn TIM1_UP_TIM16(); | ||
| 283 | fn TIM2(); | ||
| 284 | fn TIM3(); | ||
| 285 | fn TIM4(); | ||
| 286 | fn TIM5(); | ||
| 287 | fn TIM6_DAC(); | ||
| 288 | fn TIM7(); | ||
| 289 | fn TIM8_BRK(); | ||
| 290 | fn TIM8_CC(); | ||
| 291 | fn TIM8_TRG_COM(); | ||
| 292 | fn TIM8_UP(); | ||
| 293 | fn TSC(); | ||
| 294 | fn UART4(); | ||
| 295 | fn UART5(); | ||
| 296 | fn USART1(); | ||
| 297 | fn USART2(); | ||
| 298 | fn USART3(); | ||
| 299 | fn WWDG(); | ||
| 300 | } | ||
| 301 | pub union Vector { | ||
| 302 | _handler: unsafe extern "C" fn(), | ||
| 303 | _reserved: u32, | ||
| 304 | } | ||
| 305 | #[link_section = ".vector_table.interrupts"] | ||
| 306 | #[no_mangle] | ||
| 307 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 308 | Vector { _handler: WWDG }, | ||
| 309 | Vector { _handler: PVD_PVM }, | ||
| 310 | Vector { | ||
| 311 | _handler: TAMP_STAMP, | ||
| 312 | }, | ||
| 313 | Vector { _handler: RTC_WKUP }, | ||
| 314 | Vector { _handler: FLASH }, | ||
| 315 | Vector { _handler: RCC }, | ||
| 316 | Vector { _handler: EXTI0 }, | ||
| 317 | Vector { _handler: EXTI1 }, | ||
| 318 | Vector { _handler: EXTI2 }, | ||
| 319 | Vector { _handler: EXTI3 }, | ||
| 320 | Vector { _handler: EXTI4 }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel1, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel2, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel3, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel4, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel5, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel6, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel7, | ||
| 341 | }, | ||
| 342 | Vector { _handler: ADC1_2 }, | ||
| 343 | Vector { _handler: CAN1_TX }, | ||
| 344 | Vector { _handler: CAN1_RX0 }, | ||
| 345 | Vector { _handler: CAN1_RX1 }, | ||
| 346 | Vector { _handler: CAN1_SCE }, | ||
| 347 | Vector { _handler: EXTI9_5 }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_BRK_TIM15, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_UP_TIM16, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_TRG_COM_TIM17, | ||
| 356 | }, | ||
| 357 | Vector { _handler: TIM1_CC }, | ||
| 358 | Vector { _handler: TIM2 }, | ||
| 359 | Vector { _handler: TIM3 }, | ||
| 360 | Vector { _handler: TIM4 }, | ||
| 361 | Vector { _handler: I2C1_EV }, | ||
| 362 | Vector { _handler: I2C1_ER }, | ||
| 363 | Vector { _handler: I2C2_EV }, | ||
| 364 | Vector { _handler: I2C2_ER }, | ||
| 365 | Vector { _handler: SPI1 }, | ||
| 366 | Vector { _handler: SPI2 }, | ||
| 367 | Vector { _handler: USART1 }, | ||
| 368 | Vector { _handler: USART2 }, | ||
| 369 | Vector { _handler: USART3 }, | ||
| 370 | Vector { | ||
| 371 | _handler: EXTI15_10, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: RTC_Alarm, | ||
| 375 | }, | ||
| 376 | Vector { _reserved: 0 }, | ||
| 377 | Vector { _handler: TIM8_BRK }, | ||
| 378 | Vector { _handler: TIM8_UP }, | ||
| 379 | Vector { | ||
| 380 | _handler: TIM8_TRG_COM, | ||
| 381 | }, | ||
| 382 | Vector { _handler: TIM8_CC }, | ||
| 383 | Vector { _handler: SDMMC2 }, | ||
| 384 | Vector { _handler: FMC }, | ||
| 385 | Vector { _handler: SDMMC1 }, | ||
| 386 | Vector { _handler: TIM5 }, | ||
| 387 | Vector { _handler: SPI3 }, | ||
| 388 | Vector { _handler: UART4 }, | ||
| 389 | Vector { _handler: UART5 }, | ||
| 390 | Vector { _handler: TIM6_DAC }, | ||
| 391 | Vector { _handler: TIM7 }, | ||
| 392 | Vector { | ||
| 393 | _handler: DMA2_Channel1, | ||
| 394 | }, | ||
| 395 | Vector { | ||
| 396 | _handler: DMA2_Channel2, | ||
| 397 | }, | ||
| 398 | Vector { | ||
| 399 | _handler: DMA2_Channel3, | ||
| 400 | }, | ||
| 401 | Vector { | ||
| 402 | _handler: DMA2_Channel4, | ||
| 403 | }, | ||
| 404 | Vector { | ||
| 405 | _handler: DMA2_Channel5, | ||
| 406 | }, | ||
| 407 | Vector { | ||
| 408 | _handler: DFSDM1_FLT0, | ||
| 409 | }, | ||
| 410 | Vector { | ||
| 411 | _handler: DFSDM1_FLT1, | ||
| 412 | }, | ||
| 413 | Vector { _reserved: 0 }, | ||
| 414 | Vector { _handler: COMP }, | ||
| 415 | Vector { _handler: LPTIM1 }, | ||
| 416 | Vector { _handler: LPTIM2 }, | ||
| 417 | Vector { _handler: OTG_FS }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel6, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DMA2_Channel7, | ||
| 423 | }, | ||
| 424 | Vector { _handler: LPUART1 }, | ||
| 425 | Vector { _handler: OCTOSPI1 }, | ||
| 426 | Vector { _handler: I2C3_EV }, | ||
| 427 | Vector { _handler: I2C3_ER }, | ||
| 428 | Vector { _handler: SAI1 }, | ||
| 429 | Vector { _handler: SAI2 }, | ||
| 430 | Vector { _handler: OCTOSPI2 }, | ||
| 431 | Vector { _handler: TSC }, | ||
| 432 | Vector { _reserved: 0 }, | ||
| 433 | Vector { _reserved: 0 }, | ||
| 434 | Vector { _handler: RNG }, | ||
| 435 | Vector { _handler: FPU }, | ||
| 436 | Vector { _handler: HASH_CRS }, | ||
| 437 | Vector { _handler: I2C4_ER }, | ||
| 438 | Vector { _handler: I2C4_EV }, | ||
| 439 | Vector { | ||
| 440 | _handler: DCMI_PSSI, | ||
| 441 | }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _reserved: 0 }, | ||
| 446 | Vector { _handler: DMA2D }, | ||
| 447 | Vector { _handler: LTDC }, | ||
| 448 | Vector { _handler: LTDC_ER }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { | ||
| 451 | _handler: DMAMUX1_OVR, | ||
| 452 | }, | ||
| 453 | ]; | ||
| 454 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 455 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 456 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 457 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4p5qe.rs b/embassy-stm32/src/chip/stm32l4p5qe.rs index 6d2a25917..66034e537 100644 --- a/embassy-stm32/src/chip/stm32l4p5qe.rs +++ b/embassy-stm32/src/chip/stm32l4p5qe.rs | |||
| @@ -1,22 +1,457 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, | 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, |
| 14 | OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, SPI2, SPI3, | 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, |
| 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, | 15 | SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, |
| 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG | 16 | UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DCMI_PSSI = 85, | ||
| 38 | DFSDM1_FLT0 = 61, | ||
| 39 | DFSDM1_FLT1 = 62, | ||
| 40 | DMA1_Channel1 = 11, | ||
| 41 | DMA1_Channel2 = 12, | ||
| 42 | DMA1_Channel3 = 13, | ||
| 43 | DMA1_Channel4 = 14, | ||
| 44 | DMA1_Channel5 = 15, | ||
| 45 | DMA1_Channel6 = 16, | ||
| 46 | DMA1_Channel7 = 17, | ||
| 47 | DMA2D = 90, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | DMAMUX1_OVR = 94, | ||
| 56 | EXTI0 = 6, | ||
| 57 | EXTI1 = 7, | ||
| 58 | EXTI15_10 = 40, | ||
| 59 | EXTI2 = 8, | ||
| 60 | EXTI3 = 9, | ||
| 61 | EXTI4 = 10, | ||
| 62 | EXTI9_5 = 23, | ||
| 63 | FLASH = 4, | ||
| 64 | FMC = 48, | ||
| 65 | FPU = 81, | ||
| 66 | HASH_CRS = 82, | ||
| 67 | I2C1_ER = 32, | ||
| 68 | I2C1_EV = 31, | ||
| 69 | I2C2_ER = 34, | ||
| 70 | I2C2_EV = 33, | ||
| 71 | I2C3_ER = 73, | ||
| 72 | I2C3_EV = 72, | ||
| 73 | I2C4_ER = 83, | ||
| 74 | I2C4_EV = 84, | ||
| 75 | LPTIM1 = 65, | ||
| 76 | LPTIM2 = 66, | ||
| 77 | LPUART1 = 70, | ||
| 78 | LTDC = 91, | ||
| 79 | LTDC_ER = 92, | ||
| 80 | OCTOSPI1 = 71, | ||
| 81 | OCTOSPI2 = 76, | ||
| 82 | OTG_FS = 67, | ||
| 83 | PVD_PVM = 1, | ||
| 84 | RCC = 5, | ||
| 85 | RNG = 80, | ||
| 86 | RTC_Alarm = 41, | ||
| 87 | RTC_WKUP = 3, | ||
| 88 | SAI1 = 74, | ||
| 89 | SAI2 = 75, | ||
| 90 | SDMMC1 = 49, | ||
| 91 | SDMMC2 = 47, | ||
| 92 | SPI1 = 35, | ||
| 93 | SPI2 = 36, | ||
| 94 | SPI3 = 51, | ||
| 95 | TAMP_STAMP = 2, | ||
| 96 | TIM1_BRK_TIM15 = 24, | ||
| 97 | TIM1_CC = 27, | ||
| 98 | TIM1_TRG_COM_TIM17 = 26, | ||
| 99 | TIM1_UP_TIM16 = 25, | ||
| 100 | TIM2 = 28, | ||
| 101 | TIM3 = 29, | ||
| 102 | TIM4 = 30, | ||
| 103 | TIM5 = 50, | ||
| 104 | TIM6_DAC = 54, | ||
| 105 | TIM7 = 55, | ||
| 106 | TIM8_BRK = 43, | ||
| 107 | TIM8_CC = 46, | ||
| 108 | TIM8_TRG_COM = 45, | ||
| 109 | TIM8_UP = 44, | ||
| 110 | TSC = 77, | ||
| 111 | UART4 = 52, | ||
| 112 | UART5 = 53, | ||
| 113 | USART1 = 37, | ||
| 114 | USART2 = 38, | ||
| 115 | USART3 = 39, | ||
| 116 | WWDG = 0, | ||
| 117 | } | ||
| 118 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 119 | #[inline(always)] | ||
| 120 | fn number(self) -> u16 { | ||
| 121 | self as u16 | ||
| 122 | } | ||
| 123 | } | ||
| 124 | |||
| 125 | declare!(ADC1_2); | ||
| 126 | declare!(CAN1_RX0); | ||
| 127 | declare!(CAN1_RX1); | ||
| 128 | declare!(CAN1_SCE); | ||
| 129 | declare!(CAN1_TX); | ||
| 130 | declare!(COMP); | ||
| 131 | declare!(DCMI_PSSI); | ||
| 132 | declare!(DFSDM1_FLT0); | ||
| 133 | declare!(DFSDM1_FLT1); | ||
| 134 | declare!(DMA1_Channel1); | ||
| 135 | declare!(DMA1_Channel2); | ||
| 136 | declare!(DMA1_Channel3); | ||
| 137 | declare!(DMA1_Channel4); | ||
| 138 | declare!(DMA1_Channel5); | ||
| 139 | declare!(DMA1_Channel6); | ||
| 140 | declare!(DMA1_Channel7); | ||
| 141 | declare!(DMA2D); | ||
| 142 | declare!(DMA2_Channel1); | ||
| 143 | declare!(DMA2_Channel2); | ||
| 144 | declare!(DMA2_Channel3); | ||
| 145 | declare!(DMA2_Channel4); | ||
| 146 | declare!(DMA2_Channel5); | ||
| 147 | declare!(DMA2_Channel6); | ||
| 148 | declare!(DMA2_Channel7); | ||
| 149 | declare!(DMAMUX1_OVR); | ||
| 150 | declare!(EXTI0); | ||
| 151 | declare!(EXTI1); | ||
| 152 | declare!(EXTI15_10); | ||
| 153 | declare!(EXTI2); | ||
| 154 | declare!(EXTI3); | ||
| 155 | declare!(EXTI4); | ||
| 156 | declare!(EXTI9_5); | ||
| 157 | declare!(FLASH); | ||
| 158 | declare!(FMC); | ||
| 159 | declare!(FPU); | ||
| 160 | declare!(HASH_CRS); | ||
| 161 | declare!(I2C1_ER); | ||
| 162 | declare!(I2C1_EV); | ||
| 163 | declare!(I2C2_ER); | ||
| 164 | declare!(I2C2_EV); | ||
| 165 | declare!(I2C3_ER); | ||
| 166 | declare!(I2C3_EV); | ||
| 167 | declare!(I2C4_ER); | ||
| 168 | declare!(I2C4_EV); | ||
| 169 | declare!(LPTIM1); | ||
| 170 | declare!(LPTIM2); | ||
| 171 | declare!(LPUART1); | ||
| 172 | declare!(LTDC); | ||
| 173 | declare!(LTDC_ER); | ||
| 174 | declare!(OCTOSPI1); | ||
| 175 | declare!(OCTOSPI2); | ||
| 176 | declare!(OTG_FS); | ||
| 177 | declare!(PVD_PVM); | ||
| 178 | declare!(RCC); | ||
| 179 | declare!(RNG); | ||
| 180 | declare!(RTC_Alarm); | ||
| 181 | declare!(RTC_WKUP); | ||
| 182 | declare!(SAI1); | ||
| 183 | declare!(SAI2); | ||
| 184 | declare!(SDMMC1); | ||
| 185 | declare!(SDMMC2); | ||
| 186 | declare!(SPI1); | ||
| 187 | declare!(SPI2); | ||
| 188 | declare!(SPI3); | ||
| 189 | declare!(TAMP_STAMP); | ||
| 190 | declare!(TIM1_BRK_TIM15); | ||
| 191 | declare!(TIM1_CC); | ||
| 192 | declare!(TIM1_TRG_COM_TIM17); | ||
| 193 | declare!(TIM1_UP_TIM16); | ||
| 194 | declare!(TIM2); | ||
| 195 | declare!(TIM3); | ||
| 196 | declare!(TIM4); | ||
| 197 | declare!(TIM5); | ||
| 198 | declare!(TIM6_DAC); | ||
| 199 | declare!(TIM7); | ||
| 200 | declare!(TIM8_BRK); | ||
| 201 | declare!(TIM8_CC); | ||
| 202 | declare!(TIM8_TRG_COM); | ||
| 203 | declare!(TIM8_UP); | ||
| 204 | declare!(TSC); | ||
| 205 | declare!(UART4); | ||
| 206 | declare!(UART5); | ||
| 207 | declare!(USART1); | ||
| 208 | declare!(USART2); | ||
| 209 | declare!(USART3); | ||
| 210 | declare!(WWDG); | ||
| 211 | } | ||
| 212 | mod interrupt_vector { | ||
| 213 | extern "C" { | ||
| 214 | fn ADC1_2(); | ||
| 215 | fn CAN1_RX0(); | ||
| 216 | fn CAN1_RX1(); | ||
| 217 | fn CAN1_SCE(); | ||
| 218 | fn CAN1_TX(); | ||
| 219 | fn COMP(); | ||
| 220 | fn DCMI_PSSI(); | ||
| 221 | fn DFSDM1_FLT0(); | ||
| 222 | fn DFSDM1_FLT1(); | ||
| 223 | fn DMA1_Channel1(); | ||
| 224 | fn DMA1_Channel2(); | ||
| 225 | fn DMA1_Channel3(); | ||
| 226 | fn DMA1_Channel4(); | ||
| 227 | fn DMA1_Channel5(); | ||
| 228 | fn DMA1_Channel6(); | ||
| 229 | fn DMA1_Channel7(); | ||
| 230 | fn DMA2D(); | ||
| 231 | fn DMA2_Channel1(); | ||
| 232 | fn DMA2_Channel2(); | ||
| 233 | fn DMA2_Channel3(); | ||
| 234 | fn DMA2_Channel4(); | ||
| 235 | fn DMA2_Channel5(); | ||
| 236 | fn DMA2_Channel6(); | ||
| 237 | fn DMA2_Channel7(); | ||
| 238 | fn DMAMUX1_OVR(); | ||
| 239 | fn EXTI0(); | ||
| 240 | fn EXTI1(); | ||
| 241 | fn EXTI15_10(); | ||
| 242 | fn EXTI2(); | ||
| 243 | fn EXTI3(); | ||
| 244 | fn EXTI4(); | ||
| 245 | fn EXTI9_5(); | ||
| 246 | fn FLASH(); | ||
| 247 | fn FMC(); | ||
| 248 | fn FPU(); | ||
| 249 | fn HASH_CRS(); | ||
| 250 | fn I2C1_ER(); | ||
| 251 | fn I2C1_EV(); | ||
| 252 | fn I2C2_ER(); | ||
| 253 | fn I2C2_EV(); | ||
| 254 | fn I2C3_ER(); | ||
| 255 | fn I2C3_EV(); | ||
| 256 | fn I2C4_ER(); | ||
| 257 | fn I2C4_EV(); | ||
| 258 | fn LPTIM1(); | ||
| 259 | fn LPTIM2(); | ||
| 260 | fn LPUART1(); | ||
| 261 | fn LTDC(); | ||
| 262 | fn LTDC_ER(); | ||
| 263 | fn OCTOSPI1(); | ||
| 264 | fn OCTOSPI2(); | ||
| 265 | fn OTG_FS(); | ||
| 266 | fn PVD_PVM(); | ||
| 267 | fn RCC(); | ||
| 268 | fn RNG(); | ||
| 269 | fn RTC_Alarm(); | ||
| 270 | fn RTC_WKUP(); | ||
| 271 | fn SAI1(); | ||
| 272 | fn SAI2(); | ||
| 273 | fn SDMMC1(); | ||
| 274 | fn SDMMC2(); | ||
| 275 | fn SPI1(); | ||
| 276 | fn SPI2(); | ||
| 277 | fn SPI3(); | ||
| 278 | fn TAMP_STAMP(); | ||
| 279 | fn TIM1_BRK_TIM15(); | ||
| 280 | fn TIM1_CC(); | ||
| 281 | fn TIM1_TRG_COM_TIM17(); | ||
| 282 | fn TIM1_UP_TIM16(); | ||
| 283 | fn TIM2(); | ||
| 284 | fn TIM3(); | ||
| 285 | fn TIM4(); | ||
| 286 | fn TIM5(); | ||
| 287 | fn TIM6_DAC(); | ||
| 288 | fn TIM7(); | ||
| 289 | fn TIM8_BRK(); | ||
| 290 | fn TIM8_CC(); | ||
| 291 | fn TIM8_TRG_COM(); | ||
| 292 | fn TIM8_UP(); | ||
| 293 | fn TSC(); | ||
| 294 | fn UART4(); | ||
| 295 | fn UART5(); | ||
| 296 | fn USART1(); | ||
| 297 | fn USART2(); | ||
| 298 | fn USART3(); | ||
| 299 | fn WWDG(); | ||
| 300 | } | ||
| 301 | pub union Vector { | ||
| 302 | _handler: unsafe extern "C" fn(), | ||
| 303 | _reserved: u32, | ||
| 304 | } | ||
| 305 | #[link_section = ".vector_table.interrupts"] | ||
| 306 | #[no_mangle] | ||
| 307 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 308 | Vector { _handler: WWDG }, | ||
| 309 | Vector { _handler: PVD_PVM }, | ||
| 310 | Vector { | ||
| 311 | _handler: TAMP_STAMP, | ||
| 312 | }, | ||
| 313 | Vector { _handler: RTC_WKUP }, | ||
| 314 | Vector { _handler: FLASH }, | ||
| 315 | Vector { _handler: RCC }, | ||
| 316 | Vector { _handler: EXTI0 }, | ||
| 317 | Vector { _handler: EXTI1 }, | ||
| 318 | Vector { _handler: EXTI2 }, | ||
| 319 | Vector { _handler: EXTI3 }, | ||
| 320 | Vector { _handler: EXTI4 }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel1, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel2, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel3, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel4, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel5, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel6, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel7, | ||
| 341 | }, | ||
| 342 | Vector { _handler: ADC1_2 }, | ||
| 343 | Vector { _handler: CAN1_TX }, | ||
| 344 | Vector { _handler: CAN1_RX0 }, | ||
| 345 | Vector { _handler: CAN1_RX1 }, | ||
| 346 | Vector { _handler: CAN1_SCE }, | ||
| 347 | Vector { _handler: EXTI9_5 }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_BRK_TIM15, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_UP_TIM16, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_TRG_COM_TIM17, | ||
| 356 | }, | ||
| 357 | Vector { _handler: TIM1_CC }, | ||
| 358 | Vector { _handler: TIM2 }, | ||
| 359 | Vector { _handler: TIM3 }, | ||
| 360 | Vector { _handler: TIM4 }, | ||
| 361 | Vector { _handler: I2C1_EV }, | ||
| 362 | Vector { _handler: I2C1_ER }, | ||
| 363 | Vector { _handler: I2C2_EV }, | ||
| 364 | Vector { _handler: I2C2_ER }, | ||
| 365 | Vector { _handler: SPI1 }, | ||
| 366 | Vector { _handler: SPI2 }, | ||
| 367 | Vector { _handler: USART1 }, | ||
| 368 | Vector { _handler: USART2 }, | ||
| 369 | Vector { _handler: USART3 }, | ||
| 370 | Vector { | ||
| 371 | _handler: EXTI15_10, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: RTC_Alarm, | ||
| 375 | }, | ||
| 376 | Vector { _reserved: 0 }, | ||
| 377 | Vector { _handler: TIM8_BRK }, | ||
| 378 | Vector { _handler: TIM8_UP }, | ||
| 379 | Vector { | ||
| 380 | _handler: TIM8_TRG_COM, | ||
| 381 | }, | ||
| 382 | Vector { _handler: TIM8_CC }, | ||
| 383 | Vector { _handler: SDMMC2 }, | ||
| 384 | Vector { _handler: FMC }, | ||
| 385 | Vector { _handler: SDMMC1 }, | ||
| 386 | Vector { _handler: TIM5 }, | ||
| 387 | Vector { _handler: SPI3 }, | ||
| 388 | Vector { _handler: UART4 }, | ||
| 389 | Vector { _handler: UART5 }, | ||
| 390 | Vector { _handler: TIM6_DAC }, | ||
| 391 | Vector { _handler: TIM7 }, | ||
| 392 | Vector { | ||
| 393 | _handler: DMA2_Channel1, | ||
| 394 | }, | ||
| 395 | Vector { | ||
| 396 | _handler: DMA2_Channel2, | ||
| 397 | }, | ||
| 398 | Vector { | ||
| 399 | _handler: DMA2_Channel3, | ||
| 400 | }, | ||
| 401 | Vector { | ||
| 402 | _handler: DMA2_Channel4, | ||
| 403 | }, | ||
| 404 | Vector { | ||
| 405 | _handler: DMA2_Channel5, | ||
| 406 | }, | ||
| 407 | Vector { | ||
| 408 | _handler: DFSDM1_FLT0, | ||
| 409 | }, | ||
| 410 | Vector { | ||
| 411 | _handler: DFSDM1_FLT1, | ||
| 412 | }, | ||
| 413 | Vector { _reserved: 0 }, | ||
| 414 | Vector { _handler: COMP }, | ||
| 415 | Vector { _handler: LPTIM1 }, | ||
| 416 | Vector { _handler: LPTIM2 }, | ||
| 417 | Vector { _handler: OTG_FS }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel6, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DMA2_Channel7, | ||
| 423 | }, | ||
| 424 | Vector { _handler: LPUART1 }, | ||
| 425 | Vector { _handler: OCTOSPI1 }, | ||
| 426 | Vector { _handler: I2C3_EV }, | ||
| 427 | Vector { _handler: I2C3_ER }, | ||
| 428 | Vector { _handler: SAI1 }, | ||
| 429 | Vector { _handler: SAI2 }, | ||
| 430 | Vector { _handler: OCTOSPI2 }, | ||
| 431 | Vector { _handler: TSC }, | ||
| 432 | Vector { _reserved: 0 }, | ||
| 433 | Vector { _reserved: 0 }, | ||
| 434 | Vector { _handler: RNG }, | ||
| 435 | Vector { _handler: FPU }, | ||
| 436 | Vector { _handler: HASH_CRS }, | ||
| 437 | Vector { _handler: I2C4_ER }, | ||
| 438 | Vector { _handler: I2C4_EV }, | ||
| 439 | Vector { | ||
| 440 | _handler: DCMI_PSSI, | ||
| 441 | }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _reserved: 0 }, | ||
| 446 | Vector { _handler: DMA2D }, | ||
| 447 | Vector { _handler: LTDC }, | ||
| 448 | Vector { _handler: LTDC_ER }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { | ||
| 451 | _handler: DMAMUX1_OVR, | ||
| 452 | }, | ||
| 453 | ]; | ||
| 454 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 455 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 456 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 457 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4p5qg.rs b/embassy-stm32/src/chip/stm32l4p5qg.rs index 6d2a25917..66034e537 100644 --- a/embassy-stm32/src/chip/stm32l4p5qg.rs +++ b/embassy-stm32/src/chip/stm32l4p5qg.rs | |||
| @@ -1,22 +1,457 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, | 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, |
| 14 | OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, SPI2, SPI3, | 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, |
| 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, | 15 | SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, |
| 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG | 16 | UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DCMI_PSSI = 85, | ||
| 38 | DFSDM1_FLT0 = 61, | ||
| 39 | DFSDM1_FLT1 = 62, | ||
| 40 | DMA1_Channel1 = 11, | ||
| 41 | DMA1_Channel2 = 12, | ||
| 42 | DMA1_Channel3 = 13, | ||
| 43 | DMA1_Channel4 = 14, | ||
| 44 | DMA1_Channel5 = 15, | ||
| 45 | DMA1_Channel6 = 16, | ||
| 46 | DMA1_Channel7 = 17, | ||
| 47 | DMA2D = 90, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | DMAMUX1_OVR = 94, | ||
| 56 | EXTI0 = 6, | ||
| 57 | EXTI1 = 7, | ||
| 58 | EXTI15_10 = 40, | ||
| 59 | EXTI2 = 8, | ||
| 60 | EXTI3 = 9, | ||
| 61 | EXTI4 = 10, | ||
| 62 | EXTI9_5 = 23, | ||
| 63 | FLASH = 4, | ||
| 64 | FMC = 48, | ||
| 65 | FPU = 81, | ||
| 66 | HASH_CRS = 82, | ||
| 67 | I2C1_ER = 32, | ||
| 68 | I2C1_EV = 31, | ||
| 69 | I2C2_ER = 34, | ||
| 70 | I2C2_EV = 33, | ||
| 71 | I2C3_ER = 73, | ||
| 72 | I2C3_EV = 72, | ||
| 73 | I2C4_ER = 83, | ||
| 74 | I2C4_EV = 84, | ||
| 75 | LPTIM1 = 65, | ||
| 76 | LPTIM2 = 66, | ||
| 77 | LPUART1 = 70, | ||
| 78 | LTDC = 91, | ||
| 79 | LTDC_ER = 92, | ||
| 80 | OCTOSPI1 = 71, | ||
| 81 | OCTOSPI2 = 76, | ||
| 82 | OTG_FS = 67, | ||
| 83 | PVD_PVM = 1, | ||
| 84 | RCC = 5, | ||
| 85 | RNG = 80, | ||
| 86 | RTC_Alarm = 41, | ||
| 87 | RTC_WKUP = 3, | ||
| 88 | SAI1 = 74, | ||
| 89 | SAI2 = 75, | ||
| 90 | SDMMC1 = 49, | ||
| 91 | SDMMC2 = 47, | ||
| 92 | SPI1 = 35, | ||
| 93 | SPI2 = 36, | ||
| 94 | SPI3 = 51, | ||
| 95 | TAMP_STAMP = 2, | ||
| 96 | TIM1_BRK_TIM15 = 24, | ||
| 97 | TIM1_CC = 27, | ||
| 98 | TIM1_TRG_COM_TIM17 = 26, | ||
| 99 | TIM1_UP_TIM16 = 25, | ||
| 100 | TIM2 = 28, | ||
| 101 | TIM3 = 29, | ||
| 102 | TIM4 = 30, | ||
| 103 | TIM5 = 50, | ||
| 104 | TIM6_DAC = 54, | ||
| 105 | TIM7 = 55, | ||
| 106 | TIM8_BRK = 43, | ||
| 107 | TIM8_CC = 46, | ||
| 108 | TIM8_TRG_COM = 45, | ||
| 109 | TIM8_UP = 44, | ||
| 110 | TSC = 77, | ||
| 111 | UART4 = 52, | ||
| 112 | UART5 = 53, | ||
| 113 | USART1 = 37, | ||
| 114 | USART2 = 38, | ||
| 115 | USART3 = 39, | ||
| 116 | WWDG = 0, | ||
| 117 | } | ||
| 118 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 119 | #[inline(always)] | ||
| 120 | fn number(self) -> u16 { | ||
| 121 | self as u16 | ||
| 122 | } | ||
| 123 | } | ||
| 124 | |||
| 125 | declare!(ADC1_2); | ||
| 126 | declare!(CAN1_RX0); | ||
| 127 | declare!(CAN1_RX1); | ||
| 128 | declare!(CAN1_SCE); | ||
| 129 | declare!(CAN1_TX); | ||
| 130 | declare!(COMP); | ||
| 131 | declare!(DCMI_PSSI); | ||
| 132 | declare!(DFSDM1_FLT0); | ||
| 133 | declare!(DFSDM1_FLT1); | ||
| 134 | declare!(DMA1_Channel1); | ||
| 135 | declare!(DMA1_Channel2); | ||
| 136 | declare!(DMA1_Channel3); | ||
| 137 | declare!(DMA1_Channel4); | ||
| 138 | declare!(DMA1_Channel5); | ||
| 139 | declare!(DMA1_Channel6); | ||
| 140 | declare!(DMA1_Channel7); | ||
| 141 | declare!(DMA2D); | ||
| 142 | declare!(DMA2_Channel1); | ||
| 143 | declare!(DMA2_Channel2); | ||
| 144 | declare!(DMA2_Channel3); | ||
| 145 | declare!(DMA2_Channel4); | ||
| 146 | declare!(DMA2_Channel5); | ||
| 147 | declare!(DMA2_Channel6); | ||
| 148 | declare!(DMA2_Channel7); | ||
| 149 | declare!(DMAMUX1_OVR); | ||
| 150 | declare!(EXTI0); | ||
| 151 | declare!(EXTI1); | ||
| 152 | declare!(EXTI15_10); | ||
| 153 | declare!(EXTI2); | ||
| 154 | declare!(EXTI3); | ||
| 155 | declare!(EXTI4); | ||
| 156 | declare!(EXTI9_5); | ||
| 157 | declare!(FLASH); | ||
| 158 | declare!(FMC); | ||
| 159 | declare!(FPU); | ||
| 160 | declare!(HASH_CRS); | ||
| 161 | declare!(I2C1_ER); | ||
| 162 | declare!(I2C1_EV); | ||
| 163 | declare!(I2C2_ER); | ||
| 164 | declare!(I2C2_EV); | ||
| 165 | declare!(I2C3_ER); | ||
| 166 | declare!(I2C3_EV); | ||
| 167 | declare!(I2C4_ER); | ||
| 168 | declare!(I2C4_EV); | ||
| 169 | declare!(LPTIM1); | ||
| 170 | declare!(LPTIM2); | ||
| 171 | declare!(LPUART1); | ||
| 172 | declare!(LTDC); | ||
| 173 | declare!(LTDC_ER); | ||
| 174 | declare!(OCTOSPI1); | ||
| 175 | declare!(OCTOSPI2); | ||
| 176 | declare!(OTG_FS); | ||
| 177 | declare!(PVD_PVM); | ||
| 178 | declare!(RCC); | ||
| 179 | declare!(RNG); | ||
| 180 | declare!(RTC_Alarm); | ||
| 181 | declare!(RTC_WKUP); | ||
| 182 | declare!(SAI1); | ||
| 183 | declare!(SAI2); | ||
| 184 | declare!(SDMMC1); | ||
| 185 | declare!(SDMMC2); | ||
| 186 | declare!(SPI1); | ||
| 187 | declare!(SPI2); | ||
| 188 | declare!(SPI3); | ||
| 189 | declare!(TAMP_STAMP); | ||
| 190 | declare!(TIM1_BRK_TIM15); | ||
| 191 | declare!(TIM1_CC); | ||
| 192 | declare!(TIM1_TRG_COM_TIM17); | ||
| 193 | declare!(TIM1_UP_TIM16); | ||
| 194 | declare!(TIM2); | ||
| 195 | declare!(TIM3); | ||
| 196 | declare!(TIM4); | ||
| 197 | declare!(TIM5); | ||
| 198 | declare!(TIM6_DAC); | ||
| 199 | declare!(TIM7); | ||
| 200 | declare!(TIM8_BRK); | ||
| 201 | declare!(TIM8_CC); | ||
| 202 | declare!(TIM8_TRG_COM); | ||
| 203 | declare!(TIM8_UP); | ||
| 204 | declare!(TSC); | ||
| 205 | declare!(UART4); | ||
| 206 | declare!(UART5); | ||
| 207 | declare!(USART1); | ||
| 208 | declare!(USART2); | ||
| 209 | declare!(USART3); | ||
| 210 | declare!(WWDG); | ||
| 211 | } | ||
| 212 | mod interrupt_vector { | ||
| 213 | extern "C" { | ||
| 214 | fn ADC1_2(); | ||
| 215 | fn CAN1_RX0(); | ||
| 216 | fn CAN1_RX1(); | ||
| 217 | fn CAN1_SCE(); | ||
| 218 | fn CAN1_TX(); | ||
| 219 | fn COMP(); | ||
| 220 | fn DCMI_PSSI(); | ||
| 221 | fn DFSDM1_FLT0(); | ||
| 222 | fn DFSDM1_FLT1(); | ||
| 223 | fn DMA1_Channel1(); | ||
| 224 | fn DMA1_Channel2(); | ||
| 225 | fn DMA1_Channel3(); | ||
| 226 | fn DMA1_Channel4(); | ||
| 227 | fn DMA1_Channel5(); | ||
| 228 | fn DMA1_Channel6(); | ||
| 229 | fn DMA1_Channel7(); | ||
| 230 | fn DMA2D(); | ||
| 231 | fn DMA2_Channel1(); | ||
| 232 | fn DMA2_Channel2(); | ||
| 233 | fn DMA2_Channel3(); | ||
| 234 | fn DMA2_Channel4(); | ||
| 235 | fn DMA2_Channel5(); | ||
| 236 | fn DMA2_Channel6(); | ||
| 237 | fn DMA2_Channel7(); | ||
| 238 | fn DMAMUX1_OVR(); | ||
| 239 | fn EXTI0(); | ||
| 240 | fn EXTI1(); | ||
| 241 | fn EXTI15_10(); | ||
| 242 | fn EXTI2(); | ||
| 243 | fn EXTI3(); | ||
| 244 | fn EXTI4(); | ||
| 245 | fn EXTI9_5(); | ||
| 246 | fn FLASH(); | ||
| 247 | fn FMC(); | ||
| 248 | fn FPU(); | ||
| 249 | fn HASH_CRS(); | ||
| 250 | fn I2C1_ER(); | ||
| 251 | fn I2C1_EV(); | ||
| 252 | fn I2C2_ER(); | ||
| 253 | fn I2C2_EV(); | ||
| 254 | fn I2C3_ER(); | ||
| 255 | fn I2C3_EV(); | ||
| 256 | fn I2C4_ER(); | ||
| 257 | fn I2C4_EV(); | ||
| 258 | fn LPTIM1(); | ||
| 259 | fn LPTIM2(); | ||
| 260 | fn LPUART1(); | ||
| 261 | fn LTDC(); | ||
| 262 | fn LTDC_ER(); | ||
| 263 | fn OCTOSPI1(); | ||
| 264 | fn OCTOSPI2(); | ||
| 265 | fn OTG_FS(); | ||
| 266 | fn PVD_PVM(); | ||
| 267 | fn RCC(); | ||
| 268 | fn RNG(); | ||
| 269 | fn RTC_Alarm(); | ||
| 270 | fn RTC_WKUP(); | ||
| 271 | fn SAI1(); | ||
| 272 | fn SAI2(); | ||
| 273 | fn SDMMC1(); | ||
| 274 | fn SDMMC2(); | ||
| 275 | fn SPI1(); | ||
| 276 | fn SPI2(); | ||
| 277 | fn SPI3(); | ||
| 278 | fn TAMP_STAMP(); | ||
| 279 | fn TIM1_BRK_TIM15(); | ||
| 280 | fn TIM1_CC(); | ||
| 281 | fn TIM1_TRG_COM_TIM17(); | ||
| 282 | fn TIM1_UP_TIM16(); | ||
| 283 | fn TIM2(); | ||
| 284 | fn TIM3(); | ||
| 285 | fn TIM4(); | ||
| 286 | fn TIM5(); | ||
| 287 | fn TIM6_DAC(); | ||
| 288 | fn TIM7(); | ||
| 289 | fn TIM8_BRK(); | ||
| 290 | fn TIM8_CC(); | ||
| 291 | fn TIM8_TRG_COM(); | ||
| 292 | fn TIM8_UP(); | ||
| 293 | fn TSC(); | ||
| 294 | fn UART4(); | ||
| 295 | fn UART5(); | ||
| 296 | fn USART1(); | ||
| 297 | fn USART2(); | ||
| 298 | fn USART3(); | ||
| 299 | fn WWDG(); | ||
| 300 | } | ||
| 301 | pub union Vector { | ||
| 302 | _handler: unsafe extern "C" fn(), | ||
| 303 | _reserved: u32, | ||
| 304 | } | ||
| 305 | #[link_section = ".vector_table.interrupts"] | ||
| 306 | #[no_mangle] | ||
| 307 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 308 | Vector { _handler: WWDG }, | ||
| 309 | Vector { _handler: PVD_PVM }, | ||
| 310 | Vector { | ||
| 311 | _handler: TAMP_STAMP, | ||
| 312 | }, | ||
| 313 | Vector { _handler: RTC_WKUP }, | ||
| 314 | Vector { _handler: FLASH }, | ||
| 315 | Vector { _handler: RCC }, | ||
| 316 | Vector { _handler: EXTI0 }, | ||
| 317 | Vector { _handler: EXTI1 }, | ||
| 318 | Vector { _handler: EXTI2 }, | ||
| 319 | Vector { _handler: EXTI3 }, | ||
| 320 | Vector { _handler: EXTI4 }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel1, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel2, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel3, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel4, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel5, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel6, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel7, | ||
| 341 | }, | ||
| 342 | Vector { _handler: ADC1_2 }, | ||
| 343 | Vector { _handler: CAN1_TX }, | ||
| 344 | Vector { _handler: CAN1_RX0 }, | ||
| 345 | Vector { _handler: CAN1_RX1 }, | ||
| 346 | Vector { _handler: CAN1_SCE }, | ||
| 347 | Vector { _handler: EXTI9_5 }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_BRK_TIM15, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_UP_TIM16, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_TRG_COM_TIM17, | ||
| 356 | }, | ||
| 357 | Vector { _handler: TIM1_CC }, | ||
| 358 | Vector { _handler: TIM2 }, | ||
| 359 | Vector { _handler: TIM3 }, | ||
| 360 | Vector { _handler: TIM4 }, | ||
| 361 | Vector { _handler: I2C1_EV }, | ||
| 362 | Vector { _handler: I2C1_ER }, | ||
| 363 | Vector { _handler: I2C2_EV }, | ||
| 364 | Vector { _handler: I2C2_ER }, | ||
| 365 | Vector { _handler: SPI1 }, | ||
| 366 | Vector { _handler: SPI2 }, | ||
| 367 | Vector { _handler: USART1 }, | ||
| 368 | Vector { _handler: USART2 }, | ||
| 369 | Vector { _handler: USART3 }, | ||
| 370 | Vector { | ||
| 371 | _handler: EXTI15_10, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: RTC_Alarm, | ||
| 375 | }, | ||
| 376 | Vector { _reserved: 0 }, | ||
| 377 | Vector { _handler: TIM8_BRK }, | ||
| 378 | Vector { _handler: TIM8_UP }, | ||
| 379 | Vector { | ||
| 380 | _handler: TIM8_TRG_COM, | ||
| 381 | }, | ||
| 382 | Vector { _handler: TIM8_CC }, | ||
| 383 | Vector { _handler: SDMMC2 }, | ||
| 384 | Vector { _handler: FMC }, | ||
| 385 | Vector { _handler: SDMMC1 }, | ||
| 386 | Vector { _handler: TIM5 }, | ||
| 387 | Vector { _handler: SPI3 }, | ||
| 388 | Vector { _handler: UART4 }, | ||
| 389 | Vector { _handler: UART5 }, | ||
| 390 | Vector { _handler: TIM6_DAC }, | ||
| 391 | Vector { _handler: TIM7 }, | ||
| 392 | Vector { | ||
| 393 | _handler: DMA2_Channel1, | ||
| 394 | }, | ||
| 395 | Vector { | ||
| 396 | _handler: DMA2_Channel2, | ||
| 397 | }, | ||
| 398 | Vector { | ||
| 399 | _handler: DMA2_Channel3, | ||
| 400 | }, | ||
| 401 | Vector { | ||
| 402 | _handler: DMA2_Channel4, | ||
| 403 | }, | ||
| 404 | Vector { | ||
| 405 | _handler: DMA2_Channel5, | ||
| 406 | }, | ||
| 407 | Vector { | ||
| 408 | _handler: DFSDM1_FLT0, | ||
| 409 | }, | ||
| 410 | Vector { | ||
| 411 | _handler: DFSDM1_FLT1, | ||
| 412 | }, | ||
| 413 | Vector { _reserved: 0 }, | ||
| 414 | Vector { _handler: COMP }, | ||
| 415 | Vector { _handler: LPTIM1 }, | ||
| 416 | Vector { _handler: LPTIM2 }, | ||
| 417 | Vector { _handler: OTG_FS }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel6, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DMA2_Channel7, | ||
| 423 | }, | ||
| 424 | Vector { _handler: LPUART1 }, | ||
| 425 | Vector { _handler: OCTOSPI1 }, | ||
| 426 | Vector { _handler: I2C3_EV }, | ||
| 427 | Vector { _handler: I2C3_ER }, | ||
| 428 | Vector { _handler: SAI1 }, | ||
| 429 | Vector { _handler: SAI2 }, | ||
| 430 | Vector { _handler: OCTOSPI2 }, | ||
| 431 | Vector { _handler: TSC }, | ||
| 432 | Vector { _reserved: 0 }, | ||
| 433 | Vector { _reserved: 0 }, | ||
| 434 | Vector { _handler: RNG }, | ||
| 435 | Vector { _handler: FPU }, | ||
| 436 | Vector { _handler: HASH_CRS }, | ||
| 437 | Vector { _handler: I2C4_ER }, | ||
| 438 | Vector { _handler: I2C4_EV }, | ||
| 439 | Vector { | ||
| 440 | _handler: DCMI_PSSI, | ||
| 441 | }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _reserved: 0 }, | ||
| 446 | Vector { _handler: DMA2D }, | ||
| 447 | Vector { _handler: LTDC }, | ||
| 448 | Vector { _handler: LTDC_ER }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { | ||
| 451 | _handler: DMAMUX1_OVR, | ||
| 452 | }, | ||
| 453 | ]; | ||
| 454 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 455 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 456 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 457 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4p5re.rs b/embassy-stm32/src/chip/stm32l4p5re.rs index 2c9823ee8..c60e21456 100644 --- a/embassy-stm32/src/chip/stm32l4p5re.rs +++ b/embassy-stm32/src/chip/stm32l4p5re.rs | |||
| @@ -1,22 +1,457 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, | 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, |
| 14 | OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, SPI2, SPI3, | 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, |
| 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, | 15 | SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, |
| 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG | 16 | UART4, USART1, USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DCMI_PSSI = 85, | ||
| 38 | DFSDM1_FLT0 = 61, | ||
| 39 | DFSDM1_FLT1 = 62, | ||
| 40 | DMA1_Channel1 = 11, | ||
| 41 | DMA1_Channel2 = 12, | ||
| 42 | DMA1_Channel3 = 13, | ||
| 43 | DMA1_Channel4 = 14, | ||
| 44 | DMA1_Channel5 = 15, | ||
| 45 | DMA1_Channel6 = 16, | ||
| 46 | DMA1_Channel7 = 17, | ||
| 47 | DMA2D = 90, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | DMAMUX1_OVR = 94, | ||
| 56 | EXTI0 = 6, | ||
| 57 | EXTI1 = 7, | ||
| 58 | EXTI15_10 = 40, | ||
| 59 | EXTI2 = 8, | ||
| 60 | EXTI3 = 9, | ||
| 61 | EXTI4 = 10, | ||
| 62 | EXTI9_5 = 23, | ||
| 63 | FLASH = 4, | ||
| 64 | FMC = 48, | ||
| 65 | FPU = 81, | ||
| 66 | HASH_CRS = 82, | ||
| 67 | I2C1_ER = 32, | ||
| 68 | I2C1_EV = 31, | ||
| 69 | I2C2_ER = 34, | ||
| 70 | I2C2_EV = 33, | ||
| 71 | I2C3_ER = 73, | ||
| 72 | I2C3_EV = 72, | ||
| 73 | I2C4_ER = 83, | ||
| 74 | I2C4_EV = 84, | ||
| 75 | LPTIM1 = 65, | ||
| 76 | LPTIM2 = 66, | ||
| 77 | LPUART1 = 70, | ||
| 78 | LTDC = 91, | ||
| 79 | LTDC_ER = 92, | ||
| 80 | OCTOSPI1 = 71, | ||
| 81 | OCTOSPI2 = 76, | ||
| 82 | OTG_FS = 67, | ||
| 83 | PVD_PVM = 1, | ||
| 84 | RCC = 5, | ||
| 85 | RNG = 80, | ||
| 86 | RTC_Alarm = 41, | ||
| 87 | RTC_WKUP = 3, | ||
| 88 | SAI1 = 74, | ||
| 89 | SAI2 = 75, | ||
| 90 | SDMMC1 = 49, | ||
| 91 | SDMMC2 = 47, | ||
| 92 | SPI1 = 35, | ||
| 93 | SPI2 = 36, | ||
| 94 | SPI3 = 51, | ||
| 95 | TAMP_STAMP = 2, | ||
| 96 | TIM1_BRK_TIM15 = 24, | ||
| 97 | TIM1_CC = 27, | ||
| 98 | TIM1_TRG_COM_TIM17 = 26, | ||
| 99 | TIM1_UP_TIM16 = 25, | ||
| 100 | TIM2 = 28, | ||
| 101 | TIM3 = 29, | ||
| 102 | TIM4 = 30, | ||
| 103 | TIM5 = 50, | ||
| 104 | TIM6_DAC = 54, | ||
| 105 | TIM7 = 55, | ||
| 106 | TIM8_BRK = 43, | ||
| 107 | TIM8_CC = 46, | ||
| 108 | TIM8_TRG_COM = 45, | ||
| 109 | TIM8_UP = 44, | ||
| 110 | TSC = 77, | ||
| 111 | UART4 = 52, | ||
| 112 | UART5 = 53, | ||
| 113 | USART1 = 37, | ||
| 114 | USART2 = 38, | ||
| 115 | USART3 = 39, | ||
| 116 | WWDG = 0, | ||
| 117 | } | ||
| 118 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 119 | #[inline(always)] | ||
| 120 | fn number(self) -> u16 { | ||
| 121 | self as u16 | ||
| 122 | } | ||
| 123 | } | ||
| 124 | |||
| 125 | declare!(ADC1_2); | ||
| 126 | declare!(CAN1_RX0); | ||
| 127 | declare!(CAN1_RX1); | ||
| 128 | declare!(CAN1_SCE); | ||
| 129 | declare!(CAN1_TX); | ||
| 130 | declare!(COMP); | ||
| 131 | declare!(DCMI_PSSI); | ||
| 132 | declare!(DFSDM1_FLT0); | ||
| 133 | declare!(DFSDM1_FLT1); | ||
| 134 | declare!(DMA1_Channel1); | ||
| 135 | declare!(DMA1_Channel2); | ||
| 136 | declare!(DMA1_Channel3); | ||
| 137 | declare!(DMA1_Channel4); | ||
| 138 | declare!(DMA1_Channel5); | ||
| 139 | declare!(DMA1_Channel6); | ||
| 140 | declare!(DMA1_Channel7); | ||
| 141 | declare!(DMA2D); | ||
| 142 | declare!(DMA2_Channel1); | ||
| 143 | declare!(DMA2_Channel2); | ||
| 144 | declare!(DMA2_Channel3); | ||
| 145 | declare!(DMA2_Channel4); | ||
| 146 | declare!(DMA2_Channel5); | ||
| 147 | declare!(DMA2_Channel6); | ||
| 148 | declare!(DMA2_Channel7); | ||
| 149 | declare!(DMAMUX1_OVR); | ||
| 150 | declare!(EXTI0); | ||
| 151 | declare!(EXTI1); | ||
| 152 | declare!(EXTI15_10); | ||
| 153 | declare!(EXTI2); | ||
| 154 | declare!(EXTI3); | ||
| 155 | declare!(EXTI4); | ||
| 156 | declare!(EXTI9_5); | ||
| 157 | declare!(FLASH); | ||
| 158 | declare!(FMC); | ||
| 159 | declare!(FPU); | ||
| 160 | declare!(HASH_CRS); | ||
| 161 | declare!(I2C1_ER); | ||
| 162 | declare!(I2C1_EV); | ||
| 163 | declare!(I2C2_ER); | ||
| 164 | declare!(I2C2_EV); | ||
| 165 | declare!(I2C3_ER); | ||
| 166 | declare!(I2C3_EV); | ||
| 167 | declare!(I2C4_ER); | ||
| 168 | declare!(I2C4_EV); | ||
| 169 | declare!(LPTIM1); | ||
| 170 | declare!(LPTIM2); | ||
| 171 | declare!(LPUART1); | ||
| 172 | declare!(LTDC); | ||
| 173 | declare!(LTDC_ER); | ||
| 174 | declare!(OCTOSPI1); | ||
| 175 | declare!(OCTOSPI2); | ||
| 176 | declare!(OTG_FS); | ||
| 177 | declare!(PVD_PVM); | ||
| 178 | declare!(RCC); | ||
| 179 | declare!(RNG); | ||
| 180 | declare!(RTC_Alarm); | ||
| 181 | declare!(RTC_WKUP); | ||
| 182 | declare!(SAI1); | ||
| 183 | declare!(SAI2); | ||
| 184 | declare!(SDMMC1); | ||
| 185 | declare!(SDMMC2); | ||
| 186 | declare!(SPI1); | ||
| 187 | declare!(SPI2); | ||
| 188 | declare!(SPI3); | ||
| 189 | declare!(TAMP_STAMP); | ||
| 190 | declare!(TIM1_BRK_TIM15); | ||
| 191 | declare!(TIM1_CC); | ||
| 192 | declare!(TIM1_TRG_COM_TIM17); | ||
| 193 | declare!(TIM1_UP_TIM16); | ||
| 194 | declare!(TIM2); | ||
| 195 | declare!(TIM3); | ||
| 196 | declare!(TIM4); | ||
| 197 | declare!(TIM5); | ||
| 198 | declare!(TIM6_DAC); | ||
| 199 | declare!(TIM7); | ||
| 200 | declare!(TIM8_BRK); | ||
| 201 | declare!(TIM8_CC); | ||
| 202 | declare!(TIM8_TRG_COM); | ||
| 203 | declare!(TIM8_UP); | ||
| 204 | declare!(TSC); | ||
| 205 | declare!(UART4); | ||
| 206 | declare!(UART5); | ||
| 207 | declare!(USART1); | ||
| 208 | declare!(USART2); | ||
| 209 | declare!(USART3); | ||
| 210 | declare!(WWDG); | ||
| 211 | } | ||
| 212 | mod interrupt_vector { | ||
| 213 | extern "C" { | ||
| 214 | fn ADC1_2(); | ||
| 215 | fn CAN1_RX0(); | ||
| 216 | fn CAN1_RX1(); | ||
| 217 | fn CAN1_SCE(); | ||
| 218 | fn CAN1_TX(); | ||
| 219 | fn COMP(); | ||
| 220 | fn DCMI_PSSI(); | ||
| 221 | fn DFSDM1_FLT0(); | ||
| 222 | fn DFSDM1_FLT1(); | ||
| 223 | fn DMA1_Channel1(); | ||
| 224 | fn DMA1_Channel2(); | ||
| 225 | fn DMA1_Channel3(); | ||
| 226 | fn DMA1_Channel4(); | ||
| 227 | fn DMA1_Channel5(); | ||
| 228 | fn DMA1_Channel6(); | ||
| 229 | fn DMA1_Channel7(); | ||
| 230 | fn DMA2D(); | ||
| 231 | fn DMA2_Channel1(); | ||
| 232 | fn DMA2_Channel2(); | ||
| 233 | fn DMA2_Channel3(); | ||
| 234 | fn DMA2_Channel4(); | ||
| 235 | fn DMA2_Channel5(); | ||
| 236 | fn DMA2_Channel6(); | ||
| 237 | fn DMA2_Channel7(); | ||
| 238 | fn DMAMUX1_OVR(); | ||
| 239 | fn EXTI0(); | ||
| 240 | fn EXTI1(); | ||
| 241 | fn EXTI15_10(); | ||
| 242 | fn EXTI2(); | ||
| 243 | fn EXTI3(); | ||
| 244 | fn EXTI4(); | ||
| 245 | fn EXTI9_5(); | ||
| 246 | fn FLASH(); | ||
| 247 | fn FMC(); | ||
| 248 | fn FPU(); | ||
| 249 | fn HASH_CRS(); | ||
| 250 | fn I2C1_ER(); | ||
| 251 | fn I2C1_EV(); | ||
| 252 | fn I2C2_ER(); | ||
| 253 | fn I2C2_EV(); | ||
| 254 | fn I2C3_ER(); | ||
| 255 | fn I2C3_EV(); | ||
| 256 | fn I2C4_ER(); | ||
| 257 | fn I2C4_EV(); | ||
| 258 | fn LPTIM1(); | ||
| 259 | fn LPTIM2(); | ||
| 260 | fn LPUART1(); | ||
| 261 | fn LTDC(); | ||
| 262 | fn LTDC_ER(); | ||
| 263 | fn OCTOSPI1(); | ||
| 264 | fn OCTOSPI2(); | ||
| 265 | fn OTG_FS(); | ||
| 266 | fn PVD_PVM(); | ||
| 267 | fn RCC(); | ||
| 268 | fn RNG(); | ||
| 269 | fn RTC_Alarm(); | ||
| 270 | fn RTC_WKUP(); | ||
| 271 | fn SAI1(); | ||
| 272 | fn SAI2(); | ||
| 273 | fn SDMMC1(); | ||
| 274 | fn SDMMC2(); | ||
| 275 | fn SPI1(); | ||
| 276 | fn SPI2(); | ||
| 277 | fn SPI3(); | ||
| 278 | fn TAMP_STAMP(); | ||
| 279 | fn TIM1_BRK_TIM15(); | ||
| 280 | fn TIM1_CC(); | ||
| 281 | fn TIM1_TRG_COM_TIM17(); | ||
| 282 | fn TIM1_UP_TIM16(); | ||
| 283 | fn TIM2(); | ||
| 284 | fn TIM3(); | ||
| 285 | fn TIM4(); | ||
| 286 | fn TIM5(); | ||
| 287 | fn TIM6_DAC(); | ||
| 288 | fn TIM7(); | ||
| 289 | fn TIM8_BRK(); | ||
| 290 | fn TIM8_CC(); | ||
| 291 | fn TIM8_TRG_COM(); | ||
| 292 | fn TIM8_UP(); | ||
| 293 | fn TSC(); | ||
| 294 | fn UART4(); | ||
| 295 | fn UART5(); | ||
| 296 | fn USART1(); | ||
| 297 | fn USART2(); | ||
| 298 | fn USART3(); | ||
| 299 | fn WWDG(); | ||
| 300 | } | ||
| 301 | pub union Vector { | ||
| 302 | _handler: unsafe extern "C" fn(), | ||
| 303 | _reserved: u32, | ||
| 304 | } | ||
| 305 | #[link_section = ".vector_table.interrupts"] | ||
| 306 | #[no_mangle] | ||
| 307 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 308 | Vector { _handler: WWDG }, | ||
| 309 | Vector { _handler: PVD_PVM }, | ||
| 310 | Vector { | ||
| 311 | _handler: TAMP_STAMP, | ||
| 312 | }, | ||
| 313 | Vector { _handler: RTC_WKUP }, | ||
| 314 | Vector { _handler: FLASH }, | ||
| 315 | Vector { _handler: RCC }, | ||
| 316 | Vector { _handler: EXTI0 }, | ||
| 317 | Vector { _handler: EXTI1 }, | ||
| 318 | Vector { _handler: EXTI2 }, | ||
| 319 | Vector { _handler: EXTI3 }, | ||
| 320 | Vector { _handler: EXTI4 }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel1, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel2, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel3, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel4, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel5, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel6, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel7, | ||
| 341 | }, | ||
| 342 | Vector { _handler: ADC1_2 }, | ||
| 343 | Vector { _handler: CAN1_TX }, | ||
| 344 | Vector { _handler: CAN1_RX0 }, | ||
| 345 | Vector { _handler: CAN1_RX1 }, | ||
| 346 | Vector { _handler: CAN1_SCE }, | ||
| 347 | Vector { _handler: EXTI9_5 }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_BRK_TIM15, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_UP_TIM16, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_TRG_COM_TIM17, | ||
| 356 | }, | ||
| 357 | Vector { _handler: TIM1_CC }, | ||
| 358 | Vector { _handler: TIM2 }, | ||
| 359 | Vector { _handler: TIM3 }, | ||
| 360 | Vector { _handler: TIM4 }, | ||
| 361 | Vector { _handler: I2C1_EV }, | ||
| 362 | Vector { _handler: I2C1_ER }, | ||
| 363 | Vector { _handler: I2C2_EV }, | ||
| 364 | Vector { _handler: I2C2_ER }, | ||
| 365 | Vector { _handler: SPI1 }, | ||
| 366 | Vector { _handler: SPI2 }, | ||
| 367 | Vector { _handler: USART1 }, | ||
| 368 | Vector { _handler: USART2 }, | ||
| 369 | Vector { _handler: USART3 }, | ||
| 370 | Vector { | ||
| 371 | _handler: EXTI15_10, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: RTC_Alarm, | ||
| 375 | }, | ||
| 376 | Vector { _reserved: 0 }, | ||
| 377 | Vector { _handler: TIM8_BRK }, | ||
| 378 | Vector { _handler: TIM8_UP }, | ||
| 379 | Vector { | ||
| 380 | _handler: TIM8_TRG_COM, | ||
| 381 | }, | ||
| 382 | Vector { _handler: TIM8_CC }, | ||
| 383 | Vector { _handler: SDMMC2 }, | ||
| 384 | Vector { _handler: FMC }, | ||
| 385 | Vector { _handler: SDMMC1 }, | ||
| 386 | Vector { _handler: TIM5 }, | ||
| 387 | Vector { _handler: SPI3 }, | ||
| 388 | Vector { _handler: UART4 }, | ||
| 389 | Vector { _handler: UART5 }, | ||
| 390 | Vector { _handler: TIM6_DAC }, | ||
| 391 | Vector { _handler: TIM7 }, | ||
| 392 | Vector { | ||
| 393 | _handler: DMA2_Channel1, | ||
| 394 | }, | ||
| 395 | Vector { | ||
| 396 | _handler: DMA2_Channel2, | ||
| 397 | }, | ||
| 398 | Vector { | ||
| 399 | _handler: DMA2_Channel3, | ||
| 400 | }, | ||
| 401 | Vector { | ||
| 402 | _handler: DMA2_Channel4, | ||
| 403 | }, | ||
| 404 | Vector { | ||
| 405 | _handler: DMA2_Channel5, | ||
| 406 | }, | ||
| 407 | Vector { | ||
| 408 | _handler: DFSDM1_FLT0, | ||
| 409 | }, | ||
| 410 | Vector { | ||
| 411 | _handler: DFSDM1_FLT1, | ||
| 412 | }, | ||
| 413 | Vector { _reserved: 0 }, | ||
| 414 | Vector { _handler: COMP }, | ||
| 415 | Vector { _handler: LPTIM1 }, | ||
| 416 | Vector { _handler: LPTIM2 }, | ||
| 417 | Vector { _handler: OTG_FS }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel6, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DMA2_Channel7, | ||
| 423 | }, | ||
| 424 | Vector { _handler: LPUART1 }, | ||
| 425 | Vector { _handler: OCTOSPI1 }, | ||
| 426 | Vector { _handler: I2C3_EV }, | ||
| 427 | Vector { _handler: I2C3_ER }, | ||
| 428 | Vector { _handler: SAI1 }, | ||
| 429 | Vector { _handler: SAI2 }, | ||
| 430 | Vector { _handler: OCTOSPI2 }, | ||
| 431 | Vector { _handler: TSC }, | ||
| 432 | Vector { _reserved: 0 }, | ||
| 433 | Vector { _reserved: 0 }, | ||
| 434 | Vector { _handler: RNG }, | ||
| 435 | Vector { _handler: FPU }, | ||
| 436 | Vector { _handler: HASH_CRS }, | ||
| 437 | Vector { _handler: I2C4_ER }, | ||
| 438 | Vector { _handler: I2C4_EV }, | ||
| 439 | Vector { | ||
| 440 | _handler: DCMI_PSSI, | ||
| 441 | }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _reserved: 0 }, | ||
| 446 | Vector { _handler: DMA2D }, | ||
| 447 | Vector { _handler: LTDC }, | ||
| 448 | Vector { _handler: LTDC_ER }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { | ||
| 451 | _handler: DMAMUX1_OVR, | ||
| 452 | }, | ||
| 453 | ]; | ||
| 454 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 455 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 456 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 457 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4p5rg.rs b/embassy-stm32/src/chip/stm32l4p5rg.rs index 2c9823ee8..c60e21456 100644 --- a/embassy-stm32/src/chip/stm32l4p5rg.rs +++ b/embassy-stm32/src/chip/stm32l4p5rg.rs | |||
| @@ -1,22 +1,457 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, | 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, |
| 14 | OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, SPI2, SPI3, | 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, |
| 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, | 15 | SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, |
| 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG | 16 | UART4, USART1, USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DCMI_PSSI = 85, | ||
| 38 | DFSDM1_FLT0 = 61, | ||
| 39 | DFSDM1_FLT1 = 62, | ||
| 40 | DMA1_Channel1 = 11, | ||
| 41 | DMA1_Channel2 = 12, | ||
| 42 | DMA1_Channel3 = 13, | ||
| 43 | DMA1_Channel4 = 14, | ||
| 44 | DMA1_Channel5 = 15, | ||
| 45 | DMA1_Channel6 = 16, | ||
| 46 | DMA1_Channel7 = 17, | ||
| 47 | DMA2D = 90, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | DMAMUX1_OVR = 94, | ||
| 56 | EXTI0 = 6, | ||
| 57 | EXTI1 = 7, | ||
| 58 | EXTI15_10 = 40, | ||
| 59 | EXTI2 = 8, | ||
| 60 | EXTI3 = 9, | ||
| 61 | EXTI4 = 10, | ||
| 62 | EXTI9_5 = 23, | ||
| 63 | FLASH = 4, | ||
| 64 | FMC = 48, | ||
| 65 | FPU = 81, | ||
| 66 | HASH_CRS = 82, | ||
| 67 | I2C1_ER = 32, | ||
| 68 | I2C1_EV = 31, | ||
| 69 | I2C2_ER = 34, | ||
| 70 | I2C2_EV = 33, | ||
| 71 | I2C3_ER = 73, | ||
| 72 | I2C3_EV = 72, | ||
| 73 | I2C4_ER = 83, | ||
| 74 | I2C4_EV = 84, | ||
| 75 | LPTIM1 = 65, | ||
| 76 | LPTIM2 = 66, | ||
| 77 | LPUART1 = 70, | ||
| 78 | LTDC = 91, | ||
| 79 | LTDC_ER = 92, | ||
| 80 | OCTOSPI1 = 71, | ||
| 81 | OCTOSPI2 = 76, | ||
| 82 | OTG_FS = 67, | ||
| 83 | PVD_PVM = 1, | ||
| 84 | RCC = 5, | ||
| 85 | RNG = 80, | ||
| 86 | RTC_Alarm = 41, | ||
| 87 | RTC_WKUP = 3, | ||
| 88 | SAI1 = 74, | ||
| 89 | SAI2 = 75, | ||
| 90 | SDMMC1 = 49, | ||
| 91 | SDMMC2 = 47, | ||
| 92 | SPI1 = 35, | ||
| 93 | SPI2 = 36, | ||
| 94 | SPI3 = 51, | ||
| 95 | TAMP_STAMP = 2, | ||
| 96 | TIM1_BRK_TIM15 = 24, | ||
| 97 | TIM1_CC = 27, | ||
| 98 | TIM1_TRG_COM_TIM17 = 26, | ||
| 99 | TIM1_UP_TIM16 = 25, | ||
| 100 | TIM2 = 28, | ||
| 101 | TIM3 = 29, | ||
| 102 | TIM4 = 30, | ||
| 103 | TIM5 = 50, | ||
| 104 | TIM6_DAC = 54, | ||
| 105 | TIM7 = 55, | ||
| 106 | TIM8_BRK = 43, | ||
| 107 | TIM8_CC = 46, | ||
| 108 | TIM8_TRG_COM = 45, | ||
| 109 | TIM8_UP = 44, | ||
| 110 | TSC = 77, | ||
| 111 | UART4 = 52, | ||
| 112 | UART5 = 53, | ||
| 113 | USART1 = 37, | ||
| 114 | USART2 = 38, | ||
| 115 | USART3 = 39, | ||
| 116 | WWDG = 0, | ||
| 117 | } | ||
| 118 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 119 | #[inline(always)] | ||
| 120 | fn number(self) -> u16 { | ||
| 121 | self as u16 | ||
| 122 | } | ||
| 123 | } | ||
| 124 | |||
| 125 | declare!(ADC1_2); | ||
| 126 | declare!(CAN1_RX0); | ||
| 127 | declare!(CAN1_RX1); | ||
| 128 | declare!(CAN1_SCE); | ||
| 129 | declare!(CAN1_TX); | ||
| 130 | declare!(COMP); | ||
| 131 | declare!(DCMI_PSSI); | ||
| 132 | declare!(DFSDM1_FLT0); | ||
| 133 | declare!(DFSDM1_FLT1); | ||
| 134 | declare!(DMA1_Channel1); | ||
| 135 | declare!(DMA1_Channel2); | ||
| 136 | declare!(DMA1_Channel3); | ||
| 137 | declare!(DMA1_Channel4); | ||
| 138 | declare!(DMA1_Channel5); | ||
| 139 | declare!(DMA1_Channel6); | ||
| 140 | declare!(DMA1_Channel7); | ||
| 141 | declare!(DMA2D); | ||
| 142 | declare!(DMA2_Channel1); | ||
| 143 | declare!(DMA2_Channel2); | ||
| 144 | declare!(DMA2_Channel3); | ||
| 145 | declare!(DMA2_Channel4); | ||
| 146 | declare!(DMA2_Channel5); | ||
| 147 | declare!(DMA2_Channel6); | ||
| 148 | declare!(DMA2_Channel7); | ||
| 149 | declare!(DMAMUX1_OVR); | ||
| 150 | declare!(EXTI0); | ||
| 151 | declare!(EXTI1); | ||
| 152 | declare!(EXTI15_10); | ||
| 153 | declare!(EXTI2); | ||
| 154 | declare!(EXTI3); | ||
| 155 | declare!(EXTI4); | ||
| 156 | declare!(EXTI9_5); | ||
| 157 | declare!(FLASH); | ||
| 158 | declare!(FMC); | ||
| 159 | declare!(FPU); | ||
| 160 | declare!(HASH_CRS); | ||
| 161 | declare!(I2C1_ER); | ||
| 162 | declare!(I2C1_EV); | ||
| 163 | declare!(I2C2_ER); | ||
| 164 | declare!(I2C2_EV); | ||
| 165 | declare!(I2C3_ER); | ||
| 166 | declare!(I2C3_EV); | ||
| 167 | declare!(I2C4_ER); | ||
| 168 | declare!(I2C4_EV); | ||
| 169 | declare!(LPTIM1); | ||
| 170 | declare!(LPTIM2); | ||
| 171 | declare!(LPUART1); | ||
| 172 | declare!(LTDC); | ||
| 173 | declare!(LTDC_ER); | ||
| 174 | declare!(OCTOSPI1); | ||
| 175 | declare!(OCTOSPI2); | ||
| 176 | declare!(OTG_FS); | ||
| 177 | declare!(PVD_PVM); | ||
| 178 | declare!(RCC); | ||
| 179 | declare!(RNG); | ||
| 180 | declare!(RTC_Alarm); | ||
| 181 | declare!(RTC_WKUP); | ||
| 182 | declare!(SAI1); | ||
| 183 | declare!(SAI2); | ||
| 184 | declare!(SDMMC1); | ||
| 185 | declare!(SDMMC2); | ||
| 186 | declare!(SPI1); | ||
| 187 | declare!(SPI2); | ||
| 188 | declare!(SPI3); | ||
| 189 | declare!(TAMP_STAMP); | ||
| 190 | declare!(TIM1_BRK_TIM15); | ||
| 191 | declare!(TIM1_CC); | ||
| 192 | declare!(TIM1_TRG_COM_TIM17); | ||
| 193 | declare!(TIM1_UP_TIM16); | ||
| 194 | declare!(TIM2); | ||
| 195 | declare!(TIM3); | ||
| 196 | declare!(TIM4); | ||
| 197 | declare!(TIM5); | ||
| 198 | declare!(TIM6_DAC); | ||
| 199 | declare!(TIM7); | ||
| 200 | declare!(TIM8_BRK); | ||
| 201 | declare!(TIM8_CC); | ||
| 202 | declare!(TIM8_TRG_COM); | ||
| 203 | declare!(TIM8_UP); | ||
| 204 | declare!(TSC); | ||
| 205 | declare!(UART4); | ||
| 206 | declare!(UART5); | ||
| 207 | declare!(USART1); | ||
| 208 | declare!(USART2); | ||
| 209 | declare!(USART3); | ||
| 210 | declare!(WWDG); | ||
| 211 | } | ||
| 212 | mod interrupt_vector { | ||
| 213 | extern "C" { | ||
| 214 | fn ADC1_2(); | ||
| 215 | fn CAN1_RX0(); | ||
| 216 | fn CAN1_RX1(); | ||
| 217 | fn CAN1_SCE(); | ||
| 218 | fn CAN1_TX(); | ||
| 219 | fn COMP(); | ||
| 220 | fn DCMI_PSSI(); | ||
| 221 | fn DFSDM1_FLT0(); | ||
| 222 | fn DFSDM1_FLT1(); | ||
| 223 | fn DMA1_Channel1(); | ||
| 224 | fn DMA1_Channel2(); | ||
| 225 | fn DMA1_Channel3(); | ||
| 226 | fn DMA1_Channel4(); | ||
| 227 | fn DMA1_Channel5(); | ||
| 228 | fn DMA1_Channel6(); | ||
| 229 | fn DMA1_Channel7(); | ||
| 230 | fn DMA2D(); | ||
| 231 | fn DMA2_Channel1(); | ||
| 232 | fn DMA2_Channel2(); | ||
| 233 | fn DMA2_Channel3(); | ||
| 234 | fn DMA2_Channel4(); | ||
| 235 | fn DMA2_Channel5(); | ||
| 236 | fn DMA2_Channel6(); | ||
| 237 | fn DMA2_Channel7(); | ||
| 238 | fn DMAMUX1_OVR(); | ||
| 239 | fn EXTI0(); | ||
| 240 | fn EXTI1(); | ||
| 241 | fn EXTI15_10(); | ||
| 242 | fn EXTI2(); | ||
| 243 | fn EXTI3(); | ||
| 244 | fn EXTI4(); | ||
| 245 | fn EXTI9_5(); | ||
| 246 | fn FLASH(); | ||
| 247 | fn FMC(); | ||
| 248 | fn FPU(); | ||
| 249 | fn HASH_CRS(); | ||
| 250 | fn I2C1_ER(); | ||
| 251 | fn I2C1_EV(); | ||
| 252 | fn I2C2_ER(); | ||
| 253 | fn I2C2_EV(); | ||
| 254 | fn I2C3_ER(); | ||
| 255 | fn I2C3_EV(); | ||
| 256 | fn I2C4_ER(); | ||
| 257 | fn I2C4_EV(); | ||
| 258 | fn LPTIM1(); | ||
| 259 | fn LPTIM2(); | ||
| 260 | fn LPUART1(); | ||
| 261 | fn LTDC(); | ||
| 262 | fn LTDC_ER(); | ||
| 263 | fn OCTOSPI1(); | ||
| 264 | fn OCTOSPI2(); | ||
| 265 | fn OTG_FS(); | ||
| 266 | fn PVD_PVM(); | ||
| 267 | fn RCC(); | ||
| 268 | fn RNG(); | ||
| 269 | fn RTC_Alarm(); | ||
| 270 | fn RTC_WKUP(); | ||
| 271 | fn SAI1(); | ||
| 272 | fn SAI2(); | ||
| 273 | fn SDMMC1(); | ||
| 274 | fn SDMMC2(); | ||
| 275 | fn SPI1(); | ||
| 276 | fn SPI2(); | ||
| 277 | fn SPI3(); | ||
| 278 | fn TAMP_STAMP(); | ||
| 279 | fn TIM1_BRK_TIM15(); | ||
| 280 | fn TIM1_CC(); | ||
| 281 | fn TIM1_TRG_COM_TIM17(); | ||
| 282 | fn TIM1_UP_TIM16(); | ||
| 283 | fn TIM2(); | ||
| 284 | fn TIM3(); | ||
| 285 | fn TIM4(); | ||
| 286 | fn TIM5(); | ||
| 287 | fn TIM6_DAC(); | ||
| 288 | fn TIM7(); | ||
| 289 | fn TIM8_BRK(); | ||
| 290 | fn TIM8_CC(); | ||
| 291 | fn TIM8_TRG_COM(); | ||
| 292 | fn TIM8_UP(); | ||
| 293 | fn TSC(); | ||
| 294 | fn UART4(); | ||
| 295 | fn UART5(); | ||
| 296 | fn USART1(); | ||
| 297 | fn USART2(); | ||
| 298 | fn USART3(); | ||
| 299 | fn WWDG(); | ||
| 300 | } | ||
| 301 | pub union Vector { | ||
| 302 | _handler: unsafe extern "C" fn(), | ||
| 303 | _reserved: u32, | ||
| 304 | } | ||
| 305 | #[link_section = ".vector_table.interrupts"] | ||
| 306 | #[no_mangle] | ||
| 307 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 308 | Vector { _handler: WWDG }, | ||
| 309 | Vector { _handler: PVD_PVM }, | ||
| 310 | Vector { | ||
| 311 | _handler: TAMP_STAMP, | ||
| 312 | }, | ||
| 313 | Vector { _handler: RTC_WKUP }, | ||
| 314 | Vector { _handler: FLASH }, | ||
| 315 | Vector { _handler: RCC }, | ||
| 316 | Vector { _handler: EXTI0 }, | ||
| 317 | Vector { _handler: EXTI1 }, | ||
| 318 | Vector { _handler: EXTI2 }, | ||
| 319 | Vector { _handler: EXTI3 }, | ||
| 320 | Vector { _handler: EXTI4 }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel1, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel2, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel3, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel4, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel5, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel6, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel7, | ||
| 341 | }, | ||
| 342 | Vector { _handler: ADC1_2 }, | ||
| 343 | Vector { _handler: CAN1_TX }, | ||
| 344 | Vector { _handler: CAN1_RX0 }, | ||
| 345 | Vector { _handler: CAN1_RX1 }, | ||
| 346 | Vector { _handler: CAN1_SCE }, | ||
| 347 | Vector { _handler: EXTI9_5 }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_BRK_TIM15, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_UP_TIM16, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_TRG_COM_TIM17, | ||
| 356 | }, | ||
| 357 | Vector { _handler: TIM1_CC }, | ||
| 358 | Vector { _handler: TIM2 }, | ||
| 359 | Vector { _handler: TIM3 }, | ||
| 360 | Vector { _handler: TIM4 }, | ||
| 361 | Vector { _handler: I2C1_EV }, | ||
| 362 | Vector { _handler: I2C1_ER }, | ||
| 363 | Vector { _handler: I2C2_EV }, | ||
| 364 | Vector { _handler: I2C2_ER }, | ||
| 365 | Vector { _handler: SPI1 }, | ||
| 366 | Vector { _handler: SPI2 }, | ||
| 367 | Vector { _handler: USART1 }, | ||
| 368 | Vector { _handler: USART2 }, | ||
| 369 | Vector { _handler: USART3 }, | ||
| 370 | Vector { | ||
| 371 | _handler: EXTI15_10, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: RTC_Alarm, | ||
| 375 | }, | ||
| 376 | Vector { _reserved: 0 }, | ||
| 377 | Vector { _handler: TIM8_BRK }, | ||
| 378 | Vector { _handler: TIM8_UP }, | ||
| 379 | Vector { | ||
| 380 | _handler: TIM8_TRG_COM, | ||
| 381 | }, | ||
| 382 | Vector { _handler: TIM8_CC }, | ||
| 383 | Vector { _handler: SDMMC2 }, | ||
| 384 | Vector { _handler: FMC }, | ||
| 385 | Vector { _handler: SDMMC1 }, | ||
| 386 | Vector { _handler: TIM5 }, | ||
| 387 | Vector { _handler: SPI3 }, | ||
| 388 | Vector { _handler: UART4 }, | ||
| 389 | Vector { _handler: UART5 }, | ||
| 390 | Vector { _handler: TIM6_DAC }, | ||
| 391 | Vector { _handler: TIM7 }, | ||
| 392 | Vector { | ||
| 393 | _handler: DMA2_Channel1, | ||
| 394 | }, | ||
| 395 | Vector { | ||
| 396 | _handler: DMA2_Channel2, | ||
| 397 | }, | ||
| 398 | Vector { | ||
| 399 | _handler: DMA2_Channel3, | ||
| 400 | }, | ||
| 401 | Vector { | ||
| 402 | _handler: DMA2_Channel4, | ||
| 403 | }, | ||
| 404 | Vector { | ||
| 405 | _handler: DMA2_Channel5, | ||
| 406 | }, | ||
| 407 | Vector { | ||
| 408 | _handler: DFSDM1_FLT0, | ||
| 409 | }, | ||
| 410 | Vector { | ||
| 411 | _handler: DFSDM1_FLT1, | ||
| 412 | }, | ||
| 413 | Vector { _reserved: 0 }, | ||
| 414 | Vector { _handler: COMP }, | ||
| 415 | Vector { _handler: LPTIM1 }, | ||
| 416 | Vector { _handler: LPTIM2 }, | ||
| 417 | Vector { _handler: OTG_FS }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel6, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DMA2_Channel7, | ||
| 423 | }, | ||
| 424 | Vector { _handler: LPUART1 }, | ||
| 425 | Vector { _handler: OCTOSPI1 }, | ||
| 426 | Vector { _handler: I2C3_EV }, | ||
| 427 | Vector { _handler: I2C3_ER }, | ||
| 428 | Vector { _handler: SAI1 }, | ||
| 429 | Vector { _handler: SAI2 }, | ||
| 430 | Vector { _handler: OCTOSPI2 }, | ||
| 431 | Vector { _handler: TSC }, | ||
| 432 | Vector { _reserved: 0 }, | ||
| 433 | Vector { _reserved: 0 }, | ||
| 434 | Vector { _handler: RNG }, | ||
| 435 | Vector { _handler: FPU }, | ||
| 436 | Vector { _handler: HASH_CRS }, | ||
| 437 | Vector { _handler: I2C4_ER }, | ||
| 438 | Vector { _handler: I2C4_EV }, | ||
| 439 | Vector { | ||
| 440 | _handler: DCMI_PSSI, | ||
| 441 | }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _reserved: 0 }, | ||
| 446 | Vector { _handler: DMA2D }, | ||
| 447 | Vector { _handler: LTDC }, | ||
| 448 | Vector { _handler: LTDC_ER }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { | ||
| 451 | _handler: DMAMUX1_OVR, | ||
| 452 | }, | ||
| 453 | ]; | ||
| 454 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 455 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 456 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 457 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4p5ve.rs b/embassy-stm32/src/chip/stm32l4p5ve.rs index 6d2a25917..66034e537 100644 --- a/embassy-stm32/src/chip/stm32l4p5ve.rs +++ b/embassy-stm32/src/chip/stm32l4p5ve.rs | |||
| @@ -1,22 +1,457 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, | 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, |
| 14 | OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, SPI2, SPI3, | 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, |
| 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, | 15 | SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, |
| 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG | 16 | UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DCMI_PSSI = 85, | ||
| 38 | DFSDM1_FLT0 = 61, | ||
| 39 | DFSDM1_FLT1 = 62, | ||
| 40 | DMA1_Channel1 = 11, | ||
| 41 | DMA1_Channel2 = 12, | ||
| 42 | DMA1_Channel3 = 13, | ||
| 43 | DMA1_Channel4 = 14, | ||
| 44 | DMA1_Channel5 = 15, | ||
| 45 | DMA1_Channel6 = 16, | ||
| 46 | DMA1_Channel7 = 17, | ||
| 47 | DMA2D = 90, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | DMAMUX1_OVR = 94, | ||
| 56 | EXTI0 = 6, | ||
| 57 | EXTI1 = 7, | ||
| 58 | EXTI15_10 = 40, | ||
| 59 | EXTI2 = 8, | ||
| 60 | EXTI3 = 9, | ||
| 61 | EXTI4 = 10, | ||
| 62 | EXTI9_5 = 23, | ||
| 63 | FLASH = 4, | ||
| 64 | FMC = 48, | ||
| 65 | FPU = 81, | ||
| 66 | HASH_CRS = 82, | ||
| 67 | I2C1_ER = 32, | ||
| 68 | I2C1_EV = 31, | ||
| 69 | I2C2_ER = 34, | ||
| 70 | I2C2_EV = 33, | ||
| 71 | I2C3_ER = 73, | ||
| 72 | I2C3_EV = 72, | ||
| 73 | I2C4_ER = 83, | ||
| 74 | I2C4_EV = 84, | ||
| 75 | LPTIM1 = 65, | ||
| 76 | LPTIM2 = 66, | ||
| 77 | LPUART1 = 70, | ||
| 78 | LTDC = 91, | ||
| 79 | LTDC_ER = 92, | ||
| 80 | OCTOSPI1 = 71, | ||
| 81 | OCTOSPI2 = 76, | ||
| 82 | OTG_FS = 67, | ||
| 83 | PVD_PVM = 1, | ||
| 84 | RCC = 5, | ||
| 85 | RNG = 80, | ||
| 86 | RTC_Alarm = 41, | ||
| 87 | RTC_WKUP = 3, | ||
| 88 | SAI1 = 74, | ||
| 89 | SAI2 = 75, | ||
| 90 | SDMMC1 = 49, | ||
| 91 | SDMMC2 = 47, | ||
| 92 | SPI1 = 35, | ||
| 93 | SPI2 = 36, | ||
| 94 | SPI3 = 51, | ||
| 95 | TAMP_STAMP = 2, | ||
| 96 | TIM1_BRK_TIM15 = 24, | ||
| 97 | TIM1_CC = 27, | ||
| 98 | TIM1_TRG_COM_TIM17 = 26, | ||
| 99 | TIM1_UP_TIM16 = 25, | ||
| 100 | TIM2 = 28, | ||
| 101 | TIM3 = 29, | ||
| 102 | TIM4 = 30, | ||
| 103 | TIM5 = 50, | ||
| 104 | TIM6_DAC = 54, | ||
| 105 | TIM7 = 55, | ||
| 106 | TIM8_BRK = 43, | ||
| 107 | TIM8_CC = 46, | ||
| 108 | TIM8_TRG_COM = 45, | ||
| 109 | TIM8_UP = 44, | ||
| 110 | TSC = 77, | ||
| 111 | UART4 = 52, | ||
| 112 | UART5 = 53, | ||
| 113 | USART1 = 37, | ||
| 114 | USART2 = 38, | ||
| 115 | USART3 = 39, | ||
| 116 | WWDG = 0, | ||
| 117 | } | ||
| 118 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 119 | #[inline(always)] | ||
| 120 | fn number(self) -> u16 { | ||
| 121 | self as u16 | ||
| 122 | } | ||
| 123 | } | ||
| 124 | |||
| 125 | declare!(ADC1_2); | ||
| 126 | declare!(CAN1_RX0); | ||
| 127 | declare!(CAN1_RX1); | ||
| 128 | declare!(CAN1_SCE); | ||
| 129 | declare!(CAN1_TX); | ||
| 130 | declare!(COMP); | ||
| 131 | declare!(DCMI_PSSI); | ||
| 132 | declare!(DFSDM1_FLT0); | ||
| 133 | declare!(DFSDM1_FLT1); | ||
| 134 | declare!(DMA1_Channel1); | ||
| 135 | declare!(DMA1_Channel2); | ||
| 136 | declare!(DMA1_Channel3); | ||
| 137 | declare!(DMA1_Channel4); | ||
| 138 | declare!(DMA1_Channel5); | ||
| 139 | declare!(DMA1_Channel6); | ||
| 140 | declare!(DMA1_Channel7); | ||
| 141 | declare!(DMA2D); | ||
| 142 | declare!(DMA2_Channel1); | ||
| 143 | declare!(DMA2_Channel2); | ||
| 144 | declare!(DMA2_Channel3); | ||
| 145 | declare!(DMA2_Channel4); | ||
| 146 | declare!(DMA2_Channel5); | ||
| 147 | declare!(DMA2_Channel6); | ||
| 148 | declare!(DMA2_Channel7); | ||
| 149 | declare!(DMAMUX1_OVR); | ||
| 150 | declare!(EXTI0); | ||
| 151 | declare!(EXTI1); | ||
| 152 | declare!(EXTI15_10); | ||
| 153 | declare!(EXTI2); | ||
| 154 | declare!(EXTI3); | ||
| 155 | declare!(EXTI4); | ||
| 156 | declare!(EXTI9_5); | ||
| 157 | declare!(FLASH); | ||
| 158 | declare!(FMC); | ||
| 159 | declare!(FPU); | ||
| 160 | declare!(HASH_CRS); | ||
| 161 | declare!(I2C1_ER); | ||
| 162 | declare!(I2C1_EV); | ||
| 163 | declare!(I2C2_ER); | ||
| 164 | declare!(I2C2_EV); | ||
| 165 | declare!(I2C3_ER); | ||
| 166 | declare!(I2C3_EV); | ||
| 167 | declare!(I2C4_ER); | ||
| 168 | declare!(I2C4_EV); | ||
| 169 | declare!(LPTIM1); | ||
| 170 | declare!(LPTIM2); | ||
| 171 | declare!(LPUART1); | ||
| 172 | declare!(LTDC); | ||
| 173 | declare!(LTDC_ER); | ||
| 174 | declare!(OCTOSPI1); | ||
| 175 | declare!(OCTOSPI2); | ||
| 176 | declare!(OTG_FS); | ||
| 177 | declare!(PVD_PVM); | ||
| 178 | declare!(RCC); | ||
| 179 | declare!(RNG); | ||
| 180 | declare!(RTC_Alarm); | ||
| 181 | declare!(RTC_WKUP); | ||
| 182 | declare!(SAI1); | ||
| 183 | declare!(SAI2); | ||
| 184 | declare!(SDMMC1); | ||
| 185 | declare!(SDMMC2); | ||
| 186 | declare!(SPI1); | ||
| 187 | declare!(SPI2); | ||
| 188 | declare!(SPI3); | ||
| 189 | declare!(TAMP_STAMP); | ||
| 190 | declare!(TIM1_BRK_TIM15); | ||
| 191 | declare!(TIM1_CC); | ||
| 192 | declare!(TIM1_TRG_COM_TIM17); | ||
| 193 | declare!(TIM1_UP_TIM16); | ||
| 194 | declare!(TIM2); | ||
| 195 | declare!(TIM3); | ||
| 196 | declare!(TIM4); | ||
| 197 | declare!(TIM5); | ||
| 198 | declare!(TIM6_DAC); | ||
| 199 | declare!(TIM7); | ||
| 200 | declare!(TIM8_BRK); | ||
| 201 | declare!(TIM8_CC); | ||
| 202 | declare!(TIM8_TRG_COM); | ||
| 203 | declare!(TIM8_UP); | ||
| 204 | declare!(TSC); | ||
| 205 | declare!(UART4); | ||
| 206 | declare!(UART5); | ||
| 207 | declare!(USART1); | ||
| 208 | declare!(USART2); | ||
| 209 | declare!(USART3); | ||
| 210 | declare!(WWDG); | ||
| 211 | } | ||
| 212 | mod interrupt_vector { | ||
| 213 | extern "C" { | ||
| 214 | fn ADC1_2(); | ||
| 215 | fn CAN1_RX0(); | ||
| 216 | fn CAN1_RX1(); | ||
| 217 | fn CAN1_SCE(); | ||
| 218 | fn CAN1_TX(); | ||
| 219 | fn COMP(); | ||
| 220 | fn DCMI_PSSI(); | ||
| 221 | fn DFSDM1_FLT0(); | ||
| 222 | fn DFSDM1_FLT1(); | ||
| 223 | fn DMA1_Channel1(); | ||
| 224 | fn DMA1_Channel2(); | ||
| 225 | fn DMA1_Channel3(); | ||
| 226 | fn DMA1_Channel4(); | ||
| 227 | fn DMA1_Channel5(); | ||
| 228 | fn DMA1_Channel6(); | ||
| 229 | fn DMA1_Channel7(); | ||
| 230 | fn DMA2D(); | ||
| 231 | fn DMA2_Channel1(); | ||
| 232 | fn DMA2_Channel2(); | ||
| 233 | fn DMA2_Channel3(); | ||
| 234 | fn DMA2_Channel4(); | ||
| 235 | fn DMA2_Channel5(); | ||
| 236 | fn DMA2_Channel6(); | ||
| 237 | fn DMA2_Channel7(); | ||
| 238 | fn DMAMUX1_OVR(); | ||
| 239 | fn EXTI0(); | ||
| 240 | fn EXTI1(); | ||
| 241 | fn EXTI15_10(); | ||
| 242 | fn EXTI2(); | ||
| 243 | fn EXTI3(); | ||
| 244 | fn EXTI4(); | ||
| 245 | fn EXTI9_5(); | ||
| 246 | fn FLASH(); | ||
| 247 | fn FMC(); | ||
| 248 | fn FPU(); | ||
| 249 | fn HASH_CRS(); | ||
| 250 | fn I2C1_ER(); | ||
| 251 | fn I2C1_EV(); | ||
| 252 | fn I2C2_ER(); | ||
| 253 | fn I2C2_EV(); | ||
| 254 | fn I2C3_ER(); | ||
| 255 | fn I2C3_EV(); | ||
| 256 | fn I2C4_ER(); | ||
| 257 | fn I2C4_EV(); | ||
| 258 | fn LPTIM1(); | ||
| 259 | fn LPTIM2(); | ||
| 260 | fn LPUART1(); | ||
| 261 | fn LTDC(); | ||
| 262 | fn LTDC_ER(); | ||
| 263 | fn OCTOSPI1(); | ||
| 264 | fn OCTOSPI2(); | ||
| 265 | fn OTG_FS(); | ||
| 266 | fn PVD_PVM(); | ||
| 267 | fn RCC(); | ||
| 268 | fn RNG(); | ||
| 269 | fn RTC_Alarm(); | ||
| 270 | fn RTC_WKUP(); | ||
| 271 | fn SAI1(); | ||
| 272 | fn SAI2(); | ||
| 273 | fn SDMMC1(); | ||
| 274 | fn SDMMC2(); | ||
| 275 | fn SPI1(); | ||
| 276 | fn SPI2(); | ||
| 277 | fn SPI3(); | ||
| 278 | fn TAMP_STAMP(); | ||
| 279 | fn TIM1_BRK_TIM15(); | ||
| 280 | fn TIM1_CC(); | ||
| 281 | fn TIM1_TRG_COM_TIM17(); | ||
| 282 | fn TIM1_UP_TIM16(); | ||
| 283 | fn TIM2(); | ||
| 284 | fn TIM3(); | ||
| 285 | fn TIM4(); | ||
| 286 | fn TIM5(); | ||
| 287 | fn TIM6_DAC(); | ||
| 288 | fn TIM7(); | ||
| 289 | fn TIM8_BRK(); | ||
| 290 | fn TIM8_CC(); | ||
| 291 | fn TIM8_TRG_COM(); | ||
| 292 | fn TIM8_UP(); | ||
| 293 | fn TSC(); | ||
| 294 | fn UART4(); | ||
| 295 | fn UART5(); | ||
| 296 | fn USART1(); | ||
| 297 | fn USART2(); | ||
| 298 | fn USART3(); | ||
| 299 | fn WWDG(); | ||
| 300 | } | ||
| 301 | pub union Vector { | ||
| 302 | _handler: unsafe extern "C" fn(), | ||
| 303 | _reserved: u32, | ||
| 304 | } | ||
| 305 | #[link_section = ".vector_table.interrupts"] | ||
| 306 | #[no_mangle] | ||
| 307 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 308 | Vector { _handler: WWDG }, | ||
| 309 | Vector { _handler: PVD_PVM }, | ||
| 310 | Vector { | ||
| 311 | _handler: TAMP_STAMP, | ||
| 312 | }, | ||
| 313 | Vector { _handler: RTC_WKUP }, | ||
| 314 | Vector { _handler: FLASH }, | ||
| 315 | Vector { _handler: RCC }, | ||
| 316 | Vector { _handler: EXTI0 }, | ||
| 317 | Vector { _handler: EXTI1 }, | ||
| 318 | Vector { _handler: EXTI2 }, | ||
| 319 | Vector { _handler: EXTI3 }, | ||
| 320 | Vector { _handler: EXTI4 }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel1, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel2, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel3, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel4, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel5, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel6, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel7, | ||
| 341 | }, | ||
| 342 | Vector { _handler: ADC1_2 }, | ||
| 343 | Vector { _handler: CAN1_TX }, | ||
| 344 | Vector { _handler: CAN1_RX0 }, | ||
| 345 | Vector { _handler: CAN1_RX1 }, | ||
| 346 | Vector { _handler: CAN1_SCE }, | ||
| 347 | Vector { _handler: EXTI9_5 }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_BRK_TIM15, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_UP_TIM16, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_TRG_COM_TIM17, | ||
| 356 | }, | ||
| 357 | Vector { _handler: TIM1_CC }, | ||
| 358 | Vector { _handler: TIM2 }, | ||
| 359 | Vector { _handler: TIM3 }, | ||
| 360 | Vector { _handler: TIM4 }, | ||
| 361 | Vector { _handler: I2C1_EV }, | ||
| 362 | Vector { _handler: I2C1_ER }, | ||
| 363 | Vector { _handler: I2C2_EV }, | ||
| 364 | Vector { _handler: I2C2_ER }, | ||
| 365 | Vector { _handler: SPI1 }, | ||
| 366 | Vector { _handler: SPI2 }, | ||
| 367 | Vector { _handler: USART1 }, | ||
| 368 | Vector { _handler: USART2 }, | ||
| 369 | Vector { _handler: USART3 }, | ||
| 370 | Vector { | ||
| 371 | _handler: EXTI15_10, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: RTC_Alarm, | ||
| 375 | }, | ||
| 376 | Vector { _reserved: 0 }, | ||
| 377 | Vector { _handler: TIM8_BRK }, | ||
| 378 | Vector { _handler: TIM8_UP }, | ||
| 379 | Vector { | ||
| 380 | _handler: TIM8_TRG_COM, | ||
| 381 | }, | ||
| 382 | Vector { _handler: TIM8_CC }, | ||
| 383 | Vector { _handler: SDMMC2 }, | ||
| 384 | Vector { _handler: FMC }, | ||
| 385 | Vector { _handler: SDMMC1 }, | ||
| 386 | Vector { _handler: TIM5 }, | ||
| 387 | Vector { _handler: SPI3 }, | ||
| 388 | Vector { _handler: UART4 }, | ||
| 389 | Vector { _handler: UART5 }, | ||
| 390 | Vector { _handler: TIM6_DAC }, | ||
| 391 | Vector { _handler: TIM7 }, | ||
| 392 | Vector { | ||
| 393 | _handler: DMA2_Channel1, | ||
| 394 | }, | ||
| 395 | Vector { | ||
| 396 | _handler: DMA2_Channel2, | ||
| 397 | }, | ||
| 398 | Vector { | ||
| 399 | _handler: DMA2_Channel3, | ||
| 400 | }, | ||
| 401 | Vector { | ||
| 402 | _handler: DMA2_Channel4, | ||
| 403 | }, | ||
| 404 | Vector { | ||
| 405 | _handler: DMA2_Channel5, | ||
| 406 | }, | ||
| 407 | Vector { | ||
| 408 | _handler: DFSDM1_FLT0, | ||
| 409 | }, | ||
| 410 | Vector { | ||
| 411 | _handler: DFSDM1_FLT1, | ||
| 412 | }, | ||
| 413 | Vector { _reserved: 0 }, | ||
| 414 | Vector { _handler: COMP }, | ||
| 415 | Vector { _handler: LPTIM1 }, | ||
| 416 | Vector { _handler: LPTIM2 }, | ||
| 417 | Vector { _handler: OTG_FS }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel6, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DMA2_Channel7, | ||
| 423 | }, | ||
| 424 | Vector { _handler: LPUART1 }, | ||
| 425 | Vector { _handler: OCTOSPI1 }, | ||
| 426 | Vector { _handler: I2C3_EV }, | ||
| 427 | Vector { _handler: I2C3_ER }, | ||
| 428 | Vector { _handler: SAI1 }, | ||
| 429 | Vector { _handler: SAI2 }, | ||
| 430 | Vector { _handler: OCTOSPI2 }, | ||
| 431 | Vector { _handler: TSC }, | ||
| 432 | Vector { _reserved: 0 }, | ||
| 433 | Vector { _reserved: 0 }, | ||
| 434 | Vector { _handler: RNG }, | ||
| 435 | Vector { _handler: FPU }, | ||
| 436 | Vector { _handler: HASH_CRS }, | ||
| 437 | Vector { _handler: I2C4_ER }, | ||
| 438 | Vector { _handler: I2C4_EV }, | ||
| 439 | Vector { | ||
| 440 | _handler: DCMI_PSSI, | ||
| 441 | }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _reserved: 0 }, | ||
| 446 | Vector { _handler: DMA2D }, | ||
| 447 | Vector { _handler: LTDC }, | ||
| 448 | Vector { _handler: LTDC_ER }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { | ||
| 451 | _handler: DMAMUX1_OVR, | ||
| 452 | }, | ||
| 453 | ]; | ||
| 454 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 455 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 456 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 457 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4p5vg.rs b/embassy-stm32/src/chip/stm32l4p5vg.rs index 6d2a25917..66034e537 100644 --- a/embassy-stm32/src/chip/stm32l4p5vg.rs +++ b/embassy-stm32/src/chip/stm32l4p5vg.rs | |||
| @@ -1,22 +1,457 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, | 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, |
| 14 | OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, SPI2, SPI3, | 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, |
| 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, | 15 | SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, |
| 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG | 16 | UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DCMI_PSSI = 85, | ||
| 38 | DFSDM1_FLT0 = 61, | ||
| 39 | DFSDM1_FLT1 = 62, | ||
| 40 | DMA1_Channel1 = 11, | ||
| 41 | DMA1_Channel2 = 12, | ||
| 42 | DMA1_Channel3 = 13, | ||
| 43 | DMA1_Channel4 = 14, | ||
| 44 | DMA1_Channel5 = 15, | ||
| 45 | DMA1_Channel6 = 16, | ||
| 46 | DMA1_Channel7 = 17, | ||
| 47 | DMA2D = 90, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | DMAMUX1_OVR = 94, | ||
| 56 | EXTI0 = 6, | ||
| 57 | EXTI1 = 7, | ||
| 58 | EXTI15_10 = 40, | ||
| 59 | EXTI2 = 8, | ||
| 60 | EXTI3 = 9, | ||
| 61 | EXTI4 = 10, | ||
| 62 | EXTI9_5 = 23, | ||
| 63 | FLASH = 4, | ||
| 64 | FMC = 48, | ||
| 65 | FPU = 81, | ||
| 66 | HASH_CRS = 82, | ||
| 67 | I2C1_ER = 32, | ||
| 68 | I2C1_EV = 31, | ||
| 69 | I2C2_ER = 34, | ||
| 70 | I2C2_EV = 33, | ||
| 71 | I2C3_ER = 73, | ||
| 72 | I2C3_EV = 72, | ||
| 73 | I2C4_ER = 83, | ||
| 74 | I2C4_EV = 84, | ||
| 75 | LPTIM1 = 65, | ||
| 76 | LPTIM2 = 66, | ||
| 77 | LPUART1 = 70, | ||
| 78 | LTDC = 91, | ||
| 79 | LTDC_ER = 92, | ||
| 80 | OCTOSPI1 = 71, | ||
| 81 | OCTOSPI2 = 76, | ||
| 82 | OTG_FS = 67, | ||
| 83 | PVD_PVM = 1, | ||
| 84 | RCC = 5, | ||
| 85 | RNG = 80, | ||
| 86 | RTC_Alarm = 41, | ||
| 87 | RTC_WKUP = 3, | ||
| 88 | SAI1 = 74, | ||
| 89 | SAI2 = 75, | ||
| 90 | SDMMC1 = 49, | ||
| 91 | SDMMC2 = 47, | ||
| 92 | SPI1 = 35, | ||
| 93 | SPI2 = 36, | ||
| 94 | SPI3 = 51, | ||
| 95 | TAMP_STAMP = 2, | ||
| 96 | TIM1_BRK_TIM15 = 24, | ||
| 97 | TIM1_CC = 27, | ||
| 98 | TIM1_TRG_COM_TIM17 = 26, | ||
| 99 | TIM1_UP_TIM16 = 25, | ||
| 100 | TIM2 = 28, | ||
| 101 | TIM3 = 29, | ||
| 102 | TIM4 = 30, | ||
| 103 | TIM5 = 50, | ||
| 104 | TIM6_DAC = 54, | ||
| 105 | TIM7 = 55, | ||
| 106 | TIM8_BRK = 43, | ||
| 107 | TIM8_CC = 46, | ||
| 108 | TIM8_TRG_COM = 45, | ||
| 109 | TIM8_UP = 44, | ||
| 110 | TSC = 77, | ||
| 111 | UART4 = 52, | ||
| 112 | UART5 = 53, | ||
| 113 | USART1 = 37, | ||
| 114 | USART2 = 38, | ||
| 115 | USART3 = 39, | ||
| 116 | WWDG = 0, | ||
| 117 | } | ||
| 118 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 119 | #[inline(always)] | ||
| 120 | fn number(self) -> u16 { | ||
| 121 | self as u16 | ||
| 122 | } | ||
| 123 | } | ||
| 124 | |||
| 125 | declare!(ADC1_2); | ||
| 126 | declare!(CAN1_RX0); | ||
| 127 | declare!(CAN1_RX1); | ||
| 128 | declare!(CAN1_SCE); | ||
| 129 | declare!(CAN1_TX); | ||
| 130 | declare!(COMP); | ||
| 131 | declare!(DCMI_PSSI); | ||
| 132 | declare!(DFSDM1_FLT0); | ||
| 133 | declare!(DFSDM1_FLT1); | ||
| 134 | declare!(DMA1_Channel1); | ||
| 135 | declare!(DMA1_Channel2); | ||
| 136 | declare!(DMA1_Channel3); | ||
| 137 | declare!(DMA1_Channel4); | ||
| 138 | declare!(DMA1_Channel5); | ||
| 139 | declare!(DMA1_Channel6); | ||
| 140 | declare!(DMA1_Channel7); | ||
| 141 | declare!(DMA2D); | ||
| 142 | declare!(DMA2_Channel1); | ||
| 143 | declare!(DMA2_Channel2); | ||
| 144 | declare!(DMA2_Channel3); | ||
| 145 | declare!(DMA2_Channel4); | ||
| 146 | declare!(DMA2_Channel5); | ||
| 147 | declare!(DMA2_Channel6); | ||
| 148 | declare!(DMA2_Channel7); | ||
| 149 | declare!(DMAMUX1_OVR); | ||
| 150 | declare!(EXTI0); | ||
| 151 | declare!(EXTI1); | ||
| 152 | declare!(EXTI15_10); | ||
| 153 | declare!(EXTI2); | ||
| 154 | declare!(EXTI3); | ||
| 155 | declare!(EXTI4); | ||
| 156 | declare!(EXTI9_5); | ||
| 157 | declare!(FLASH); | ||
| 158 | declare!(FMC); | ||
| 159 | declare!(FPU); | ||
| 160 | declare!(HASH_CRS); | ||
| 161 | declare!(I2C1_ER); | ||
| 162 | declare!(I2C1_EV); | ||
| 163 | declare!(I2C2_ER); | ||
| 164 | declare!(I2C2_EV); | ||
| 165 | declare!(I2C3_ER); | ||
| 166 | declare!(I2C3_EV); | ||
| 167 | declare!(I2C4_ER); | ||
| 168 | declare!(I2C4_EV); | ||
| 169 | declare!(LPTIM1); | ||
| 170 | declare!(LPTIM2); | ||
| 171 | declare!(LPUART1); | ||
| 172 | declare!(LTDC); | ||
| 173 | declare!(LTDC_ER); | ||
| 174 | declare!(OCTOSPI1); | ||
| 175 | declare!(OCTOSPI2); | ||
| 176 | declare!(OTG_FS); | ||
| 177 | declare!(PVD_PVM); | ||
| 178 | declare!(RCC); | ||
| 179 | declare!(RNG); | ||
| 180 | declare!(RTC_Alarm); | ||
| 181 | declare!(RTC_WKUP); | ||
| 182 | declare!(SAI1); | ||
| 183 | declare!(SAI2); | ||
| 184 | declare!(SDMMC1); | ||
| 185 | declare!(SDMMC2); | ||
| 186 | declare!(SPI1); | ||
| 187 | declare!(SPI2); | ||
| 188 | declare!(SPI3); | ||
| 189 | declare!(TAMP_STAMP); | ||
| 190 | declare!(TIM1_BRK_TIM15); | ||
| 191 | declare!(TIM1_CC); | ||
| 192 | declare!(TIM1_TRG_COM_TIM17); | ||
| 193 | declare!(TIM1_UP_TIM16); | ||
| 194 | declare!(TIM2); | ||
| 195 | declare!(TIM3); | ||
| 196 | declare!(TIM4); | ||
| 197 | declare!(TIM5); | ||
| 198 | declare!(TIM6_DAC); | ||
| 199 | declare!(TIM7); | ||
| 200 | declare!(TIM8_BRK); | ||
| 201 | declare!(TIM8_CC); | ||
| 202 | declare!(TIM8_TRG_COM); | ||
| 203 | declare!(TIM8_UP); | ||
| 204 | declare!(TSC); | ||
| 205 | declare!(UART4); | ||
| 206 | declare!(UART5); | ||
| 207 | declare!(USART1); | ||
| 208 | declare!(USART2); | ||
| 209 | declare!(USART3); | ||
| 210 | declare!(WWDG); | ||
| 211 | } | ||
| 212 | mod interrupt_vector { | ||
| 213 | extern "C" { | ||
| 214 | fn ADC1_2(); | ||
| 215 | fn CAN1_RX0(); | ||
| 216 | fn CAN1_RX1(); | ||
| 217 | fn CAN1_SCE(); | ||
| 218 | fn CAN1_TX(); | ||
| 219 | fn COMP(); | ||
| 220 | fn DCMI_PSSI(); | ||
| 221 | fn DFSDM1_FLT0(); | ||
| 222 | fn DFSDM1_FLT1(); | ||
| 223 | fn DMA1_Channel1(); | ||
| 224 | fn DMA1_Channel2(); | ||
| 225 | fn DMA1_Channel3(); | ||
| 226 | fn DMA1_Channel4(); | ||
| 227 | fn DMA1_Channel5(); | ||
| 228 | fn DMA1_Channel6(); | ||
| 229 | fn DMA1_Channel7(); | ||
| 230 | fn DMA2D(); | ||
| 231 | fn DMA2_Channel1(); | ||
| 232 | fn DMA2_Channel2(); | ||
| 233 | fn DMA2_Channel3(); | ||
| 234 | fn DMA2_Channel4(); | ||
| 235 | fn DMA2_Channel5(); | ||
| 236 | fn DMA2_Channel6(); | ||
| 237 | fn DMA2_Channel7(); | ||
| 238 | fn DMAMUX1_OVR(); | ||
| 239 | fn EXTI0(); | ||
| 240 | fn EXTI1(); | ||
| 241 | fn EXTI15_10(); | ||
| 242 | fn EXTI2(); | ||
| 243 | fn EXTI3(); | ||
| 244 | fn EXTI4(); | ||
| 245 | fn EXTI9_5(); | ||
| 246 | fn FLASH(); | ||
| 247 | fn FMC(); | ||
| 248 | fn FPU(); | ||
| 249 | fn HASH_CRS(); | ||
| 250 | fn I2C1_ER(); | ||
| 251 | fn I2C1_EV(); | ||
| 252 | fn I2C2_ER(); | ||
| 253 | fn I2C2_EV(); | ||
| 254 | fn I2C3_ER(); | ||
| 255 | fn I2C3_EV(); | ||
| 256 | fn I2C4_ER(); | ||
| 257 | fn I2C4_EV(); | ||
| 258 | fn LPTIM1(); | ||
| 259 | fn LPTIM2(); | ||
| 260 | fn LPUART1(); | ||
| 261 | fn LTDC(); | ||
| 262 | fn LTDC_ER(); | ||
| 263 | fn OCTOSPI1(); | ||
| 264 | fn OCTOSPI2(); | ||
| 265 | fn OTG_FS(); | ||
| 266 | fn PVD_PVM(); | ||
| 267 | fn RCC(); | ||
| 268 | fn RNG(); | ||
| 269 | fn RTC_Alarm(); | ||
| 270 | fn RTC_WKUP(); | ||
| 271 | fn SAI1(); | ||
| 272 | fn SAI2(); | ||
| 273 | fn SDMMC1(); | ||
| 274 | fn SDMMC2(); | ||
| 275 | fn SPI1(); | ||
| 276 | fn SPI2(); | ||
| 277 | fn SPI3(); | ||
| 278 | fn TAMP_STAMP(); | ||
| 279 | fn TIM1_BRK_TIM15(); | ||
| 280 | fn TIM1_CC(); | ||
| 281 | fn TIM1_TRG_COM_TIM17(); | ||
| 282 | fn TIM1_UP_TIM16(); | ||
| 283 | fn TIM2(); | ||
| 284 | fn TIM3(); | ||
| 285 | fn TIM4(); | ||
| 286 | fn TIM5(); | ||
| 287 | fn TIM6_DAC(); | ||
| 288 | fn TIM7(); | ||
| 289 | fn TIM8_BRK(); | ||
| 290 | fn TIM8_CC(); | ||
| 291 | fn TIM8_TRG_COM(); | ||
| 292 | fn TIM8_UP(); | ||
| 293 | fn TSC(); | ||
| 294 | fn UART4(); | ||
| 295 | fn UART5(); | ||
| 296 | fn USART1(); | ||
| 297 | fn USART2(); | ||
| 298 | fn USART3(); | ||
| 299 | fn WWDG(); | ||
| 300 | } | ||
| 301 | pub union Vector { | ||
| 302 | _handler: unsafe extern "C" fn(), | ||
| 303 | _reserved: u32, | ||
| 304 | } | ||
| 305 | #[link_section = ".vector_table.interrupts"] | ||
| 306 | #[no_mangle] | ||
| 307 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 308 | Vector { _handler: WWDG }, | ||
| 309 | Vector { _handler: PVD_PVM }, | ||
| 310 | Vector { | ||
| 311 | _handler: TAMP_STAMP, | ||
| 312 | }, | ||
| 313 | Vector { _handler: RTC_WKUP }, | ||
| 314 | Vector { _handler: FLASH }, | ||
| 315 | Vector { _handler: RCC }, | ||
| 316 | Vector { _handler: EXTI0 }, | ||
| 317 | Vector { _handler: EXTI1 }, | ||
| 318 | Vector { _handler: EXTI2 }, | ||
| 319 | Vector { _handler: EXTI3 }, | ||
| 320 | Vector { _handler: EXTI4 }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel1, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel2, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel3, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel4, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel5, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel6, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel7, | ||
| 341 | }, | ||
| 342 | Vector { _handler: ADC1_2 }, | ||
| 343 | Vector { _handler: CAN1_TX }, | ||
| 344 | Vector { _handler: CAN1_RX0 }, | ||
| 345 | Vector { _handler: CAN1_RX1 }, | ||
| 346 | Vector { _handler: CAN1_SCE }, | ||
| 347 | Vector { _handler: EXTI9_5 }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_BRK_TIM15, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_UP_TIM16, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_TRG_COM_TIM17, | ||
| 356 | }, | ||
| 357 | Vector { _handler: TIM1_CC }, | ||
| 358 | Vector { _handler: TIM2 }, | ||
| 359 | Vector { _handler: TIM3 }, | ||
| 360 | Vector { _handler: TIM4 }, | ||
| 361 | Vector { _handler: I2C1_EV }, | ||
| 362 | Vector { _handler: I2C1_ER }, | ||
| 363 | Vector { _handler: I2C2_EV }, | ||
| 364 | Vector { _handler: I2C2_ER }, | ||
| 365 | Vector { _handler: SPI1 }, | ||
| 366 | Vector { _handler: SPI2 }, | ||
| 367 | Vector { _handler: USART1 }, | ||
| 368 | Vector { _handler: USART2 }, | ||
| 369 | Vector { _handler: USART3 }, | ||
| 370 | Vector { | ||
| 371 | _handler: EXTI15_10, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: RTC_Alarm, | ||
| 375 | }, | ||
| 376 | Vector { _reserved: 0 }, | ||
| 377 | Vector { _handler: TIM8_BRK }, | ||
| 378 | Vector { _handler: TIM8_UP }, | ||
| 379 | Vector { | ||
| 380 | _handler: TIM8_TRG_COM, | ||
| 381 | }, | ||
| 382 | Vector { _handler: TIM8_CC }, | ||
| 383 | Vector { _handler: SDMMC2 }, | ||
| 384 | Vector { _handler: FMC }, | ||
| 385 | Vector { _handler: SDMMC1 }, | ||
| 386 | Vector { _handler: TIM5 }, | ||
| 387 | Vector { _handler: SPI3 }, | ||
| 388 | Vector { _handler: UART4 }, | ||
| 389 | Vector { _handler: UART5 }, | ||
| 390 | Vector { _handler: TIM6_DAC }, | ||
| 391 | Vector { _handler: TIM7 }, | ||
| 392 | Vector { | ||
| 393 | _handler: DMA2_Channel1, | ||
| 394 | }, | ||
| 395 | Vector { | ||
| 396 | _handler: DMA2_Channel2, | ||
| 397 | }, | ||
| 398 | Vector { | ||
| 399 | _handler: DMA2_Channel3, | ||
| 400 | }, | ||
| 401 | Vector { | ||
| 402 | _handler: DMA2_Channel4, | ||
| 403 | }, | ||
| 404 | Vector { | ||
| 405 | _handler: DMA2_Channel5, | ||
| 406 | }, | ||
| 407 | Vector { | ||
| 408 | _handler: DFSDM1_FLT0, | ||
| 409 | }, | ||
| 410 | Vector { | ||
| 411 | _handler: DFSDM1_FLT1, | ||
| 412 | }, | ||
| 413 | Vector { _reserved: 0 }, | ||
| 414 | Vector { _handler: COMP }, | ||
| 415 | Vector { _handler: LPTIM1 }, | ||
| 416 | Vector { _handler: LPTIM2 }, | ||
| 417 | Vector { _handler: OTG_FS }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel6, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DMA2_Channel7, | ||
| 423 | }, | ||
| 424 | Vector { _handler: LPUART1 }, | ||
| 425 | Vector { _handler: OCTOSPI1 }, | ||
| 426 | Vector { _handler: I2C3_EV }, | ||
| 427 | Vector { _handler: I2C3_ER }, | ||
| 428 | Vector { _handler: SAI1 }, | ||
| 429 | Vector { _handler: SAI2 }, | ||
| 430 | Vector { _handler: OCTOSPI2 }, | ||
| 431 | Vector { _handler: TSC }, | ||
| 432 | Vector { _reserved: 0 }, | ||
| 433 | Vector { _reserved: 0 }, | ||
| 434 | Vector { _handler: RNG }, | ||
| 435 | Vector { _handler: FPU }, | ||
| 436 | Vector { _handler: HASH_CRS }, | ||
| 437 | Vector { _handler: I2C4_ER }, | ||
| 438 | Vector { _handler: I2C4_EV }, | ||
| 439 | Vector { | ||
| 440 | _handler: DCMI_PSSI, | ||
| 441 | }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _reserved: 0 }, | ||
| 446 | Vector { _handler: DMA2D }, | ||
| 447 | Vector { _handler: LTDC }, | ||
| 448 | Vector { _handler: LTDC_ER }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { | ||
| 451 | _handler: DMAMUX1_OVR, | ||
| 452 | }, | ||
| 453 | ]; | ||
| 454 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 455 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 456 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 457 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4p5ze.rs b/embassy-stm32/src/chip/stm32l4p5ze.rs index 6d2a25917..66034e537 100644 --- a/embassy-stm32/src/chip/stm32l4p5ze.rs +++ b/embassy-stm32/src/chip/stm32l4p5ze.rs | |||
| @@ -1,22 +1,457 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, | 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, |
| 14 | OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, SPI2, SPI3, | 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, |
| 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, | 15 | SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, |
| 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG | 16 | UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DCMI_PSSI = 85, | ||
| 38 | DFSDM1_FLT0 = 61, | ||
| 39 | DFSDM1_FLT1 = 62, | ||
| 40 | DMA1_Channel1 = 11, | ||
| 41 | DMA1_Channel2 = 12, | ||
| 42 | DMA1_Channel3 = 13, | ||
| 43 | DMA1_Channel4 = 14, | ||
| 44 | DMA1_Channel5 = 15, | ||
| 45 | DMA1_Channel6 = 16, | ||
| 46 | DMA1_Channel7 = 17, | ||
| 47 | DMA2D = 90, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | DMAMUX1_OVR = 94, | ||
| 56 | EXTI0 = 6, | ||
| 57 | EXTI1 = 7, | ||
| 58 | EXTI15_10 = 40, | ||
| 59 | EXTI2 = 8, | ||
| 60 | EXTI3 = 9, | ||
| 61 | EXTI4 = 10, | ||
| 62 | EXTI9_5 = 23, | ||
| 63 | FLASH = 4, | ||
| 64 | FMC = 48, | ||
| 65 | FPU = 81, | ||
| 66 | HASH_CRS = 82, | ||
| 67 | I2C1_ER = 32, | ||
| 68 | I2C1_EV = 31, | ||
| 69 | I2C2_ER = 34, | ||
| 70 | I2C2_EV = 33, | ||
| 71 | I2C3_ER = 73, | ||
| 72 | I2C3_EV = 72, | ||
| 73 | I2C4_ER = 83, | ||
| 74 | I2C4_EV = 84, | ||
| 75 | LPTIM1 = 65, | ||
| 76 | LPTIM2 = 66, | ||
| 77 | LPUART1 = 70, | ||
| 78 | LTDC = 91, | ||
| 79 | LTDC_ER = 92, | ||
| 80 | OCTOSPI1 = 71, | ||
| 81 | OCTOSPI2 = 76, | ||
| 82 | OTG_FS = 67, | ||
| 83 | PVD_PVM = 1, | ||
| 84 | RCC = 5, | ||
| 85 | RNG = 80, | ||
| 86 | RTC_Alarm = 41, | ||
| 87 | RTC_WKUP = 3, | ||
| 88 | SAI1 = 74, | ||
| 89 | SAI2 = 75, | ||
| 90 | SDMMC1 = 49, | ||
| 91 | SDMMC2 = 47, | ||
| 92 | SPI1 = 35, | ||
| 93 | SPI2 = 36, | ||
| 94 | SPI3 = 51, | ||
| 95 | TAMP_STAMP = 2, | ||
| 96 | TIM1_BRK_TIM15 = 24, | ||
| 97 | TIM1_CC = 27, | ||
| 98 | TIM1_TRG_COM_TIM17 = 26, | ||
| 99 | TIM1_UP_TIM16 = 25, | ||
| 100 | TIM2 = 28, | ||
| 101 | TIM3 = 29, | ||
| 102 | TIM4 = 30, | ||
| 103 | TIM5 = 50, | ||
| 104 | TIM6_DAC = 54, | ||
| 105 | TIM7 = 55, | ||
| 106 | TIM8_BRK = 43, | ||
| 107 | TIM8_CC = 46, | ||
| 108 | TIM8_TRG_COM = 45, | ||
| 109 | TIM8_UP = 44, | ||
| 110 | TSC = 77, | ||
| 111 | UART4 = 52, | ||
| 112 | UART5 = 53, | ||
| 113 | USART1 = 37, | ||
| 114 | USART2 = 38, | ||
| 115 | USART3 = 39, | ||
| 116 | WWDG = 0, | ||
| 117 | } | ||
| 118 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 119 | #[inline(always)] | ||
| 120 | fn number(self) -> u16 { | ||
| 121 | self as u16 | ||
| 122 | } | ||
| 123 | } | ||
| 124 | |||
| 125 | declare!(ADC1_2); | ||
| 126 | declare!(CAN1_RX0); | ||
| 127 | declare!(CAN1_RX1); | ||
| 128 | declare!(CAN1_SCE); | ||
| 129 | declare!(CAN1_TX); | ||
| 130 | declare!(COMP); | ||
| 131 | declare!(DCMI_PSSI); | ||
| 132 | declare!(DFSDM1_FLT0); | ||
| 133 | declare!(DFSDM1_FLT1); | ||
| 134 | declare!(DMA1_Channel1); | ||
| 135 | declare!(DMA1_Channel2); | ||
| 136 | declare!(DMA1_Channel3); | ||
| 137 | declare!(DMA1_Channel4); | ||
| 138 | declare!(DMA1_Channel5); | ||
| 139 | declare!(DMA1_Channel6); | ||
| 140 | declare!(DMA1_Channel7); | ||
| 141 | declare!(DMA2D); | ||
| 142 | declare!(DMA2_Channel1); | ||
| 143 | declare!(DMA2_Channel2); | ||
| 144 | declare!(DMA2_Channel3); | ||
| 145 | declare!(DMA2_Channel4); | ||
| 146 | declare!(DMA2_Channel5); | ||
| 147 | declare!(DMA2_Channel6); | ||
| 148 | declare!(DMA2_Channel7); | ||
| 149 | declare!(DMAMUX1_OVR); | ||
| 150 | declare!(EXTI0); | ||
| 151 | declare!(EXTI1); | ||
| 152 | declare!(EXTI15_10); | ||
| 153 | declare!(EXTI2); | ||
| 154 | declare!(EXTI3); | ||
| 155 | declare!(EXTI4); | ||
| 156 | declare!(EXTI9_5); | ||
| 157 | declare!(FLASH); | ||
| 158 | declare!(FMC); | ||
| 159 | declare!(FPU); | ||
| 160 | declare!(HASH_CRS); | ||
| 161 | declare!(I2C1_ER); | ||
| 162 | declare!(I2C1_EV); | ||
| 163 | declare!(I2C2_ER); | ||
| 164 | declare!(I2C2_EV); | ||
| 165 | declare!(I2C3_ER); | ||
| 166 | declare!(I2C3_EV); | ||
| 167 | declare!(I2C4_ER); | ||
| 168 | declare!(I2C4_EV); | ||
| 169 | declare!(LPTIM1); | ||
| 170 | declare!(LPTIM2); | ||
| 171 | declare!(LPUART1); | ||
| 172 | declare!(LTDC); | ||
| 173 | declare!(LTDC_ER); | ||
| 174 | declare!(OCTOSPI1); | ||
| 175 | declare!(OCTOSPI2); | ||
| 176 | declare!(OTG_FS); | ||
| 177 | declare!(PVD_PVM); | ||
| 178 | declare!(RCC); | ||
| 179 | declare!(RNG); | ||
| 180 | declare!(RTC_Alarm); | ||
| 181 | declare!(RTC_WKUP); | ||
| 182 | declare!(SAI1); | ||
| 183 | declare!(SAI2); | ||
| 184 | declare!(SDMMC1); | ||
| 185 | declare!(SDMMC2); | ||
| 186 | declare!(SPI1); | ||
| 187 | declare!(SPI2); | ||
| 188 | declare!(SPI3); | ||
| 189 | declare!(TAMP_STAMP); | ||
| 190 | declare!(TIM1_BRK_TIM15); | ||
| 191 | declare!(TIM1_CC); | ||
| 192 | declare!(TIM1_TRG_COM_TIM17); | ||
| 193 | declare!(TIM1_UP_TIM16); | ||
| 194 | declare!(TIM2); | ||
| 195 | declare!(TIM3); | ||
| 196 | declare!(TIM4); | ||
| 197 | declare!(TIM5); | ||
| 198 | declare!(TIM6_DAC); | ||
| 199 | declare!(TIM7); | ||
| 200 | declare!(TIM8_BRK); | ||
| 201 | declare!(TIM8_CC); | ||
| 202 | declare!(TIM8_TRG_COM); | ||
| 203 | declare!(TIM8_UP); | ||
| 204 | declare!(TSC); | ||
| 205 | declare!(UART4); | ||
| 206 | declare!(UART5); | ||
| 207 | declare!(USART1); | ||
| 208 | declare!(USART2); | ||
| 209 | declare!(USART3); | ||
| 210 | declare!(WWDG); | ||
| 211 | } | ||
| 212 | mod interrupt_vector { | ||
| 213 | extern "C" { | ||
| 214 | fn ADC1_2(); | ||
| 215 | fn CAN1_RX0(); | ||
| 216 | fn CAN1_RX1(); | ||
| 217 | fn CAN1_SCE(); | ||
| 218 | fn CAN1_TX(); | ||
| 219 | fn COMP(); | ||
| 220 | fn DCMI_PSSI(); | ||
| 221 | fn DFSDM1_FLT0(); | ||
| 222 | fn DFSDM1_FLT1(); | ||
| 223 | fn DMA1_Channel1(); | ||
| 224 | fn DMA1_Channel2(); | ||
| 225 | fn DMA1_Channel3(); | ||
| 226 | fn DMA1_Channel4(); | ||
| 227 | fn DMA1_Channel5(); | ||
| 228 | fn DMA1_Channel6(); | ||
| 229 | fn DMA1_Channel7(); | ||
| 230 | fn DMA2D(); | ||
| 231 | fn DMA2_Channel1(); | ||
| 232 | fn DMA2_Channel2(); | ||
| 233 | fn DMA2_Channel3(); | ||
| 234 | fn DMA2_Channel4(); | ||
| 235 | fn DMA2_Channel5(); | ||
| 236 | fn DMA2_Channel6(); | ||
| 237 | fn DMA2_Channel7(); | ||
| 238 | fn DMAMUX1_OVR(); | ||
| 239 | fn EXTI0(); | ||
| 240 | fn EXTI1(); | ||
| 241 | fn EXTI15_10(); | ||
| 242 | fn EXTI2(); | ||
| 243 | fn EXTI3(); | ||
| 244 | fn EXTI4(); | ||
| 245 | fn EXTI9_5(); | ||
| 246 | fn FLASH(); | ||
| 247 | fn FMC(); | ||
| 248 | fn FPU(); | ||
| 249 | fn HASH_CRS(); | ||
| 250 | fn I2C1_ER(); | ||
| 251 | fn I2C1_EV(); | ||
| 252 | fn I2C2_ER(); | ||
| 253 | fn I2C2_EV(); | ||
| 254 | fn I2C3_ER(); | ||
| 255 | fn I2C3_EV(); | ||
| 256 | fn I2C4_ER(); | ||
| 257 | fn I2C4_EV(); | ||
| 258 | fn LPTIM1(); | ||
| 259 | fn LPTIM2(); | ||
| 260 | fn LPUART1(); | ||
| 261 | fn LTDC(); | ||
| 262 | fn LTDC_ER(); | ||
| 263 | fn OCTOSPI1(); | ||
| 264 | fn OCTOSPI2(); | ||
| 265 | fn OTG_FS(); | ||
| 266 | fn PVD_PVM(); | ||
| 267 | fn RCC(); | ||
| 268 | fn RNG(); | ||
| 269 | fn RTC_Alarm(); | ||
| 270 | fn RTC_WKUP(); | ||
| 271 | fn SAI1(); | ||
| 272 | fn SAI2(); | ||
| 273 | fn SDMMC1(); | ||
| 274 | fn SDMMC2(); | ||
| 275 | fn SPI1(); | ||
| 276 | fn SPI2(); | ||
| 277 | fn SPI3(); | ||
| 278 | fn TAMP_STAMP(); | ||
| 279 | fn TIM1_BRK_TIM15(); | ||
| 280 | fn TIM1_CC(); | ||
| 281 | fn TIM1_TRG_COM_TIM17(); | ||
| 282 | fn TIM1_UP_TIM16(); | ||
| 283 | fn TIM2(); | ||
| 284 | fn TIM3(); | ||
| 285 | fn TIM4(); | ||
| 286 | fn TIM5(); | ||
| 287 | fn TIM6_DAC(); | ||
| 288 | fn TIM7(); | ||
| 289 | fn TIM8_BRK(); | ||
| 290 | fn TIM8_CC(); | ||
| 291 | fn TIM8_TRG_COM(); | ||
| 292 | fn TIM8_UP(); | ||
| 293 | fn TSC(); | ||
| 294 | fn UART4(); | ||
| 295 | fn UART5(); | ||
| 296 | fn USART1(); | ||
| 297 | fn USART2(); | ||
| 298 | fn USART3(); | ||
| 299 | fn WWDG(); | ||
| 300 | } | ||
| 301 | pub union Vector { | ||
| 302 | _handler: unsafe extern "C" fn(), | ||
| 303 | _reserved: u32, | ||
| 304 | } | ||
| 305 | #[link_section = ".vector_table.interrupts"] | ||
| 306 | #[no_mangle] | ||
| 307 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 308 | Vector { _handler: WWDG }, | ||
| 309 | Vector { _handler: PVD_PVM }, | ||
| 310 | Vector { | ||
| 311 | _handler: TAMP_STAMP, | ||
| 312 | }, | ||
| 313 | Vector { _handler: RTC_WKUP }, | ||
| 314 | Vector { _handler: FLASH }, | ||
| 315 | Vector { _handler: RCC }, | ||
| 316 | Vector { _handler: EXTI0 }, | ||
| 317 | Vector { _handler: EXTI1 }, | ||
| 318 | Vector { _handler: EXTI2 }, | ||
| 319 | Vector { _handler: EXTI3 }, | ||
| 320 | Vector { _handler: EXTI4 }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel1, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel2, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel3, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel4, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel5, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel6, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel7, | ||
| 341 | }, | ||
| 342 | Vector { _handler: ADC1_2 }, | ||
| 343 | Vector { _handler: CAN1_TX }, | ||
| 344 | Vector { _handler: CAN1_RX0 }, | ||
| 345 | Vector { _handler: CAN1_RX1 }, | ||
| 346 | Vector { _handler: CAN1_SCE }, | ||
| 347 | Vector { _handler: EXTI9_5 }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_BRK_TIM15, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_UP_TIM16, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_TRG_COM_TIM17, | ||
| 356 | }, | ||
| 357 | Vector { _handler: TIM1_CC }, | ||
| 358 | Vector { _handler: TIM2 }, | ||
| 359 | Vector { _handler: TIM3 }, | ||
| 360 | Vector { _handler: TIM4 }, | ||
| 361 | Vector { _handler: I2C1_EV }, | ||
| 362 | Vector { _handler: I2C1_ER }, | ||
| 363 | Vector { _handler: I2C2_EV }, | ||
| 364 | Vector { _handler: I2C2_ER }, | ||
| 365 | Vector { _handler: SPI1 }, | ||
| 366 | Vector { _handler: SPI2 }, | ||
| 367 | Vector { _handler: USART1 }, | ||
| 368 | Vector { _handler: USART2 }, | ||
| 369 | Vector { _handler: USART3 }, | ||
| 370 | Vector { | ||
| 371 | _handler: EXTI15_10, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: RTC_Alarm, | ||
| 375 | }, | ||
| 376 | Vector { _reserved: 0 }, | ||
| 377 | Vector { _handler: TIM8_BRK }, | ||
| 378 | Vector { _handler: TIM8_UP }, | ||
| 379 | Vector { | ||
| 380 | _handler: TIM8_TRG_COM, | ||
| 381 | }, | ||
| 382 | Vector { _handler: TIM8_CC }, | ||
| 383 | Vector { _handler: SDMMC2 }, | ||
| 384 | Vector { _handler: FMC }, | ||
| 385 | Vector { _handler: SDMMC1 }, | ||
| 386 | Vector { _handler: TIM5 }, | ||
| 387 | Vector { _handler: SPI3 }, | ||
| 388 | Vector { _handler: UART4 }, | ||
| 389 | Vector { _handler: UART5 }, | ||
| 390 | Vector { _handler: TIM6_DAC }, | ||
| 391 | Vector { _handler: TIM7 }, | ||
| 392 | Vector { | ||
| 393 | _handler: DMA2_Channel1, | ||
| 394 | }, | ||
| 395 | Vector { | ||
| 396 | _handler: DMA2_Channel2, | ||
| 397 | }, | ||
| 398 | Vector { | ||
| 399 | _handler: DMA2_Channel3, | ||
| 400 | }, | ||
| 401 | Vector { | ||
| 402 | _handler: DMA2_Channel4, | ||
| 403 | }, | ||
| 404 | Vector { | ||
| 405 | _handler: DMA2_Channel5, | ||
| 406 | }, | ||
| 407 | Vector { | ||
| 408 | _handler: DFSDM1_FLT0, | ||
| 409 | }, | ||
| 410 | Vector { | ||
| 411 | _handler: DFSDM1_FLT1, | ||
| 412 | }, | ||
| 413 | Vector { _reserved: 0 }, | ||
| 414 | Vector { _handler: COMP }, | ||
| 415 | Vector { _handler: LPTIM1 }, | ||
| 416 | Vector { _handler: LPTIM2 }, | ||
| 417 | Vector { _handler: OTG_FS }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel6, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DMA2_Channel7, | ||
| 423 | }, | ||
| 424 | Vector { _handler: LPUART1 }, | ||
| 425 | Vector { _handler: OCTOSPI1 }, | ||
| 426 | Vector { _handler: I2C3_EV }, | ||
| 427 | Vector { _handler: I2C3_ER }, | ||
| 428 | Vector { _handler: SAI1 }, | ||
| 429 | Vector { _handler: SAI2 }, | ||
| 430 | Vector { _handler: OCTOSPI2 }, | ||
| 431 | Vector { _handler: TSC }, | ||
| 432 | Vector { _reserved: 0 }, | ||
| 433 | Vector { _reserved: 0 }, | ||
| 434 | Vector { _handler: RNG }, | ||
| 435 | Vector { _handler: FPU }, | ||
| 436 | Vector { _handler: HASH_CRS }, | ||
| 437 | Vector { _handler: I2C4_ER }, | ||
| 438 | Vector { _handler: I2C4_EV }, | ||
| 439 | Vector { | ||
| 440 | _handler: DCMI_PSSI, | ||
| 441 | }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _reserved: 0 }, | ||
| 446 | Vector { _handler: DMA2D }, | ||
| 447 | Vector { _handler: LTDC }, | ||
| 448 | Vector { _handler: LTDC_ER }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { | ||
| 451 | _handler: DMAMUX1_OVR, | ||
| 452 | }, | ||
| 453 | ]; | ||
| 454 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 455 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 456 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 457 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4p5zg.rs b/embassy-stm32/src/chip/stm32l4p5zg.rs index 6d2a25917..66034e537 100644 --- a/embassy-stm32/src/chip/stm32l4p5zg.rs +++ b/embassy-stm32/src/chip/stm32l4p5zg.rs | |||
| @@ -1,22 +1,457 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, | 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, |
| 14 | OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, SPI2, SPI3, | 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, |
| 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, | 15 | SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, |
| 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG | 16 | UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | DCMI_PSSI = 85, | ||
| 38 | DFSDM1_FLT0 = 61, | ||
| 39 | DFSDM1_FLT1 = 62, | ||
| 40 | DMA1_Channel1 = 11, | ||
| 41 | DMA1_Channel2 = 12, | ||
| 42 | DMA1_Channel3 = 13, | ||
| 43 | DMA1_Channel4 = 14, | ||
| 44 | DMA1_Channel5 = 15, | ||
| 45 | DMA1_Channel6 = 16, | ||
| 46 | DMA1_Channel7 = 17, | ||
| 47 | DMA2D = 90, | ||
| 48 | DMA2_Channel1 = 56, | ||
| 49 | DMA2_Channel2 = 57, | ||
| 50 | DMA2_Channel3 = 58, | ||
| 51 | DMA2_Channel4 = 59, | ||
| 52 | DMA2_Channel5 = 60, | ||
| 53 | DMA2_Channel6 = 68, | ||
| 54 | DMA2_Channel7 = 69, | ||
| 55 | DMAMUX1_OVR = 94, | ||
| 56 | EXTI0 = 6, | ||
| 57 | EXTI1 = 7, | ||
| 58 | EXTI15_10 = 40, | ||
| 59 | EXTI2 = 8, | ||
| 60 | EXTI3 = 9, | ||
| 61 | EXTI4 = 10, | ||
| 62 | EXTI9_5 = 23, | ||
| 63 | FLASH = 4, | ||
| 64 | FMC = 48, | ||
| 65 | FPU = 81, | ||
| 66 | HASH_CRS = 82, | ||
| 67 | I2C1_ER = 32, | ||
| 68 | I2C1_EV = 31, | ||
| 69 | I2C2_ER = 34, | ||
| 70 | I2C2_EV = 33, | ||
| 71 | I2C3_ER = 73, | ||
| 72 | I2C3_EV = 72, | ||
| 73 | I2C4_ER = 83, | ||
| 74 | I2C4_EV = 84, | ||
| 75 | LPTIM1 = 65, | ||
| 76 | LPTIM2 = 66, | ||
| 77 | LPUART1 = 70, | ||
| 78 | LTDC = 91, | ||
| 79 | LTDC_ER = 92, | ||
| 80 | OCTOSPI1 = 71, | ||
| 81 | OCTOSPI2 = 76, | ||
| 82 | OTG_FS = 67, | ||
| 83 | PVD_PVM = 1, | ||
| 84 | RCC = 5, | ||
| 85 | RNG = 80, | ||
| 86 | RTC_Alarm = 41, | ||
| 87 | RTC_WKUP = 3, | ||
| 88 | SAI1 = 74, | ||
| 89 | SAI2 = 75, | ||
| 90 | SDMMC1 = 49, | ||
| 91 | SDMMC2 = 47, | ||
| 92 | SPI1 = 35, | ||
| 93 | SPI2 = 36, | ||
| 94 | SPI3 = 51, | ||
| 95 | TAMP_STAMP = 2, | ||
| 96 | TIM1_BRK_TIM15 = 24, | ||
| 97 | TIM1_CC = 27, | ||
| 98 | TIM1_TRG_COM_TIM17 = 26, | ||
| 99 | TIM1_UP_TIM16 = 25, | ||
| 100 | TIM2 = 28, | ||
| 101 | TIM3 = 29, | ||
| 102 | TIM4 = 30, | ||
| 103 | TIM5 = 50, | ||
| 104 | TIM6_DAC = 54, | ||
| 105 | TIM7 = 55, | ||
| 106 | TIM8_BRK = 43, | ||
| 107 | TIM8_CC = 46, | ||
| 108 | TIM8_TRG_COM = 45, | ||
| 109 | TIM8_UP = 44, | ||
| 110 | TSC = 77, | ||
| 111 | UART4 = 52, | ||
| 112 | UART5 = 53, | ||
| 113 | USART1 = 37, | ||
| 114 | USART2 = 38, | ||
| 115 | USART3 = 39, | ||
| 116 | WWDG = 0, | ||
| 117 | } | ||
| 118 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 119 | #[inline(always)] | ||
| 120 | fn number(self) -> u16 { | ||
| 121 | self as u16 | ||
| 122 | } | ||
| 123 | } | ||
| 124 | |||
| 125 | declare!(ADC1_2); | ||
| 126 | declare!(CAN1_RX0); | ||
| 127 | declare!(CAN1_RX1); | ||
| 128 | declare!(CAN1_SCE); | ||
| 129 | declare!(CAN1_TX); | ||
| 130 | declare!(COMP); | ||
| 131 | declare!(DCMI_PSSI); | ||
| 132 | declare!(DFSDM1_FLT0); | ||
| 133 | declare!(DFSDM1_FLT1); | ||
| 134 | declare!(DMA1_Channel1); | ||
| 135 | declare!(DMA1_Channel2); | ||
| 136 | declare!(DMA1_Channel3); | ||
| 137 | declare!(DMA1_Channel4); | ||
| 138 | declare!(DMA1_Channel5); | ||
| 139 | declare!(DMA1_Channel6); | ||
| 140 | declare!(DMA1_Channel7); | ||
| 141 | declare!(DMA2D); | ||
| 142 | declare!(DMA2_Channel1); | ||
| 143 | declare!(DMA2_Channel2); | ||
| 144 | declare!(DMA2_Channel3); | ||
| 145 | declare!(DMA2_Channel4); | ||
| 146 | declare!(DMA2_Channel5); | ||
| 147 | declare!(DMA2_Channel6); | ||
| 148 | declare!(DMA2_Channel7); | ||
| 149 | declare!(DMAMUX1_OVR); | ||
| 150 | declare!(EXTI0); | ||
| 151 | declare!(EXTI1); | ||
| 152 | declare!(EXTI15_10); | ||
| 153 | declare!(EXTI2); | ||
| 154 | declare!(EXTI3); | ||
| 155 | declare!(EXTI4); | ||
| 156 | declare!(EXTI9_5); | ||
| 157 | declare!(FLASH); | ||
| 158 | declare!(FMC); | ||
| 159 | declare!(FPU); | ||
| 160 | declare!(HASH_CRS); | ||
| 161 | declare!(I2C1_ER); | ||
| 162 | declare!(I2C1_EV); | ||
| 163 | declare!(I2C2_ER); | ||
| 164 | declare!(I2C2_EV); | ||
| 165 | declare!(I2C3_ER); | ||
| 166 | declare!(I2C3_EV); | ||
| 167 | declare!(I2C4_ER); | ||
| 168 | declare!(I2C4_EV); | ||
| 169 | declare!(LPTIM1); | ||
| 170 | declare!(LPTIM2); | ||
| 171 | declare!(LPUART1); | ||
| 172 | declare!(LTDC); | ||
| 173 | declare!(LTDC_ER); | ||
| 174 | declare!(OCTOSPI1); | ||
| 175 | declare!(OCTOSPI2); | ||
| 176 | declare!(OTG_FS); | ||
| 177 | declare!(PVD_PVM); | ||
| 178 | declare!(RCC); | ||
| 179 | declare!(RNG); | ||
| 180 | declare!(RTC_Alarm); | ||
| 181 | declare!(RTC_WKUP); | ||
| 182 | declare!(SAI1); | ||
| 183 | declare!(SAI2); | ||
| 184 | declare!(SDMMC1); | ||
| 185 | declare!(SDMMC2); | ||
| 186 | declare!(SPI1); | ||
| 187 | declare!(SPI2); | ||
| 188 | declare!(SPI3); | ||
| 189 | declare!(TAMP_STAMP); | ||
| 190 | declare!(TIM1_BRK_TIM15); | ||
| 191 | declare!(TIM1_CC); | ||
| 192 | declare!(TIM1_TRG_COM_TIM17); | ||
| 193 | declare!(TIM1_UP_TIM16); | ||
| 194 | declare!(TIM2); | ||
| 195 | declare!(TIM3); | ||
| 196 | declare!(TIM4); | ||
| 197 | declare!(TIM5); | ||
| 198 | declare!(TIM6_DAC); | ||
| 199 | declare!(TIM7); | ||
| 200 | declare!(TIM8_BRK); | ||
| 201 | declare!(TIM8_CC); | ||
| 202 | declare!(TIM8_TRG_COM); | ||
| 203 | declare!(TIM8_UP); | ||
| 204 | declare!(TSC); | ||
| 205 | declare!(UART4); | ||
| 206 | declare!(UART5); | ||
| 207 | declare!(USART1); | ||
| 208 | declare!(USART2); | ||
| 209 | declare!(USART3); | ||
| 210 | declare!(WWDG); | ||
| 211 | } | ||
| 212 | mod interrupt_vector { | ||
| 213 | extern "C" { | ||
| 214 | fn ADC1_2(); | ||
| 215 | fn CAN1_RX0(); | ||
| 216 | fn CAN1_RX1(); | ||
| 217 | fn CAN1_SCE(); | ||
| 218 | fn CAN1_TX(); | ||
| 219 | fn COMP(); | ||
| 220 | fn DCMI_PSSI(); | ||
| 221 | fn DFSDM1_FLT0(); | ||
| 222 | fn DFSDM1_FLT1(); | ||
| 223 | fn DMA1_Channel1(); | ||
| 224 | fn DMA1_Channel2(); | ||
| 225 | fn DMA1_Channel3(); | ||
| 226 | fn DMA1_Channel4(); | ||
| 227 | fn DMA1_Channel5(); | ||
| 228 | fn DMA1_Channel6(); | ||
| 229 | fn DMA1_Channel7(); | ||
| 230 | fn DMA2D(); | ||
| 231 | fn DMA2_Channel1(); | ||
| 232 | fn DMA2_Channel2(); | ||
| 233 | fn DMA2_Channel3(); | ||
| 234 | fn DMA2_Channel4(); | ||
| 235 | fn DMA2_Channel5(); | ||
| 236 | fn DMA2_Channel6(); | ||
| 237 | fn DMA2_Channel7(); | ||
| 238 | fn DMAMUX1_OVR(); | ||
| 239 | fn EXTI0(); | ||
| 240 | fn EXTI1(); | ||
| 241 | fn EXTI15_10(); | ||
| 242 | fn EXTI2(); | ||
| 243 | fn EXTI3(); | ||
| 244 | fn EXTI4(); | ||
| 245 | fn EXTI9_5(); | ||
| 246 | fn FLASH(); | ||
| 247 | fn FMC(); | ||
| 248 | fn FPU(); | ||
| 249 | fn HASH_CRS(); | ||
| 250 | fn I2C1_ER(); | ||
| 251 | fn I2C1_EV(); | ||
| 252 | fn I2C2_ER(); | ||
| 253 | fn I2C2_EV(); | ||
| 254 | fn I2C3_ER(); | ||
| 255 | fn I2C3_EV(); | ||
| 256 | fn I2C4_ER(); | ||
| 257 | fn I2C4_EV(); | ||
| 258 | fn LPTIM1(); | ||
| 259 | fn LPTIM2(); | ||
| 260 | fn LPUART1(); | ||
| 261 | fn LTDC(); | ||
| 262 | fn LTDC_ER(); | ||
| 263 | fn OCTOSPI1(); | ||
| 264 | fn OCTOSPI2(); | ||
| 265 | fn OTG_FS(); | ||
| 266 | fn PVD_PVM(); | ||
| 267 | fn RCC(); | ||
| 268 | fn RNG(); | ||
| 269 | fn RTC_Alarm(); | ||
| 270 | fn RTC_WKUP(); | ||
| 271 | fn SAI1(); | ||
| 272 | fn SAI2(); | ||
| 273 | fn SDMMC1(); | ||
| 274 | fn SDMMC2(); | ||
| 275 | fn SPI1(); | ||
| 276 | fn SPI2(); | ||
| 277 | fn SPI3(); | ||
| 278 | fn TAMP_STAMP(); | ||
| 279 | fn TIM1_BRK_TIM15(); | ||
| 280 | fn TIM1_CC(); | ||
| 281 | fn TIM1_TRG_COM_TIM17(); | ||
| 282 | fn TIM1_UP_TIM16(); | ||
| 283 | fn TIM2(); | ||
| 284 | fn TIM3(); | ||
| 285 | fn TIM4(); | ||
| 286 | fn TIM5(); | ||
| 287 | fn TIM6_DAC(); | ||
| 288 | fn TIM7(); | ||
| 289 | fn TIM8_BRK(); | ||
| 290 | fn TIM8_CC(); | ||
| 291 | fn TIM8_TRG_COM(); | ||
| 292 | fn TIM8_UP(); | ||
| 293 | fn TSC(); | ||
| 294 | fn UART4(); | ||
| 295 | fn UART5(); | ||
| 296 | fn USART1(); | ||
| 297 | fn USART2(); | ||
| 298 | fn USART3(); | ||
| 299 | fn WWDG(); | ||
| 300 | } | ||
| 301 | pub union Vector { | ||
| 302 | _handler: unsafe extern "C" fn(), | ||
| 303 | _reserved: u32, | ||
| 304 | } | ||
| 305 | #[link_section = ".vector_table.interrupts"] | ||
| 306 | #[no_mangle] | ||
| 307 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 308 | Vector { _handler: WWDG }, | ||
| 309 | Vector { _handler: PVD_PVM }, | ||
| 310 | Vector { | ||
| 311 | _handler: TAMP_STAMP, | ||
| 312 | }, | ||
| 313 | Vector { _handler: RTC_WKUP }, | ||
| 314 | Vector { _handler: FLASH }, | ||
| 315 | Vector { _handler: RCC }, | ||
| 316 | Vector { _handler: EXTI0 }, | ||
| 317 | Vector { _handler: EXTI1 }, | ||
| 318 | Vector { _handler: EXTI2 }, | ||
| 319 | Vector { _handler: EXTI3 }, | ||
| 320 | Vector { _handler: EXTI4 }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel1, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel2, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel3, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel4, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel5, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel6, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel7, | ||
| 341 | }, | ||
| 342 | Vector { _handler: ADC1_2 }, | ||
| 343 | Vector { _handler: CAN1_TX }, | ||
| 344 | Vector { _handler: CAN1_RX0 }, | ||
| 345 | Vector { _handler: CAN1_RX1 }, | ||
| 346 | Vector { _handler: CAN1_SCE }, | ||
| 347 | Vector { _handler: EXTI9_5 }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_BRK_TIM15, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_UP_TIM16, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_TRG_COM_TIM17, | ||
| 356 | }, | ||
| 357 | Vector { _handler: TIM1_CC }, | ||
| 358 | Vector { _handler: TIM2 }, | ||
| 359 | Vector { _handler: TIM3 }, | ||
| 360 | Vector { _handler: TIM4 }, | ||
| 361 | Vector { _handler: I2C1_EV }, | ||
| 362 | Vector { _handler: I2C1_ER }, | ||
| 363 | Vector { _handler: I2C2_EV }, | ||
| 364 | Vector { _handler: I2C2_ER }, | ||
| 365 | Vector { _handler: SPI1 }, | ||
| 366 | Vector { _handler: SPI2 }, | ||
| 367 | Vector { _handler: USART1 }, | ||
| 368 | Vector { _handler: USART2 }, | ||
| 369 | Vector { _handler: USART3 }, | ||
| 370 | Vector { | ||
| 371 | _handler: EXTI15_10, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: RTC_Alarm, | ||
| 375 | }, | ||
| 376 | Vector { _reserved: 0 }, | ||
| 377 | Vector { _handler: TIM8_BRK }, | ||
| 378 | Vector { _handler: TIM8_UP }, | ||
| 379 | Vector { | ||
| 380 | _handler: TIM8_TRG_COM, | ||
| 381 | }, | ||
| 382 | Vector { _handler: TIM8_CC }, | ||
| 383 | Vector { _handler: SDMMC2 }, | ||
| 384 | Vector { _handler: FMC }, | ||
| 385 | Vector { _handler: SDMMC1 }, | ||
| 386 | Vector { _handler: TIM5 }, | ||
| 387 | Vector { _handler: SPI3 }, | ||
| 388 | Vector { _handler: UART4 }, | ||
| 389 | Vector { _handler: UART5 }, | ||
| 390 | Vector { _handler: TIM6_DAC }, | ||
| 391 | Vector { _handler: TIM7 }, | ||
| 392 | Vector { | ||
| 393 | _handler: DMA2_Channel1, | ||
| 394 | }, | ||
| 395 | Vector { | ||
| 396 | _handler: DMA2_Channel2, | ||
| 397 | }, | ||
| 398 | Vector { | ||
| 399 | _handler: DMA2_Channel3, | ||
| 400 | }, | ||
| 401 | Vector { | ||
| 402 | _handler: DMA2_Channel4, | ||
| 403 | }, | ||
| 404 | Vector { | ||
| 405 | _handler: DMA2_Channel5, | ||
| 406 | }, | ||
| 407 | Vector { | ||
| 408 | _handler: DFSDM1_FLT0, | ||
| 409 | }, | ||
| 410 | Vector { | ||
| 411 | _handler: DFSDM1_FLT1, | ||
| 412 | }, | ||
| 413 | Vector { _reserved: 0 }, | ||
| 414 | Vector { _handler: COMP }, | ||
| 415 | Vector { _handler: LPTIM1 }, | ||
| 416 | Vector { _handler: LPTIM2 }, | ||
| 417 | Vector { _handler: OTG_FS }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel6, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DMA2_Channel7, | ||
| 423 | }, | ||
| 424 | Vector { _handler: LPUART1 }, | ||
| 425 | Vector { _handler: OCTOSPI1 }, | ||
| 426 | Vector { _handler: I2C3_EV }, | ||
| 427 | Vector { _handler: I2C3_ER }, | ||
| 428 | Vector { _handler: SAI1 }, | ||
| 429 | Vector { _handler: SAI2 }, | ||
| 430 | Vector { _handler: OCTOSPI2 }, | ||
| 431 | Vector { _handler: TSC }, | ||
| 432 | Vector { _reserved: 0 }, | ||
| 433 | Vector { _reserved: 0 }, | ||
| 434 | Vector { _handler: RNG }, | ||
| 435 | Vector { _handler: FPU }, | ||
| 436 | Vector { _handler: HASH_CRS }, | ||
| 437 | Vector { _handler: I2C4_ER }, | ||
| 438 | Vector { _handler: I2C4_EV }, | ||
| 439 | Vector { | ||
| 440 | _handler: DCMI_PSSI, | ||
| 441 | }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _reserved: 0 }, | ||
| 446 | Vector { _handler: DMA2D }, | ||
| 447 | Vector { _handler: LTDC }, | ||
| 448 | Vector { _handler: LTDC_ER }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { | ||
| 451 | _handler: DMAMUX1_OVR, | ||
| 452 | }, | ||
| 453 | ]; | ||
| 454 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 455 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 456 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 457 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4q5ag.rs b/embassy-stm32/src/chip/stm32l4q5ag.rs index 295c68f1c..64643dc4e 100644 --- a/embassy-stm32/src/chip/stm32l4q5ag.rs +++ b/embassy-stm32/src/chip/stm32l4q5ag.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -15,8 +15,449 @@ peripherals!( | |||
| 15 | SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, | 15 | SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, |
| 16 | UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG | 16 | UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DCMI_PSSI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2D = 90, | ||
| 49 | DMA2_Channel1 = 56, | ||
| 50 | DMA2_Channel2 = 57, | ||
| 51 | DMA2_Channel3 = 58, | ||
| 52 | DMA2_Channel4 = 59, | ||
| 53 | DMA2_Channel5 = 60, | ||
| 54 | DMA2_Channel6 = 68, | ||
| 55 | DMA2_Channel7 = 69, | ||
| 56 | DMAMUX1_OVR = 94, | ||
| 57 | EXTI0 = 6, | ||
| 58 | EXTI1 = 7, | ||
| 59 | EXTI15_10 = 40, | ||
| 60 | EXTI2 = 8, | ||
| 61 | EXTI3 = 9, | ||
| 62 | EXTI4 = 10, | ||
| 63 | EXTI9_5 = 23, | ||
| 64 | FLASH = 4, | ||
| 65 | FMC = 48, | ||
| 66 | FPU = 81, | ||
| 67 | HASH_CRS = 82, | ||
| 68 | I2C1_ER = 32, | ||
| 69 | I2C1_EV = 31, | ||
| 70 | I2C2_ER = 34, | ||
| 71 | I2C2_EV = 33, | ||
| 72 | I2C3_ER = 73, | ||
| 73 | I2C3_EV = 72, | ||
| 74 | I2C4_ER = 83, | ||
| 75 | I2C4_EV = 84, | ||
| 76 | LPTIM1 = 65, | ||
| 77 | LPTIM2 = 66, | ||
| 78 | LPUART1 = 70, | ||
| 79 | LTDC = 91, | ||
| 80 | LTDC_ER = 92, | ||
| 81 | OCTOSPI1 = 71, | ||
| 82 | OCTOSPI2 = 76, | ||
| 83 | OTG_FS = 67, | ||
| 84 | PKA = 86, | ||
| 85 | PVD_PVM = 1, | ||
| 86 | RCC = 5, | ||
| 87 | RNG = 80, | ||
| 88 | RTC_Alarm = 41, | ||
| 89 | RTC_WKUP = 3, | ||
| 90 | SAI1 = 74, | ||
| 91 | SAI2 = 75, | ||
| 92 | SDMMC1 = 49, | ||
| 93 | SDMMC2 = 47, | ||
| 94 | SPI1 = 35, | ||
| 95 | SPI2 = 36, | ||
| 96 | SPI3 = 51, | ||
| 97 | TAMP_STAMP = 2, | ||
| 98 | TIM1_BRK_TIM15 = 24, | ||
| 99 | TIM1_CC = 27, | ||
| 100 | TIM1_TRG_COM_TIM17 = 26, | ||
| 101 | TIM1_UP_TIM16 = 25, | ||
| 102 | TIM2 = 28, | ||
| 103 | TIM3 = 29, | ||
| 104 | TIM4 = 30, | ||
| 105 | TIM5 = 50, | ||
| 106 | TIM6_DAC = 54, | ||
| 107 | TIM7 = 55, | ||
| 108 | TIM8_BRK = 43, | ||
| 109 | TIM8_CC = 46, | ||
| 110 | TIM8_TRG_COM = 45, | ||
| 111 | TIM8_UP = 44, | ||
| 112 | TSC = 77, | ||
| 113 | UART4 = 52, | ||
| 114 | UART5 = 53, | ||
| 115 | USART1 = 37, | ||
| 116 | USART2 = 38, | ||
| 117 | USART3 = 39, | ||
| 118 | WWDG = 0, | ||
| 119 | } | ||
| 120 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 121 | #[inline(always)] | ||
| 122 | fn number(self) -> u16 { | ||
| 123 | self as u16 | ||
| 124 | } | ||
| 125 | } | ||
| 126 | |||
| 127 | declare!(ADC1_2); | ||
| 128 | declare!(AES); | ||
| 129 | declare!(CAN1_RX0); | ||
| 130 | declare!(CAN1_RX1); | ||
| 131 | declare!(CAN1_SCE); | ||
| 132 | declare!(CAN1_TX); | ||
| 133 | declare!(COMP); | ||
| 134 | declare!(DCMI_PSSI); | ||
| 135 | declare!(DFSDM1_FLT0); | ||
| 136 | declare!(DFSDM1_FLT1); | ||
| 137 | declare!(DMA1_Channel1); | ||
| 138 | declare!(DMA1_Channel2); | ||
| 139 | declare!(DMA1_Channel3); | ||
| 140 | declare!(DMA1_Channel4); | ||
| 141 | declare!(DMA1_Channel5); | ||
| 142 | declare!(DMA1_Channel6); | ||
| 143 | declare!(DMA1_Channel7); | ||
| 144 | declare!(DMA2D); | ||
| 145 | declare!(DMA2_Channel1); | ||
| 146 | declare!(DMA2_Channel2); | ||
| 147 | declare!(DMA2_Channel3); | ||
| 148 | declare!(DMA2_Channel4); | ||
| 149 | declare!(DMA2_Channel5); | ||
| 150 | declare!(DMA2_Channel6); | ||
| 151 | declare!(DMA2_Channel7); | ||
| 152 | declare!(DMAMUX1_OVR); | ||
| 153 | declare!(EXTI0); | ||
| 154 | declare!(EXTI1); | ||
| 155 | declare!(EXTI15_10); | ||
| 156 | declare!(EXTI2); | ||
| 157 | declare!(EXTI3); | ||
| 158 | declare!(EXTI4); | ||
| 159 | declare!(EXTI9_5); | ||
| 160 | declare!(FLASH); | ||
| 161 | declare!(FMC); | ||
| 162 | declare!(FPU); | ||
| 163 | declare!(HASH_CRS); | ||
| 164 | declare!(I2C1_ER); | ||
| 165 | declare!(I2C1_EV); | ||
| 166 | declare!(I2C2_ER); | ||
| 167 | declare!(I2C2_EV); | ||
| 168 | declare!(I2C3_ER); | ||
| 169 | declare!(I2C3_EV); | ||
| 170 | declare!(I2C4_ER); | ||
| 171 | declare!(I2C4_EV); | ||
| 172 | declare!(LPTIM1); | ||
| 173 | declare!(LPTIM2); | ||
| 174 | declare!(LPUART1); | ||
| 175 | declare!(LTDC); | ||
| 176 | declare!(LTDC_ER); | ||
| 177 | declare!(OCTOSPI1); | ||
| 178 | declare!(OCTOSPI2); | ||
| 179 | declare!(OTG_FS); | ||
| 180 | declare!(PKA); | ||
| 181 | declare!(PVD_PVM); | ||
| 182 | declare!(RCC); | ||
| 183 | declare!(RNG); | ||
| 184 | declare!(RTC_Alarm); | ||
| 185 | declare!(RTC_WKUP); | ||
| 186 | declare!(SAI1); | ||
| 187 | declare!(SAI2); | ||
| 188 | declare!(SDMMC1); | ||
| 189 | declare!(SDMMC2); | ||
| 190 | declare!(SPI1); | ||
| 191 | declare!(SPI2); | ||
| 192 | declare!(SPI3); | ||
| 193 | declare!(TAMP_STAMP); | ||
| 194 | declare!(TIM1_BRK_TIM15); | ||
| 195 | declare!(TIM1_CC); | ||
| 196 | declare!(TIM1_TRG_COM_TIM17); | ||
| 197 | declare!(TIM1_UP_TIM16); | ||
| 198 | declare!(TIM2); | ||
| 199 | declare!(TIM3); | ||
| 200 | declare!(TIM4); | ||
| 201 | declare!(TIM5); | ||
| 202 | declare!(TIM6_DAC); | ||
| 203 | declare!(TIM7); | ||
| 204 | declare!(TIM8_BRK); | ||
| 205 | declare!(TIM8_CC); | ||
| 206 | declare!(TIM8_TRG_COM); | ||
| 207 | declare!(TIM8_UP); | ||
| 208 | declare!(TSC); | ||
| 209 | declare!(UART4); | ||
| 210 | declare!(UART5); | ||
| 211 | declare!(USART1); | ||
| 212 | declare!(USART2); | ||
| 213 | declare!(USART3); | ||
| 214 | declare!(WWDG); | ||
| 215 | } | ||
| 216 | mod interrupt_vector { | ||
| 217 | extern "C" { | ||
| 218 | fn ADC1_2(); | ||
| 219 | fn AES(); | ||
| 220 | fn CAN1_RX0(); | ||
| 221 | fn CAN1_RX1(); | ||
| 222 | fn CAN1_SCE(); | ||
| 223 | fn CAN1_TX(); | ||
| 224 | fn COMP(); | ||
| 225 | fn DCMI_PSSI(); | ||
| 226 | fn DFSDM1_FLT0(); | ||
| 227 | fn DFSDM1_FLT1(); | ||
| 228 | fn DMA1_Channel1(); | ||
| 229 | fn DMA1_Channel2(); | ||
| 230 | fn DMA1_Channel3(); | ||
| 231 | fn DMA1_Channel4(); | ||
| 232 | fn DMA1_Channel5(); | ||
| 233 | fn DMA1_Channel6(); | ||
| 234 | fn DMA1_Channel7(); | ||
| 235 | fn DMA2D(); | ||
| 236 | fn DMA2_Channel1(); | ||
| 237 | fn DMA2_Channel2(); | ||
| 238 | fn DMA2_Channel3(); | ||
| 239 | fn DMA2_Channel4(); | ||
| 240 | fn DMA2_Channel5(); | ||
| 241 | fn DMA2_Channel6(); | ||
| 242 | fn DMA2_Channel7(); | ||
| 243 | fn DMAMUX1_OVR(); | ||
| 244 | fn EXTI0(); | ||
| 245 | fn EXTI1(); | ||
| 246 | fn EXTI15_10(); | ||
| 247 | fn EXTI2(); | ||
| 248 | fn EXTI3(); | ||
| 249 | fn EXTI4(); | ||
| 250 | fn EXTI9_5(); | ||
| 251 | fn FLASH(); | ||
| 252 | fn FMC(); | ||
| 253 | fn FPU(); | ||
| 254 | fn HASH_CRS(); | ||
| 255 | fn I2C1_ER(); | ||
| 256 | fn I2C1_EV(); | ||
| 257 | fn I2C2_ER(); | ||
| 258 | fn I2C2_EV(); | ||
| 259 | fn I2C3_ER(); | ||
| 260 | fn I2C3_EV(); | ||
| 261 | fn I2C4_ER(); | ||
| 262 | fn I2C4_EV(); | ||
| 263 | fn LPTIM1(); | ||
| 264 | fn LPTIM2(); | ||
| 265 | fn LPUART1(); | ||
| 266 | fn LTDC(); | ||
| 267 | fn LTDC_ER(); | ||
| 268 | fn OCTOSPI1(); | ||
| 269 | fn OCTOSPI2(); | ||
| 270 | fn OTG_FS(); | ||
| 271 | fn PKA(); | ||
| 272 | fn PVD_PVM(); | ||
| 273 | fn RCC(); | ||
| 274 | fn RNG(); | ||
| 275 | fn RTC_Alarm(); | ||
| 276 | fn RTC_WKUP(); | ||
| 277 | fn SAI1(); | ||
| 278 | fn SAI2(); | ||
| 279 | fn SDMMC1(); | ||
| 280 | fn SDMMC2(); | ||
| 281 | fn SPI1(); | ||
| 282 | fn SPI2(); | ||
| 283 | fn SPI3(); | ||
| 284 | fn TAMP_STAMP(); | ||
| 285 | fn TIM1_BRK_TIM15(); | ||
| 286 | fn TIM1_CC(); | ||
| 287 | fn TIM1_TRG_COM_TIM17(); | ||
| 288 | fn TIM1_UP_TIM16(); | ||
| 289 | fn TIM2(); | ||
| 290 | fn TIM3(); | ||
| 291 | fn TIM4(); | ||
| 292 | fn TIM5(); | ||
| 293 | fn TIM6_DAC(); | ||
| 294 | fn TIM7(); | ||
| 295 | fn TIM8_BRK(); | ||
| 296 | fn TIM8_CC(); | ||
| 297 | fn TIM8_TRG_COM(); | ||
| 298 | fn TIM8_UP(); | ||
| 299 | fn TSC(); | ||
| 300 | fn UART4(); | ||
| 301 | fn UART5(); | ||
| 302 | fn USART1(); | ||
| 303 | fn USART2(); | ||
| 304 | fn USART3(); | ||
| 305 | fn WWDG(); | ||
| 306 | } | ||
| 307 | pub union Vector { | ||
| 308 | _handler: unsafe extern "C" fn(), | ||
| 309 | _reserved: u32, | ||
| 310 | } | ||
| 311 | #[link_section = ".vector_table.interrupts"] | ||
| 312 | #[no_mangle] | ||
| 313 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 314 | Vector { _handler: WWDG }, | ||
| 315 | Vector { _handler: PVD_PVM }, | ||
| 316 | Vector { | ||
| 317 | _handler: TAMP_STAMP, | ||
| 318 | }, | ||
| 319 | Vector { _handler: RTC_WKUP }, | ||
| 320 | Vector { _handler: FLASH }, | ||
| 321 | Vector { _handler: RCC }, | ||
| 322 | Vector { _handler: EXTI0 }, | ||
| 323 | Vector { _handler: EXTI1 }, | ||
| 324 | Vector { _handler: EXTI2 }, | ||
| 325 | Vector { _handler: EXTI3 }, | ||
| 326 | Vector { _handler: EXTI4 }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel1, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel2, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel3, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel4, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel5, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel6, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel7, | ||
| 347 | }, | ||
| 348 | Vector { _handler: ADC1_2 }, | ||
| 349 | Vector { _handler: CAN1_TX }, | ||
| 350 | Vector { _handler: CAN1_RX0 }, | ||
| 351 | Vector { _handler: CAN1_RX1 }, | ||
| 352 | Vector { _handler: CAN1_SCE }, | ||
| 353 | Vector { _handler: EXTI9_5 }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_BRK_TIM15, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: TIM1_UP_TIM16, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_TRG_COM_TIM17, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM1_CC }, | ||
| 364 | Vector { _handler: TIM2 }, | ||
| 365 | Vector { _handler: TIM3 }, | ||
| 366 | Vector { _handler: TIM4 }, | ||
| 367 | Vector { _handler: I2C1_EV }, | ||
| 368 | Vector { _handler: I2C1_ER }, | ||
| 369 | Vector { _handler: I2C2_EV }, | ||
| 370 | Vector { _handler: I2C2_ER }, | ||
| 371 | Vector { _handler: SPI1 }, | ||
| 372 | Vector { _handler: SPI2 }, | ||
| 373 | Vector { _handler: USART1 }, | ||
| 374 | Vector { _handler: USART2 }, | ||
| 375 | Vector { _handler: USART3 }, | ||
| 376 | Vector { | ||
| 377 | _handler: EXTI15_10, | ||
| 378 | }, | ||
| 379 | Vector { | ||
| 380 | _handler: RTC_Alarm, | ||
| 381 | }, | ||
| 382 | Vector { _reserved: 0 }, | ||
| 383 | Vector { _handler: TIM8_BRK }, | ||
| 384 | Vector { _handler: TIM8_UP }, | ||
| 385 | Vector { | ||
| 386 | _handler: TIM8_TRG_COM, | ||
| 387 | }, | ||
| 388 | Vector { _handler: TIM8_CC }, | ||
| 389 | Vector { _handler: SDMMC2 }, | ||
| 390 | Vector { _handler: FMC }, | ||
| 391 | Vector { _handler: SDMMC1 }, | ||
| 392 | Vector { _handler: TIM5 }, | ||
| 393 | Vector { _handler: SPI3 }, | ||
| 394 | Vector { _handler: UART4 }, | ||
| 395 | Vector { _handler: UART5 }, | ||
| 396 | Vector { _handler: TIM6_DAC }, | ||
| 397 | Vector { _handler: TIM7 }, | ||
| 398 | Vector { | ||
| 399 | _handler: DMA2_Channel1, | ||
| 400 | }, | ||
| 401 | Vector { | ||
| 402 | _handler: DMA2_Channel2, | ||
| 403 | }, | ||
| 404 | Vector { | ||
| 405 | _handler: DMA2_Channel3, | ||
| 406 | }, | ||
| 407 | Vector { | ||
| 408 | _handler: DMA2_Channel4, | ||
| 409 | }, | ||
| 410 | Vector { | ||
| 411 | _handler: DMA2_Channel5, | ||
| 412 | }, | ||
| 413 | Vector { | ||
| 414 | _handler: DFSDM1_FLT0, | ||
| 415 | }, | ||
| 416 | Vector { | ||
| 417 | _handler: DFSDM1_FLT1, | ||
| 418 | }, | ||
| 419 | Vector { _reserved: 0 }, | ||
| 420 | Vector { _handler: COMP }, | ||
| 421 | Vector { _handler: LPTIM1 }, | ||
| 422 | Vector { _handler: LPTIM2 }, | ||
| 423 | Vector { _handler: OTG_FS }, | ||
| 424 | Vector { | ||
| 425 | _handler: DMA2_Channel6, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DMA2_Channel7, | ||
| 429 | }, | ||
| 430 | Vector { _handler: LPUART1 }, | ||
| 431 | Vector { _handler: OCTOSPI1 }, | ||
| 432 | Vector { _handler: I2C3_EV }, | ||
| 433 | Vector { _handler: I2C3_ER }, | ||
| 434 | Vector { _handler: SAI1 }, | ||
| 435 | Vector { _handler: SAI2 }, | ||
| 436 | Vector { _handler: OCTOSPI2 }, | ||
| 437 | Vector { _handler: TSC }, | ||
| 438 | Vector { _reserved: 0 }, | ||
| 439 | Vector { _handler: AES }, | ||
| 440 | Vector { _handler: RNG }, | ||
| 441 | Vector { _handler: FPU }, | ||
| 442 | Vector { _handler: HASH_CRS }, | ||
| 443 | Vector { _handler: I2C4_ER }, | ||
| 444 | Vector { _handler: I2C4_EV }, | ||
| 445 | Vector { | ||
| 446 | _handler: DCMI_PSSI, | ||
| 447 | }, | ||
| 448 | Vector { _handler: PKA }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { _reserved: 0 }, | ||
| 451 | Vector { _reserved: 0 }, | ||
| 452 | Vector { _handler: DMA2D }, | ||
| 453 | Vector { _handler: LTDC }, | ||
| 454 | Vector { _handler: LTDC_ER }, | ||
| 455 | Vector { _reserved: 0 }, | ||
| 456 | Vector { | ||
| 457 | _handler: DMAMUX1_OVR, | ||
| 458 | }, | ||
| 459 | ]; | ||
| 460 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 461 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 462 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 463 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4q5cg.rs b/embassy-stm32/src/chip/stm32l4q5cg.rs index 1ae248437..75adefddd 100644 --- a/embassy-stm32/src/chip/stm32l4q5cg.rs +++ b/embassy-stm32/src/chip/stm32l4q5cg.rs | |||
| @@ -1,22 +1,463 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, | 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, |
| 14 | OCTOSPIM, OPAMP1, OPAMP2, PKA, RCC, RNG, RTC, SAI1, SAI2, SDMMC2, SPI1, SPI2, SPI3, SYSCFG, | 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PKA, RCC, RNG, RTC, SAI1, SAI2, SDMMC2, SPI1, SPI2, SPI3, |
| 15 | TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, USART1, | 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, |
| 16 | USART2, USART3, USB_OTG_FS, WWDG | 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DCMI_PSSI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2D = 90, | ||
| 49 | DMA2_Channel1 = 56, | ||
| 50 | DMA2_Channel2 = 57, | ||
| 51 | DMA2_Channel3 = 58, | ||
| 52 | DMA2_Channel4 = 59, | ||
| 53 | DMA2_Channel5 = 60, | ||
| 54 | DMA2_Channel6 = 68, | ||
| 55 | DMA2_Channel7 = 69, | ||
| 56 | DMAMUX1_OVR = 94, | ||
| 57 | EXTI0 = 6, | ||
| 58 | EXTI1 = 7, | ||
| 59 | EXTI15_10 = 40, | ||
| 60 | EXTI2 = 8, | ||
| 61 | EXTI3 = 9, | ||
| 62 | EXTI4 = 10, | ||
| 63 | EXTI9_5 = 23, | ||
| 64 | FLASH = 4, | ||
| 65 | FMC = 48, | ||
| 66 | FPU = 81, | ||
| 67 | HASH_CRS = 82, | ||
| 68 | I2C1_ER = 32, | ||
| 69 | I2C1_EV = 31, | ||
| 70 | I2C2_ER = 34, | ||
| 71 | I2C2_EV = 33, | ||
| 72 | I2C3_ER = 73, | ||
| 73 | I2C3_EV = 72, | ||
| 74 | I2C4_ER = 83, | ||
| 75 | I2C4_EV = 84, | ||
| 76 | LPTIM1 = 65, | ||
| 77 | LPTIM2 = 66, | ||
| 78 | LPUART1 = 70, | ||
| 79 | LTDC = 91, | ||
| 80 | LTDC_ER = 92, | ||
| 81 | OCTOSPI1 = 71, | ||
| 82 | OCTOSPI2 = 76, | ||
| 83 | OTG_FS = 67, | ||
| 84 | PKA = 86, | ||
| 85 | PVD_PVM = 1, | ||
| 86 | RCC = 5, | ||
| 87 | RNG = 80, | ||
| 88 | RTC_Alarm = 41, | ||
| 89 | RTC_WKUP = 3, | ||
| 90 | SAI1 = 74, | ||
| 91 | SAI2 = 75, | ||
| 92 | SDMMC1 = 49, | ||
| 93 | SDMMC2 = 47, | ||
| 94 | SPI1 = 35, | ||
| 95 | SPI2 = 36, | ||
| 96 | SPI3 = 51, | ||
| 97 | TAMP_STAMP = 2, | ||
| 98 | TIM1_BRK_TIM15 = 24, | ||
| 99 | TIM1_CC = 27, | ||
| 100 | TIM1_TRG_COM_TIM17 = 26, | ||
| 101 | TIM1_UP_TIM16 = 25, | ||
| 102 | TIM2 = 28, | ||
| 103 | TIM3 = 29, | ||
| 104 | TIM4 = 30, | ||
| 105 | TIM5 = 50, | ||
| 106 | TIM6_DAC = 54, | ||
| 107 | TIM7 = 55, | ||
| 108 | TIM8_BRK = 43, | ||
| 109 | TIM8_CC = 46, | ||
| 110 | TIM8_TRG_COM = 45, | ||
| 111 | TIM8_UP = 44, | ||
| 112 | TSC = 77, | ||
| 113 | UART4 = 52, | ||
| 114 | UART5 = 53, | ||
| 115 | USART1 = 37, | ||
| 116 | USART2 = 38, | ||
| 117 | USART3 = 39, | ||
| 118 | WWDG = 0, | ||
| 119 | } | ||
| 120 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 121 | #[inline(always)] | ||
| 122 | fn number(self) -> u16 { | ||
| 123 | self as u16 | ||
| 124 | } | ||
| 125 | } | ||
| 126 | |||
| 127 | declare!(ADC1_2); | ||
| 128 | declare!(AES); | ||
| 129 | declare!(CAN1_RX0); | ||
| 130 | declare!(CAN1_RX1); | ||
| 131 | declare!(CAN1_SCE); | ||
| 132 | declare!(CAN1_TX); | ||
| 133 | declare!(COMP); | ||
| 134 | declare!(DCMI_PSSI); | ||
| 135 | declare!(DFSDM1_FLT0); | ||
| 136 | declare!(DFSDM1_FLT1); | ||
| 137 | declare!(DMA1_Channel1); | ||
| 138 | declare!(DMA1_Channel2); | ||
| 139 | declare!(DMA1_Channel3); | ||
| 140 | declare!(DMA1_Channel4); | ||
| 141 | declare!(DMA1_Channel5); | ||
| 142 | declare!(DMA1_Channel6); | ||
| 143 | declare!(DMA1_Channel7); | ||
| 144 | declare!(DMA2D); | ||
| 145 | declare!(DMA2_Channel1); | ||
| 146 | declare!(DMA2_Channel2); | ||
| 147 | declare!(DMA2_Channel3); | ||
| 148 | declare!(DMA2_Channel4); | ||
| 149 | declare!(DMA2_Channel5); | ||
| 150 | declare!(DMA2_Channel6); | ||
| 151 | declare!(DMA2_Channel7); | ||
| 152 | declare!(DMAMUX1_OVR); | ||
| 153 | declare!(EXTI0); | ||
| 154 | declare!(EXTI1); | ||
| 155 | declare!(EXTI15_10); | ||
| 156 | declare!(EXTI2); | ||
| 157 | declare!(EXTI3); | ||
| 158 | declare!(EXTI4); | ||
| 159 | declare!(EXTI9_5); | ||
| 160 | declare!(FLASH); | ||
| 161 | declare!(FMC); | ||
| 162 | declare!(FPU); | ||
| 163 | declare!(HASH_CRS); | ||
| 164 | declare!(I2C1_ER); | ||
| 165 | declare!(I2C1_EV); | ||
| 166 | declare!(I2C2_ER); | ||
| 167 | declare!(I2C2_EV); | ||
| 168 | declare!(I2C3_ER); | ||
| 169 | declare!(I2C3_EV); | ||
| 170 | declare!(I2C4_ER); | ||
| 171 | declare!(I2C4_EV); | ||
| 172 | declare!(LPTIM1); | ||
| 173 | declare!(LPTIM2); | ||
| 174 | declare!(LPUART1); | ||
| 175 | declare!(LTDC); | ||
| 176 | declare!(LTDC_ER); | ||
| 177 | declare!(OCTOSPI1); | ||
| 178 | declare!(OCTOSPI2); | ||
| 179 | declare!(OTG_FS); | ||
| 180 | declare!(PKA); | ||
| 181 | declare!(PVD_PVM); | ||
| 182 | declare!(RCC); | ||
| 183 | declare!(RNG); | ||
| 184 | declare!(RTC_Alarm); | ||
| 185 | declare!(RTC_WKUP); | ||
| 186 | declare!(SAI1); | ||
| 187 | declare!(SAI2); | ||
| 188 | declare!(SDMMC1); | ||
| 189 | declare!(SDMMC2); | ||
| 190 | declare!(SPI1); | ||
| 191 | declare!(SPI2); | ||
| 192 | declare!(SPI3); | ||
| 193 | declare!(TAMP_STAMP); | ||
| 194 | declare!(TIM1_BRK_TIM15); | ||
| 195 | declare!(TIM1_CC); | ||
| 196 | declare!(TIM1_TRG_COM_TIM17); | ||
| 197 | declare!(TIM1_UP_TIM16); | ||
| 198 | declare!(TIM2); | ||
| 199 | declare!(TIM3); | ||
| 200 | declare!(TIM4); | ||
| 201 | declare!(TIM5); | ||
| 202 | declare!(TIM6_DAC); | ||
| 203 | declare!(TIM7); | ||
| 204 | declare!(TIM8_BRK); | ||
| 205 | declare!(TIM8_CC); | ||
| 206 | declare!(TIM8_TRG_COM); | ||
| 207 | declare!(TIM8_UP); | ||
| 208 | declare!(TSC); | ||
| 209 | declare!(UART4); | ||
| 210 | declare!(UART5); | ||
| 211 | declare!(USART1); | ||
| 212 | declare!(USART2); | ||
| 213 | declare!(USART3); | ||
| 214 | declare!(WWDG); | ||
| 215 | } | ||
| 216 | mod interrupt_vector { | ||
| 217 | extern "C" { | ||
| 218 | fn ADC1_2(); | ||
| 219 | fn AES(); | ||
| 220 | fn CAN1_RX0(); | ||
| 221 | fn CAN1_RX1(); | ||
| 222 | fn CAN1_SCE(); | ||
| 223 | fn CAN1_TX(); | ||
| 224 | fn COMP(); | ||
| 225 | fn DCMI_PSSI(); | ||
| 226 | fn DFSDM1_FLT0(); | ||
| 227 | fn DFSDM1_FLT1(); | ||
| 228 | fn DMA1_Channel1(); | ||
| 229 | fn DMA1_Channel2(); | ||
| 230 | fn DMA1_Channel3(); | ||
| 231 | fn DMA1_Channel4(); | ||
| 232 | fn DMA1_Channel5(); | ||
| 233 | fn DMA1_Channel6(); | ||
| 234 | fn DMA1_Channel7(); | ||
| 235 | fn DMA2D(); | ||
| 236 | fn DMA2_Channel1(); | ||
| 237 | fn DMA2_Channel2(); | ||
| 238 | fn DMA2_Channel3(); | ||
| 239 | fn DMA2_Channel4(); | ||
| 240 | fn DMA2_Channel5(); | ||
| 241 | fn DMA2_Channel6(); | ||
| 242 | fn DMA2_Channel7(); | ||
| 243 | fn DMAMUX1_OVR(); | ||
| 244 | fn EXTI0(); | ||
| 245 | fn EXTI1(); | ||
| 246 | fn EXTI15_10(); | ||
| 247 | fn EXTI2(); | ||
| 248 | fn EXTI3(); | ||
| 249 | fn EXTI4(); | ||
| 250 | fn EXTI9_5(); | ||
| 251 | fn FLASH(); | ||
| 252 | fn FMC(); | ||
| 253 | fn FPU(); | ||
| 254 | fn HASH_CRS(); | ||
| 255 | fn I2C1_ER(); | ||
| 256 | fn I2C1_EV(); | ||
| 257 | fn I2C2_ER(); | ||
| 258 | fn I2C2_EV(); | ||
| 259 | fn I2C3_ER(); | ||
| 260 | fn I2C3_EV(); | ||
| 261 | fn I2C4_ER(); | ||
| 262 | fn I2C4_EV(); | ||
| 263 | fn LPTIM1(); | ||
| 264 | fn LPTIM2(); | ||
| 265 | fn LPUART1(); | ||
| 266 | fn LTDC(); | ||
| 267 | fn LTDC_ER(); | ||
| 268 | fn OCTOSPI1(); | ||
| 269 | fn OCTOSPI2(); | ||
| 270 | fn OTG_FS(); | ||
| 271 | fn PKA(); | ||
| 272 | fn PVD_PVM(); | ||
| 273 | fn RCC(); | ||
| 274 | fn RNG(); | ||
| 275 | fn RTC_Alarm(); | ||
| 276 | fn RTC_WKUP(); | ||
| 277 | fn SAI1(); | ||
| 278 | fn SAI2(); | ||
| 279 | fn SDMMC1(); | ||
| 280 | fn SDMMC2(); | ||
| 281 | fn SPI1(); | ||
| 282 | fn SPI2(); | ||
| 283 | fn SPI3(); | ||
| 284 | fn TAMP_STAMP(); | ||
| 285 | fn TIM1_BRK_TIM15(); | ||
| 286 | fn TIM1_CC(); | ||
| 287 | fn TIM1_TRG_COM_TIM17(); | ||
| 288 | fn TIM1_UP_TIM16(); | ||
| 289 | fn TIM2(); | ||
| 290 | fn TIM3(); | ||
| 291 | fn TIM4(); | ||
| 292 | fn TIM5(); | ||
| 293 | fn TIM6_DAC(); | ||
| 294 | fn TIM7(); | ||
| 295 | fn TIM8_BRK(); | ||
| 296 | fn TIM8_CC(); | ||
| 297 | fn TIM8_TRG_COM(); | ||
| 298 | fn TIM8_UP(); | ||
| 299 | fn TSC(); | ||
| 300 | fn UART4(); | ||
| 301 | fn UART5(); | ||
| 302 | fn USART1(); | ||
| 303 | fn USART2(); | ||
| 304 | fn USART3(); | ||
| 305 | fn WWDG(); | ||
| 306 | } | ||
| 307 | pub union Vector { | ||
| 308 | _handler: unsafe extern "C" fn(), | ||
| 309 | _reserved: u32, | ||
| 310 | } | ||
| 311 | #[link_section = ".vector_table.interrupts"] | ||
| 312 | #[no_mangle] | ||
| 313 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 314 | Vector { _handler: WWDG }, | ||
| 315 | Vector { _handler: PVD_PVM }, | ||
| 316 | Vector { | ||
| 317 | _handler: TAMP_STAMP, | ||
| 318 | }, | ||
| 319 | Vector { _handler: RTC_WKUP }, | ||
| 320 | Vector { _handler: FLASH }, | ||
| 321 | Vector { _handler: RCC }, | ||
| 322 | Vector { _handler: EXTI0 }, | ||
| 323 | Vector { _handler: EXTI1 }, | ||
| 324 | Vector { _handler: EXTI2 }, | ||
| 325 | Vector { _handler: EXTI3 }, | ||
| 326 | Vector { _handler: EXTI4 }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel1, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel2, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel3, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel4, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel5, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel6, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel7, | ||
| 347 | }, | ||
| 348 | Vector { _handler: ADC1_2 }, | ||
| 349 | Vector { _handler: CAN1_TX }, | ||
| 350 | Vector { _handler: CAN1_RX0 }, | ||
| 351 | Vector { _handler: CAN1_RX1 }, | ||
| 352 | Vector { _handler: CAN1_SCE }, | ||
| 353 | Vector { _handler: EXTI9_5 }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_BRK_TIM15, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: TIM1_UP_TIM16, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_TRG_COM_TIM17, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM1_CC }, | ||
| 364 | Vector { _handler: TIM2 }, | ||
| 365 | Vector { _handler: TIM3 }, | ||
| 366 | Vector { _handler: TIM4 }, | ||
| 367 | Vector { _handler: I2C1_EV }, | ||
| 368 | Vector { _handler: I2C1_ER }, | ||
| 369 | Vector { _handler: I2C2_EV }, | ||
| 370 | Vector { _handler: I2C2_ER }, | ||
| 371 | Vector { _handler: SPI1 }, | ||
| 372 | Vector { _handler: SPI2 }, | ||
| 373 | Vector { _handler: USART1 }, | ||
| 374 | Vector { _handler: USART2 }, | ||
| 375 | Vector { _handler: USART3 }, | ||
| 376 | Vector { | ||
| 377 | _handler: EXTI15_10, | ||
| 378 | }, | ||
| 379 | Vector { | ||
| 380 | _handler: RTC_Alarm, | ||
| 381 | }, | ||
| 382 | Vector { _reserved: 0 }, | ||
| 383 | Vector { _handler: TIM8_BRK }, | ||
| 384 | Vector { _handler: TIM8_UP }, | ||
| 385 | Vector { | ||
| 386 | _handler: TIM8_TRG_COM, | ||
| 387 | }, | ||
| 388 | Vector { _handler: TIM8_CC }, | ||
| 389 | Vector { _handler: SDMMC2 }, | ||
| 390 | Vector { _handler: FMC }, | ||
| 391 | Vector { _handler: SDMMC1 }, | ||
| 392 | Vector { _handler: TIM5 }, | ||
| 393 | Vector { _handler: SPI3 }, | ||
| 394 | Vector { _handler: UART4 }, | ||
| 395 | Vector { _handler: UART5 }, | ||
| 396 | Vector { _handler: TIM6_DAC }, | ||
| 397 | Vector { _handler: TIM7 }, | ||
| 398 | Vector { | ||
| 399 | _handler: DMA2_Channel1, | ||
| 400 | }, | ||
| 401 | Vector { | ||
| 402 | _handler: DMA2_Channel2, | ||
| 403 | }, | ||
| 404 | Vector { | ||
| 405 | _handler: DMA2_Channel3, | ||
| 406 | }, | ||
| 407 | Vector { | ||
| 408 | _handler: DMA2_Channel4, | ||
| 409 | }, | ||
| 410 | Vector { | ||
| 411 | _handler: DMA2_Channel5, | ||
| 412 | }, | ||
| 413 | Vector { | ||
| 414 | _handler: DFSDM1_FLT0, | ||
| 415 | }, | ||
| 416 | Vector { | ||
| 417 | _handler: DFSDM1_FLT1, | ||
| 418 | }, | ||
| 419 | Vector { _reserved: 0 }, | ||
| 420 | Vector { _handler: COMP }, | ||
| 421 | Vector { _handler: LPTIM1 }, | ||
| 422 | Vector { _handler: LPTIM2 }, | ||
| 423 | Vector { _handler: OTG_FS }, | ||
| 424 | Vector { | ||
| 425 | _handler: DMA2_Channel6, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DMA2_Channel7, | ||
| 429 | }, | ||
| 430 | Vector { _handler: LPUART1 }, | ||
| 431 | Vector { _handler: OCTOSPI1 }, | ||
| 432 | Vector { _handler: I2C3_EV }, | ||
| 433 | Vector { _handler: I2C3_ER }, | ||
| 434 | Vector { _handler: SAI1 }, | ||
| 435 | Vector { _handler: SAI2 }, | ||
| 436 | Vector { _handler: OCTOSPI2 }, | ||
| 437 | Vector { _handler: TSC }, | ||
| 438 | Vector { _reserved: 0 }, | ||
| 439 | Vector { _handler: AES }, | ||
| 440 | Vector { _handler: RNG }, | ||
| 441 | Vector { _handler: FPU }, | ||
| 442 | Vector { _handler: HASH_CRS }, | ||
| 443 | Vector { _handler: I2C4_ER }, | ||
| 444 | Vector { _handler: I2C4_EV }, | ||
| 445 | Vector { | ||
| 446 | _handler: DCMI_PSSI, | ||
| 447 | }, | ||
| 448 | Vector { _handler: PKA }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { _reserved: 0 }, | ||
| 451 | Vector { _reserved: 0 }, | ||
| 452 | Vector { _handler: DMA2D }, | ||
| 453 | Vector { _handler: LTDC }, | ||
| 454 | Vector { _handler: LTDC_ER }, | ||
| 455 | Vector { _reserved: 0 }, | ||
| 456 | Vector { | ||
| 457 | _handler: DMAMUX1_OVR, | ||
| 458 | }, | ||
| 459 | ]; | ||
| 460 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 461 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 462 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 463 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4q5qg.rs b/embassy-stm32/src/chip/stm32l4q5qg.rs index 295c68f1c..64643dc4e 100644 --- a/embassy-stm32/src/chip/stm32l4q5qg.rs +++ b/embassy-stm32/src/chip/stm32l4q5qg.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -15,8 +15,449 @@ peripherals!( | |||
| 15 | SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, | 15 | SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, |
| 16 | UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG | 16 | UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DCMI_PSSI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2D = 90, | ||
| 49 | DMA2_Channel1 = 56, | ||
| 50 | DMA2_Channel2 = 57, | ||
| 51 | DMA2_Channel3 = 58, | ||
| 52 | DMA2_Channel4 = 59, | ||
| 53 | DMA2_Channel5 = 60, | ||
| 54 | DMA2_Channel6 = 68, | ||
| 55 | DMA2_Channel7 = 69, | ||
| 56 | DMAMUX1_OVR = 94, | ||
| 57 | EXTI0 = 6, | ||
| 58 | EXTI1 = 7, | ||
| 59 | EXTI15_10 = 40, | ||
| 60 | EXTI2 = 8, | ||
| 61 | EXTI3 = 9, | ||
| 62 | EXTI4 = 10, | ||
| 63 | EXTI9_5 = 23, | ||
| 64 | FLASH = 4, | ||
| 65 | FMC = 48, | ||
| 66 | FPU = 81, | ||
| 67 | HASH_CRS = 82, | ||
| 68 | I2C1_ER = 32, | ||
| 69 | I2C1_EV = 31, | ||
| 70 | I2C2_ER = 34, | ||
| 71 | I2C2_EV = 33, | ||
| 72 | I2C3_ER = 73, | ||
| 73 | I2C3_EV = 72, | ||
| 74 | I2C4_ER = 83, | ||
| 75 | I2C4_EV = 84, | ||
| 76 | LPTIM1 = 65, | ||
| 77 | LPTIM2 = 66, | ||
| 78 | LPUART1 = 70, | ||
| 79 | LTDC = 91, | ||
| 80 | LTDC_ER = 92, | ||
| 81 | OCTOSPI1 = 71, | ||
| 82 | OCTOSPI2 = 76, | ||
| 83 | OTG_FS = 67, | ||
| 84 | PKA = 86, | ||
| 85 | PVD_PVM = 1, | ||
| 86 | RCC = 5, | ||
| 87 | RNG = 80, | ||
| 88 | RTC_Alarm = 41, | ||
| 89 | RTC_WKUP = 3, | ||
| 90 | SAI1 = 74, | ||
| 91 | SAI2 = 75, | ||
| 92 | SDMMC1 = 49, | ||
| 93 | SDMMC2 = 47, | ||
| 94 | SPI1 = 35, | ||
| 95 | SPI2 = 36, | ||
| 96 | SPI3 = 51, | ||
| 97 | TAMP_STAMP = 2, | ||
| 98 | TIM1_BRK_TIM15 = 24, | ||
| 99 | TIM1_CC = 27, | ||
| 100 | TIM1_TRG_COM_TIM17 = 26, | ||
| 101 | TIM1_UP_TIM16 = 25, | ||
| 102 | TIM2 = 28, | ||
| 103 | TIM3 = 29, | ||
| 104 | TIM4 = 30, | ||
| 105 | TIM5 = 50, | ||
| 106 | TIM6_DAC = 54, | ||
| 107 | TIM7 = 55, | ||
| 108 | TIM8_BRK = 43, | ||
| 109 | TIM8_CC = 46, | ||
| 110 | TIM8_TRG_COM = 45, | ||
| 111 | TIM8_UP = 44, | ||
| 112 | TSC = 77, | ||
| 113 | UART4 = 52, | ||
| 114 | UART5 = 53, | ||
| 115 | USART1 = 37, | ||
| 116 | USART2 = 38, | ||
| 117 | USART3 = 39, | ||
| 118 | WWDG = 0, | ||
| 119 | } | ||
| 120 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 121 | #[inline(always)] | ||
| 122 | fn number(self) -> u16 { | ||
| 123 | self as u16 | ||
| 124 | } | ||
| 125 | } | ||
| 126 | |||
| 127 | declare!(ADC1_2); | ||
| 128 | declare!(AES); | ||
| 129 | declare!(CAN1_RX0); | ||
| 130 | declare!(CAN1_RX1); | ||
| 131 | declare!(CAN1_SCE); | ||
| 132 | declare!(CAN1_TX); | ||
| 133 | declare!(COMP); | ||
| 134 | declare!(DCMI_PSSI); | ||
| 135 | declare!(DFSDM1_FLT0); | ||
| 136 | declare!(DFSDM1_FLT1); | ||
| 137 | declare!(DMA1_Channel1); | ||
| 138 | declare!(DMA1_Channel2); | ||
| 139 | declare!(DMA1_Channel3); | ||
| 140 | declare!(DMA1_Channel4); | ||
| 141 | declare!(DMA1_Channel5); | ||
| 142 | declare!(DMA1_Channel6); | ||
| 143 | declare!(DMA1_Channel7); | ||
| 144 | declare!(DMA2D); | ||
| 145 | declare!(DMA2_Channel1); | ||
| 146 | declare!(DMA2_Channel2); | ||
| 147 | declare!(DMA2_Channel3); | ||
| 148 | declare!(DMA2_Channel4); | ||
| 149 | declare!(DMA2_Channel5); | ||
| 150 | declare!(DMA2_Channel6); | ||
| 151 | declare!(DMA2_Channel7); | ||
| 152 | declare!(DMAMUX1_OVR); | ||
| 153 | declare!(EXTI0); | ||
| 154 | declare!(EXTI1); | ||
| 155 | declare!(EXTI15_10); | ||
| 156 | declare!(EXTI2); | ||
| 157 | declare!(EXTI3); | ||
| 158 | declare!(EXTI4); | ||
| 159 | declare!(EXTI9_5); | ||
| 160 | declare!(FLASH); | ||
| 161 | declare!(FMC); | ||
| 162 | declare!(FPU); | ||
| 163 | declare!(HASH_CRS); | ||
| 164 | declare!(I2C1_ER); | ||
| 165 | declare!(I2C1_EV); | ||
| 166 | declare!(I2C2_ER); | ||
| 167 | declare!(I2C2_EV); | ||
| 168 | declare!(I2C3_ER); | ||
| 169 | declare!(I2C3_EV); | ||
| 170 | declare!(I2C4_ER); | ||
| 171 | declare!(I2C4_EV); | ||
| 172 | declare!(LPTIM1); | ||
| 173 | declare!(LPTIM2); | ||
| 174 | declare!(LPUART1); | ||
| 175 | declare!(LTDC); | ||
| 176 | declare!(LTDC_ER); | ||
| 177 | declare!(OCTOSPI1); | ||
| 178 | declare!(OCTOSPI2); | ||
| 179 | declare!(OTG_FS); | ||
| 180 | declare!(PKA); | ||
| 181 | declare!(PVD_PVM); | ||
| 182 | declare!(RCC); | ||
| 183 | declare!(RNG); | ||
| 184 | declare!(RTC_Alarm); | ||
| 185 | declare!(RTC_WKUP); | ||
| 186 | declare!(SAI1); | ||
| 187 | declare!(SAI2); | ||
| 188 | declare!(SDMMC1); | ||
| 189 | declare!(SDMMC2); | ||
| 190 | declare!(SPI1); | ||
| 191 | declare!(SPI2); | ||
| 192 | declare!(SPI3); | ||
| 193 | declare!(TAMP_STAMP); | ||
| 194 | declare!(TIM1_BRK_TIM15); | ||
| 195 | declare!(TIM1_CC); | ||
| 196 | declare!(TIM1_TRG_COM_TIM17); | ||
| 197 | declare!(TIM1_UP_TIM16); | ||
| 198 | declare!(TIM2); | ||
| 199 | declare!(TIM3); | ||
| 200 | declare!(TIM4); | ||
| 201 | declare!(TIM5); | ||
| 202 | declare!(TIM6_DAC); | ||
| 203 | declare!(TIM7); | ||
| 204 | declare!(TIM8_BRK); | ||
| 205 | declare!(TIM8_CC); | ||
| 206 | declare!(TIM8_TRG_COM); | ||
| 207 | declare!(TIM8_UP); | ||
| 208 | declare!(TSC); | ||
| 209 | declare!(UART4); | ||
| 210 | declare!(UART5); | ||
| 211 | declare!(USART1); | ||
| 212 | declare!(USART2); | ||
| 213 | declare!(USART3); | ||
| 214 | declare!(WWDG); | ||
| 215 | } | ||
| 216 | mod interrupt_vector { | ||
| 217 | extern "C" { | ||
| 218 | fn ADC1_2(); | ||
| 219 | fn AES(); | ||
| 220 | fn CAN1_RX0(); | ||
| 221 | fn CAN1_RX1(); | ||
| 222 | fn CAN1_SCE(); | ||
| 223 | fn CAN1_TX(); | ||
| 224 | fn COMP(); | ||
| 225 | fn DCMI_PSSI(); | ||
| 226 | fn DFSDM1_FLT0(); | ||
| 227 | fn DFSDM1_FLT1(); | ||
| 228 | fn DMA1_Channel1(); | ||
| 229 | fn DMA1_Channel2(); | ||
| 230 | fn DMA1_Channel3(); | ||
| 231 | fn DMA1_Channel4(); | ||
| 232 | fn DMA1_Channel5(); | ||
| 233 | fn DMA1_Channel6(); | ||
| 234 | fn DMA1_Channel7(); | ||
| 235 | fn DMA2D(); | ||
| 236 | fn DMA2_Channel1(); | ||
| 237 | fn DMA2_Channel2(); | ||
| 238 | fn DMA2_Channel3(); | ||
| 239 | fn DMA2_Channel4(); | ||
| 240 | fn DMA2_Channel5(); | ||
| 241 | fn DMA2_Channel6(); | ||
| 242 | fn DMA2_Channel7(); | ||
| 243 | fn DMAMUX1_OVR(); | ||
| 244 | fn EXTI0(); | ||
| 245 | fn EXTI1(); | ||
| 246 | fn EXTI15_10(); | ||
| 247 | fn EXTI2(); | ||
| 248 | fn EXTI3(); | ||
| 249 | fn EXTI4(); | ||
| 250 | fn EXTI9_5(); | ||
| 251 | fn FLASH(); | ||
| 252 | fn FMC(); | ||
| 253 | fn FPU(); | ||
| 254 | fn HASH_CRS(); | ||
| 255 | fn I2C1_ER(); | ||
| 256 | fn I2C1_EV(); | ||
| 257 | fn I2C2_ER(); | ||
| 258 | fn I2C2_EV(); | ||
| 259 | fn I2C3_ER(); | ||
| 260 | fn I2C3_EV(); | ||
| 261 | fn I2C4_ER(); | ||
| 262 | fn I2C4_EV(); | ||
| 263 | fn LPTIM1(); | ||
| 264 | fn LPTIM2(); | ||
| 265 | fn LPUART1(); | ||
| 266 | fn LTDC(); | ||
| 267 | fn LTDC_ER(); | ||
| 268 | fn OCTOSPI1(); | ||
| 269 | fn OCTOSPI2(); | ||
| 270 | fn OTG_FS(); | ||
| 271 | fn PKA(); | ||
| 272 | fn PVD_PVM(); | ||
| 273 | fn RCC(); | ||
| 274 | fn RNG(); | ||
| 275 | fn RTC_Alarm(); | ||
| 276 | fn RTC_WKUP(); | ||
| 277 | fn SAI1(); | ||
| 278 | fn SAI2(); | ||
| 279 | fn SDMMC1(); | ||
| 280 | fn SDMMC2(); | ||
| 281 | fn SPI1(); | ||
| 282 | fn SPI2(); | ||
| 283 | fn SPI3(); | ||
| 284 | fn TAMP_STAMP(); | ||
| 285 | fn TIM1_BRK_TIM15(); | ||
| 286 | fn TIM1_CC(); | ||
| 287 | fn TIM1_TRG_COM_TIM17(); | ||
| 288 | fn TIM1_UP_TIM16(); | ||
| 289 | fn TIM2(); | ||
| 290 | fn TIM3(); | ||
| 291 | fn TIM4(); | ||
| 292 | fn TIM5(); | ||
| 293 | fn TIM6_DAC(); | ||
| 294 | fn TIM7(); | ||
| 295 | fn TIM8_BRK(); | ||
| 296 | fn TIM8_CC(); | ||
| 297 | fn TIM8_TRG_COM(); | ||
| 298 | fn TIM8_UP(); | ||
| 299 | fn TSC(); | ||
| 300 | fn UART4(); | ||
| 301 | fn UART5(); | ||
| 302 | fn USART1(); | ||
| 303 | fn USART2(); | ||
| 304 | fn USART3(); | ||
| 305 | fn WWDG(); | ||
| 306 | } | ||
| 307 | pub union Vector { | ||
| 308 | _handler: unsafe extern "C" fn(), | ||
| 309 | _reserved: u32, | ||
| 310 | } | ||
| 311 | #[link_section = ".vector_table.interrupts"] | ||
| 312 | #[no_mangle] | ||
| 313 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 314 | Vector { _handler: WWDG }, | ||
| 315 | Vector { _handler: PVD_PVM }, | ||
| 316 | Vector { | ||
| 317 | _handler: TAMP_STAMP, | ||
| 318 | }, | ||
| 319 | Vector { _handler: RTC_WKUP }, | ||
| 320 | Vector { _handler: FLASH }, | ||
| 321 | Vector { _handler: RCC }, | ||
| 322 | Vector { _handler: EXTI0 }, | ||
| 323 | Vector { _handler: EXTI1 }, | ||
| 324 | Vector { _handler: EXTI2 }, | ||
| 325 | Vector { _handler: EXTI3 }, | ||
| 326 | Vector { _handler: EXTI4 }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel1, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel2, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel3, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel4, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel5, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel6, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel7, | ||
| 347 | }, | ||
| 348 | Vector { _handler: ADC1_2 }, | ||
| 349 | Vector { _handler: CAN1_TX }, | ||
| 350 | Vector { _handler: CAN1_RX0 }, | ||
| 351 | Vector { _handler: CAN1_RX1 }, | ||
| 352 | Vector { _handler: CAN1_SCE }, | ||
| 353 | Vector { _handler: EXTI9_5 }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_BRK_TIM15, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: TIM1_UP_TIM16, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_TRG_COM_TIM17, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM1_CC }, | ||
| 364 | Vector { _handler: TIM2 }, | ||
| 365 | Vector { _handler: TIM3 }, | ||
| 366 | Vector { _handler: TIM4 }, | ||
| 367 | Vector { _handler: I2C1_EV }, | ||
| 368 | Vector { _handler: I2C1_ER }, | ||
| 369 | Vector { _handler: I2C2_EV }, | ||
| 370 | Vector { _handler: I2C2_ER }, | ||
| 371 | Vector { _handler: SPI1 }, | ||
| 372 | Vector { _handler: SPI2 }, | ||
| 373 | Vector { _handler: USART1 }, | ||
| 374 | Vector { _handler: USART2 }, | ||
| 375 | Vector { _handler: USART3 }, | ||
| 376 | Vector { | ||
| 377 | _handler: EXTI15_10, | ||
| 378 | }, | ||
| 379 | Vector { | ||
| 380 | _handler: RTC_Alarm, | ||
| 381 | }, | ||
| 382 | Vector { _reserved: 0 }, | ||
| 383 | Vector { _handler: TIM8_BRK }, | ||
| 384 | Vector { _handler: TIM8_UP }, | ||
| 385 | Vector { | ||
| 386 | _handler: TIM8_TRG_COM, | ||
| 387 | }, | ||
| 388 | Vector { _handler: TIM8_CC }, | ||
| 389 | Vector { _handler: SDMMC2 }, | ||
| 390 | Vector { _handler: FMC }, | ||
| 391 | Vector { _handler: SDMMC1 }, | ||
| 392 | Vector { _handler: TIM5 }, | ||
| 393 | Vector { _handler: SPI3 }, | ||
| 394 | Vector { _handler: UART4 }, | ||
| 395 | Vector { _handler: UART5 }, | ||
| 396 | Vector { _handler: TIM6_DAC }, | ||
| 397 | Vector { _handler: TIM7 }, | ||
| 398 | Vector { | ||
| 399 | _handler: DMA2_Channel1, | ||
| 400 | }, | ||
| 401 | Vector { | ||
| 402 | _handler: DMA2_Channel2, | ||
| 403 | }, | ||
| 404 | Vector { | ||
| 405 | _handler: DMA2_Channel3, | ||
| 406 | }, | ||
| 407 | Vector { | ||
| 408 | _handler: DMA2_Channel4, | ||
| 409 | }, | ||
| 410 | Vector { | ||
| 411 | _handler: DMA2_Channel5, | ||
| 412 | }, | ||
| 413 | Vector { | ||
| 414 | _handler: DFSDM1_FLT0, | ||
| 415 | }, | ||
| 416 | Vector { | ||
| 417 | _handler: DFSDM1_FLT1, | ||
| 418 | }, | ||
| 419 | Vector { _reserved: 0 }, | ||
| 420 | Vector { _handler: COMP }, | ||
| 421 | Vector { _handler: LPTIM1 }, | ||
| 422 | Vector { _handler: LPTIM2 }, | ||
| 423 | Vector { _handler: OTG_FS }, | ||
| 424 | Vector { | ||
| 425 | _handler: DMA2_Channel6, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DMA2_Channel7, | ||
| 429 | }, | ||
| 430 | Vector { _handler: LPUART1 }, | ||
| 431 | Vector { _handler: OCTOSPI1 }, | ||
| 432 | Vector { _handler: I2C3_EV }, | ||
| 433 | Vector { _handler: I2C3_ER }, | ||
| 434 | Vector { _handler: SAI1 }, | ||
| 435 | Vector { _handler: SAI2 }, | ||
| 436 | Vector { _handler: OCTOSPI2 }, | ||
| 437 | Vector { _handler: TSC }, | ||
| 438 | Vector { _reserved: 0 }, | ||
| 439 | Vector { _handler: AES }, | ||
| 440 | Vector { _handler: RNG }, | ||
| 441 | Vector { _handler: FPU }, | ||
| 442 | Vector { _handler: HASH_CRS }, | ||
| 443 | Vector { _handler: I2C4_ER }, | ||
| 444 | Vector { _handler: I2C4_EV }, | ||
| 445 | Vector { | ||
| 446 | _handler: DCMI_PSSI, | ||
| 447 | }, | ||
| 448 | Vector { _handler: PKA }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { _reserved: 0 }, | ||
| 451 | Vector { _reserved: 0 }, | ||
| 452 | Vector { _handler: DMA2D }, | ||
| 453 | Vector { _handler: LTDC }, | ||
| 454 | Vector { _handler: LTDC_ER }, | ||
| 455 | Vector { _reserved: 0 }, | ||
| 456 | Vector { | ||
| 457 | _handler: DMAMUX1_OVR, | ||
| 458 | }, | ||
| 459 | ]; | ||
| 460 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 461 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 462 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 463 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4q5rg.rs b/embassy-stm32/src/chip/stm32l4q5rg.rs index 716f8233b..bbf0c47db 100644 --- a/embassy-stm32/src/chip/stm32l4q5rg.rs +++ b/embassy-stm32/src/chip/stm32l4q5rg.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -15,8 +15,449 @@ peripherals!( | |||
| 15 | SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, | 15 | SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, |
| 16 | UART4, USART1, USART2, USART3, USB_OTG_FS, WWDG | 16 | UART4, USART1, USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DCMI_PSSI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2D = 90, | ||
| 49 | DMA2_Channel1 = 56, | ||
| 50 | DMA2_Channel2 = 57, | ||
| 51 | DMA2_Channel3 = 58, | ||
| 52 | DMA2_Channel4 = 59, | ||
| 53 | DMA2_Channel5 = 60, | ||
| 54 | DMA2_Channel6 = 68, | ||
| 55 | DMA2_Channel7 = 69, | ||
| 56 | DMAMUX1_OVR = 94, | ||
| 57 | EXTI0 = 6, | ||
| 58 | EXTI1 = 7, | ||
| 59 | EXTI15_10 = 40, | ||
| 60 | EXTI2 = 8, | ||
| 61 | EXTI3 = 9, | ||
| 62 | EXTI4 = 10, | ||
| 63 | EXTI9_5 = 23, | ||
| 64 | FLASH = 4, | ||
| 65 | FMC = 48, | ||
| 66 | FPU = 81, | ||
| 67 | HASH_CRS = 82, | ||
| 68 | I2C1_ER = 32, | ||
| 69 | I2C1_EV = 31, | ||
| 70 | I2C2_ER = 34, | ||
| 71 | I2C2_EV = 33, | ||
| 72 | I2C3_ER = 73, | ||
| 73 | I2C3_EV = 72, | ||
| 74 | I2C4_ER = 83, | ||
| 75 | I2C4_EV = 84, | ||
| 76 | LPTIM1 = 65, | ||
| 77 | LPTIM2 = 66, | ||
| 78 | LPUART1 = 70, | ||
| 79 | LTDC = 91, | ||
| 80 | LTDC_ER = 92, | ||
| 81 | OCTOSPI1 = 71, | ||
| 82 | OCTOSPI2 = 76, | ||
| 83 | OTG_FS = 67, | ||
| 84 | PKA = 86, | ||
| 85 | PVD_PVM = 1, | ||
| 86 | RCC = 5, | ||
| 87 | RNG = 80, | ||
| 88 | RTC_Alarm = 41, | ||
| 89 | RTC_WKUP = 3, | ||
| 90 | SAI1 = 74, | ||
| 91 | SAI2 = 75, | ||
| 92 | SDMMC1 = 49, | ||
| 93 | SDMMC2 = 47, | ||
| 94 | SPI1 = 35, | ||
| 95 | SPI2 = 36, | ||
| 96 | SPI3 = 51, | ||
| 97 | TAMP_STAMP = 2, | ||
| 98 | TIM1_BRK_TIM15 = 24, | ||
| 99 | TIM1_CC = 27, | ||
| 100 | TIM1_TRG_COM_TIM17 = 26, | ||
| 101 | TIM1_UP_TIM16 = 25, | ||
| 102 | TIM2 = 28, | ||
| 103 | TIM3 = 29, | ||
| 104 | TIM4 = 30, | ||
| 105 | TIM5 = 50, | ||
| 106 | TIM6_DAC = 54, | ||
| 107 | TIM7 = 55, | ||
| 108 | TIM8_BRK = 43, | ||
| 109 | TIM8_CC = 46, | ||
| 110 | TIM8_TRG_COM = 45, | ||
| 111 | TIM8_UP = 44, | ||
| 112 | TSC = 77, | ||
| 113 | UART4 = 52, | ||
| 114 | UART5 = 53, | ||
| 115 | USART1 = 37, | ||
| 116 | USART2 = 38, | ||
| 117 | USART3 = 39, | ||
| 118 | WWDG = 0, | ||
| 119 | } | ||
| 120 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 121 | #[inline(always)] | ||
| 122 | fn number(self) -> u16 { | ||
| 123 | self as u16 | ||
| 124 | } | ||
| 125 | } | ||
| 126 | |||
| 127 | declare!(ADC1_2); | ||
| 128 | declare!(AES); | ||
| 129 | declare!(CAN1_RX0); | ||
| 130 | declare!(CAN1_RX1); | ||
| 131 | declare!(CAN1_SCE); | ||
| 132 | declare!(CAN1_TX); | ||
| 133 | declare!(COMP); | ||
| 134 | declare!(DCMI_PSSI); | ||
| 135 | declare!(DFSDM1_FLT0); | ||
| 136 | declare!(DFSDM1_FLT1); | ||
| 137 | declare!(DMA1_Channel1); | ||
| 138 | declare!(DMA1_Channel2); | ||
| 139 | declare!(DMA1_Channel3); | ||
| 140 | declare!(DMA1_Channel4); | ||
| 141 | declare!(DMA1_Channel5); | ||
| 142 | declare!(DMA1_Channel6); | ||
| 143 | declare!(DMA1_Channel7); | ||
| 144 | declare!(DMA2D); | ||
| 145 | declare!(DMA2_Channel1); | ||
| 146 | declare!(DMA2_Channel2); | ||
| 147 | declare!(DMA2_Channel3); | ||
| 148 | declare!(DMA2_Channel4); | ||
| 149 | declare!(DMA2_Channel5); | ||
| 150 | declare!(DMA2_Channel6); | ||
| 151 | declare!(DMA2_Channel7); | ||
| 152 | declare!(DMAMUX1_OVR); | ||
| 153 | declare!(EXTI0); | ||
| 154 | declare!(EXTI1); | ||
| 155 | declare!(EXTI15_10); | ||
| 156 | declare!(EXTI2); | ||
| 157 | declare!(EXTI3); | ||
| 158 | declare!(EXTI4); | ||
| 159 | declare!(EXTI9_5); | ||
| 160 | declare!(FLASH); | ||
| 161 | declare!(FMC); | ||
| 162 | declare!(FPU); | ||
| 163 | declare!(HASH_CRS); | ||
| 164 | declare!(I2C1_ER); | ||
| 165 | declare!(I2C1_EV); | ||
| 166 | declare!(I2C2_ER); | ||
| 167 | declare!(I2C2_EV); | ||
| 168 | declare!(I2C3_ER); | ||
| 169 | declare!(I2C3_EV); | ||
| 170 | declare!(I2C4_ER); | ||
| 171 | declare!(I2C4_EV); | ||
| 172 | declare!(LPTIM1); | ||
| 173 | declare!(LPTIM2); | ||
| 174 | declare!(LPUART1); | ||
| 175 | declare!(LTDC); | ||
| 176 | declare!(LTDC_ER); | ||
| 177 | declare!(OCTOSPI1); | ||
| 178 | declare!(OCTOSPI2); | ||
| 179 | declare!(OTG_FS); | ||
| 180 | declare!(PKA); | ||
| 181 | declare!(PVD_PVM); | ||
| 182 | declare!(RCC); | ||
| 183 | declare!(RNG); | ||
| 184 | declare!(RTC_Alarm); | ||
| 185 | declare!(RTC_WKUP); | ||
| 186 | declare!(SAI1); | ||
| 187 | declare!(SAI2); | ||
| 188 | declare!(SDMMC1); | ||
| 189 | declare!(SDMMC2); | ||
| 190 | declare!(SPI1); | ||
| 191 | declare!(SPI2); | ||
| 192 | declare!(SPI3); | ||
| 193 | declare!(TAMP_STAMP); | ||
| 194 | declare!(TIM1_BRK_TIM15); | ||
| 195 | declare!(TIM1_CC); | ||
| 196 | declare!(TIM1_TRG_COM_TIM17); | ||
| 197 | declare!(TIM1_UP_TIM16); | ||
| 198 | declare!(TIM2); | ||
| 199 | declare!(TIM3); | ||
| 200 | declare!(TIM4); | ||
| 201 | declare!(TIM5); | ||
| 202 | declare!(TIM6_DAC); | ||
| 203 | declare!(TIM7); | ||
| 204 | declare!(TIM8_BRK); | ||
| 205 | declare!(TIM8_CC); | ||
| 206 | declare!(TIM8_TRG_COM); | ||
| 207 | declare!(TIM8_UP); | ||
| 208 | declare!(TSC); | ||
| 209 | declare!(UART4); | ||
| 210 | declare!(UART5); | ||
| 211 | declare!(USART1); | ||
| 212 | declare!(USART2); | ||
| 213 | declare!(USART3); | ||
| 214 | declare!(WWDG); | ||
| 215 | } | ||
| 216 | mod interrupt_vector { | ||
| 217 | extern "C" { | ||
| 218 | fn ADC1_2(); | ||
| 219 | fn AES(); | ||
| 220 | fn CAN1_RX0(); | ||
| 221 | fn CAN1_RX1(); | ||
| 222 | fn CAN1_SCE(); | ||
| 223 | fn CAN1_TX(); | ||
| 224 | fn COMP(); | ||
| 225 | fn DCMI_PSSI(); | ||
| 226 | fn DFSDM1_FLT0(); | ||
| 227 | fn DFSDM1_FLT1(); | ||
| 228 | fn DMA1_Channel1(); | ||
| 229 | fn DMA1_Channel2(); | ||
| 230 | fn DMA1_Channel3(); | ||
| 231 | fn DMA1_Channel4(); | ||
| 232 | fn DMA1_Channel5(); | ||
| 233 | fn DMA1_Channel6(); | ||
| 234 | fn DMA1_Channel7(); | ||
| 235 | fn DMA2D(); | ||
| 236 | fn DMA2_Channel1(); | ||
| 237 | fn DMA2_Channel2(); | ||
| 238 | fn DMA2_Channel3(); | ||
| 239 | fn DMA2_Channel4(); | ||
| 240 | fn DMA2_Channel5(); | ||
| 241 | fn DMA2_Channel6(); | ||
| 242 | fn DMA2_Channel7(); | ||
| 243 | fn DMAMUX1_OVR(); | ||
| 244 | fn EXTI0(); | ||
| 245 | fn EXTI1(); | ||
| 246 | fn EXTI15_10(); | ||
| 247 | fn EXTI2(); | ||
| 248 | fn EXTI3(); | ||
| 249 | fn EXTI4(); | ||
| 250 | fn EXTI9_5(); | ||
| 251 | fn FLASH(); | ||
| 252 | fn FMC(); | ||
| 253 | fn FPU(); | ||
| 254 | fn HASH_CRS(); | ||
| 255 | fn I2C1_ER(); | ||
| 256 | fn I2C1_EV(); | ||
| 257 | fn I2C2_ER(); | ||
| 258 | fn I2C2_EV(); | ||
| 259 | fn I2C3_ER(); | ||
| 260 | fn I2C3_EV(); | ||
| 261 | fn I2C4_ER(); | ||
| 262 | fn I2C4_EV(); | ||
| 263 | fn LPTIM1(); | ||
| 264 | fn LPTIM2(); | ||
| 265 | fn LPUART1(); | ||
| 266 | fn LTDC(); | ||
| 267 | fn LTDC_ER(); | ||
| 268 | fn OCTOSPI1(); | ||
| 269 | fn OCTOSPI2(); | ||
| 270 | fn OTG_FS(); | ||
| 271 | fn PKA(); | ||
| 272 | fn PVD_PVM(); | ||
| 273 | fn RCC(); | ||
| 274 | fn RNG(); | ||
| 275 | fn RTC_Alarm(); | ||
| 276 | fn RTC_WKUP(); | ||
| 277 | fn SAI1(); | ||
| 278 | fn SAI2(); | ||
| 279 | fn SDMMC1(); | ||
| 280 | fn SDMMC2(); | ||
| 281 | fn SPI1(); | ||
| 282 | fn SPI2(); | ||
| 283 | fn SPI3(); | ||
| 284 | fn TAMP_STAMP(); | ||
| 285 | fn TIM1_BRK_TIM15(); | ||
| 286 | fn TIM1_CC(); | ||
| 287 | fn TIM1_TRG_COM_TIM17(); | ||
| 288 | fn TIM1_UP_TIM16(); | ||
| 289 | fn TIM2(); | ||
| 290 | fn TIM3(); | ||
| 291 | fn TIM4(); | ||
| 292 | fn TIM5(); | ||
| 293 | fn TIM6_DAC(); | ||
| 294 | fn TIM7(); | ||
| 295 | fn TIM8_BRK(); | ||
| 296 | fn TIM8_CC(); | ||
| 297 | fn TIM8_TRG_COM(); | ||
| 298 | fn TIM8_UP(); | ||
| 299 | fn TSC(); | ||
| 300 | fn UART4(); | ||
| 301 | fn UART5(); | ||
| 302 | fn USART1(); | ||
| 303 | fn USART2(); | ||
| 304 | fn USART3(); | ||
| 305 | fn WWDG(); | ||
| 306 | } | ||
| 307 | pub union Vector { | ||
| 308 | _handler: unsafe extern "C" fn(), | ||
| 309 | _reserved: u32, | ||
| 310 | } | ||
| 311 | #[link_section = ".vector_table.interrupts"] | ||
| 312 | #[no_mangle] | ||
| 313 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 314 | Vector { _handler: WWDG }, | ||
| 315 | Vector { _handler: PVD_PVM }, | ||
| 316 | Vector { | ||
| 317 | _handler: TAMP_STAMP, | ||
| 318 | }, | ||
| 319 | Vector { _handler: RTC_WKUP }, | ||
| 320 | Vector { _handler: FLASH }, | ||
| 321 | Vector { _handler: RCC }, | ||
| 322 | Vector { _handler: EXTI0 }, | ||
| 323 | Vector { _handler: EXTI1 }, | ||
| 324 | Vector { _handler: EXTI2 }, | ||
| 325 | Vector { _handler: EXTI3 }, | ||
| 326 | Vector { _handler: EXTI4 }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel1, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel2, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel3, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel4, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel5, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel6, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel7, | ||
| 347 | }, | ||
| 348 | Vector { _handler: ADC1_2 }, | ||
| 349 | Vector { _handler: CAN1_TX }, | ||
| 350 | Vector { _handler: CAN1_RX0 }, | ||
| 351 | Vector { _handler: CAN1_RX1 }, | ||
| 352 | Vector { _handler: CAN1_SCE }, | ||
| 353 | Vector { _handler: EXTI9_5 }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_BRK_TIM15, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: TIM1_UP_TIM16, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_TRG_COM_TIM17, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM1_CC }, | ||
| 364 | Vector { _handler: TIM2 }, | ||
| 365 | Vector { _handler: TIM3 }, | ||
| 366 | Vector { _handler: TIM4 }, | ||
| 367 | Vector { _handler: I2C1_EV }, | ||
| 368 | Vector { _handler: I2C1_ER }, | ||
| 369 | Vector { _handler: I2C2_EV }, | ||
| 370 | Vector { _handler: I2C2_ER }, | ||
| 371 | Vector { _handler: SPI1 }, | ||
| 372 | Vector { _handler: SPI2 }, | ||
| 373 | Vector { _handler: USART1 }, | ||
| 374 | Vector { _handler: USART2 }, | ||
| 375 | Vector { _handler: USART3 }, | ||
| 376 | Vector { | ||
| 377 | _handler: EXTI15_10, | ||
| 378 | }, | ||
| 379 | Vector { | ||
| 380 | _handler: RTC_Alarm, | ||
| 381 | }, | ||
| 382 | Vector { _reserved: 0 }, | ||
| 383 | Vector { _handler: TIM8_BRK }, | ||
| 384 | Vector { _handler: TIM8_UP }, | ||
| 385 | Vector { | ||
| 386 | _handler: TIM8_TRG_COM, | ||
| 387 | }, | ||
| 388 | Vector { _handler: TIM8_CC }, | ||
| 389 | Vector { _handler: SDMMC2 }, | ||
| 390 | Vector { _handler: FMC }, | ||
| 391 | Vector { _handler: SDMMC1 }, | ||
| 392 | Vector { _handler: TIM5 }, | ||
| 393 | Vector { _handler: SPI3 }, | ||
| 394 | Vector { _handler: UART4 }, | ||
| 395 | Vector { _handler: UART5 }, | ||
| 396 | Vector { _handler: TIM6_DAC }, | ||
| 397 | Vector { _handler: TIM7 }, | ||
| 398 | Vector { | ||
| 399 | _handler: DMA2_Channel1, | ||
| 400 | }, | ||
| 401 | Vector { | ||
| 402 | _handler: DMA2_Channel2, | ||
| 403 | }, | ||
| 404 | Vector { | ||
| 405 | _handler: DMA2_Channel3, | ||
| 406 | }, | ||
| 407 | Vector { | ||
| 408 | _handler: DMA2_Channel4, | ||
| 409 | }, | ||
| 410 | Vector { | ||
| 411 | _handler: DMA2_Channel5, | ||
| 412 | }, | ||
| 413 | Vector { | ||
| 414 | _handler: DFSDM1_FLT0, | ||
| 415 | }, | ||
| 416 | Vector { | ||
| 417 | _handler: DFSDM1_FLT1, | ||
| 418 | }, | ||
| 419 | Vector { _reserved: 0 }, | ||
| 420 | Vector { _handler: COMP }, | ||
| 421 | Vector { _handler: LPTIM1 }, | ||
| 422 | Vector { _handler: LPTIM2 }, | ||
| 423 | Vector { _handler: OTG_FS }, | ||
| 424 | Vector { | ||
| 425 | _handler: DMA2_Channel6, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DMA2_Channel7, | ||
| 429 | }, | ||
| 430 | Vector { _handler: LPUART1 }, | ||
| 431 | Vector { _handler: OCTOSPI1 }, | ||
| 432 | Vector { _handler: I2C3_EV }, | ||
| 433 | Vector { _handler: I2C3_ER }, | ||
| 434 | Vector { _handler: SAI1 }, | ||
| 435 | Vector { _handler: SAI2 }, | ||
| 436 | Vector { _handler: OCTOSPI2 }, | ||
| 437 | Vector { _handler: TSC }, | ||
| 438 | Vector { _reserved: 0 }, | ||
| 439 | Vector { _handler: AES }, | ||
| 440 | Vector { _handler: RNG }, | ||
| 441 | Vector { _handler: FPU }, | ||
| 442 | Vector { _handler: HASH_CRS }, | ||
| 443 | Vector { _handler: I2C4_ER }, | ||
| 444 | Vector { _handler: I2C4_EV }, | ||
| 445 | Vector { | ||
| 446 | _handler: DCMI_PSSI, | ||
| 447 | }, | ||
| 448 | Vector { _handler: PKA }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { _reserved: 0 }, | ||
| 451 | Vector { _reserved: 0 }, | ||
| 452 | Vector { _handler: DMA2D }, | ||
| 453 | Vector { _handler: LTDC }, | ||
| 454 | Vector { _handler: LTDC_ER }, | ||
| 455 | Vector { _reserved: 0 }, | ||
| 456 | Vector { | ||
| 457 | _handler: DMAMUX1_OVR, | ||
| 458 | }, | ||
| 459 | ]; | ||
| 460 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 461 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 462 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 463 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4q5vg.rs b/embassy-stm32/src/chip/stm32l4q5vg.rs index 295c68f1c..64643dc4e 100644 --- a/embassy-stm32/src/chip/stm32l4q5vg.rs +++ b/embassy-stm32/src/chip/stm32l4q5vg.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -15,8 +15,449 @@ peripherals!( | |||
| 15 | SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, | 15 | SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, |
| 16 | UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG | 16 | UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DCMI_PSSI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2D = 90, | ||
| 49 | DMA2_Channel1 = 56, | ||
| 50 | DMA2_Channel2 = 57, | ||
| 51 | DMA2_Channel3 = 58, | ||
| 52 | DMA2_Channel4 = 59, | ||
| 53 | DMA2_Channel5 = 60, | ||
| 54 | DMA2_Channel6 = 68, | ||
| 55 | DMA2_Channel7 = 69, | ||
| 56 | DMAMUX1_OVR = 94, | ||
| 57 | EXTI0 = 6, | ||
| 58 | EXTI1 = 7, | ||
| 59 | EXTI15_10 = 40, | ||
| 60 | EXTI2 = 8, | ||
| 61 | EXTI3 = 9, | ||
| 62 | EXTI4 = 10, | ||
| 63 | EXTI9_5 = 23, | ||
| 64 | FLASH = 4, | ||
| 65 | FMC = 48, | ||
| 66 | FPU = 81, | ||
| 67 | HASH_CRS = 82, | ||
| 68 | I2C1_ER = 32, | ||
| 69 | I2C1_EV = 31, | ||
| 70 | I2C2_ER = 34, | ||
| 71 | I2C2_EV = 33, | ||
| 72 | I2C3_ER = 73, | ||
| 73 | I2C3_EV = 72, | ||
| 74 | I2C4_ER = 83, | ||
| 75 | I2C4_EV = 84, | ||
| 76 | LPTIM1 = 65, | ||
| 77 | LPTIM2 = 66, | ||
| 78 | LPUART1 = 70, | ||
| 79 | LTDC = 91, | ||
| 80 | LTDC_ER = 92, | ||
| 81 | OCTOSPI1 = 71, | ||
| 82 | OCTOSPI2 = 76, | ||
| 83 | OTG_FS = 67, | ||
| 84 | PKA = 86, | ||
| 85 | PVD_PVM = 1, | ||
| 86 | RCC = 5, | ||
| 87 | RNG = 80, | ||
| 88 | RTC_Alarm = 41, | ||
| 89 | RTC_WKUP = 3, | ||
| 90 | SAI1 = 74, | ||
| 91 | SAI2 = 75, | ||
| 92 | SDMMC1 = 49, | ||
| 93 | SDMMC2 = 47, | ||
| 94 | SPI1 = 35, | ||
| 95 | SPI2 = 36, | ||
| 96 | SPI3 = 51, | ||
| 97 | TAMP_STAMP = 2, | ||
| 98 | TIM1_BRK_TIM15 = 24, | ||
| 99 | TIM1_CC = 27, | ||
| 100 | TIM1_TRG_COM_TIM17 = 26, | ||
| 101 | TIM1_UP_TIM16 = 25, | ||
| 102 | TIM2 = 28, | ||
| 103 | TIM3 = 29, | ||
| 104 | TIM4 = 30, | ||
| 105 | TIM5 = 50, | ||
| 106 | TIM6_DAC = 54, | ||
| 107 | TIM7 = 55, | ||
| 108 | TIM8_BRK = 43, | ||
| 109 | TIM8_CC = 46, | ||
| 110 | TIM8_TRG_COM = 45, | ||
| 111 | TIM8_UP = 44, | ||
| 112 | TSC = 77, | ||
| 113 | UART4 = 52, | ||
| 114 | UART5 = 53, | ||
| 115 | USART1 = 37, | ||
| 116 | USART2 = 38, | ||
| 117 | USART3 = 39, | ||
| 118 | WWDG = 0, | ||
| 119 | } | ||
| 120 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 121 | #[inline(always)] | ||
| 122 | fn number(self) -> u16 { | ||
| 123 | self as u16 | ||
| 124 | } | ||
| 125 | } | ||
| 126 | |||
| 127 | declare!(ADC1_2); | ||
| 128 | declare!(AES); | ||
| 129 | declare!(CAN1_RX0); | ||
| 130 | declare!(CAN1_RX1); | ||
| 131 | declare!(CAN1_SCE); | ||
| 132 | declare!(CAN1_TX); | ||
| 133 | declare!(COMP); | ||
| 134 | declare!(DCMI_PSSI); | ||
| 135 | declare!(DFSDM1_FLT0); | ||
| 136 | declare!(DFSDM1_FLT1); | ||
| 137 | declare!(DMA1_Channel1); | ||
| 138 | declare!(DMA1_Channel2); | ||
| 139 | declare!(DMA1_Channel3); | ||
| 140 | declare!(DMA1_Channel4); | ||
| 141 | declare!(DMA1_Channel5); | ||
| 142 | declare!(DMA1_Channel6); | ||
| 143 | declare!(DMA1_Channel7); | ||
| 144 | declare!(DMA2D); | ||
| 145 | declare!(DMA2_Channel1); | ||
| 146 | declare!(DMA2_Channel2); | ||
| 147 | declare!(DMA2_Channel3); | ||
| 148 | declare!(DMA2_Channel4); | ||
| 149 | declare!(DMA2_Channel5); | ||
| 150 | declare!(DMA2_Channel6); | ||
| 151 | declare!(DMA2_Channel7); | ||
| 152 | declare!(DMAMUX1_OVR); | ||
| 153 | declare!(EXTI0); | ||
| 154 | declare!(EXTI1); | ||
| 155 | declare!(EXTI15_10); | ||
| 156 | declare!(EXTI2); | ||
| 157 | declare!(EXTI3); | ||
| 158 | declare!(EXTI4); | ||
| 159 | declare!(EXTI9_5); | ||
| 160 | declare!(FLASH); | ||
| 161 | declare!(FMC); | ||
| 162 | declare!(FPU); | ||
| 163 | declare!(HASH_CRS); | ||
| 164 | declare!(I2C1_ER); | ||
| 165 | declare!(I2C1_EV); | ||
| 166 | declare!(I2C2_ER); | ||
| 167 | declare!(I2C2_EV); | ||
| 168 | declare!(I2C3_ER); | ||
| 169 | declare!(I2C3_EV); | ||
| 170 | declare!(I2C4_ER); | ||
| 171 | declare!(I2C4_EV); | ||
| 172 | declare!(LPTIM1); | ||
| 173 | declare!(LPTIM2); | ||
| 174 | declare!(LPUART1); | ||
| 175 | declare!(LTDC); | ||
| 176 | declare!(LTDC_ER); | ||
| 177 | declare!(OCTOSPI1); | ||
| 178 | declare!(OCTOSPI2); | ||
| 179 | declare!(OTG_FS); | ||
| 180 | declare!(PKA); | ||
| 181 | declare!(PVD_PVM); | ||
| 182 | declare!(RCC); | ||
| 183 | declare!(RNG); | ||
| 184 | declare!(RTC_Alarm); | ||
| 185 | declare!(RTC_WKUP); | ||
| 186 | declare!(SAI1); | ||
| 187 | declare!(SAI2); | ||
| 188 | declare!(SDMMC1); | ||
| 189 | declare!(SDMMC2); | ||
| 190 | declare!(SPI1); | ||
| 191 | declare!(SPI2); | ||
| 192 | declare!(SPI3); | ||
| 193 | declare!(TAMP_STAMP); | ||
| 194 | declare!(TIM1_BRK_TIM15); | ||
| 195 | declare!(TIM1_CC); | ||
| 196 | declare!(TIM1_TRG_COM_TIM17); | ||
| 197 | declare!(TIM1_UP_TIM16); | ||
| 198 | declare!(TIM2); | ||
| 199 | declare!(TIM3); | ||
| 200 | declare!(TIM4); | ||
| 201 | declare!(TIM5); | ||
| 202 | declare!(TIM6_DAC); | ||
| 203 | declare!(TIM7); | ||
| 204 | declare!(TIM8_BRK); | ||
| 205 | declare!(TIM8_CC); | ||
| 206 | declare!(TIM8_TRG_COM); | ||
| 207 | declare!(TIM8_UP); | ||
| 208 | declare!(TSC); | ||
| 209 | declare!(UART4); | ||
| 210 | declare!(UART5); | ||
| 211 | declare!(USART1); | ||
| 212 | declare!(USART2); | ||
| 213 | declare!(USART3); | ||
| 214 | declare!(WWDG); | ||
| 215 | } | ||
| 216 | mod interrupt_vector { | ||
| 217 | extern "C" { | ||
| 218 | fn ADC1_2(); | ||
| 219 | fn AES(); | ||
| 220 | fn CAN1_RX0(); | ||
| 221 | fn CAN1_RX1(); | ||
| 222 | fn CAN1_SCE(); | ||
| 223 | fn CAN1_TX(); | ||
| 224 | fn COMP(); | ||
| 225 | fn DCMI_PSSI(); | ||
| 226 | fn DFSDM1_FLT0(); | ||
| 227 | fn DFSDM1_FLT1(); | ||
| 228 | fn DMA1_Channel1(); | ||
| 229 | fn DMA1_Channel2(); | ||
| 230 | fn DMA1_Channel3(); | ||
| 231 | fn DMA1_Channel4(); | ||
| 232 | fn DMA1_Channel5(); | ||
| 233 | fn DMA1_Channel6(); | ||
| 234 | fn DMA1_Channel7(); | ||
| 235 | fn DMA2D(); | ||
| 236 | fn DMA2_Channel1(); | ||
| 237 | fn DMA2_Channel2(); | ||
| 238 | fn DMA2_Channel3(); | ||
| 239 | fn DMA2_Channel4(); | ||
| 240 | fn DMA2_Channel5(); | ||
| 241 | fn DMA2_Channel6(); | ||
| 242 | fn DMA2_Channel7(); | ||
| 243 | fn DMAMUX1_OVR(); | ||
| 244 | fn EXTI0(); | ||
| 245 | fn EXTI1(); | ||
| 246 | fn EXTI15_10(); | ||
| 247 | fn EXTI2(); | ||
| 248 | fn EXTI3(); | ||
| 249 | fn EXTI4(); | ||
| 250 | fn EXTI9_5(); | ||
| 251 | fn FLASH(); | ||
| 252 | fn FMC(); | ||
| 253 | fn FPU(); | ||
| 254 | fn HASH_CRS(); | ||
| 255 | fn I2C1_ER(); | ||
| 256 | fn I2C1_EV(); | ||
| 257 | fn I2C2_ER(); | ||
| 258 | fn I2C2_EV(); | ||
| 259 | fn I2C3_ER(); | ||
| 260 | fn I2C3_EV(); | ||
| 261 | fn I2C4_ER(); | ||
| 262 | fn I2C4_EV(); | ||
| 263 | fn LPTIM1(); | ||
| 264 | fn LPTIM2(); | ||
| 265 | fn LPUART1(); | ||
| 266 | fn LTDC(); | ||
| 267 | fn LTDC_ER(); | ||
| 268 | fn OCTOSPI1(); | ||
| 269 | fn OCTOSPI2(); | ||
| 270 | fn OTG_FS(); | ||
| 271 | fn PKA(); | ||
| 272 | fn PVD_PVM(); | ||
| 273 | fn RCC(); | ||
| 274 | fn RNG(); | ||
| 275 | fn RTC_Alarm(); | ||
| 276 | fn RTC_WKUP(); | ||
| 277 | fn SAI1(); | ||
| 278 | fn SAI2(); | ||
| 279 | fn SDMMC1(); | ||
| 280 | fn SDMMC2(); | ||
| 281 | fn SPI1(); | ||
| 282 | fn SPI2(); | ||
| 283 | fn SPI3(); | ||
| 284 | fn TAMP_STAMP(); | ||
| 285 | fn TIM1_BRK_TIM15(); | ||
| 286 | fn TIM1_CC(); | ||
| 287 | fn TIM1_TRG_COM_TIM17(); | ||
| 288 | fn TIM1_UP_TIM16(); | ||
| 289 | fn TIM2(); | ||
| 290 | fn TIM3(); | ||
| 291 | fn TIM4(); | ||
| 292 | fn TIM5(); | ||
| 293 | fn TIM6_DAC(); | ||
| 294 | fn TIM7(); | ||
| 295 | fn TIM8_BRK(); | ||
| 296 | fn TIM8_CC(); | ||
| 297 | fn TIM8_TRG_COM(); | ||
| 298 | fn TIM8_UP(); | ||
| 299 | fn TSC(); | ||
| 300 | fn UART4(); | ||
| 301 | fn UART5(); | ||
| 302 | fn USART1(); | ||
| 303 | fn USART2(); | ||
| 304 | fn USART3(); | ||
| 305 | fn WWDG(); | ||
| 306 | } | ||
| 307 | pub union Vector { | ||
| 308 | _handler: unsafe extern "C" fn(), | ||
| 309 | _reserved: u32, | ||
| 310 | } | ||
| 311 | #[link_section = ".vector_table.interrupts"] | ||
| 312 | #[no_mangle] | ||
| 313 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 314 | Vector { _handler: WWDG }, | ||
| 315 | Vector { _handler: PVD_PVM }, | ||
| 316 | Vector { | ||
| 317 | _handler: TAMP_STAMP, | ||
| 318 | }, | ||
| 319 | Vector { _handler: RTC_WKUP }, | ||
| 320 | Vector { _handler: FLASH }, | ||
| 321 | Vector { _handler: RCC }, | ||
| 322 | Vector { _handler: EXTI0 }, | ||
| 323 | Vector { _handler: EXTI1 }, | ||
| 324 | Vector { _handler: EXTI2 }, | ||
| 325 | Vector { _handler: EXTI3 }, | ||
| 326 | Vector { _handler: EXTI4 }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel1, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel2, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel3, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel4, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel5, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel6, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel7, | ||
| 347 | }, | ||
| 348 | Vector { _handler: ADC1_2 }, | ||
| 349 | Vector { _handler: CAN1_TX }, | ||
| 350 | Vector { _handler: CAN1_RX0 }, | ||
| 351 | Vector { _handler: CAN1_RX1 }, | ||
| 352 | Vector { _handler: CAN1_SCE }, | ||
| 353 | Vector { _handler: EXTI9_5 }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_BRK_TIM15, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: TIM1_UP_TIM16, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_TRG_COM_TIM17, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM1_CC }, | ||
| 364 | Vector { _handler: TIM2 }, | ||
| 365 | Vector { _handler: TIM3 }, | ||
| 366 | Vector { _handler: TIM4 }, | ||
| 367 | Vector { _handler: I2C1_EV }, | ||
| 368 | Vector { _handler: I2C1_ER }, | ||
| 369 | Vector { _handler: I2C2_EV }, | ||
| 370 | Vector { _handler: I2C2_ER }, | ||
| 371 | Vector { _handler: SPI1 }, | ||
| 372 | Vector { _handler: SPI2 }, | ||
| 373 | Vector { _handler: USART1 }, | ||
| 374 | Vector { _handler: USART2 }, | ||
| 375 | Vector { _handler: USART3 }, | ||
| 376 | Vector { | ||
| 377 | _handler: EXTI15_10, | ||
| 378 | }, | ||
| 379 | Vector { | ||
| 380 | _handler: RTC_Alarm, | ||
| 381 | }, | ||
| 382 | Vector { _reserved: 0 }, | ||
| 383 | Vector { _handler: TIM8_BRK }, | ||
| 384 | Vector { _handler: TIM8_UP }, | ||
| 385 | Vector { | ||
| 386 | _handler: TIM8_TRG_COM, | ||
| 387 | }, | ||
| 388 | Vector { _handler: TIM8_CC }, | ||
| 389 | Vector { _handler: SDMMC2 }, | ||
| 390 | Vector { _handler: FMC }, | ||
| 391 | Vector { _handler: SDMMC1 }, | ||
| 392 | Vector { _handler: TIM5 }, | ||
| 393 | Vector { _handler: SPI3 }, | ||
| 394 | Vector { _handler: UART4 }, | ||
| 395 | Vector { _handler: UART5 }, | ||
| 396 | Vector { _handler: TIM6_DAC }, | ||
| 397 | Vector { _handler: TIM7 }, | ||
| 398 | Vector { | ||
| 399 | _handler: DMA2_Channel1, | ||
| 400 | }, | ||
| 401 | Vector { | ||
| 402 | _handler: DMA2_Channel2, | ||
| 403 | }, | ||
| 404 | Vector { | ||
| 405 | _handler: DMA2_Channel3, | ||
| 406 | }, | ||
| 407 | Vector { | ||
| 408 | _handler: DMA2_Channel4, | ||
| 409 | }, | ||
| 410 | Vector { | ||
| 411 | _handler: DMA2_Channel5, | ||
| 412 | }, | ||
| 413 | Vector { | ||
| 414 | _handler: DFSDM1_FLT0, | ||
| 415 | }, | ||
| 416 | Vector { | ||
| 417 | _handler: DFSDM1_FLT1, | ||
| 418 | }, | ||
| 419 | Vector { _reserved: 0 }, | ||
| 420 | Vector { _handler: COMP }, | ||
| 421 | Vector { _handler: LPTIM1 }, | ||
| 422 | Vector { _handler: LPTIM2 }, | ||
| 423 | Vector { _handler: OTG_FS }, | ||
| 424 | Vector { | ||
| 425 | _handler: DMA2_Channel6, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DMA2_Channel7, | ||
| 429 | }, | ||
| 430 | Vector { _handler: LPUART1 }, | ||
| 431 | Vector { _handler: OCTOSPI1 }, | ||
| 432 | Vector { _handler: I2C3_EV }, | ||
| 433 | Vector { _handler: I2C3_ER }, | ||
| 434 | Vector { _handler: SAI1 }, | ||
| 435 | Vector { _handler: SAI2 }, | ||
| 436 | Vector { _handler: OCTOSPI2 }, | ||
| 437 | Vector { _handler: TSC }, | ||
| 438 | Vector { _reserved: 0 }, | ||
| 439 | Vector { _handler: AES }, | ||
| 440 | Vector { _handler: RNG }, | ||
| 441 | Vector { _handler: FPU }, | ||
| 442 | Vector { _handler: HASH_CRS }, | ||
| 443 | Vector { _handler: I2C4_ER }, | ||
| 444 | Vector { _handler: I2C4_EV }, | ||
| 445 | Vector { | ||
| 446 | _handler: DCMI_PSSI, | ||
| 447 | }, | ||
| 448 | Vector { _handler: PKA }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { _reserved: 0 }, | ||
| 451 | Vector { _reserved: 0 }, | ||
| 452 | Vector { _handler: DMA2D }, | ||
| 453 | Vector { _handler: LTDC }, | ||
| 454 | Vector { _handler: LTDC_ER }, | ||
| 455 | Vector { _reserved: 0 }, | ||
| 456 | Vector { | ||
| 457 | _handler: DMAMUX1_OVR, | ||
| 458 | }, | ||
| 459 | ]; | ||
| 460 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 461 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 462 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 463 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4q5zg.rs b/embassy-stm32/src/chip/stm32l4q5zg.rs index 295c68f1c..64643dc4e 100644 --- a/embassy-stm32/src/chip/stm32l4q5zg.rs +++ b/embassy-stm32/src/chip/stm32l4q5zg.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -15,8 +15,449 @@ peripherals!( | |||
| 15 | SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, | 15 | SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, |
| 16 | UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG | 16 | UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1_2 = 18, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DCMI_PSSI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DMA1_Channel1 = 11, | ||
| 42 | DMA1_Channel2 = 12, | ||
| 43 | DMA1_Channel3 = 13, | ||
| 44 | DMA1_Channel4 = 14, | ||
| 45 | DMA1_Channel5 = 15, | ||
| 46 | DMA1_Channel6 = 16, | ||
| 47 | DMA1_Channel7 = 17, | ||
| 48 | DMA2D = 90, | ||
| 49 | DMA2_Channel1 = 56, | ||
| 50 | DMA2_Channel2 = 57, | ||
| 51 | DMA2_Channel3 = 58, | ||
| 52 | DMA2_Channel4 = 59, | ||
| 53 | DMA2_Channel5 = 60, | ||
| 54 | DMA2_Channel6 = 68, | ||
| 55 | DMA2_Channel7 = 69, | ||
| 56 | DMAMUX1_OVR = 94, | ||
| 57 | EXTI0 = 6, | ||
| 58 | EXTI1 = 7, | ||
| 59 | EXTI15_10 = 40, | ||
| 60 | EXTI2 = 8, | ||
| 61 | EXTI3 = 9, | ||
| 62 | EXTI4 = 10, | ||
| 63 | EXTI9_5 = 23, | ||
| 64 | FLASH = 4, | ||
| 65 | FMC = 48, | ||
| 66 | FPU = 81, | ||
| 67 | HASH_CRS = 82, | ||
| 68 | I2C1_ER = 32, | ||
| 69 | I2C1_EV = 31, | ||
| 70 | I2C2_ER = 34, | ||
| 71 | I2C2_EV = 33, | ||
| 72 | I2C3_ER = 73, | ||
| 73 | I2C3_EV = 72, | ||
| 74 | I2C4_ER = 83, | ||
| 75 | I2C4_EV = 84, | ||
| 76 | LPTIM1 = 65, | ||
| 77 | LPTIM2 = 66, | ||
| 78 | LPUART1 = 70, | ||
| 79 | LTDC = 91, | ||
| 80 | LTDC_ER = 92, | ||
| 81 | OCTOSPI1 = 71, | ||
| 82 | OCTOSPI2 = 76, | ||
| 83 | OTG_FS = 67, | ||
| 84 | PKA = 86, | ||
| 85 | PVD_PVM = 1, | ||
| 86 | RCC = 5, | ||
| 87 | RNG = 80, | ||
| 88 | RTC_Alarm = 41, | ||
| 89 | RTC_WKUP = 3, | ||
| 90 | SAI1 = 74, | ||
| 91 | SAI2 = 75, | ||
| 92 | SDMMC1 = 49, | ||
| 93 | SDMMC2 = 47, | ||
| 94 | SPI1 = 35, | ||
| 95 | SPI2 = 36, | ||
| 96 | SPI3 = 51, | ||
| 97 | TAMP_STAMP = 2, | ||
| 98 | TIM1_BRK_TIM15 = 24, | ||
| 99 | TIM1_CC = 27, | ||
| 100 | TIM1_TRG_COM_TIM17 = 26, | ||
| 101 | TIM1_UP_TIM16 = 25, | ||
| 102 | TIM2 = 28, | ||
| 103 | TIM3 = 29, | ||
| 104 | TIM4 = 30, | ||
| 105 | TIM5 = 50, | ||
| 106 | TIM6_DAC = 54, | ||
| 107 | TIM7 = 55, | ||
| 108 | TIM8_BRK = 43, | ||
| 109 | TIM8_CC = 46, | ||
| 110 | TIM8_TRG_COM = 45, | ||
| 111 | TIM8_UP = 44, | ||
| 112 | TSC = 77, | ||
| 113 | UART4 = 52, | ||
| 114 | UART5 = 53, | ||
| 115 | USART1 = 37, | ||
| 116 | USART2 = 38, | ||
| 117 | USART3 = 39, | ||
| 118 | WWDG = 0, | ||
| 119 | } | ||
| 120 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 121 | #[inline(always)] | ||
| 122 | fn number(self) -> u16 { | ||
| 123 | self as u16 | ||
| 124 | } | ||
| 125 | } | ||
| 126 | |||
| 127 | declare!(ADC1_2); | ||
| 128 | declare!(AES); | ||
| 129 | declare!(CAN1_RX0); | ||
| 130 | declare!(CAN1_RX1); | ||
| 131 | declare!(CAN1_SCE); | ||
| 132 | declare!(CAN1_TX); | ||
| 133 | declare!(COMP); | ||
| 134 | declare!(DCMI_PSSI); | ||
| 135 | declare!(DFSDM1_FLT0); | ||
| 136 | declare!(DFSDM1_FLT1); | ||
| 137 | declare!(DMA1_Channel1); | ||
| 138 | declare!(DMA1_Channel2); | ||
| 139 | declare!(DMA1_Channel3); | ||
| 140 | declare!(DMA1_Channel4); | ||
| 141 | declare!(DMA1_Channel5); | ||
| 142 | declare!(DMA1_Channel6); | ||
| 143 | declare!(DMA1_Channel7); | ||
| 144 | declare!(DMA2D); | ||
| 145 | declare!(DMA2_Channel1); | ||
| 146 | declare!(DMA2_Channel2); | ||
| 147 | declare!(DMA2_Channel3); | ||
| 148 | declare!(DMA2_Channel4); | ||
| 149 | declare!(DMA2_Channel5); | ||
| 150 | declare!(DMA2_Channel6); | ||
| 151 | declare!(DMA2_Channel7); | ||
| 152 | declare!(DMAMUX1_OVR); | ||
| 153 | declare!(EXTI0); | ||
| 154 | declare!(EXTI1); | ||
| 155 | declare!(EXTI15_10); | ||
| 156 | declare!(EXTI2); | ||
| 157 | declare!(EXTI3); | ||
| 158 | declare!(EXTI4); | ||
| 159 | declare!(EXTI9_5); | ||
| 160 | declare!(FLASH); | ||
| 161 | declare!(FMC); | ||
| 162 | declare!(FPU); | ||
| 163 | declare!(HASH_CRS); | ||
| 164 | declare!(I2C1_ER); | ||
| 165 | declare!(I2C1_EV); | ||
| 166 | declare!(I2C2_ER); | ||
| 167 | declare!(I2C2_EV); | ||
| 168 | declare!(I2C3_ER); | ||
| 169 | declare!(I2C3_EV); | ||
| 170 | declare!(I2C4_ER); | ||
| 171 | declare!(I2C4_EV); | ||
| 172 | declare!(LPTIM1); | ||
| 173 | declare!(LPTIM2); | ||
| 174 | declare!(LPUART1); | ||
| 175 | declare!(LTDC); | ||
| 176 | declare!(LTDC_ER); | ||
| 177 | declare!(OCTOSPI1); | ||
| 178 | declare!(OCTOSPI2); | ||
| 179 | declare!(OTG_FS); | ||
| 180 | declare!(PKA); | ||
| 181 | declare!(PVD_PVM); | ||
| 182 | declare!(RCC); | ||
| 183 | declare!(RNG); | ||
| 184 | declare!(RTC_Alarm); | ||
| 185 | declare!(RTC_WKUP); | ||
| 186 | declare!(SAI1); | ||
| 187 | declare!(SAI2); | ||
| 188 | declare!(SDMMC1); | ||
| 189 | declare!(SDMMC2); | ||
| 190 | declare!(SPI1); | ||
| 191 | declare!(SPI2); | ||
| 192 | declare!(SPI3); | ||
| 193 | declare!(TAMP_STAMP); | ||
| 194 | declare!(TIM1_BRK_TIM15); | ||
| 195 | declare!(TIM1_CC); | ||
| 196 | declare!(TIM1_TRG_COM_TIM17); | ||
| 197 | declare!(TIM1_UP_TIM16); | ||
| 198 | declare!(TIM2); | ||
| 199 | declare!(TIM3); | ||
| 200 | declare!(TIM4); | ||
| 201 | declare!(TIM5); | ||
| 202 | declare!(TIM6_DAC); | ||
| 203 | declare!(TIM7); | ||
| 204 | declare!(TIM8_BRK); | ||
| 205 | declare!(TIM8_CC); | ||
| 206 | declare!(TIM8_TRG_COM); | ||
| 207 | declare!(TIM8_UP); | ||
| 208 | declare!(TSC); | ||
| 209 | declare!(UART4); | ||
| 210 | declare!(UART5); | ||
| 211 | declare!(USART1); | ||
| 212 | declare!(USART2); | ||
| 213 | declare!(USART3); | ||
| 214 | declare!(WWDG); | ||
| 215 | } | ||
| 216 | mod interrupt_vector { | ||
| 217 | extern "C" { | ||
| 218 | fn ADC1_2(); | ||
| 219 | fn AES(); | ||
| 220 | fn CAN1_RX0(); | ||
| 221 | fn CAN1_RX1(); | ||
| 222 | fn CAN1_SCE(); | ||
| 223 | fn CAN1_TX(); | ||
| 224 | fn COMP(); | ||
| 225 | fn DCMI_PSSI(); | ||
| 226 | fn DFSDM1_FLT0(); | ||
| 227 | fn DFSDM1_FLT1(); | ||
| 228 | fn DMA1_Channel1(); | ||
| 229 | fn DMA1_Channel2(); | ||
| 230 | fn DMA1_Channel3(); | ||
| 231 | fn DMA1_Channel4(); | ||
| 232 | fn DMA1_Channel5(); | ||
| 233 | fn DMA1_Channel6(); | ||
| 234 | fn DMA1_Channel7(); | ||
| 235 | fn DMA2D(); | ||
| 236 | fn DMA2_Channel1(); | ||
| 237 | fn DMA2_Channel2(); | ||
| 238 | fn DMA2_Channel3(); | ||
| 239 | fn DMA2_Channel4(); | ||
| 240 | fn DMA2_Channel5(); | ||
| 241 | fn DMA2_Channel6(); | ||
| 242 | fn DMA2_Channel7(); | ||
| 243 | fn DMAMUX1_OVR(); | ||
| 244 | fn EXTI0(); | ||
| 245 | fn EXTI1(); | ||
| 246 | fn EXTI15_10(); | ||
| 247 | fn EXTI2(); | ||
| 248 | fn EXTI3(); | ||
| 249 | fn EXTI4(); | ||
| 250 | fn EXTI9_5(); | ||
| 251 | fn FLASH(); | ||
| 252 | fn FMC(); | ||
| 253 | fn FPU(); | ||
| 254 | fn HASH_CRS(); | ||
| 255 | fn I2C1_ER(); | ||
| 256 | fn I2C1_EV(); | ||
| 257 | fn I2C2_ER(); | ||
| 258 | fn I2C2_EV(); | ||
| 259 | fn I2C3_ER(); | ||
| 260 | fn I2C3_EV(); | ||
| 261 | fn I2C4_ER(); | ||
| 262 | fn I2C4_EV(); | ||
| 263 | fn LPTIM1(); | ||
| 264 | fn LPTIM2(); | ||
| 265 | fn LPUART1(); | ||
| 266 | fn LTDC(); | ||
| 267 | fn LTDC_ER(); | ||
| 268 | fn OCTOSPI1(); | ||
| 269 | fn OCTOSPI2(); | ||
| 270 | fn OTG_FS(); | ||
| 271 | fn PKA(); | ||
| 272 | fn PVD_PVM(); | ||
| 273 | fn RCC(); | ||
| 274 | fn RNG(); | ||
| 275 | fn RTC_Alarm(); | ||
| 276 | fn RTC_WKUP(); | ||
| 277 | fn SAI1(); | ||
| 278 | fn SAI2(); | ||
| 279 | fn SDMMC1(); | ||
| 280 | fn SDMMC2(); | ||
| 281 | fn SPI1(); | ||
| 282 | fn SPI2(); | ||
| 283 | fn SPI3(); | ||
| 284 | fn TAMP_STAMP(); | ||
| 285 | fn TIM1_BRK_TIM15(); | ||
| 286 | fn TIM1_CC(); | ||
| 287 | fn TIM1_TRG_COM_TIM17(); | ||
| 288 | fn TIM1_UP_TIM16(); | ||
| 289 | fn TIM2(); | ||
| 290 | fn TIM3(); | ||
| 291 | fn TIM4(); | ||
| 292 | fn TIM5(); | ||
| 293 | fn TIM6_DAC(); | ||
| 294 | fn TIM7(); | ||
| 295 | fn TIM8_BRK(); | ||
| 296 | fn TIM8_CC(); | ||
| 297 | fn TIM8_TRG_COM(); | ||
| 298 | fn TIM8_UP(); | ||
| 299 | fn TSC(); | ||
| 300 | fn UART4(); | ||
| 301 | fn UART5(); | ||
| 302 | fn USART1(); | ||
| 303 | fn USART2(); | ||
| 304 | fn USART3(); | ||
| 305 | fn WWDG(); | ||
| 306 | } | ||
| 307 | pub union Vector { | ||
| 308 | _handler: unsafe extern "C" fn(), | ||
| 309 | _reserved: u32, | ||
| 310 | } | ||
| 311 | #[link_section = ".vector_table.interrupts"] | ||
| 312 | #[no_mangle] | ||
| 313 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 314 | Vector { _handler: WWDG }, | ||
| 315 | Vector { _handler: PVD_PVM }, | ||
| 316 | Vector { | ||
| 317 | _handler: TAMP_STAMP, | ||
| 318 | }, | ||
| 319 | Vector { _handler: RTC_WKUP }, | ||
| 320 | Vector { _handler: FLASH }, | ||
| 321 | Vector { _handler: RCC }, | ||
| 322 | Vector { _handler: EXTI0 }, | ||
| 323 | Vector { _handler: EXTI1 }, | ||
| 324 | Vector { _handler: EXTI2 }, | ||
| 325 | Vector { _handler: EXTI3 }, | ||
| 326 | Vector { _handler: EXTI4 }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel1, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel2, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel3, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel4, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel5, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel6, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel7, | ||
| 347 | }, | ||
| 348 | Vector { _handler: ADC1_2 }, | ||
| 349 | Vector { _handler: CAN1_TX }, | ||
| 350 | Vector { _handler: CAN1_RX0 }, | ||
| 351 | Vector { _handler: CAN1_RX1 }, | ||
| 352 | Vector { _handler: CAN1_SCE }, | ||
| 353 | Vector { _handler: EXTI9_5 }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_BRK_TIM15, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: TIM1_UP_TIM16, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_TRG_COM_TIM17, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM1_CC }, | ||
| 364 | Vector { _handler: TIM2 }, | ||
| 365 | Vector { _handler: TIM3 }, | ||
| 366 | Vector { _handler: TIM4 }, | ||
| 367 | Vector { _handler: I2C1_EV }, | ||
| 368 | Vector { _handler: I2C1_ER }, | ||
| 369 | Vector { _handler: I2C2_EV }, | ||
| 370 | Vector { _handler: I2C2_ER }, | ||
| 371 | Vector { _handler: SPI1 }, | ||
| 372 | Vector { _handler: SPI2 }, | ||
| 373 | Vector { _handler: USART1 }, | ||
| 374 | Vector { _handler: USART2 }, | ||
| 375 | Vector { _handler: USART3 }, | ||
| 376 | Vector { | ||
| 377 | _handler: EXTI15_10, | ||
| 378 | }, | ||
| 379 | Vector { | ||
| 380 | _handler: RTC_Alarm, | ||
| 381 | }, | ||
| 382 | Vector { _reserved: 0 }, | ||
| 383 | Vector { _handler: TIM8_BRK }, | ||
| 384 | Vector { _handler: TIM8_UP }, | ||
| 385 | Vector { | ||
| 386 | _handler: TIM8_TRG_COM, | ||
| 387 | }, | ||
| 388 | Vector { _handler: TIM8_CC }, | ||
| 389 | Vector { _handler: SDMMC2 }, | ||
| 390 | Vector { _handler: FMC }, | ||
| 391 | Vector { _handler: SDMMC1 }, | ||
| 392 | Vector { _handler: TIM5 }, | ||
| 393 | Vector { _handler: SPI3 }, | ||
| 394 | Vector { _handler: UART4 }, | ||
| 395 | Vector { _handler: UART5 }, | ||
| 396 | Vector { _handler: TIM6_DAC }, | ||
| 397 | Vector { _handler: TIM7 }, | ||
| 398 | Vector { | ||
| 399 | _handler: DMA2_Channel1, | ||
| 400 | }, | ||
| 401 | Vector { | ||
| 402 | _handler: DMA2_Channel2, | ||
| 403 | }, | ||
| 404 | Vector { | ||
| 405 | _handler: DMA2_Channel3, | ||
| 406 | }, | ||
| 407 | Vector { | ||
| 408 | _handler: DMA2_Channel4, | ||
| 409 | }, | ||
| 410 | Vector { | ||
| 411 | _handler: DMA2_Channel5, | ||
| 412 | }, | ||
| 413 | Vector { | ||
| 414 | _handler: DFSDM1_FLT0, | ||
| 415 | }, | ||
| 416 | Vector { | ||
| 417 | _handler: DFSDM1_FLT1, | ||
| 418 | }, | ||
| 419 | Vector { _reserved: 0 }, | ||
| 420 | Vector { _handler: COMP }, | ||
| 421 | Vector { _handler: LPTIM1 }, | ||
| 422 | Vector { _handler: LPTIM2 }, | ||
| 423 | Vector { _handler: OTG_FS }, | ||
| 424 | Vector { | ||
| 425 | _handler: DMA2_Channel6, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DMA2_Channel7, | ||
| 429 | }, | ||
| 430 | Vector { _handler: LPUART1 }, | ||
| 431 | Vector { _handler: OCTOSPI1 }, | ||
| 432 | Vector { _handler: I2C3_EV }, | ||
| 433 | Vector { _handler: I2C3_ER }, | ||
| 434 | Vector { _handler: SAI1 }, | ||
| 435 | Vector { _handler: SAI2 }, | ||
| 436 | Vector { _handler: OCTOSPI2 }, | ||
| 437 | Vector { _handler: TSC }, | ||
| 438 | Vector { _reserved: 0 }, | ||
| 439 | Vector { _handler: AES }, | ||
| 440 | Vector { _handler: RNG }, | ||
| 441 | Vector { _handler: FPU }, | ||
| 442 | Vector { _handler: HASH_CRS }, | ||
| 443 | Vector { _handler: I2C4_ER }, | ||
| 444 | Vector { _handler: I2C4_EV }, | ||
| 445 | Vector { | ||
| 446 | _handler: DCMI_PSSI, | ||
| 447 | }, | ||
| 448 | Vector { _handler: PKA }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { _reserved: 0 }, | ||
| 451 | Vector { _reserved: 0 }, | ||
| 452 | Vector { _handler: DMA2D }, | ||
| 453 | Vector { _handler: LTDC }, | ||
| 454 | Vector { _handler: LTDC_ER }, | ||
| 455 | Vector { _reserved: 0 }, | ||
| 456 | Vector { | ||
| 457 | _handler: DMAMUX1_OVR, | ||
| 458 | }, | ||
| 459 | ]; | ||
| 460 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 461 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 462 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 463 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4r5ag.rs b/embassy-stm32/src/chip/stm32l4r5ag.rs index d8b9445b9..9c98d1f88 100644 --- a/embassy-stm32/src/chip/stm32l4r5ag.rs +++ b/embassy-stm32/src/chip/stm32l4r5ag.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -15,8 +15,442 @@ peripherals!( | |||
| 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, | 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 16 | USART3, USB_OTG_FS, WWDG | 16 | USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | CRS = 82, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | EXTI0 = 6, | ||
| 60 | EXTI1 = 7, | ||
| 61 | EXTI15_10 = 40, | ||
| 62 | EXTI2 = 8, | ||
| 63 | EXTI3 = 9, | ||
| 64 | EXTI4 = 10, | ||
| 65 | EXTI9_5 = 23, | ||
| 66 | FLASH = 4, | ||
| 67 | FMC = 48, | ||
| 68 | FPU = 81, | ||
| 69 | I2C1_ER = 32, | ||
| 70 | I2C1_EV = 31, | ||
| 71 | I2C2_ER = 34, | ||
| 72 | I2C2_EV = 33, | ||
| 73 | I2C3_ER = 73, | ||
| 74 | I2C3_EV = 72, | ||
| 75 | I2C4_ER = 83, | ||
| 76 | I2C4_EV = 84, | ||
| 77 | LPTIM1 = 65, | ||
| 78 | LPTIM2 = 66, | ||
| 79 | LPUART1 = 70, | ||
| 80 | OCTOSPI1 = 71, | ||
| 81 | OCTOSPI2 = 76, | ||
| 82 | OTG_FS = 67, | ||
| 83 | PVD_PVM = 1, | ||
| 84 | RCC = 5, | ||
| 85 | RNG = 80, | ||
| 86 | RTC_Alarm = 41, | ||
| 87 | RTC_WKUP = 3, | ||
| 88 | SAI1 = 74, | ||
| 89 | SAI2 = 75, | ||
| 90 | SDMMC1 = 49, | ||
| 91 | SPI1 = 35, | ||
| 92 | SPI2 = 36, | ||
| 93 | SPI3 = 51, | ||
| 94 | TAMP_STAMP = 2, | ||
| 95 | TIM1_BRK_TIM15 = 24, | ||
| 96 | TIM1_CC = 27, | ||
| 97 | TIM1_TRG_COM_TIM17 = 26, | ||
| 98 | TIM1_UP_TIM16 = 25, | ||
| 99 | TIM2 = 28, | ||
| 100 | TIM3 = 29, | ||
| 101 | TIM4 = 30, | ||
| 102 | TIM5 = 50, | ||
| 103 | TIM6_DAC = 54, | ||
| 104 | TIM7 = 55, | ||
| 105 | TIM8_BRK = 43, | ||
| 106 | TIM8_CC = 46, | ||
| 107 | TIM8_TRG_COM = 45, | ||
| 108 | TIM8_UP = 44, | ||
| 109 | TSC = 77, | ||
| 110 | UART4 = 52, | ||
| 111 | UART5 = 53, | ||
| 112 | USART1 = 37, | ||
| 113 | USART2 = 38, | ||
| 114 | USART3 = 39, | ||
| 115 | WWDG = 0, | ||
| 116 | } | ||
| 117 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 118 | #[inline(always)] | ||
| 119 | fn number(self) -> u16 { | ||
| 120 | self as u16 | ||
| 121 | } | ||
| 122 | } | ||
| 123 | |||
| 124 | declare!(ADC1); | ||
| 125 | declare!(CAN1_RX0); | ||
| 126 | declare!(CAN1_RX1); | ||
| 127 | declare!(CAN1_SCE); | ||
| 128 | declare!(CAN1_TX); | ||
| 129 | declare!(COMP); | ||
| 130 | declare!(CRS); | ||
| 131 | declare!(DCMI); | ||
| 132 | declare!(DFSDM1_FLT0); | ||
| 133 | declare!(DFSDM1_FLT1); | ||
| 134 | declare!(DFSDM1_FLT2); | ||
| 135 | declare!(DFSDM1_FLT3); | ||
| 136 | declare!(DMA1_Channel1); | ||
| 137 | declare!(DMA1_Channel2); | ||
| 138 | declare!(DMA1_Channel3); | ||
| 139 | declare!(DMA1_Channel4); | ||
| 140 | declare!(DMA1_Channel5); | ||
| 141 | declare!(DMA1_Channel6); | ||
| 142 | declare!(DMA1_Channel7); | ||
| 143 | declare!(DMA2D); | ||
| 144 | declare!(DMA2_Channel1); | ||
| 145 | declare!(DMA2_Channel2); | ||
| 146 | declare!(DMA2_Channel3); | ||
| 147 | declare!(DMA2_Channel4); | ||
| 148 | declare!(DMA2_Channel5); | ||
| 149 | declare!(DMA2_Channel6); | ||
| 150 | declare!(DMA2_Channel7); | ||
| 151 | declare!(DMAMUX1_OVR); | ||
| 152 | declare!(EXTI0); | ||
| 153 | declare!(EXTI1); | ||
| 154 | declare!(EXTI15_10); | ||
| 155 | declare!(EXTI2); | ||
| 156 | declare!(EXTI3); | ||
| 157 | declare!(EXTI4); | ||
| 158 | declare!(EXTI9_5); | ||
| 159 | declare!(FLASH); | ||
| 160 | declare!(FMC); | ||
| 161 | declare!(FPU); | ||
| 162 | declare!(I2C1_ER); | ||
| 163 | declare!(I2C1_EV); | ||
| 164 | declare!(I2C2_ER); | ||
| 165 | declare!(I2C2_EV); | ||
| 166 | declare!(I2C3_ER); | ||
| 167 | declare!(I2C3_EV); | ||
| 168 | declare!(I2C4_ER); | ||
| 169 | declare!(I2C4_EV); | ||
| 170 | declare!(LPTIM1); | ||
| 171 | declare!(LPTIM2); | ||
| 172 | declare!(LPUART1); | ||
| 173 | declare!(OCTOSPI1); | ||
| 174 | declare!(OCTOSPI2); | ||
| 175 | declare!(OTG_FS); | ||
| 176 | declare!(PVD_PVM); | ||
| 177 | declare!(RCC); | ||
| 178 | declare!(RNG); | ||
| 179 | declare!(RTC_Alarm); | ||
| 180 | declare!(RTC_WKUP); | ||
| 181 | declare!(SAI1); | ||
| 182 | declare!(SAI2); | ||
| 183 | declare!(SDMMC1); | ||
| 184 | declare!(SPI1); | ||
| 185 | declare!(SPI2); | ||
| 186 | declare!(SPI3); | ||
| 187 | declare!(TAMP_STAMP); | ||
| 188 | declare!(TIM1_BRK_TIM15); | ||
| 189 | declare!(TIM1_CC); | ||
| 190 | declare!(TIM1_TRG_COM_TIM17); | ||
| 191 | declare!(TIM1_UP_TIM16); | ||
| 192 | declare!(TIM2); | ||
| 193 | declare!(TIM3); | ||
| 194 | declare!(TIM4); | ||
| 195 | declare!(TIM5); | ||
| 196 | declare!(TIM6_DAC); | ||
| 197 | declare!(TIM7); | ||
| 198 | declare!(TIM8_BRK); | ||
| 199 | declare!(TIM8_CC); | ||
| 200 | declare!(TIM8_TRG_COM); | ||
| 201 | declare!(TIM8_UP); | ||
| 202 | declare!(TSC); | ||
| 203 | declare!(UART4); | ||
| 204 | declare!(UART5); | ||
| 205 | declare!(USART1); | ||
| 206 | declare!(USART2); | ||
| 207 | declare!(USART3); | ||
| 208 | declare!(WWDG); | ||
| 209 | } | ||
| 210 | mod interrupt_vector { | ||
| 211 | extern "C" { | ||
| 212 | fn ADC1(); | ||
| 213 | fn CAN1_RX0(); | ||
| 214 | fn CAN1_RX1(); | ||
| 215 | fn CAN1_SCE(); | ||
| 216 | fn CAN1_TX(); | ||
| 217 | fn COMP(); | ||
| 218 | fn CRS(); | ||
| 219 | fn DCMI(); | ||
| 220 | fn DFSDM1_FLT0(); | ||
| 221 | fn DFSDM1_FLT1(); | ||
| 222 | fn DFSDM1_FLT2(); | ||
| 223 | fn DFSDM1_FLT3(); | ||
| 224 | fn DMA1_Channel1(); | ||
| 225 | fn DMA1_Channel2(); | ||
| 226 | fn DMA1_Channel3(); | ||
| 227 | fn DMA1_Channel4(); | ||
| 228 | fn DMA1_Channel5(); | ||
| 229 | fn DMA1_Channel6(); | ||
| 230 | fn DMA1_Channel7(); | ||
| 231 | fn DMA2D(); | ||
| 232 | fn DMA2_Channel1(); | ||
| 233 | fn DMA2_Channel2(); | ||
| 234 | fn DMA2_Channel3(); | ||
| 235 | fn DMA2_Channel4(); | ||
| 236 | fn DMA2_Channel5(); | ||
| 237 | fn DMA2_Channel6(); | ||
| 238 | fn DMA2_Channel7(); | ||
| 239 | fn DMAMUX1_OVR(); | ||
| 240 | fn EXTI0(); | ||
| 241 | fn EXTI1(); | ||
| 242 | fn EXTI15_10(); | ||
| 243 | fn EXTI2(); | ||
| 244 | fn EXTI3(); | ||
| 245 | fn EXTI4(); | ||
| 246 | fn EXTI9_5(); | ||
| 247 | fn FLASH(); | ||
| 248 | fn FMC(); | ||
| 249 | fn FPU(); | ||
| 250 | fn I2C1_ER(); | ||
| 251 | fn I2C1_EV(); | ||
| 252 | fn I2C2_ER(); | ||
| 253 | fn I2C2_EV(); | ||
| 254 | fn I2C3_ER(); | ||
| 255 | fn I2C3_EV(); | ||
| 256 | fn I2C4_ER(); | ||
| 257 | fn I2C4_EV(); | ||
| 258 | fn LPTIM1(); | ||
| 259 | fn LPTIM2(); | ||
| 260 | fn LPUART1(); | ||
| 261 | fn OCTOSPI1(); | ||
| 262 | fn OCTOSPI2(); | ||
| 263 | fn OTG_FS(); | ||
| 264 | fn PVD_PVM(); | ||
| 265 | fn RCC(); | ||
| 266 | fn RNG(); | ||
| 267 | fn RTC_Alarm(); | ||
| 268 | fn RTC_WKUP(); | ||
| 269 | fn SAI1(); | ||
| 270 | fn SAI2(); | ||
| 271 | fn SDMMC1(); | ||
| 272 | fn SPI1(); | ||
| 273 | fn SPI2(); | ||
| 274 | fn SPI3(); | ||
| 275 | fn TAMP_STAMP(); | ||
| 276 | fn TIM1_BRK_TIM15(); | ||
| 277 | fn TIM1_CC(); | ||
| 278 | fn TIM1_TRG_COM_TIM17(); | ||
| 279 | fn TIM1_UP_TIM16(); | ||
| 280 | fn TIM2(); | ||
| 281 | fn TIM3(); | ||
| 282 | fn TIM4(); | ||
| 283 | fn TIM5(); | ||
| 284 | fn TIM6_DAC(); | ||
| 285 | fn TIM7(); | ||
| 286 | fn TIM8_BRK(); | ||
| 287 | fn TIM8_CC(); | ||
| 288 | fn TIM8_TRG_COM(); | ||
| 289 | fn TIM8_UP(); | ||
| 290 | fn TSC(); | ||
| 291 | fn UART4(); | ||
| 292 | fn UART5(); | ||
| 293 | fn USART1(); | ||
| 294 | fn USART2(); | ||
| 295 | fn USART3(); | ||
| 296 | fn WWDG(); | ||
| 297 | } | ||
| 298 | pub union Vector { | ||
| 299 | _handler: unsafe extern "C" fn(), | ||
| 300 | _reserved: u32, | ||
| 301 | } | ||
| 302 | #[link_section = ".vector_table.interrupts"] | ||
| 303 | #[no_mangle] | ||
| 304 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 305 | Vector { _handler: WWDG }, | ||
| 306 | Vector { _handler: PVD_PVM }, | ||
| 307 | Vector { | ||
| 308 | _handler: TAMP_STAMP, | ||
| 309 | }, | ||
| 310 | Vector { _handler: RTC_WKUP }, | ||
| 311 | Vector { _handler: FLASH }, | ||
| 312 | Vector { _handler: RCC }, | ||
| 313 | Vector { _handler: EXTI0 }, | ||
| 314 | Vector { _handler: EXTI1 }, | ||
| 315 | Vector { _handler: EXTI2 }, | ||
| 316 | Vector { _handler: EXTI3 }, | ||
| 317 | Vector { _handler: EXTI4 }, | ||
| 318 | Vector { | ||
| 319 | _handler: DMA1_Channel1, | ||
| 320 | }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel2, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel3, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel4, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel5, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel6, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel7, | ||
| 338 | }, | ||
| 339 | Vector { _handler: ADC1 }, | ||
| 340 | Vector { _handler: CAN1_TX }, | ||
| 341 | Vector { _handler: CAN1_RX0 }, | ||
| 342 | Vector { _handler: CAN1_RX1 }, | ||
| 343 | Vector { _handler: CAN1_SCE }, | ||
| 344 | Vector { _handler: EXTI9_5 }, | ||
| 345 | Vector { | ||
| 346 | _handler: TIM1_BRK_TIM15, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_UP_TIM16, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_TRG_COM_TIM17, | ||
| 353 | }, | ||
| 354 | Vector { _handler: TIM1_CC }, | ||
| 355 | Vector { _handler: TIM2 }, | ||
| 356 | Vector { _handler: TIM3 }, | ||
| 357 | Vector { _handler: TIM4 }, | ||
| 358 | Vector { _handler: I2C1_EV }, | ||
| 359 | Vector { _handler: I2C1_ER }, | ||
| 360 | Vector { _handler: I2C2_EV }, | ||
| 361 | Vector { _handler: I2C2_ER }, | ||
| 362 | Vector { _handler: SPI1 }, | ||
| 363 | Vector { _handler: SPI2 }, | ||
| 364 | Vector { _handler: USART1 }, | ||
| 365 | Vector { _handler: USART2 }, | ||
| 366 | Vector { _handler: USART3 }, | ||
| 367 | Vector { | ||
| 368 | _handler: EXTI15_10, | ||
| 369 | }, | ||
| 370 | Vector { | ||
| 371 | _handler: RTC_Alarm, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: DFSDM1_FLT3, | ||
| 375 | }, | ||
| 376 | Vector { _handler: TIM8_BRK }, | ||
| 377 | Vector { _handler: TIM8_UP }, | ||
| 378 | Vector { | ||
| 379 | _handler: TIM8_TRG_COM, | ||
| 380 | }, | ||
| 381 | Vector { _handler: TIM8_CC }, | ||
| 382 | Vector { _reserved: 0 }, | ||
| 383 | Vector { _handler: FMC }, | ||
| 384 | Vector { _handler: SDMMC1 }, | ||
| 385 | Vector { _handler: TIM5 }, | ||
| 386 | Vector { _handler: SPI3 }, | ||
| 387 | Vector { _handler: UART4 }, | ||
| 388 | Vector { _handler: UART5 }, | ||
| 389 | Vector { _handler: TIM6_DAC }, | ||
| 390 | Vector { _handler: TIM7 }, | ||
| 391 | Vector { | ||
| 392 | _handler: DMA2_Channel1, | ||
| 393 | }, | ||
| 394 | Vector { | ||
| 395 | _handler: DMA2_Channel2, | ||
| 396 | }, | ||
| 397 | Vector { | ||
| 398 | _handler: DMA2_Channel3, | ||
| 399 | }, | ||
| 400 | Vector { | ||
| 401 | _handler: DMA2_Channel4, | ||
| 402 | }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel5, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DFSDM1_FLT0, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DFSDM1_FLT1, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DFSDM1_FLT2, | ||
| 414 | }, | ||
| 415 | Vector { _handler: COMP }, | ||
| 416 | Vector { _handler: LPTIM1 }, | ||
| 417 | Vector { _handler: LPTIM2 }, | ||
| 418 | Vector { _handler: OTG_FS }, | ||
| 419 | Vector { | ||
| 420 | _handler: DMA2_Channel6, | ||
| 421 | }, | ||
| 422 | Vector { | ||
| 423 | _handler: DMA2_Channel7, | ||
| 424 | }, | ||
| 425 | Vector { _handler: LPUART1 }, | ||
| 426 | Vector { _handler: OCTOSPI1 }, | ||
| 427 | Vector { _handler: I2C3_EV }, | ||
| 428 | Vector { _handler: I2C3_ER }, | ||
| 429 | Vector { _handler: SAI1 }, | ||
| 430 | Vector { _handler: SAI2 }, | ||
| 431 | Vector { _handler: OCTOSPI2 }, | ||
| 432 | Vector { _handler: TSC }, | ||
| 433 | Vector { _reserved: 0 }, | ||
| 434 | Vector { _reserved: 0 }, | ||
| 435 | Vector { _handler: RNG }, | ||
| 436 | Vector { _handler: FPU }, | ||
| 437 | Vector { _handler: CRS }, | ||
| 438 | Vector { _handler: I2C4_ER }, | ||
| 439 | Vector { _handler: I2C4_EV }, | ||
| 440 | Vector { _handler: DCMI }, | ||
| 441 | Vector { _reserved: 0 }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _handler: DMA2D }, | ||
| 446 | Vector { _reserved: 0 }, | ||
| 447 | Vector { _reserved: 0 }, | ||
| 448 | Vector { _reserved: 0 }, | ||
| 449 | Vector { | ||
| 450 | _handler: DMAMUX1_OVR, | ||
| 451 | }, | ||
| 452 | ]; | ||
| 453 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 454 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 455 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 456 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4r5ai.rs b/embassy-stm32/src/chip/stm32l4r5ai.rs index d8b9445b9..9c98d1f88 100644 --- a/embassy-stm32/src/chip/stm32l4r5ai.rs +++ b/embassy-stm32/src/chip/stm32l4r5ai.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -15,8 +15,442 @@ peripherals!( | |||
| 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, | 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 16 | USART3, USB_OTG_FS, WWDG | 16 | USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | CRS = 82, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | EXTI0 = 6, | ||
| 60 | EXTI1 = 7, | ||
| 61 | EXTI15_10 = 40, | ||
| 62 | EXTI2 = 8, | ||
| 63 | EXTI3 = 9, | ||
| 64 | EXTI4 = 10, | ||
| 65 | EXTI9_5 = 23, | ||
| 66 | FLASH = 4, | ||
| 67 | FMC = 48, | ||
| 68 | FPU = 81, | ||
| 69 | I2C1_ER = 32, | ||
| 70 | I2C1_EV = 31, | ||
| 71 | I2C2_ER = 34, | ||
| 72 | I2C2_EV = 33, | ||
| 73 | I2C3_ER = 73, | ||
| 74 | I2C3_EV = 72, | ||
| 75 | I2C4_ER = 83, | ||
| 76 | I2C4_EV = 84, | ||
| 77 | LPTIM1 = 65, | ||
| 78 | LPTIM2 = 66, | ||
| 79 | LPUART1 = 70, | ||
| 80 | OCTOSPI1 = 71, | ||
| 81 | OCTOSPI2 = 76, | ||
| 82 | OTG_FS = 67, | ||
| 83 | PVD_PVM = 1, | ||
| 84 | RCC = 5, | ||
| 85 | RNG = 80, | ||
| 86 | RTC_Alarm = 41, | ||
| 87 | RTC_WKUP = 3, | ||
| 88 | SAI1 = 74, | ||
| 89 | SAI2 = 75, | ||
| 90 | SDMMC1 = 49, | ||
| 91 | SPI1 = 35, | ||
| 92 | SPI2 = 36, | ||
| 93 | SPI3 = 51, | ||
| 94 | TAMP_STAMP = 2, | ||
| 95 | TIM1_BRK_TIM15 = 24, | ||
| 96 | TIM1_CC = 27, | ||
| 97 | TIM1_TRG_COM_TIM17 = 26, | ||
| 98 | TIM1_UP_TIM16 = 25, | ||
| 99 | TIM2 = 28, | ||
| 100 | TIM3 = 29, | ||
| 101 | TIM4 = 30, | ||
| 102 | TIM5 = 50, | ||
| 103 | TIM6_DAC = 54, | ||
| 104 | TIM7 = 55, | ||
| 105 | TIM8_BRK = 43, | ||
| 106 | TIM8_CC = 46, | ||
| 107 | TIM8_TRG_COM = 45, | ||
| 108 | TIM8_UP = 44, | ||
| 109 | TSC = 77, | ||
| 110 | UART4 = 52, | ||
| 111 | UART5 = 53, | ||
| 112 | USART1 = 37, | ||
| 113 | USART2 = 38, | ||
| 114 | USART3 = 39, | ||
| 115 | WWDG = 0, | ||
| 116 | } | ||
| 117 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 118 | #[inline(always)] | ||
| 119 | fn number(self) -> u16 { | ||
| 120 | self as u16 | ||
| 121 | } | ||
| 122 | } | ||
| 123 | |||
| 124 | declare!(ADC1); | ||
| 125 | declare!(CAN1_RX0); | ||
| 126 | declare!(CAN1_RX1); | ||
| 127 | declare!(CAN1_SCE); | ||
| 128 | declare!(CAN1_TX); | ||
| 129 | declare!(COMP); | ||
| 130 | declare!(CRS); | ||
| 131 | declare!(DCMI); | ||
| 132 | declare!(DFSDM1_FLT0); | ||
| 133 | declare!(DFSDM1_FLT1); | ||
| 134 | declare!(DFSDM1_FLT2); | ||
| 135 | declare!(DFSDM1_FLT3); | ||
| 136 | declare!(DMA1_Channel1); | ||
| 137 | declare!(DMA1_Channel2); | ||
| 138 | declare!(DMA1_Channel3); | ||
| 139 | declare!(DMA1_Channel4); | ||
| 140 | declare!(DMA1_Channel5); | ||
| 141 | declare!(DMA1_Channel6); | ||
| 142 | declare!(DMA1_Channel7); | ||
| 143 | declare!(DMA2D); | ||
| 144 | declare!(DMA2_Channel1); | ||
| 145 | declare!(DMA2_Channel2); | ||
| 146 | declare!(DMA2_Channel3); | ||
| 147 | declare!(DMA2_Channel4); | ||
| 148 | declare!(DMA2_Channel5); | ||
| 149 | declare!(DMA2_Channel6); | ||
| 150 | declare!(DMA2_Channel7); | ||
| 151 | declare!(DMAMUX1_OVR); | ||
| 152 | declare!(EXTI0); | ||
| 153 | declare!(EXTI1); | ||
| 154 | declare!(EXTI15_10); | ||
| 155 | declare!(EXTI2); | ||
| 156 | declare!(EXTI3); | ||
| 157 | declare!(EXTI4); | ||
| 158 | declare!(EXTI9_5); | ||
| 159 | declare!(FLASH); | ||
| 160 | declare!(FMC); | ||
| 161 | declare!(FPU); | ||
| 162 | declare!(I2C1_ER); | ||
| 163 | declare!(I2C1_EV); | ||
| 164 | declare!(I2C2_ER); | ||
| 165 | declare!(I2C2_EV); | ||
| 166 | declare!(I2C3_ER); | ||
| 167 | declare!(I2C3_EV); | ||
| 168 | declare!(I2C4_ER); | ||
| 169 | declare!(I2C4_EV); | ||
| 170 | declare!(LPTIM1); | ||
| 171 | declare!(LPTIM2); | ||
| 172 | declare!(LPUART1); | ||
| 173 | declare!(OCTOSPI1); | ||
| 174 | declare!(OCTOSPI2); | ||
| 175 | declare!(OTG_FS); | ||
| 176 | declare!(PVD_PVM); | ||
| 177 | declare!(RCC); | ||
| 178 | declare!(RNG); | ||
| 179 | declare!(RTC_Alarm); | ||
| 180 | declare!(RTC_WKUP); | ||
| 181 | declare!(SAI1); | ||
| 182 | declare!(SAI2); | ||
| 183 | declare!(SDMMC1); | ||
| 184 | declare!(SPI1); | ||
| 185 | declare!(SPI2); | ||
| 186 | declare!(SPI3); | ||
| 187 | declare!(TAMP_STAMP); | ||
| 188 | declare!(TIM1_BRK_TIM15); | ||
| 189 | declare!(TIM1_CC); | ||
| 190 | declare!(TIM1_TRG_COM_TIM17); | ||
| 191 | declare!(TIM1_UP_TIM16); | ||
| 192 | declare!(TIM2); | ||
| 193 | declare!(TIM3); | ||
| 194 | declare!(TIM4); | ||
| 195 | declare!(TIM5); | ||
| 196 | declare!(TIM6_DAC); | ||
| 197 | declare!(TIM7); | ||
| 198 | declare!(TIM8_BRK); | ||
| 199 | declare!(TIM8_CC); | ||
| 200 | declare!(TIM8_TRG_COM); | ||
| 201 | declare!(TIM8_UP); | ||
| 202 | declare!(TSC); | ||
| 203 | declare!(UART4); | ||
| 204 | declare!(UART5); | ||
| 205 | declare!(USART1); | ||
| 206 | declare!(USART2); | ||
| 207 | declare!(USART3); | ||
| 208 | declare!(WWDG); | ||
| 209 | } | ||
| 210 | mod interrupt_vector { | ||
| 211 | extern "C" { | ||
| 212 | fn ADC1(); | ||
| 213 | fn CAN1_RX0(); | ||
| 214 | fn CAN1_RX1(); | ||
| 215 | fn CAN1_SCE(); | ||
| 216 | fn CAN1_TX(); | ||
| 217 | fn COMP(); | ||
| 218 | fn CRS(); | ||
| 219 | fn DCMI(); | ||
| 220 | fn DFSDM1_FLT0(); | ||
| 221 | fn DFSDM1_FLT1(); | ||
| 222 | fn DFSDM1_FLT2(); | ||
| 223 | fn DFSDM1_FLT3(); | ||
| 224 | fn DMA1_Channel1(); | ||
| 225 | fn DMA1_Channel2(); | ||
| 226 | fn DMA1_Channel3(); | ||
| 227 | fn DMA1_Channel4(); | ||
| 228 | fn DMA1_Channel5(); | ||
| 229 | fn DMA1_Channel6(); | ||
| 230 | fn DMA1_Channel7(); | ||
| 231 | fn DMA2D(); | ||
| 232 | fn DMA2_Channel1(); | ||
| 233 | fn DMA2_Channel2(); | ||
| 234 | fn DMA2_Channel3(); | ||
| 235 | fn DMA2_Channel4(); | ||
| 236 | fn DMA2_Channel5(); | ||
| 237 | fn DMA2_Channel6(); | ||
| 238 | fn DMA2_Channel7(); | ||
| 239 | fn DMAMUX1_OVR(); | ||
| 240 | fn EXTI0(); | ||
| 241 | fn EXTI1(); | ||
| 242 | fn EXTI15_10(); | ||
| 243 | fn EXTI2(); | ||
| 244 | fn EXTI3(); | ||
| 245 | fn EXTI4(); | ||
| 246 | fn EXTI9_5(); | ||
| 247 | fn FLASH(); | ||
| 248 | fn FMC(); | ||
| 249 | fn FPU(); | ||
| 250 | fn I2C1_ER(); | ||
| 251 | fn I2C1_EV(); | ||
| 252 | fn I2C2_ER(); | ||
| 253 | fn I2C2_EV(); | ||
| 254 | fn I2C3_ER(); | ||
| 255 | fn I2C3_EV(); | ||
| 256 | fn I2C4_ER(); | ||
| 257 | fn I2C4_EV(); | ||
| 258 | fn LPTIM1(); | ||
| 259 | fn LPTIM2(); | ||
| 260 | fn LPUART1(); | ||
| 261 | fn OCTOSPI1(); | ||
| 262 | fn OCTOSPI2(); | ||
| 263 | fn OTG_FS(); | ||
| 264 | fn PVD_PVM(); | ||
| 265 | fn RCC(); | ||
| 266 | fn RNG(); | ||
| 267 | fn RTC_Alarm(); | ||
| 268 | fn RTC_WKUP(); | ||
| 269 | fn SAI1(); | ||
| 270 | fn SAI2(); | ||
| 271 | fn SDMMC1(); | ||
| 272 | fn SPI1(); | ||
| 273 | fn SPI2(); | ||
| 274 | fn SPI3(); | ||
| 275 | fn TAMP_STAMP(); | ||
| 276 | fn TIM1_BRK_TIM15(); | ||
| 277 | fn TIM1_CC(); | ||
| 278 | fn TIM1_TRG_COM_TIM17(); | ||
| 279 | fn TIM1_UP_TIM16(); | ||
| 280 | fn TIM2(); | ||
| 281 | fn TIM3(); | ||
| 282 | fn TIM4(); | ||
| 283 | fn TIM5(); | ||
| 284 | fn TIM6_DAC(); | ||
| 285 | fn TIM7(); | ||
| 286 | fn TIM8_BRK(); | ||
| 287 | fn TIM8_CC(); | ||
| 288 | fn TIM8_TRG_COM(); | ||
| 289 | fn TIM8_UP(); | ||
| 290 | fn TSC(); | ||
| 291 | fn UART4(); | ||
| 292 | fn UART5(); | ||
| 293 | fn USART1(); | ||
| 294 | fn USART2(); | ||
| 295 | fn USART3(); | ||
| 296 | fn WWDG(); | ||
| 297 | } | ||
| 298 | pub union Vector { | ||
| 299 | _handler: unsafe extern "C" fn(), | ||
| 300 | _reserved: u32, | ||
| 301 | } | ||
| 302 | #[link_section = ".vector_table.interrupts"] | ||
| 303 | #[no_mangle] | ||
| 304 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 305 | Vector { _handler: WWDG }, | ||
| 306 | Vector { _handler: PVD_PVM }, | ||
| 307 | Vector { | ||
| 308 | _handler: TAMP_STAMP, | ||
| 309 | }, | ||
| 310 | Vector { _handler: RTC_WKUP }, | ||
| 311 | Vector { _handler: FLASH }, | ||
| 312 | Vector { _handler: RCC }, | ||
| 313 | Vector { _handler: EXTI0 }, | ||
| 314 | Vector { _handler: EXTI1 }, | ||
| 315 | Vector { _handler: EXTI2 }, | ||
| 316 | Vector { _handler: EXTI3 }, | ||
| 317 | Vector { _handler: EXTI4 }, | ||
| 318 | Vector { | ||
| 319 | _handler: DMA1_Channel1, | ||
| 320 | }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel2, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel3, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel4, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel5, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel6, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel7, | ||
| 338 | }, | ||
| 339 | Vector { _handler: ADC1 }, | ||
| 340 | Vector { _handler: CAN1_TX }, | ||
| 341 | Vector { _handler: CAN1_RX0 }, | ||
| 342 | Vector { _handler: CAN1_RX1 }, | ||
| 343 | Vector { _handler: CAN1_SCE }, | ||
| 344 | Vector { _handler: EXTI9_5 }, | ||
| 345 | Vector { | ||
| 346 | _handler: TIM1_BRK_TIM15, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_UP_TIM16, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_TRG_COM_TIM17, | ||
| 353 | }, | ||
| 354 | Vector { _handler: TIM1_CC }, | ||
| 355 | Vector { _handler: TIM2 }, | ||
| 356 | Vector { _handler: TIM3 }, | ||
| 357 | Vector { _handler: TIM4 }, | ||
| 358 | Vector { _handler: I2C1_EV }, | ||
| 359 | Vector { _handler: I2C1_ER }, | ||
| 360 | Vector { _handler: I2C2_EV }, | ||
| 361 | Vector { _handler: I2C2_ER }, | ||
| 362 | Vector { _handler: SPI1 }, | ||
| 363 | Vector { _handler: SPI2 }, | ||
| 364 | Vector { _handler: USART1 }, | ||
| 365 | Vector { _handler: USART2 }, | ||
| 366 | Vector { _handler: USART3 }, | ||
| 367 | Vector { | ||
| 368 | _handler: EXTI15_10, | ||
| 369 | }, | ||
| 370 | Vector { | ||
| 371 | _handler: RTC_Alarm, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: DFSDM1_FLT3, | ||
| 375 | }, | ||
| 376 | Vector { _handler: TIM8_BRK }, | ||
| 377 | Vector { _handler: TIM8_UP }, | ||
| 378 | Vector { | ||
| 379 | _handler: TIM8_TRG_COM, | ||
| 380 | }, | ||
| 381 | Vector { _handler: TIM8_CC }, | ||
| 382 | Vector { _reserved: 0 }, | ||
| 383 | Vector { _handler: FMC }, | ||
| 384 | Vector { _handler: SDMMC1 }, | ||
| 385 | Vector { _handler: TIM5 }, | ||
| 386 | Vector { _handler: SPI3 }, | ||
| 387 | Vector { _handler: UART4 }, | ||
| 388 | Vector { _handler: UART5 }, | ||
| 389 | Vector { _handler: TIM6_DAC }, | ||
| 390 | Vector { _handler: TIM7 }, | ||
| 391 | Vector { | ||
| 392 | _handler: DMA2_Channel1, | ||
| 393 | }, | ||
| 394 | Vector { | ||
| 395 | _handler: DMA2_Channel2, | ||
| 396 | }, | ||
| 397 | Vector { | ||
| 398 | _handler: DMA2_Channel3, | ||
| 399 | }, | ||
| 400 | Vector { | ||
| 401 | _handler: DMA2_Channel4, | ||
| 402 | }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel5, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DFSDM1_FLT0, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DFSDM1_FLT1, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DFSDM1_FLT2, | ||
| 414 | }, | ||
| 415 | Vector { _handler: COMP }, | ||
| 416 | Vector { _handler: LPTIM1 }, | ||
| 417 | Vector { _handler: LPTIM2 }, | ||
| 418 | Vector { _handler: OTG_FS }, | ||
| 419 | Vector { | ||
| 420 | _handler: DMA2_Channel6, | ||
| 421 | }, | ||
| 422 | Vector { | ||
| 423 | _handler: DMA2_Channel7, | ||
| 424 | }, | ||
| 425 | Vector { _handler: LPUART1 }, | ||
| 426 | Vector { _handler: OCTOSPI1 }, | ||
| 427 | Vector { _handler: I2C3_EV }, | ||
| 428 | Vector { _handler: I2C3_ER }, | ||
| 429 | Vector { _handler: SAI1 }, | ||
| 430 | Vector { _handler: SAI2 }, | ||
| 431 | Vector { _handler: OCTOSPI2 }, | ||
| 432 | Vector { _handler: TSC }, | ||
| 433 | Vector { _reserved: 0 }, | ||
| 434 | Vector { _reserved: 0 }, | ||
| 435 | Vector { _handler: RNG }, | ||
| 436 | Vector { _handler: FPU }, | ||
| 437 | Vector { _handler: CRS }, | ||
| 438 | Vector { _handler: I2C4_ER }, | ||
| 439 | Vector { _handler: I2C4_EV }, | ||
| 440 | Vector { _handler: DCMI }, | ||
| 441 | Vector { _reserved: 0 }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _handler: DMA2D }, | ||
| 446 | Vector { _reserved: 0 }, | ||
| 447 | Vector { _reserved: 0 }, | ||
| 448 | Vector { _reserved: 0 }, | ||
| 449 | Vector { | ||
| 450 | _handler: DMAMUX1_OVR, | ||
| 451 | }, | ||
| 452 | ]; | ||
| 453 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 454 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 455 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 456 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4r5qg.rs b/embassy-stm32/src/chip/stm32l4r5qg.rs index d8b9445b9..9c98d1f88 100644 --- a/embassy-stm32/src/chip/stm32l4r5qg.rs +++ b/embassy-stm32/src/chip/stm32l4r5qg.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -15,8 +15,442 @@ peripherals!( | |||
| 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, | 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 16 | USART3, USB_OTG_FS, WWDG | 16 | USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | CRS = 82, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | EXTI0 = 6, | ||
| 60 | EXTI1 = 7, | ||
| 61 | EXTI15_10 = 40, | ||
| 62 | EXTI2 = 8, | ||
| 63 | EXTI3 = 9, | ||
| 64 | EXTI4 = 10, | ||
| 65 | EXTI9_5 = 23, | ||
| 66 | FLASH = 4, | ||
| 67 | FMC = 48, | ||
| 68 | FPU = 81, | ||
| 69 | I2C1_ER = 32, | ||
| 70 | I2C1_EV = 31, | ||
| 71 | I2C2_ER = 34, | ||
| 72 | I2C2_EV = 33, | ||
| 73 | I2C3_ER = 73, | ||
| 74 | I2C3_EV = 72, | ||
| 75 | I2C4_ER = 83, | ||
| 76 | I2C4_EV = 84, | ||
| 77 | LPTIM1 = 65, | ||
| 78 | LPTIM2 = 66, | ||
| 79 | LPUART1 = 70, | ||
| 80 | OCTOSPI1 = 71, | ||
| 81 | OCTOSPI2 = 76, | ||
| 82 | OTG_FS = 67, | ||
| 83 | PVD_PVM = 1, | ||
| 84 | RCC = 5, | ||
| 85 | RNG = 80, | ||
| 86 | RTC_Alarm = 41, | ||
| 87 | RTC_WKUP = 3, | ||
| 88 | SAI1 = 74, | ||
| 89 | SAI2 = 75, | ||
| 90 | SDMMC1 = 49, | ||
| 91 | SPI1 = 35, | ||
| 92 | SPI2 = 36, | ||
| 93 | SPI3 = 51, | ||
| 94 | TAMP_STAMP = 2, | ||
| 95 | TIM1_BRK_TIM15 = 24, | ||
| 96 | TIM1_CC = 27, | ||
| 97 | TIM1_TRG_COM_TIM17 = 26, | ||
| 98 | TIM1_UP_TIM16 = 25, | ||
| 99 | TIM2 = 28, | ||
| 100 | TIM3 = 29, | ||
| 101 | TIM4 = 30, | ||
| 102 | TIM5 = 50, | ||
| 103 | TIM6_DAC = 54, | ||
| 104 | TIM7 = 55, | ||
| 105 | TIM8_BRK = 43, | ||
| 106 | TIM8_CC = 46, | ||
| 107 | TIM8_TRG_COM = 45, | ||
| 108 | TIM8_UP = 44, | ||
| 109 | TSC = 77, | ||
| 110 | UART4 = 52, | ||
| 111 | UART5 = 53, | ||
| 112 | USART1 = 37, | ||
| 113 | USART2 = 38, | ||
| 114 | USART3 = 39, | ||
| 115 | WWDG = 0, | ||
| 116 | } | ||
| 117 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 118 | #[inline(always)] | ||
| 119 | fn number(self) -> u16 { | ||
| 120 | self as u16 | ||
| 121 | } | ||
| 122 | } | ||
| 123 | |||
| 124 | declare!(ADC1); | ||
| 125 | declare!(CAN1_RX0); | ||
| 126 | declare!(CAN1_RX1); | ||
| 127 | declare!(CAN1_SCE); | ||
| 128 | declare!(CAN1_TX); | ||
| 129 | declare!(COMP); | ||
| 130 | declare!(CRS); | ||
| 131 | declare!(DCMI); | ||
| 132 | declare!(DFSDM1_FLT0); | ||
| 133 | declare!(DFSDM1_FLT1); | ||
| 134 | declare!(DFSDM1_FLT2); | ||
| 135 | declare!(DFSDM1_FLT3); | ||
| 136 | declare!(DMA1_Channel1); | ||
| 137 | declare!(DMA1_Channel2); | ||
| 138 | declare!(DMA1_Channel3); | ||
| 139 | declare!(DMA1_Channel4); | ||
| 140 | declare!(DMA1_Channel5); | ||
| 141 | declare!(DMA1_Channel6); | ||
| 142 | declare!(DMA1_Channel7); | ||
| 143 | declare!(DMA2D); | ||
| 144 | declare!(DMA2_Channel1); | ||
| 145 | declare!(DMA2_Channel2); | ||
| 146 | declare!(DMA2_Channel3); | ||
| 147 | declare!(DMA2_Channel4); | ||
| 148 | declare!(DMA2_Channel5); | ||
| 149 | declare!(DMA2_Channel6); | ||
| 150 | declare!(DMA2_Channel7); | ||
| 151 | declare!(DMAMUX1_OVR); | ||
| 152 | declare!(EXTI0); | ||
| 153 | declare!(EXTI1); | ||
| 154 | declare!(EXTI15_10); | ||
| 155 | declare!(EXTI2); | ||
| 156 | declare!(EXTI3); | ||
| 157 | declare!(EXTI4); | ||
| 158 | declare!(EXTI9_5); | ||
| 159 | declare!(FLASH); | ||
| 160 | declare!(FMC); | ||
| 161 | declare!(FPU); | ||
| 162 | declare!(I2C1_ER); | ||
| 163 | declare!(I2C1_EV); | ||
| 164 | declare!(I2C2_ER); | ||
| 165 | declare!(I2C2_EV); | ||
| 166 | declare!(I2C3_ER); | ||
| 167 | declare!(I2C3_EV); | ||
| 168 | declare!(I2C4_ER); | ||
| 169 | declare!(I2C4_EV); | ||
| 170 | declare!(LPTIM1); | ||
| 171 | declare!(LPTIM2); | ||
| 172 | declare!(LPUART1); | ||
| 173 | declare!(OCTOSPI1); | ||
| 174 | declare!(OCTOSPI2); | ||
| 175 | declare!(OTG_FS); | ||
| 176 | declare!(PVD_PVM); | ||
| 177 | declare!(RCC); | ||
| 178 | declare!(RNG); | ||
| 179 | declare!(RTC_Alarm); | ||
| 180 | declare!(RTC_WKUP); | ||
| 181 | declare!(SAI1); | ||
| 182 | declare!(SAI2); | ||
| 183 | declare!(SDMMC1); | ||
| 184 | declare!(SPI1); | ||
| 185 | declare!(SPI2); | ||
| 186 | declare!(SPI3); | ||
| 187 | declare!(TAMP_STAMP); | ||
| 188 | declare!(TIM1_BRK_TIM15); | ||
| 189 | declare!(TIM1_CC); | ||
| 190 | declare!(TIM1_TRG_COM_TIM17); | ||
| 191 | declare!(TIM1_UP_TIM16); | ||
| 192 | declare!(TIM2); | ||
| 193 | declare!(TIM3); | ||
| 194 | declare!(TIM4); | ||
| 195 | declare!(TIM5); | ||
| 196 | declare!(TIM6_DAC); | ||
| 197 | declare!(TIM7); | ||
| 198 | declare!(TIM8_BRK); | ||
| 199 | declare!(TIM8_CC); | ||
| 200 | declare!(TIM8_TRG_COM); | ||
| 201 | declare!(TIM8_UP); | ||
| 202 | declare!(TSC); | ||
| 203 | declare!(UART4); | ||
| 204 | declare!(UART5); | ||
| 205 | declare!(USART1); | ||
| 206 | declare!(USART2); | ||
| 207 | declare!(USART3); | ||
| 208 | declare!(WWDG); | ||
| 209 | } | ||
| 210 | mod interrupt_vector { | ||
| 211 | extern "C" { | ||
| 212 | fn ADC1(); | ||
| 213 | fn CAN1_RX0(); | ||
| 214 | fn CAN1_RX1(); | ||
| 215 | fn CAN1_SCE(); | ||
| 216 | fn CAN1_TX(); | ||
| 217 | fn COMP(); | ||
| 218 | fn CRS(); | ||
| 219 | fn DCMI(); | ||
| 220 | fn DFSDM1_FLT0(); | ||
| 221 | fn DFSDM1_FLT1(); | ||
| 222 | fn DFSDM1_FLT2(); | ||
| 223 | fn DFSDM1_FLT3(); | ||
| 224 | fn DMA1_Channel1(); | ||
| 225 | fn DMA1_Channel2(); | ||
| 226 | fn DMA1_Channel3(); | ||
| 227 | fn DMA1_Channel4(); | ||
| 228 | fn DMA1_Channel5(); | ||
| 229 | fn DMA1_Channel6(); | ||
| 230 | fn DMA1_Channel7(); | ||
| 231 | fn DMA2D(); | ||
| 232 | fn DMA2_Channel1(); | ||
| 233 | fn DMA2_Channel2(); | ||
| 234 | fn DMA2_Channel3(); | ||
| 235 | fn DMA2_Channel4(); | ||
| 236 | fn DMA2_Channel5(); | ||
| 237 | fn DMA2_Channel6(); | ||
| 238 | fn DMA2_Channel7(); | ||
| 239 | fn DMAMUX1_OVR(); | ||
| 240 | fn EXTI0(); | ||
| 241 | fn EXTI1(); | ||
| 242 | fn EXTI15_10(); | ||
| 243 | fn EXTI2(); | ||
| 244 | fn EXTI3(); | ||
| 245 | fn EXTI4(); | ||
| 246 | fn EXTI9_5(); | ||
| 247 | fn FLASH(); | ||
| 248 | fn FMC(); | ||
| 249 | fn FPU(); | ||
| 250 | fn I2C1_ER(); | ||
| 251 | fn I2C1_EV(); | ||
| 252 | fn I2C2_ER(); | ||
| 253 | fn I2C2_EV(); | ||
| 254 | fn I2C3_ER(); | ||
| 255 | fn I2C3_EV(); | ||
| 256 | fn I2C4_ER(); | ||
| 257 | fn I2C4_EV(); | ||
| 258 | fn LPTIM1(); | ||
| 259 | fn LPTIM2(); | ||
| 260 | fn LPUART1(); | ||
| 261 | fn OCTOSPI1(); | ||
| 262 | fn OCTOSPI2(); | ||
| 263 | fn OTG_FS(); | ||
| 264 | fn PVD_PVM(); | ||
| 265 | fn RCC(); | ||
| 266 | fn RNG(); | ||
| 267 | fn RTC_Alarm(); | ||
| 268 | fn RTC_WKUP(); | ||
| 269 | fn SAI1(); | ||
| 270 | fn SAI2(); | ||
| 271 | fn SDMMC1(); | ||
| 272 | fn SPI1(); | ||
| 273 | fn SPI2(); | ||
| 274 | fn SPI3(); | ||
| 275 | fn TAMP_STAMP(); | ||
| 276 | fn TIM1_BRK_TIM15(); | ||
| 277 | fn TIM1_CC(); | ||
| 278 | fn TIM1_TRG_COM_TIM17(); | ||
| 279 | fn TIM1_UP_TIM16(); | ||
| 280 | fn TIM2(); | ||
| 281 | fn TIM3(); | ||
| 282 | fn TIM4(); | ||
| 283 | fn TIM5(); | ||
| 284 | fn TIM6_DAC(); | ||
| 285 | fn TIM7(); | ||
| 286 | fn TIM8_BRK(); | ||
| 287 | fn TIM8_CC(); | ||
| 288 | fn TIM8_TRG_COM(); | ||
| 289 | fn TIM8_UP(); | ||
| 290 | fn TSC(); | ||
| 291 | fn UART4(); | ||
| 292 | fn UART5(); | ||
| 293 | fn USART1(); | ||
| 294 | fn USART2(); | ||
| 295 | fn USART3(); | ||
| 296 | fn WWDG(); | ||
| 297 | } | ||
| 298 | pub union Vector { | ||
| 299 | _handler: unsafe extern "C" fn(), | ||
| 300 | _reserved: u32, | ||
| 301 | } | ||
| 302 | #[link_section = ".vector_table.interrupts"] | ||
| 303 | #[no_mangle] | ||
| 304 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 305 | Vector { _handler: WWDG }, | ||
| 306 | Vector { _handler: PVD_PVM }, | ||
| 307 | Vector { | ||
| 308 | _handler: TAMP_STAMP, | ||
| 309 | }, | ||
| 310 | Vector { _handler: RTC_WKUP }, | ||
| 311 | Vector { _handler: FLASH }, | ||
| 312 | Vector { _handler: RCC }, | ||
| 313 | Vector { _handler: EXTI0 }, | ||
| 314 | Vector { _handler: EXTI1 }, | ||
| 315 | Vector { _handler: EXTI2 }, | ||
| 316 | Vector { _handler: EXTI3 }, | ||
| 317 | Vector { _handler: EXTI4 }, | ||
| 318 | Vector { | ||
| 319 | _handler: DMA1_Channel1, | ||
| 320 | }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel2, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel3, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel4, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel5, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel6, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel7, | ||
| 338 | }, | ||
| 339 | Vector { _handler: ADC1 }, | ||
| 340 | Vector { _handler: CAN1_TX }, | ||
| 341 | Vector { _handler: CAN1_RX0 }, | ||
| 342 | Vector { _handler: CAN1_RX1 }, | ||
| 343 | Vector { _handler: CAN1_SCE }, | ||
| 344 | Vector { _handler: EXTI9_5 }, | ||
| 345 | Vector { | ||
| 346 | _handler: TIM1_BRK_TIM15, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_UP_TIM16, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_TRG_COM_TIM17, | ||
| 353 | }, | ||
| 354 | Vector { _handler: TIM1_CC }, | ||
| 355 | Vector { _handler: TIM2 }, | ||
| 356 | Vector { _handler: TIM3 }, | ||
| 357 | Vector { _handler: TIM4 }, | ||
| 358 | Vector { _handler: I2C1_EV }, | ||
| 359 | Vector { _handler: I2C1_ER }, | ||
| 360 | Vector { _handler: I2C2_EV }, | ||
| 361 | Vector { _handler: I2C2_ER }, | ||
| 362 | Vector { _handler: SPI1 }, | ||
| 363 | Vector { _handler: SPI2 }, | ||
| 364 | Vector { _handler: USART1 }, | ||
| 365 | Vector { _handler: USART2 }, | ||
| 366 | Vector { _handler: USART3 }, | ||
| 367 | Vector { | ||
| 368 | _handler: EXTI15_10, | ||
| 369 | }, | ||
| 370 | Vector { | ||
| 371 | _handler: RTC_Alarm, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: DFSDM1_FLT3, | ||
| 375 | }, | ||
| 376 | Vector { _handler: TIM8_BRK }, | ||
| 377 | Vector { _handler: TIM8_UP }, | ||
| 378 | Vector { | ||
| 379 | _handler: TIM8_TRG_COM, | ||
| 380 | }, | ||
| 381 | Vector { _handler: TIM8_CC }, | ||
| 382 | Vector { _reserved: 0 }, | ||
| 383 | Vector { _handler: FMC }, | ||
| 384 | Vector { _handler: SDMMC1 }, | ||
| 385 | Vector { _handler: TIM5 }, | ||
| 386 | Vector { _handler: SPI3 }, | ||
| 387 | Vector { _handler: UART4 }, | ||
| 388 | Vector { _handler: UART5 }, | ||
| 389 | Vector { _handler: TIM6_DAC }, | ||
| 390 | Vector { _handler: TIM7 }, | ||
| 391 | Vector { | ||
| 392 | _handler: DMA2_Channel1, | ||
| 393 | }, | ||
| 394 | Vector { | ||
| 395 | _handler: DMA2_Channel2, | ||
| 396 | }, | ||
| 397 | Vector { | ||
| 398 | _handler: DMA2_Channel3, | ||
| 399 | }, | ||
| 400 | Vector { | ||
| 401 | _handler: DMA2_Channel4, | ||
| 402 | }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel5, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DFSDM1_FLT0, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DFSDM1_FLT1, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DFSDM1_FLT2, | ||
| 414 | }, | ||
| 415 | Vector { _handler: COMP }, | ||
| 416 | Vector { _handler: LPTIM1 }, | ||
| 417 | Vector { _handler: LPTIM2 }, | ||
| 418 | Vector { _handler: OTG_FS }, | ||
| 419 | Vector { | ||
| 420 | _handler: DMA2_Channel6, | ||
| 421 | }, | ||
| 422 | Vector { | ||
| 423 | _handler: DMA2_Channel7, | ||
| 424 | }, | ||
| 425 | Vector { _handler: LPUART1 }, | ||
| 426 | Vector { _handler: OCTOSPI1 }, | ||
| 427 | Vector { _handler: I2C3_EV }, | ||
| 428 | Vector { _handler: I2C3_ER }, | ||
| 429 | Vector { _handler: SAI1 }, | ||
| 430 | Vector { _handler: SAI2 }, | ||
| 431 | Vector { _handler: OCTOSPI2 }, | ||
| 432 | Vector { _handler: TSC }, | ||
| 433 | Vector { _reserved: 0 }, | ||
| 434 | Vector { _reserved: 0 }, | ||
| 435 | Vector { _handler: RNG }, | ||
| 436 | Vector { _handler: FPU }, | ||
| 437 | Vector { _handler: CRS }, | ||
| 438 | Vector { _handler: I2C4_ER }, | ||
| 439 | Vector { _handler: I2C4_EV }, | ||
| 440 | Vector { _handler: DCMI }, | ||
| 441 | Vector { _reserved: 0 }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _handler: DMA2D }, | ||
| 446 | Vector { _reserved: 0 }, | ||
| 447 | Vector { _reserved: 0 }, | ||
| 448 | Vector { _reserved: 0 }, | ||
| 449 | Vector { | ||
| 450 | _handler: DMAMUX1_OVR, | ||
| 451 | }, | ||
| 452 | ]; | ||
| 453 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 454 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 455 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 456 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4r5qi.rs b/embassy-stm32/src/chip/stm32l4r5qi.rs index d8b9445b9..9c98d1f88 100644 --- a/embassy-stm32/src/chip/stm32l4r5qi.rs +++ b/embassy-stm32/src/chip/stm32l4r5qi.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -15,8 +15,442 @@ peripherals!( | |||
| 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, | 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 16 | USART3, USB_OTG_FS, WWDG | 16 | USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | CRS = 82, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | EXTI0 = 6, | ||
| 60 | EXTI1 = 7, | ||
| 61 | EXTI15_10 = 40, | ||
| 62 | EXTI2 = 8, | ||
| 63 | EXTI3 = 9, | ||
| 64 | EXTI4 = 10, | ||
| 65 | EXTI9_5 = 23, | ||
| 66 | FLASH = 4, | ||
| 67 | FMC = 48, | ||
| 68 | FPU = 81, | ||
| 69 | I2C1_ER = 32, | ||
| 70 | I2C1_EV = 31, | ||
| 71 | I2C2_ER = 34, | ||
| 72 | I2C2_EV = 33, | ||
| 73 | I2C3_ER = 73, | ||
| 74 | I2C3_EV = 72, | ||
| 75 | I2C4_ER = 83, | ||
| 76 | I2C4_EV = 84, | ||
| 77 | LPTIM1 = 65, | ||
| 78 | LPTIM2 = 66, | ||
| 79 | LPUART1 = 70, | ||
| 80 | OCTOSPI1 = 71, | ||
| 81 | OCTOSPI2 = 76, | ||
| 82 | OTG_FS = 67, | ||
| 83 | PVD_PVM = 1, | ||
| 84 | RCC = 5, | ||
| 85 | RNG = 80, | ||
| 86 | RTC_Alarm = 41, | ||
| 87 | RTC_WKUP = 3, | ||
| 88 | SAI1 = 74, | ||
| 89 | SAI2 = 75, | ||
| 90 | SDMMC1 = 49, | ||
| 91 | SPI1 = 35, | ||
| 92 | SPI2 = 36, | ||
| 93 | SPI3 = 51, | ||
| 94 | TAMP_STAMP = 2, | ||
| 95 | TIM1_BRK_TIM15 = 24, | ||
| 96 | TIM1_CC = 27, | ||
| 97 | TIM1_TRG_COM_TIM17 = 26, | ||
| 98 | TIM1_UP_TIM16 = 25, | ||
| 99 | TIM2 = 28, | ||
| 100 | TIM3 = 29, | ||
| 101 | TIM4 = 30, | ||
| 102 | TIM5 = 50, | ||
| 103 | TIM6_DAC = 54, | ||
| 104 | TIM7 = 55, | ||
| 105 | TIM8_BRK = 43, | ||
| 106 | TIM8_CC = 46, | ||
| 107 | TIM8_TRG_COM = 45, | ||
| 108 | TIM8_UP = 44, | ||
| 109 | TSC = 77, | ||
| 110 | UART4 = 52, | ||
| 111 | UART5 = 53, | ||
| 112 | USART1 = 37, | ||
| 113 | USART2 = 38, | ||
| 114 | USART3 = 39, | ||
| 115 | WWDG = 0, | ||
| 116 | } | ||
| 117 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 118 | #[inline(always)] | ||
| 119 | fn number(self) -> u16 { | ||
| 120 | self as u16 | ||
| 121 | } | ||
| 122 | } | ||
| 123 | |||
| 124 | declare!(ADC1); | ||
| 125 | declare!(CAN1_RX0); | ||
| 126 | declare!(CAN1_RX1); | ||
| 127 | declare!(CAN1_SCE); | ||
| 128 | declare!(CAN1_TX); | ||
| 129 | declare!(COMP); | ||
| 130 | declare!(CRS); | ||
| 131 | declare!(DCMI); | ||
| 132 | declare!(DFSDM1_FLT0); | ||
| 133 | declare!(DFSDM1_FLT1); | ||
| 134 | declare!(DFSDM1_FLT2); | ||
| 135 | declare!(DFSDM1_FLT3); | ||
| 136 | declare!(DMA1_Channel1); | ||
| 137 | declare!(DMA1_Channel2); | ||
| 138 | declare!(DMA1_Channel3); | ||
| 139 | declare!(DMA1_Channel4); | ||
| 140 | declare!(DMA1_Channel5); | ||
| 141 | declare!(DMA1_Channel6); | ||
| 142 | declare!(DMA1_Channel7); | ||
| 143 | declare!(DMA2D); | ||
| 144 | declare!(DMA2_Channel1); | ||
| 145 | declare!(DMA2_Channel2); | ||
| 146 | declare!(DMA2_Channel3); | ||
| 147 | declare!(DMA2_Channel4); | ||
| 148 | declare!(DMA2_Channel5); | ||
| 149 | declare!(DMA2_Channel6); | ||
| 150 | declare!(DMA2_Channel7); | ||
| 151 | declare!(DMAMUX1_OVR); | ||
| 152 | declare!(EXTI0); | ||
| 153 | declare!(EXTI1); | ||
| 154 | declare!(EXTI15_10); | ||
| 155 | declare!(EXTI2); | ||
| 156 | declare!(EXTI3); | ||
| 157 | declare!(EXTI4); | ||
| 158 | declare!(EXTI9_5); | ||
| 159 | declare!(FLASH); | ||
| 160 | declare!(FMC); | ||
| 161 | declare!(FPU); | ||
| 162 | declare!(I2C1_ER); | ||
| 163 | declare!(I2C1_EV); | ||
| 164 | declare!(I2C2_ER); | ||
| 165 | declare!(I2C2_EV); | ||
| 166 | declare!(I2C3_ER); | ||
| 167 | declare!(I2C3_EV); | ||
| 168 | declare!(I2C4_ER); | ||
| 169 | declare!(I2C4_EV); | ||
| 170 | declare!(LPTIM1); | ||
| 171 | declare!(LPTIM2); | ||
| 172 | declare!(LPUART1); | ||
| 173 | declare!(OCTOSPI1); | ||
| 174 | declare!(OCTOSPI2); | ||
| 175 | declare!(OTG_FS); | ||
| 176 | declare!(PVD_PVM); | ||
| 177 | declare!(RCC); | ||
| 178 | declare!(RNG); | ||
| 179 | declare!(RTC_Alarm); | ||
| 180 | declare!(RTC_WKUP); | ||
| 181 | declare!(SAI1); | ||
| 182 | declare!(SAI2); | ||
| 183 | declare!(SDMMC1); | ||
| 184 | declare!(SPI1); | ||
| 185 | declare!(SPI2); | ||
| 186 | declare!(SPI3); | ||
| 187 | declare!(TAMP_STAMP); | ||
| 188 | declare!(TIM1_BRK_TIM15); | ||
| 189 | declare!(TIM1_CC); | ||
| 190 | declare!(TIM1_TRG_COM_TIM17); | ||
| 191 | declare!(TIM1_UP_TIM16); | ||
| 192 | declare!(TIM2); | ||
| 193 | declare!(TIM3); | ||
| 194 | declare!(TIM4); | ||
| 195 | declare!(TIM5); | ||
| 196 | declare!(TIM6_DAC); | ||
| 197 | declare!(TIM7); | ||
| 198 | declare!(TIM8_BRK); | ||
| 199 | declare!(TIM8_CC); | ||
| 200 | declare!(TIM8_TRG_COM); | ||
| 201 | declare!(TIM8_UP); | ||
| 202 | declare!(TSC); | ||
| 203 | declare!(UART4); | ||
| 204 | declare!(UART5); | ||
| 205 | declare!(USART1); | ||
| 206 | declare!(USART2); | ||
| 207 | declare!(USART3); | ||
| 208 | declare!(WWDG); | ||
| 209 | } | ||
| 210 | mod interrupt_vector { | ||
| 211 | extern "C" { | ||
| 212 | fn ADC1(); | ||
| 213 | fn CAN1_RX0(); | ||
| 214 | fn CAN1_RX1(); | ||
| 215 | fn CAN1_SCE(); | ||
| 216 | fn CAN1_TX(); | ||
| 217 | fn COMP(); | ||
| 218 | fn CRS(); | ||
| 219 | fn DCMI(); | ||
| 220 | fn DFSDM1_FLT0(); | ||
| 221 | fn DFSDM1_FLT1(); | ||
| 222 | fn DFSDM1_FLT2(); | ||
| 223 | fn DFSDM1_FLT3(); | ||
| 224 | fn DMA1_Channel1(); | ||
| 225 | fn DMA1_Channel2(); | ||
| 226 | fn DMA1_Channel3(); | ||
| 227 | fn DMA1_Channel4(); | ||
| 228 | fn DMA1_Channel5(); | ||
| 229 | fn DMA1_Channel6(); | ||
| 230 | fn DMA1_Channel7(); | ||
| 231 | fn DMA2D(); | ||
| 232 | fn DMA2_Channel1(); | ||
| 233 | fn DMA2_Channel2(); | ||
| 234 | fn DMA2_Channel3(); | ||
| 235 | fn DMA2_Channel4(); | ||
| 236 | fn DMA2_Channel5(); | ||
| 237 | fn DMA2_Channel6(); | ||
| 238 | fn DMA2_Channel7(); | ||
| 239 | fn DMAMUX1_OVR(); | ||
| 240 | fn EXTI0(); | ||
| 241 | fn EXTI1(); | ||
| 242 | fn EXTI15_10(); | ||
| 243 | fn EXTI2(); | ||
| 244 | fn EXTI3(); | ||
| 245 | fn EXTI4(); | ||
| 246 | fn EXTI9_5(); | ||
| 247 | fn FLASH(); | ||
| 248 | fn FMC(); | ||
| 249 | fn FPU(); | ||
| 250 | fn I2C1_ER(); | ||
| 251 | fn I2C1_EV(); | ||
| 252 | fn I2C2_ER(); | ||
| 253 | fn I2C2_EV(); | ||
| 254 | fn I2C3_ER(); | ||
| 255 | fn I2C3_EV(); | ||
| 256 | fn I2C4_ER(); | ||
| 257 | fn I2C4_EV(); | ||
| 258 | fn LPTIM1(); | ||
| 259 | fn LPTIM2(); | ||
| 260 | fn LPUART1(); | ||
| 261 | fn OCTOSPI1(); | ||
| 262 | fn OCTOSPI2(); | ||
| 263 | fn OTG_FS(); | ||
| 264 | fn PVD_PVM(); | ||
| 265 | fn RCC(); | ||
| 266 | fn RNG(); | ||
| 267 | fn RTC_Alarm(); | ||
| 268 | fn RTC_WKUP(); | ||
| 269 | fn SAI1(); | ||
| 270 | fn SAI2(); | ||
| 271 | fn SDMMC1(); | ||
| 272 | fn SPI1(); | ||
| 273 | fn SPI2(); | ||
| 274 | fn SPI3(); | ||
| 275 | fn TAMP_STAMP(); | ||
| 276 | fn TIM1_BRK_TIM15(); | ||
| 277 | fn TIM1_CC(); | ||
| 278 | fn TIM1_TRG_COM_TIM17(); | ||
| 279 | fn TIM1_UP_TIM16(); | ||
| 280 | fn TIM2(); | ||
| 281 | fn TIM3(); | ||
| 282 | fn TIM4(); | ||
| 283 | fn TIM5(); | ||
| 284 | fn TIM6_DAC(); | ||
| 285 | fn TIM7(); | ||
| 286 | fn TIM8_BRK(); | ||
| 287 | fn TIM8_CC(); | ||
| 288 | fn TIM8_TRG_COM(); | ||
| 289 | fn TIM8_UP(); | ||
| 290 | fn TSC(); | ||
| 291 | fn UART4(); | ||
| 292 | fn UART5(); | ||
| 293 | fn USART1(); | ||
| 294 | fn USART2(); | ||
| 295 | fn USART3(); | ||
| 296 | fn WWDG(); | ||
| 297 | } | ||
| 298 | pub union Vector { | ||
| 299 | _handler: unsafe extern "C" fn(), | ||
| 300 | _reserved: u32, | ||
| 301 | } | ||
| 302 | #[link_section = ".vector_table.interrupts"] | ||
| 303 | #[no_mangle] | ||
| 304 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 305 | Vector { _handler: WWDG }, | ||
| 306 | Vector { _handler: PVD_PVM }, | ||
| 307 | Vector { | ||
| 308 | _handler: TAMP_STAMP, | ||
| 309 | }, | ||
| 310 | Vector { _handler: RTC_WKUP }, | ||
| 311 | Vector { _handler: FLASH }, | ||
| 312 | Vector { _handler: RCC }, | ||
| 313 | Vector { _handler: EXTI0 }, | ||
| 314 | Vector { _handler: EXTI1 }, | ||
| 315 | Vector { _handler: EXTI2 }, | ||
| 316 | Vector { _handler: EXTI3 }, | ||
| 317 | Vector { _handler: EXTI4 }, | ||
| 318 | Vector { | ||
| 319 | _handler: DMA1_Channel1, | ||
| 320 | }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel2, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel3, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel4, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel5, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel6, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel7, | ||
| 338 | }, | ||
| 339 | Vector { _handler: ADC1 }, | ||
| 340 | Vector { _handler: CAN1_TX }, | ||
| 341 | Vector { _handler: CAN1_RX0 }, | ||
| 342 | Vector { _handler: CAN1_RX1 }, | ||
| 343 | Vector { _handler: CAN1_SCE }, | ||
| 344 | Vector { _handler: EXTI9_5 }, | ||
| 345 | Vector { | ||
| 346 | _handler: TIM1_BRK_TIM15, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_UP_TIM16, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_TRG_COM_TIM17, | ||
| 353 | }, | ||
| 354 | Vector { _handler: TIM1_CC }, | ||
| 355 | Vector { _handler: TIM2 }, | ||
| 356 | Vector { _handler: TIM3 }, | ||
| 357 | Vector { _handler: TIM4 }, | ||
| 358 | Vector { _handler: I2C1_EV }, | ||
| 359 | Vector { _handler: I2C1_ER }, | ||
| 360 | Vector { _handler: I2C2_EV }, | ||
| 361 | Vector { _handler: I2C2_ER }, | ||
| 362 | Vector { _handler: SPI1 }, | ||
| 363 | Vector { _handler: SPI2 }, | ||
| 364 | Vector { _handler: USART1 }, | ||
| 365 | Vector { _handler: USART2 }, | ||
| 366 | Vector { _handler: USART3 }, | ||
| 367 | Vector { | ||
| 368 | _handler: EXTI15_10, | ||
| 369 | }, | ||
| 370 | Vector { | ||
| 371 | _handler: RTC_Alarm, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: DFSDM1_FLT3, | ||
| 375 | }, | ||
| 376 | Vector { _handler: TIM8_BRK }, | ||
| 377 | Vector { _handler: TIM8_UP }, | ||
| 378 | Vector { | ||
| 379 | _handler: TIM8_TRG_COM, | ||
| 380 | }, | ||
| 381 | Vector { _handler: TIM8_CC }, | ||
| 382 | Vector { _reserved: 0 }, | ||
| 383 | Vector { _handler: FMC }, | ||
| 384 | Vector { _handler: SDMMC1 }, | ||
| 385 | Vector { _handler: TIM5 }, | ||
| 386 | Vector { _handler: SPI3 }, | ||
| 387 | Vector { _handler: UART4 }, | ||
| 388 | Vector { _handler: UART5 }, | ||
| 389 | Vector { _handler: TIM6_DAC }, | ||
| 390 | Vector { _handler: TIM7 }, | ||
| 391 | Vector { | ||
| 392 | _handler: DMA2_Channel1, | ||
| 393 | }, | ||
| 394 | Vector { | ||
| 395 | _handler: DMA2_Channel2, | ||
| 396 | }, | ||
| 397 | Vector { | ||
| 398 | _handler: DMA2_Channel3, | ||
| 399 | }, | ||
| 400 | Vector { | ||
| 401 | _handler: DMA2_Channel4, | ||
| 402 | }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel5, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DFSDM1_FLT0, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DFSDM1_FLT1, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DFSDM1_FLT2, | ||
| 414 | }, | ||
| 415 | Vector { _handler: COMP }, | ||
| 416 | Vector { _handler: LPTIM1 }, | ||
| 417 | Vector { _handler: LPTIM2 }, | ||
| 418 | Vector { _handler: OTG_FS }, | ||
| 419 | Vector { | ||
| 420 | _handler: DMA2_Channel6, | ||
| 421 | }, | ||
| 422 | Vector { | ||
| 423 | _handler: DMA2_Channel7, | ||
| 424 | }, | ||
| 425 | Vector { _handler: LPUART1 }, | ||
| 426 | Vector { _handler: OCTOSPI1 }, | ||
| 427 | Vector { _handler: I2C3_EV }, | ||
| 428 | Vector { _handler: I2C3_ER }, | ||
| 429 | Vector { _handler: SAI1 }, | ||
| 430 | Vector { _handler: SAI2 }, | ||
| 431 | Vector { _handler: OCTOSPI2 }, | ||
| 432 | Vector { _handler: TSC }, | ||
| 433 | Vector { _reserved: 0 }, | ||
| 434 | Vector { _reserved: 0 }, | ||
| 435 | Vector { _handler: RNG }, | ||
| 436 | Vector { _handler: FPU }, | ||
| 437 | Vector { _handler: CRS }, | ||
| 438 | Vector { _handler: I2C4_ER }, | ||
| 439 | Vector { _handler: I2C4_EV }, | ||
| 440 | Vector { _handler: DCMI }, | ||
| 441 | Vector { _reserved: 0 }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _handler: DMA2D }, | ||
| 446 | Vector { _reserved: 0 }, | ||
| 447 | Vector { _reserved: 0 }, | ||
| 448 | Vector { _reserved: 0 }, | ||
| 449 | Vector { | ||
| 450 | _handler: DMAMUX1_OVR, | ||
| 451 | }, | ||
| 452 | ]; | ||
| 453 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 454 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 455 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 456 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4r5vg.rs b/embassy-stm32/src/chip/stm32l4r5vg.rs index d8b9445b9..9c98d1f88 100644 --- a/embassy-stm32/src/chip/stm32l4r5vg.rs +++ b/embassy-stm32/src/chip/stm32l4r5vg.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -15,8 +15,442 @@ peripherals!( | |||
| 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, | 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 16 | USART3, USB_OTG_FS, WWDG | 16 | USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | CRS = 82, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | EXTI0 = 6, | ||
| 60 | EXTI1 = 7, | ||
| 61 | EXTI15_10 = 40, | ||
| 62 | EXTI2 = 8, | ||
| 63 | EXTI3 = 9, | ||
| 64 | EXTI4 = 10, | ||
| 65 | EXTI9_5 = 23, | ||
| 66 | FLASH = 4, | ||
| 67 | FMC = 48, | ||
| 68 | FPU = 81, | ||
| 69 | I2C1_ER = 32, | ||
| 70 | I2C1_EV = 31, | ||
| 71 | I2C2_ER = 34, | ||
| 72 | I2C2_EV = 33, | ||
| 73 | I2C3_ER = 73, | ||
| 74 | I2C3_EV = 72, | ||
| 75 | I2C4_ER = 83, | ||
| 76 | I2C4_EV = 84, | ||
| 77 | LPTIM1 = 65, | ||
| 78 | LPTIM2 = 66, | ||
| 79 | LPUART1 = 70, | ||
| 80 | OCTOSPI1 = 71, | ||
| 81 | OCTOSPI2 = 76, | ||
| 82 | OTG_FS = 67, | ||
| 83 | PVD_PVM = 1, | ||
| 84 | RCC = 5, | ||
| 85 | RNG = 80, | ||
| 86 | RTC_Alarm = 41, | ||
| 87 | RTC_WKUP = 3, | ||
| 88 | SAI1 = 74, | ||
| 89 | SAI2 = 75, | ||
| 90 | SDMMC1 = 49, | ||
| 91 | SPI1 = 35, | ||
| 92 | SPI2 = 36, | ||
| 93 | SPI3 = 51, | ||
| 94 | TAMP_STAMP = 2, | ||
| 95 | TIM1_BRK_TIM15 = 24, | ||
| 96 | TIM1_CC = 27, | ||
| 97 | TIM1_TRG_COM_TIM17 = 26, | ||
| 98 | TIM1_UP_TIM16 = 25, | ||
| 99 | TIM2 = 28, | ||
| 100 | TIM3 = 29, | ||
| 101 | TIM4 = 30, | ||
| 102 | TIM5 = 50, | ||
| 103 | TIM6_DAC = 54, | ||
| 104 | TIM7 = 55, | ||
| 105 | TIM8_BRK = 43, | ||
| 106 | TIM8_CC = 46, | ||
| 107 | TIM8_TRG_COM = 45, | ||
| 108 | TIM8_UP = 44, | ||
| 109 | TSC = 77, | ||
| 110 | UART4 = 52, | ||
| 111 | UART5 = 53, | ||
| 112 | USART1 = 37, | ||
| 113 | USART2 = 38, | ||
| 114 | USART3 = 39, | ||
| 115 | WWDG = 0, | ||
| 116 | } | ||
| 117 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 118 | #[inline(always)] | ||
| 119 | fn number(self) -> u16 { | ||
| 120 | self as u16 | ||
| 121 | } | ||
| 122 | } | ||
| 123 | |||
| 124 | declare!(ADC1); | ||
| 125 | declare!(CAN1_RX0); | ||
| 126 | declare!(CAN1_RX1); | ||
| 127 | declare!(CAN1_SCE); | ||
| 128 | declare!(CAN1_TX); | ||
| 129 | declare!(COMP); | ||
| 130 | declare!(CRS); | ||
| 131 | declare!(DCMI); | ||
| 132 | declare!(DFSDM1_FLT0); | ||
| 133 | declare!(DFSDM1_FLT1); | ||
| 134 | declare!(DFSDM1_FLT2); | ||
| 135 | declare!(DFSDM1_FLT3); | ||
| 136 | declare!(DMA1_Channel1); | ||
| 137 | declare!(DMA1_Channel2); | ||
| 138 | declare!(DMA1_Channel3); | ||
| 139 | declare!(DMA1_Channel4); | ||
| 140 | declare!(DMA1_Channel5); | ||
| 141 | declare!(DMA1_Channel6); | ||
| 142 | declare!(DMA1_Channel7); | ||
| 143 | declare!(DMA2D); | ||
| 144 | declare!(DMA2_Channel1); | ||
| 145 | declare!(DMA2_Channel2); | ||
| 146 | declare!(DMA2_Channel3); | ||
| 147 | declare!(DMA2_Channel4); | ||
| 148 | declare!(DMA2_Channel5); | ||
| 149 | declare!(DMA2_Channel6); | ||
| 150 | declare!(DMA2_Channel7); | ||
| 151 | declare!(DMAMUX1_OVR); | ||
| 152 | declare!(EXTI0); | ||
| 153 | declare!(EXTI1); | ||
| 154 | declare!(EXTI15_10); | ||
| 155 | declare!(EXTI2); | ||
| 156 | declare!(EXTI3); | ||
| 157 | declare!(EXTI4); | ||
| 158 | declare!(EXTI9_5); | ||
| 159 | declare!(FLASH); | ||
| 160 | declare!(FMC); | ||
| 161 | declare!(FPU); | ||
| 162 | declare!(I2C1_ER); | ||
| 163 | declare!(I2C1_EV); | ||
| 164 | declare!(I2C2_ER); | ||
| 165 | declare!(I2C2_EV); | ||
| 166 | declare!(I2C3_ER); | ||
| 167 | declare!(I2C3_EV); | ||
| 168 | declare!(I2C4_ER); | ||
| 169 | declare!(I2C4_EV); | ||
| 170 | declare!(LPTIM1); | ||
| 171 | declare!(LPTIM2); | ||
| 172 | declare!(LPUART1); | ||
| 173 | declare!(OCTOSPI1); | ||
| 174 | declare!(OCTOSPI2); | ||
| 175 | declare!(OTG_FS); | ||
| 176 | declare!(PVD_PVM); | ||
| 177 | declare!(RCC); | ||
| 178 | declare!(RNG); | ||
| 179 | declare!(RTC_Alarm); | ||
| 180 | declare!(RTC_WKUP); | ||
| 181 | declare!(SAI1); | ||
| 182 | declare!(SAI2); | ||
| 183 | declare!(SDMMC1); | ||
| 184 | declare!(SPI1); | ||
| 185 | declare!(SPI2); | ||
| 186 | declare!(SPI3); | ||
| 187 | declare!(TAMP_STAMP); | ||
| 188 | declare!(TIM1_BRK_TIM15); | ||
| 189 | declare!(TIM1_CC); | ||
| 190 | declare!(TIM1_TRG_COM_TIM17); | ||
| 191 | declare!(TIM1_UP_TIM16); | ||
| 192 | declare!(TIM2); | ||
| 193 | declare!(TIM3); | ||
| 194 | declare!(TIM4); | ||
| 195 | declare!(TIM5); | ||
| 196 | declare!(TIM6_DAC); | ||
| 197 | declare!(TIM7); | ||
| 198 | declare!(TIM8_BRK); | ||
| 199 | declare!(TIM8_CC); | ||
| 200 | declare!(TIM8_TRG_COM); | ||
| 201 | declare!(TIM8_UP); | ||
| 202 | declare!(TSC); | ||
| 203 | declare!(UART4); | ||
| 204 | declare!(UART5); | ||
| 205 | declare!(USART1); | ||
| 206 | declare!(USART2); | ||
| 207 | declare!(USART3); | ||
| 208 | declare!(WWDG); | ||
| 209 | } | ||
| 210 | mod interrupt_vector { | ||
| 211 | extern "C" { | ||
| 212 | fn ADC1(); | ||
| 213 | fn CAN1_RX0(); | ||
| 214 | fn CAN1_RX1(); | ||
| 215 | fn CAN1_SCE(); | ||
| 216 | fn CAN1_TX(); | ||
| 217 | fn COMP(); | ||
| 218 | fn CRS(); | ||
| 219 | fn DCMI(); | ||
| 220 | fn DFSDM1_FLT0(); | ||
| 221 | fn DFSDM1_FLT1(); | ||
| 222 | fn DFSDM1_FLT2(); | ||
| 223 | fn DFSDM1_FLT3(); | ||
| 224 | fn DMA1_Channel1(); | ||
| 225 | fn DMA1_Channel2(); | ||
| 226 | fn DMA1_Channel3(); | ||
| 227 | fn DMA1_Channel4(); | ||
| 228 | fn DMA1_Channel5(); | ||
| 229 | fn DMA1_Channel6(); | ||
| 230 | fn DMA1_Channel7(); | ||
| 231 | fn DMA2D(); | ||
| 232 | fn DMA2_Channel1(); | ||
| 233 | fn DMA2_Channel2(); | ||
| 234 | fn DMA2_Channel3(); | ||
| 235 | fn DMA2_Channel4(); | ||
| 236 | fn DMA2_Channel5(); | ||
| 237 | fn DMA2_Channel6(); | ||
| 238 | fn DMA2_Channel7(); | ||
| 239 | fn DMAMUX1_OVR(); | ||
| 240 | fn EXTI0(); | ||
| 241 | fn EXTI1(); | ||
| 242 | fn EXTI15_10(); | ||
| 243 | fn EXTI2(); | ||
| 244 | fn EXTI3(); | ||
| 245 | fn EXTI4(); | ||
| 246 | fn EXTI9_5(); | ||
| 247 | fn FLASH(); | ||
| 248 | fn FMC(); | ||
| 249 | fn FPU(); | ||
| 250 | fn I2C1_ER(); | ||
| 251 | fn I2C1_EV(); | ||
| 252 | fn I2C2_ER(); | ||
| 253 | fn I2C2_EV(); | ||
| 254 | fn I2C3_ER(); | ||
| 255 | fn I2C3_EV(); | ||
| 256 | fn I2C4_ER(); | ||
| 257 | fn I2C4_EV(); | ||
| 258 | fn LPTIM1(); | ||
| 259 | fn LPTIM2(); | ||
| 260 | fn LPUART1(); | ||
| 261 | fn OCTOSPI1(); | ||
| 262 | fn OCTOSPI2(); | ||
| 263 | fn OTG_FS(); | ||
| 264 | fn PVD_PVM(); | ||
| 265 | fn RCC(); | ||
| 266 | fn RNG(); | ||
| 267 | fn RTC_Alarm(); | ||
| 268 | fn RTC_WKUP(); | ||
| 269 | fn SAI1(); | ||
| 270 | fn SAI2(); | ||
| 271 | fn SDMMC1(); | ||
| 272 | fn SPI1(); | ||
| 273 | fn SPI2(); | ||
| 274 | fn SPI3(); | ||
| 275 | fn TAMP_STAMP(); | ||
| 276 | fn TIM1_BRK_TIM15(); | ||
| 277 | fn TIM1_CC(); | ||
| 278 | fn TIM1_TRG_COM_TIM17(); | ||
| 279 | fn TIM1_UP_TIM16(); | ||
| 280 | fn TIM2(); | ||
| 281 | fn TIM3(); | ||
| 282 | fn TIM4(); | ||
| 283 | fn TIM5(); | ||
| 284 | fn TIM6_DAC(); | ||
| 285 | fn TIM7(); | ||
| 286 | fn TIM8_BRK(); | ||
| 287 | fn TIM8_CC(); | ||
| 288 | fn TIM8_TRG_COM(); | ||
| 289 | fn TIM8_UP(); | ||
| 290 | fn TSC(); | ||
| 291 | fn UART4(); | ||
| 292 | fn UART5(); | ||
| 293 | fn USART1(); | ||
| 294 | fn USART2(); | ||
| 295 | fn USART3(); | ||
| 296 | fn WWDG(); | ||
| 297 | } | ||
| 298 | pub union Vector { | ||
| 299 | _handler: unsafe extern "C" fn(), | ||
| 300 | _reserved: u32, | ||
| 301 | } | ||
| 302 | #[link_section = ".vector_table.interrupts"] | ||
| 303 | #[no_mangle] | ||
| 304 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 305 | Vector { _handler: WWDG }, | ||
| 306 | Vector { _handler: PVD_PVM }, | ||
| 307 | Vector { | ||
| 308 | _handler: TAMP_STAMP, | ||
| 309 | }, | ||
| 310 | Vector { _handler: RTC_WKUP }, | ||
| 311 | Vector { _handler: FLASH }, | ||
| 312 | Vector { _handler: RCC }, | ||
| 313 | Vector { _handler: EXTI0 }, | ||
| 314 | Vector { _handler: EXTI1 }, | ||
| 315 | Vector { _handler: EXTI2 }, | ||
| 316 | Vector { _handler: EXTI3 }, | ||
| 317 | Vector { _handler: EXTI4 }, | ||
| 318 | Vector { | ||
| 319 | _handler: DMA1_Channel1, | ||
| 320 | }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel2, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel3, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel4, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel5, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel6, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel7, | ||
| 338 | }, | ||
| 339 | Vector { _handler: ADC1 }, | ||
| 340 | Vector { _handler: CAN1_TX }, | ||
| 341 | Vector { _handler: CAN1_RX0 }, | ||
| 342 | Vector { _handler: CAN1_RX1 }, | ||
| 343 | Vector { _handler: CAN1_SCE }, | ||
| 344 | Vector { _handler: EXTI9_5 }, | ||
| 345 | Vector { | ||
| 346 | _handler: TIM1_BRK_TIM15, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_UP_TIM16, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_TRG_COM_TIM17, | ||
| 353 | }, | ||
| 354 | Vector { _handler: TIM1_CC }, | ||
| 355 | Vector { _handler: TIM2 }, | ||
| 356 | Vector { _handler: TIM3 }, | ||
| 357 | Vector { _handler: TIM4 }, | ||
| 358 | Vector { _handler: I2C1_EV }, | ||
| 359 | Vector { _handler: I2C1_ER }, | ||
| 360 | Vector { _handler: I2C2_EV }, | ||
| 361 | Vector { _handler: I2C2_ER }, | ||
| 362 | Vector { _handler: SPI1 }, | ||
| 363 | Vector { _handler: SPI2 }, | ||
| 364 | Vector { _handler: USART1 }, | ||
| 365 | Vector { _handler: USART2 }, | ||
| 366 | Vector { _handler: USART3 }, | ||
| 367 | Vector { | ||
| 368 | _handler: EXTI15_10, | ||
| 369 | }, | ||
| 370 | Vector { | ||
| 371 | _handler: RTC_Alarm, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: DFSDM1_FLT3, | ||
| 375 | }, | ||
| 376 | Vector { _handler: TIM8_BRK }, | ||
| 377 | Vector { _handler: TIM8_UP }, | ||
| 378 | Vector { | ||
| 379 | _handler: TIM8_TRG_COM, | ||
| 380 | }, | ||
| 381 | Vector { _handler: TIM8_CC }, | ||
| 382 | Vector { _reserved: 0 }, | ||
| 383 | Vector { _handler: FMC }, | ||
| 384 | Vector { _handler: SDMMC1 }, | ||
| 385 | Vector { _handler: TIM5 }, | ||
| 386 | Vector { _handler: SPI3 }, | ||
| 387 | Vector { _handler: UART4 }, | ||
| 388 | Vector { _handler: UART5 }, | ||
| 389 | Vector { _handler: TIM6_DAC }, | ||
| 390 | Vector { _handler: TIM7 }, | ||
| 391 | Vector { | ||
| 392 | _handler: DMA2_Channel1, | ||
| 393 | }, | ||
| 394 | Vector { | ||
| 395 | _handler: DMA2_Channel2, | ||
| 396 | }, | ||
| 397 | Vector { | ||
| 398 | _handler: DMA2_Channel3, | ||
| 399 | }, | ||
| 400 | Vector { | ||
| 401 | _handler: DMA2_Channel4, | ||
| 402 | }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel5, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DFSDM1_FLT0, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DFSDM1_FLT1, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DFSDM1_FLT2, | ||
| 414 | }, | ||
| 415 | Vector { _handler: COMP }, | ||
| 416 | Vector { _handler: LPTIM1 }, | ||
| 417 | Vector { _handler: LPTIM2 }, | ||
| 418 | Vector { _handler: OTG_FS }, | ||
| 419 | Vector { | ||
| 420 | _handler: DMA2_Channel6, | ||
| 421 | }, | ||
| 422 | Vector { | ||
| 423 | _handler: DMA2_Channel7, | ||
| 424 | }, | ||
| 425 | Vector { _handler: LPUART1 }, | ||
| 426 | Vector { _handler: OCTOSPI1 }, | ||
| 427 | Vector { _handler: I2C3_EV }, | ||
| 428 | Vector { _handler: I2C3_ER }, | ||
| 429 | Vector { _handler: SAI1 }, | ||
| 430 | Vector { _handler: SAI2 }, | ||
| 431 | Vector { _handler: OCTOSPI2 }, | ||
| 432 | Vector { _handler: TSC }, | ||
| 433 | Vector { _reserved: 0 }, | ||
| 434 | Vector { _reserved: 0 }, | ||
| 435 | Vector { _handler: RNG }, | ||
| 436 | Vector { _handler: FPU }, | ||
| 437 | Vector { _handler: CRS }, | ||
| 438 | Vector { _handler: I2C4_ER }, | ||
| 439 | Vector { _handler: I2C4_EV }, | ||
| 440 | Vector { _handler: DCMI }, | ||
| 441 | Vector { _reserved: 0 }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _handler: DMA2D }, | ||
| 446 | Vector { _reserved: 0 }, | ||
| 447 | Vector { _reserved: 0 }, | ||
| 448 | Vector { _reserved: 0 }, | ||
| 449 | Vector { | ||
| 450 | _handler: DMAMUX1_OVR, | ||
| 451 | }, | ||
| 452 | ]; | ||
| 453 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 454 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 455 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 456 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4r5vi.rs b/embassy-stm32/src/chip/stm32l4r5vi.rs index d8b9445b9..9c98d1f88 100644 --- a/embassy-stm32/src/chip/stm32l4r5vi.rs +++ b/embassy-stm32/src/chip/stm32l4r5vi.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -15,8 +15,442 @@ peripherals!( | |||
| 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, | 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 16 | USART3, USB_OTG_FS, WWDG | 16 | USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | CRS = 82, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | EXTI0 = 6, | ||
| 60 | EXTI1 = 7, | ||
| 61 | EXTI15_10 = 40, | ||
| 62 | EXTI2 = 8, | ||
| 63 | EXTI3 = 9, | ||
| 64 | EXTI4 = 10, | ||
| 65 | EXTI9_5 = 23, | ||
| 66 | FLASH = 4, | ||
| 67 | FMC = 48, | ||
| 68 | FPU = 81, | ||
| 69 | I2C1_ER = 32, | ||
| 70 | I2C1_EV = 31, | ||
| 71 | I2C2_ER = 34, | ||
| 72 | I2C2_EV = 33, | ||
| 73 | I2C3_ER = 73, | ||
| 74 | I2C3_EV = 72, | ||
| 75 | I2C4_ER = 83, | ||
| 76 | I2C4_EV = 84, | ||
| 77 | LPTIM1 = 65, | ||
| 78 | LPTIM2 = 66, | ||
| 79 | LPUART1 = 70, | ||
| 80 | OCTOSPI1 = 71, | ||
| 81 | OCTOSPI2 = 76, | ||
| 82 | OTG_FS = 67, | ||
| 83 | PVD_PVM = 1, | ||
| 84 | RCC = 5, | ||
| 85 | RNG = 80, | ||
| 86 | RTC_Alarm = 41, | ||
| 87 | RTC_WKUP = 3, | ||
| 88 | SAI1 = 74, | ||
| 89 | SAI2 = 75, | ||
| 90 | SDMMC1 = 49, | ||
| 91 | SPI1 = 35, | ||
| 92 | SPI2 = 36, | ||
| 93 | SPI3 = 51, | ||
| 94 | TAMP_STAMP = 2, | ||
| 95 | TIM1_BRK_TIM15 = 24, | ||
| 96 | TIM1_CC = 27, | ||
| 97 | TIM1_TRG_COM_TIM17 = 26, | ||
| 98 | TIM1_UP_TIM16 = 25, | ||
| 99 | TIM2 = 28, | ||
| 100 | TIM3 = 29, | ||
| 101 | TIM4 = 30, | ||
| 102 | TIM5 = 50, | ||
| 103 | TIM6_DAC = 54, | ||
| 104 | TIM7 = 55, | ||
| 105 | TIM8_BRK = 43, | ||
| 106 | TIM8_CC = 46, | ||
| 107 | TIM8_TRG_COM = 45, | ||
| 108 | TIM8_UP = 44, | ||
| 109 | TSC = 77, | ||
| 110 | UART4 = 52, | ||
| 111 | UART5 = 53, | ||
| 112 | USART1 = 37, | ||
| 113 | USART2 = 38, | ||
| 114 | USART3 = 39, | ||
| 115 | WWDG = 0, | ||
| 116 | } | ||
| 117 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 118 | #[inline(always)] | ||
| 119 | fn number(self) -> u16 { | ||
| 120 | self as u16 | ||
| 121 | } | ||
| 122 | } | ||
| 123 | |||
| 124 | declare!(ADC1); | ||
| 125 | declare!(CAN1_RX0); | ||
| 126 | declare!(CAN1_RX1); | ||
| 127 | declare!(CAN1_SCE); | ||
| 128 | declare!(CAN1_TX); | ||
| 129 | declare!(COMP); | ||
| 130 | declare!(CRS); | ||
| 131 | declare!(DCMI); | ||
| 132 | declare!(DFSDM1_FLT0); | ||
| 133 | declare!(DFSDM1_FLT1); | ||
| 134 | declare!(DFSDM1_FLT2); | ||
| 135 | declare!(DFSDM1_FLT3); | ||
| 136 | declare!(DMA1_Channel1); | ||
| 137 | declare!(DMA1_Channel2); | ||
| 138 | declare!(DMA1_Channel3); | ||
| 139 | declare!(DMA1_Channel4); | ||
| 140 | declare!(DMA1_Channel5); | ||
| 141 | declare!(DMA1_Channel6); | ||
| 142 | declare!(DMA1_Channel7); | ||
| 143 | declare!(DMA2D); | ||
| 144 | declare!(DMA2_Channel1); | ||
| 145 | declare!(DMA2_Channel2); | ||
| 146 | declare!(DMA2_Channel3); | ||
| 147 | declare!(DMA2_Channel4); | ||
| 148 | declare!(DMA2_Channel5); | ||
| 149 | declare!(DMA2_Channel6); | ||
| 150 | declare!(DMA2_Channel7); | ||
| 151 | declare!(DMAMUX1_OVR); | ||
| 152 | declare!(EXTI0); | ||
| 153 | declare!(EXTI1); | ||
| 154 | declare!(EXTI15_10); | ||
| 155 | declare!(EXTI2); | ||
| 156 | declare!(EXTI3); | ||
| 157 | declare!(EXTI4); | ||
| 158 | declare!(EXTI9_5); | ||
| 159 | declare!(FLASH); | ||
| 160 | declare!(FMC); | ||
| 161 | declare!(FPU); | ||
| 162 | declare!(I2C1_ER); | ||
| 163 | declare!(I2C1_EV); | ||
| 164 | declare!(I2C2_ER); | ||
| 165 | declare!(I2C2_EV); | ||
| 166 | declare!(I2C3_ER); | ||
| 167 | declare!(I2C3_EV); | ||
| 168 | declare!(I2C4_ER); | ||
| 169 | declare!(I2C4_EV); | ||
| 170 | declare!(LPTIM1); | ||
| 171 | declare!(LPTIM2); | ||
| 172 | declare!(LPUART1); | ||
| 173 | declare!(OCTOSPI1); | ||
| 174 | declare!(OCTOSPI2); | ||
| 175 | declare!(OTG_FS); | ||
| 176 | declare!(PVD_PVM); | ||
| 177 | declare!(RCC); | ||
| 178 | declare!(RNG); | ||
| 179 | declare!(RTC_Alarm); | ||
| 180 | declare!(RTC_WKUP); | ||
| 181 | declare!(SAI1); | ||
| 182 | declare!(SAI2); | ||
| 183 | declare!(SDMMC1); | ||
| 184 | declare!(SPI1); | ||
| 185 | declare!(SPI2); | ||
| 186 | declare!(SPI3); | ||
| 187 | declare!(TAMP_STAMP); | ||
| 188 | declare!(TIM1_BRK_TIM15); | ||
| 189 | declare!(TIM1_CC); | ||
| 190 | declare!(TIM1_TRG_COM_TIM17); | ||
| 191 | declare!(TIM1_UP_TIM16); | ||
| 192 | declare!(TIM2); | ||
| 193 | declare!(TIM3); | ||
| 194 | declare!(TIM4); | ||
| 195 | declare!(TIM5); | ||
| 196 | declare!(TIM6_DAC); | ||
| 197 | declare!(TIM7); | ||
| 198 | declare!(TIM8_BRK); | ||
| 199 | declare!(TIM8_CC); | ||
| 200 | declare!(TIM8_TRG_COM); | ||
| 201 | declare!(TIM8_UP); | ||
| 202 | declare!(TSC); | ||
| 203 | declare!(UART4); | ||
| 204 | declare!(UART5); | ||
| 205 | declare!(USART1); | ||
| 206 | declare!(USART2); | ||
| 207 | declare!(USART3); | ||
| 208 | declare!(WWDG); | ||
| 209 | } | ||
| 210 | mod interrupt_vector { | ||
| 211 | extern "C" { | ||
| 212 | fn ADC1(); | ||
| 213 | fn CAN1_RX0(); | ||
| 214 | fn CAN1_RX1(); | ||
| 215 | fn CAN1_SCE(); | ||
| 216 | fn CAN1_TX(); | ||
| 217 | fn COMP(); | ||
| 218 | fn CRS(); | ||
| 219 | fn DCMI(); | ||
| 220 | fn DFSDM1_FLT0(); | ||
| 221 | fn DFSDM1_FLT1(); | ||
| 222 | fn DFSDM1_FLT2(); | ||
| 223 | fn DFSDM1_FLT3(); | ||
| 224 | fn DMA1_Channel1(); | ||
| 225 | fn DMA1_Channel2(); | ||
| 226 | fn DMA1_Channel3(); | ||
| 227 | fn DMA1_Channel4(); | ||
| 228 | fn DMA1_Channel5(); | ||
| 229 | fn DMA1_Channel6(); | ||
| 230 | fn DMA1_Channel7(); | ||
| 231 | fn DMA2D(); | ||
| 232 | fn DMA2_Channel1(); | ||
| 233 | fn DMA2_Channel2(); | ||
| 234 | fn DMA2_Channel3(); | ||
| 235 | fn DMA2_Channel4(); | ||
| 236 | fn DMA2_Channel5(); | ||
| 237 | fn DMA2_Channel6(); | ||
| 238 | fn DMA2_Channel7(); | ||
| 239 | fn DMAMUX1_OVR(); | ||
| 240 | fn EXTI0(); | ||
| 241 | fn EXTI1(); | ||
| 242 | fn EXTI15_10(); | ||
| 243 | fn EXTI2(); | ||
| 244 | fn EXTI3(); | ||
| 245 | fn EXTI4(); | ||
| 246 | fn EXTI9_5(); | ||
| 247 | fn FLASH(); | ||
| 248 | fn FMC(); | ||
| 249 | fn FPU(); | ||
| 250 | fn I2C1_ER(); | ||
| 251 | fn I2C1_EV(); | ||
| 252 | fn I2C2_ER(); | ||
| 253 | fn I2C2_EV(); | ||
| 254 | fn I2C3_ER(); | ||
| 255 | fn I2C3_EV(); | ||
| 256 | fn I2C4_ER(); | ||
| 257 | fn I2C4_EV(); | ||
| 258 | fn LPTIM1(); | ||
| 259 | fn LPTIM2(); | ||
| 260 | fn LPUART1(); | ||
| 261 | fn OCTOSPI1(); | ||
| 262 | fn OCTOSPI2(); | ||
| 263 | fn OTG_FS(); | ||
| 264 | fn PVD_PVM(); | ||
| 265 | fn RCC(); | ||
| 266 | fn RNG(); | ||
| 267 | fn RTC_Alarm(); | ||
| 268 | fn RTC_WKUP(); | ||
| 269 | fn SAI1(); | ||
| 270 | fn SAI2(); | ||
| 271 | fn SDMMC1(); | ||
| 272 | fn SPI1(); | ||
| 273 | fn SPI2(); | ||
| 274 | fn SPI3(); | ||
| 275 | fn TAMP_STAMP(); | ||
| 276 | fn TIM1_BRK_TIM15(); | ||
| 277 | fn TIM1_CC(); | ||
| 278 | fn TIM1_TRG_COM_TIM17(); | ||
| 279 | fn TIM1_UP_TIM16(); | ||
| 280 | fn TIM2(); | ||
| 281 | fn TIM3(); | ||
| 282 | fn TIM4(); | ||
| 283 | fn TIM5(); | ||
| 284 | fn TIM6_DAC(); | ||
| 285 | fn TIM7(); | ||
| 286 | fn TIM8_BRK(); | ||
| 287 | fn TIM8_CC(); | ||
| 288 | fn TIM8_TRG_COM(); | ||
| 289 | fn TIM8_UP(); | ||
| 290 | fn TSC(); | ||
| 291 | fn UART4(); | ||
| 292 | fn UART5(); | ||
| 293 | fn USART1(); | ||
| 294 | fn USART2(); | ||
| 295 | fn USART3(); | ||
| 296 | fn WWDG(); | ||
| 297 | } | ||
| 298 | pub union Vector { | ||
| 299 | _handler: unsafe extern "C" fn(), | ||
| 300 | _reserved: u32, | ||
| 301 | } | ||
| 302 | #[link_section = ".vector_table.interrupts"] | ||
| 303 | #[no_mangle] | ||
| 304 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 305 | Vector { _handler: WWDG }, | ||
| 306 | Vector { _handler: PVD_PVM }, | ||
| 307 | Vector { | ||
| 308 | _handler: TAMP_STAMP, | ||
| 309 | }, | ||
| 310 | Vector { _handler: RTC_WKUP }, | ||
| 311 | Vector { _handler: FLASH }, | ||
| 312 | Vector { _handler: RCC }, | ||
| 313 | Vector { _handler: EXTI0 }, | ||
| 314 | Vector { _handler: EXTI1 }, | ||
| 315 | Vector { _handler: EXTI2 }, | ||
| 316 | Vector { _handler: EXTI3 }, | ||
| 317 | Vector { _handler: EXTI4 }, | ||
| 318 | Vector { | ||
| 319 | _handler: DMA1_Channel1, | ||
| 320 | }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel2, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel3, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel4, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel5, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel6, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel7, | ||
| 338 | }, | ||
| 339 | Vector { _handler: ADC1 }, | ||
| 340 | Vector { _handler: CAN1_TX }, | ||
| 341 | Vector { _handler: CAN1_RX0 }, | ||
| 342 | Vector { _handler: CAN1_RX1 }, | ||
| 343 | Vector { _handler: CAN1_SCE }, | ||
| 344 | Vector { _handler: EXTI9_5 }, | ||
| 345 | Vector { | ||
| 346 | _handler: TIM1_BRK_TIM15, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_UP_TIM16, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_TRG_COM_TIM17, | ||
| 353 | }, | ||
| 354 | Vector { _handler: TIM1_CC }, | ||
| 355 | Vector { _handler: TIM2 }, | ||
| 356 | Vector { _handler: TIM3 }, | ||
| 357 | Vector { _handler: TIM4 }, | ||
| 358 | Vector { _handler: I2C1_EV }, | ||
| 359 | Vector { _handler: I2C1_ER }, | ||
| 360 | Vector { _handler: I2C2_EV }, | ||
| 361 | Vector { _handler: I2C2_ER }, | ||
| 362 | Vector { _handler: SPI1 }, | ||
| 363 | Vector { _handler: SPI2 }, | ||
| 364 | Vector { _handler: USART1 }, | ||
| 365 | Vector { _handler: USART2 }, | ||
| 366 | Vector { _handler: USART3 }, | ||
| 367 | Vector { | ||
| 368 | _handler: EXTI15_10, | ||
| 369 | }, | ||
| 370 | Vector { | ||
| 371 | _handler: RTC_Alarm, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: DFSDM1_FLT3, | ||
| 375 | }, | ||
| 376 | Vector { _handler: TIM8_BRK }, | ||
| 377 | Vector { _handler: TIM8_UP }, | ||
| 378 | Vector { | ||
| 379 | _handler: TIM8_TRG_COM, | ||
| 380 | }, | ||
| 381 | Vector { _handler: TIM8_CC }, | ||
| 382 | Vector { _reserved: 0 }, | ||
| 383 | Vector { _handler: FMC }, | ||
| 384 | Vector { _handler: SDMMC1 }, | ||
| 385 | Vector { _handler: TIM5 }, | ||
| 386 | Vector { _handler: SPI3 }, | ||
| 387 | Vector { _handler: UART4 }, | ||
| 388 | Vector { _handler: UART5 }, | ||
| 389 | Vector { _handler: TIM6_DAC }, | ||
| 390 | Vector { _handler: TIM7 }, | ||
| 391 | Vector { | ||
| 392 | _handler: DMA2_Channel1, | ||
| 393 | }, | ||
| 394 | Vector { | ||
| 395 | _handler: DMA2_Channel2, | ||
| 396 | }, | ||
| 397 | Vector { | ||
| 398 | _handler: DMA2_Channel3, | ||
| 399 | }, | ||
| 400 | Vector { | ||
| 401 | _handler: DMA2_Channel4, | ||
| 402 | }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel5, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DFSDM1_FLT0, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DFSDM1_FLT1, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DFSDM1_FLT2, | ||
| 414 | }, | ||
| 415 | Vector { _handler: COMP }, | ||
| 416 | Vector { _handler: LPTIM1 }, | ||
| 417 | Vector { _handler: LPTIM2 }, | ||
| 418 | Vector { _handler: OTG_FS }, | ||
| 419 | Vector { | ||
| 420 | _handler: DMA2_Channel6, | ||
| 421 | }, | ||
| 422 | Vector { | ||
| 423 | _handler: DMA2_Channel7, | ||
| 424 | }, | ||
| 425 | Vector { _handler: LPUART1 }, | ||
| 426 | Vector { _handler: OCTOSPI1 }, | ||
| 427 | Vector { _handler: I2C3_EV }, | ||
| 428 | Vector { _handler: I2C3_ER }, | ||
| 429 | Vector { _handler: SAI1 }, | ||
| 430 | Vector { _handler: SAI2 }, | ||
| 431 | Vector { _handler: OCTOSPI2 }, | ||
| 432 | Vector { _handler: TSC }, | ||
| 433 | Vector { _reserved: 0 }, | ||
| 434 | Vector { _reserved: 0 }, | ||
| 435 | Vector { _handler: RNG }, | ||
| 436 | Vector { _handler: FPU }, | ||
| 437 | Vector { _handler: CRS }, | ||
| 438 | Vector { _handler: I2C4_ER }, | ||
| 439 | Vector { _handler: I2C4_EV }, | ||
| 440 | Vector { _handler: DCMI }, | ||
| 441 | Vector { _reserved: 0 }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _handler: DMA2D }, | ||
| 446 | Vector { _reserved: 0 }, | ||
| 447 | Vector { _reserved: 0 }, | ||
| 448 | Vector { _reserved: 0 }, | ||
| 449 | Vector { | ||
| 450 | _handler: DMAMUX1_OVR, | ||
| 451 | }, | ||
| 452 | ]; | ||
| 453 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 454 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 455 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 456 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4r5zg.rs b/embassy-stm32/src/chip/stm32l4r5zg.rs index d8b9445b9..9c98d1f88 100644 --- a/embassy-stm32/src/chip/stm32l4r5zg.rs +++ b/embassy-stm32/src/chip/stm32l4r5zg.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -15,8 +15,442 @@ peripherals!( | |||
| 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, | 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 16 | USART3, USB_OTG_FS, WWDG | 16 | USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | CRS = 82, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | EXTI0 = 6, | ||
| 60 | EXTI1 = 7, | ||
| 61 | EXTI15_10 = 40, | ||
| 62 | EXTI2 = 8, | ||
| 63 | EXTI3 = 9, | ||
| 64 | EXTI4 = 10, | ||
| 65 | EXTI9_5 = 23, | ||
| 66 | FLASH = 4, | ||
| 67 | FMC = 48, | ||
| 68 | FPU = 81, | ||
| 69 | I2C1_ER = 32, | ||
| 70 | I2C1_EV = 31, | ||
| 71 | I2C2_ER = 34, | ||
| 72 | I2C2_EV = 33, | ||
| 73 | I2C3_ER = 73, | ||
| 74 | I2C3_EV = 72, | ||
| 75 | I2C4_ER = 83, | ||
| 76 | I2C4_EV = 84, | ||
| 77 | LPTIM1 = 65, | ||
| 78 | LPTIM2 = 66, | ||
| 79 | LPUART1 = 70, | ||
| 80 | OCTOSPI1 = 71, | ||
| 81 | OCTOSPI2 = 76, | ||
| 82 | OTG_FS = 67, | ||
| 83 | PVD_PVM = 1, | ||
| 84 | RCC = 5, | ||
| 85 | RNG = 80, | ||
| 86 | RTC_Alarm = 41, | ||
| 87 | RTC_WKUP = 3, | ||
| 88 | SAI1 = 74, | ||
| 89 | SAI2 = 75, | ||
| 90 | SDMMC1 = 49, | ||
| 91 | SPI1 = 35, | ||
| 92 | SPI2 = 36, | ||
| 93 | SPI3 = 51, | ||
| 94 | TAMP_STAMP = 2, | ||
| 95 | TIM1_BRK_TIM15 = 24, | ||
| 96 | TIM1_CC = 27, | ||
| 97 | TIM1_TRG_COM_TIM17 = 26, | ||
| 98 | TIM1_UP_TIM16 = 25, | ||
| 99 | TIM2 = 28, | ||
| 100 | TIM3 = 29, | ||
| 101 | TIM4 = 30, | ||
| 102 | TIM5 = 50, | ||
| 103 | TIM6_DAC = 54, | ||
| 104 | TIM7 = 55, | ||
| 105 | TIM8_BRK = 43, | ||
| 106 | TIM8_CC = 46, | ||
| 107 | TIM8_TRG_COM = 45, | ||
| 108 | TIM8_UP = 44, | ||
| 109 | TSC = 77, | ||
| 110 | UART4 = 52, | ||
| 111 | UART5 = 53, | ||
| 112 | USART1 = 37, | ||
| 113 | USART2 = 38, | ||
| 114 | USART3 = 39, | ||
| 115 | WWDG = 0, | ||
| 116 | } | ||
| 117 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 118 | #[inline(always)] | ||
| 119 | fn number(self) -> u16 { | ||
| 120 | self as u16 | ||
| 121 | } | ||
| 122 | } | ||
| 123 | |||
| 124 | declare!(ADC1); | ||
| 125 | declare!(CAN1_RX0); | ||
| 126 | declare!(CAN1_RX1); | ||
| 127 | declare!(CAN1_SCE); | ||
| 128 | declare!(CAN1_TX); | ||
| 129 | declare!(COMP); | ||
| 130 | declare!(CRS); | ||
| 131 | declare!(DCMI); | ||
| 132 | declare!(DFSDM1_FLT0); | ||
| 133 | declare!(DFSDM1_FLT1); | ||
| 134 | declare!(DFSDM1_FLT2); | ||
| 135 | declare!(DFSDM1_FLT3); | ||
| 136 | declare!(DMA1_Channel1); | ||
| 137 | declare!(DMA1_Channel2); | ||
| 138 | declare!(DMA1_Channel3); | ||
| 139 | declare!(DMA1_Channel4); | ||
| 140 | declare!(DMA1_Channel5); | ||
| 141 | declare!(DMA1_Channel6); | ||
| 142 | declare!(DMA1_Channel7); | ||
| 143 | declare!(DMA2D); | ||
| 144 | declare!(DMA2_Channel1); | ||
| 145 | declare!(DMA2_Channel2); | ||
| 146 | declare!(DMA2_Channel3); | ||
| 147 | declare!(DMA2_Channel4); | ||
| 148 | declare!(DMA2_Channel5); | ||
| 149 | declare!(DMA2_Channel6); | ||
| 150 | declare!(DMA2_Channel7); | ||
| 151 | declare!(DMAMUX1_OVR); | ||
| 152 | declare!(EXTI0); | ||
| 153 | declare!(EXTI1); | ||
| 154 | declare!(EXTI15_10); | ||
| 155 | declare!(EXTI2); | ||
| 156 | declare!(EXTI3); | ||
| 157 | declare!(EXTI4); | ||
| 158 | declare!(EXTI9_5); | ||
| 159 | declare!(FLASH); | ||
| 160 | declare!(FMC); | ||
| 161 | declare!(FPU); | ||
| 162 | declare!(I2C1_ER); | ||
| 163 | declare!(I2C1_EV); | ||
| 164 | declare!(I2C2_ER); | ||
| 165 | declare!(I2C2_EV); | ||
| 166 | declare!(I2C3_ER); | ||
| 167 | declare!(I2C3_EV); | ||
| 168 | declare!(I2C4_ER); | ||
| 169 | declare!(I2C4_EV); | ||
| 170 | declare!(LPTIM1); | ||
| 171 | declare!(LPTIM2); | ||
| 172 | declare!(LPUART1); | ||
| 173 | declare!(OCTOSPI1); | ||
| 174 | declare!(OCTOSPI2); | ||
| 175 | declare!(OTG_FS); | ||
| 176 | declare!(PVD_PVM); | ||
| 177 | declare!(RCC); | ||
| 178 | declare!(RNG); | ||
| 179 | declare!(RTC_Alarm); | ||
| 180 | declare!(RTC_WKUP); | ||
| 181 | declare!(SAI1); | ||
| 182 | declare!(SAI2); | ||
| 183 | declare!(SDMMC1); | ||
| 184 | declare!(SPI1); | ||
| 185 | declare!(SPI2); | ||
| 186 | declare!(SPI3); | ||
| 187 | declare!(TAMP_STAMP); | ||
| 188 | declare!(TIM1_BRK_TIM15); | ||
| 189 | declare!(TIM1_CC); | ||
| 190 | declare!(TIM1_TRG_COM_TIM17); | ||
| 191 | declare!(TIM1_UP_TIM16); | ||
| 192 | declare!(TIM2); | ||
| 193 | declare!(TIM3); | ||
| 194 | declare!(TIM4); | ||
| 195 | declare!(TIM5); | ||
| 196 | declare!(TIM6_DAC); | ||
| 197 | declare!(TIM7); | ||
| 198 | declare!(TIM8_BRK); | ||
| 199 | declare!(TIM8_CC); | ||
| 200 | declare!(TIM8_TRG_COM); | ||
| 201 | declare!(TIM8_UP); | ||
| 202 | declare!(TSC); | ||
| 203 | declare!(UART4); | ||
| 204 | declare!(UART5); | ||
| 205 | declare!(USART1); | ||
| 206 | declare!(USART2); | ||
| 207 | declare!(USART3); | ||
| 208 | declare!(WWDG); | ||
| 209 | } | ||
| 210 | mod interrupt_vector { | ||
| 211 | extern "C" { | ||
| 212 | fn ADC1(); | ||
| 213 | fn CAN1_RX0(); | ||
| 214 | fn CAN1_RX1(); | ||
| 215 | fn CAN1_SCE(); | ||
| 216 | fn CAN1_TX(); | ||
| 217 | fn COMP(); | ||
| 218 | fn CRS(); | ||
| 219 | fn DCMI(); | ||
| 220 | fn DFSDM1_FLT0(); | ||
| 221 | fn DFSDM1_FLT1(); | ||
| 222 | fn DFSDM1_FLT2(); | ||
| 223 | fn DFSDM1_FLT3(); | ||
| 224 | fn DMA1_Channel1(); | ||
| 225 | fn DMA1_Channel2(); | ||
| 226 | fn DMA1_Channel3(); | ||
| 227 | fn DMA1_Channel4(); | ||
| 228 | fn DMA1_Channel5(); | ||
| 229 | fn DMA1_Channel6(); | ||
| 230 | fn DMA1_Channel7(); | ||
| 231 | fn DMA2D(); | ||
| 232 | fn DMA2_Channel1(); | ||
| 233 | fn DMA2_Channel2(); | ||
| 234 | fn DMA2_Channel3(); | ||
| 235 | fn DMA2_Channel4(); | ||
| 236 | fn DMA2_Channel5(); | ||
| 237 | fn DMA2_Channel6(); | ||
| 238 | fn DMA2_Channel7(); | ||
| 239 | fn DMAMUX1_OVR(); | ||
| 240 | fn EXTI0(); | ||
| 241 | fn EXTI1(); | ||
| 242 | fn EXTI15_10(); | ||
| 243 | fn EXTI2(); | ||
| 244 | fn EXTI3(); | ||
| 245 | fn EXTI4(); | ||
| 246 | fn EXTI9_5(); | ||
| 247 | fn FLASH(); | ||
| 248 | fn FMC(); | ||
| 249 | fn FPU(); | ||
| 250 | fn I2C1_ER(); | ||
| 251 | fn I2C1_EV(); | ||
| 252 | fn I2C2_ER(); | ||
| 253 | fn I2C2_EV(); | ||
| 254 | fn I2C3_ER(); | ||
| 255 | fn I2C3_EV(); | ||
| 256 | fn I2C4_ER(); | ||
| 257 | fn I2C4_EV(); | ||
| 258 | fn LPTIM1(); | ||
| 259 | fn LPTIM2(); | ||
| 260 | fn LPUART1(); | ||
| 261 | fn OCTOSPI1(); | ||
| 262 | fn OCTOSPI2(); | ||
| 263 | fn OTG_FS(); | ||
| 264 | fn PVD_PVM(); | ||
| 265 | fn RCC(); | ||
| 266 | fn RNG(); | ||
| 267 | fn RTC_Alarm(); | ||
| 268 | fn RTC_WKUP(); | ||
| 269 | fn SAI1(); | ||
| 270 | fn SAI2(); | ||
| 271 | fn SDMMC1(); | ||
| 272 | fn SPI1(); | ||
| 273 | fn SPI2(); | ||
| 274 | fn SPI3(); | ||
| 275 | fn TAMP_STAMP(); | ||
| 276 | fn TIM1_BRK_TIM15(); | ||
| 277 | fn TIM1_CC(); | ||
| 278 | fn TIM1_TRG_COM_TIM17(); | ||
| 279 | fn TIM1_UP_TIM16(); | ||
| 280 | fn TIM2(); | ||
| 281 | fn TIM3(); | ||
| 282 | fn TIM4(); | ||
| 283 | fn TIM5(); | ||
| 284 | fn TIM6_DAC(); | ||
| 285 | fn TIM7(); | ||
| 286 | fn TIM8_BRK(); | ||
| 287 | fn TIM8_CC(); | ||
| 288 | fn TIM8_TRG_COM(); | ||
| 289 | fn TIM8_UP(); | ||
| 290 | fn TSC(); | ||
| 291 | fn UART4(); | ||
| 292 | fn UART5(); | ||
| 293 | fn USART1(); | ||
| 294 | fn USART2(); | ||
| 295 | fn USART3(); | ||
| 296 | fn WWDG(); | ||
| 297 | } | ||
| 298 | pub union Vector { | ||
| 299 | _handler: unsafe extern "C" fn(), | ||
| 300 | _reserved: u32, | ||
| 301 | } | ||
| 302 | #[link_section = ".vector_table.interrupts"] | ||
| 303 | #[no_mangle] | ||
| 304 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 305 | Vector { _handler: WWDG }, | ||
| 306 | Vector { _handler: PVD_PVM }, | ||
| 307 | Vector { | ||
| 308 | _handler: TAMP_STAMP, | ||
| 309 | }, | ||
| 310 | Vector { _handler: RTC_WKUP }, | ||
| 311 | Vector { _handler: FLASH }, | ||
| 312 | Vector { _handler: RCC }, | ||
| 313 | Vector { _handler: EXTI0 }, | ||
| 314 | Vector { _handler: EXTI1 }, | ||
| 315 | Vector { _handler: EXTI2 }, | ||
| 316 | Vector { _handler: EXTI3 }, | ||
| 317 | Vector { _handler: EXTI4 }, | ||
| 318 | Vector { | ||
| 319 | _handler: DMA1_Channel1, | ||
| 320 | }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel2, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel3, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel4, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel5, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel6, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel7, | ||
| 338 | }, | ||
| 339 | Vector { _handler: ADC1 }, | ||
| 340 | Vector { _handler: CAN1_TX }, | ||
| 341 | Vector { _handler: CAN1_RX0 }, | ||
| 342 | Vector { _handler: CAN1_RX1 }, | ||
| 343 | Vector { _handler: CAN1_SCE }, | ||
| 344 | Vector { _handler: EXTI9_5 }, | ||
| 345 | Vector { | ||
| 346 | _handler: TIM1_BRK_TIM15, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_UP_TIM16, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_TRG_COM_TIM17, | ||
| 353 | }, | ||
| 354 | Vector { _handler: TIM1_CC }, | ||
| 355 | Vector { _handler: TIM2 }, | ||
| 356 | Vector { _handler: TIM3 }, | ||
| 357 | Vector { _handler: TIM4 }, | ||
| 358 | Vector { _handler: I2C1_EV }, | ||
| 359 | Vector { _handler: I2C1_ER }, | ||
| 360 | Vector { _handler: I2C2_EV }, | ||
| 361 | Vector { _handler: I2C2_ER }, | ||
| 362 | Vector { _handler: SPI1 }, | ||
| 363 | Vector { _handler: SPI2 }, | ||
| 364 | Vector { _handler: USART1 }, | ||
| 365 | Vector { _handler: USART2 }, | ||
| 366 | Vector { _handler: USART3 }, | ||
| 367 | Vector { | ||
| 368 | _handler: EXTI15_10, | ||
| 369 | }, | ||
| 370 | Vector { | ||
| 371 | _handler: RTC_Alarm, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: DFSDM1_FLT3, | ||
| 375 | }, | ||
| 376 | Vector { _handler: TIM8_BRK }, | ||
| 377 | Vector { _handler: TIM8_UP }, | ||
| 378 | Vector { | ||
| 379 | _handler: TIM8_TRG_COM, | ||
| 380 | }, | ||
| 381 | Vector { _handler: TIM8_CC }, | ||
| 382 | Vector { _reserved: 0 }, | ||
| 383 | Vector { _handler: FMC }, | ||
| 384 | Vector { _handler: SDMMC1 }, | ||
| 385 | Vector { _handler: TIM5 }, | ||
| 386 | Vector { _handler: SPI3 }, | ||
| 387 | Vector { _handler: UART4 }, | ||
| 388 | Vector { _handler: UART5 }, | ||
| 389 | Vector { _handler: TIM6_DAC }, | ||
| 390 | Vector { _handler: TIM7 }, | ||
| 391 | Vector { | ||
| 392 | _handler: DMA2_Channel1, | ||
| 393 | }, | ||
| 394 | Vector { | ||
| 395 | _handler: DMA2_Channel2, | ||
| 396 | }, | ||
| 397 | Vector { | ||
| 398 | _handler: DMA2_Channel3, | ||
| 399 | }, | ||
| 400 | Vector { | ||
| 401 | _handler: DMA2_Channel4, | ||
| 402 | }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel5, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DFSDM1_FLT0, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DFSDM1_FLT1, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DFSDM1_FLT2, | ||
| 414 | }, | ||
| 415 | Vector { _handler: COMP }, | ||
| 416 | Vector { _handler: LPTIM1 }, | ||
| 417 | Vector { _handler: LPTIM2 }, | ||
| 418 | Vector { _handler: OTG_FS }, | ||
| 419 | Vector { | ||
| 420 | _handler: DMA2_Channel6, | ||
| 421 | }, | ||
| 422 | Vector { | ||
| 423 | _handler: DMA2_Channel7, | ||
| 424 | }, | ||
| 425 | Vector { _handler: LPUART1 }, | ||
| 426 | Vector { _handler: OCTOSPI1 }, | ||
| 427 | Vector { _handler: I2C3_EV }, | ||
| 428 | Vector { _handler: I2C3_ER }, | ||
| 429 | Vector { _handler: SAI1 }, | ||
| 430 | Vector { _handler: SAI2 }, | ||
| 431 | Vector { _handler: OCTOSPI2 }, | ||
| 432 | Vector { _handler: TSC }, | ||
| 433 | Vector { _reserved: 0 }, | ||
| 434 | Vector { _reserved: 0 }, | ||
| 435 | Vector { _handler: RNG }, | ||
| 436 | Vector { _handler: FPU }, | ||
| 437 | Vector { _handler: CRS }, | ||
| 438 | Vector { _handler: I2C4_ER }, | ||
| 439 | Vector { _handler: I2C4_EV }, | ||
| 440 | Vector { _handler: DCMI }, | ||
| 441 | Vector { _reserved: 0 }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _handler: DMA2D }, | ||
| 446 | Vector { _reserved: 0 }, | ||
| 447 | Vector { _reserved: 0 }, | ||
| 448 | Vector { _reserved: 0 }, | ||
| 449 | Vector { | ||
| 450 | _handler: DMAMUX1_OVR, | ||
| 451 | }, | ||
| 452 | ]; | ||
| 453 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 454 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 455 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 456 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4r5zi.rs b/embassy-stm32/src/chip/stm32l4r5zi.rs index d8b9445b9..9c98d1f88 100644 --- a/embassy-stm32/src/chip/stm32l4r5zi.rs +++ b/embassy-stm32/src/chip/stm32l4r5zi.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, PA4, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3, |
| 5 | PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, | 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, |
| 6 | PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, | 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, |
| 7 | PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, |
| @@ -15,8 +15,442 @@ peripherals!( | |||
| 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, | 15 | TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, |
| 16 | USART3, USB_OTG_FS, WWDG | 16 | USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | CRS = 82, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | EXTI0 = 6, | ||
| 60 | EXTI1 = 7, | ||
| 61 | EXTI15_10 = 40, | ||
| 62 | EXTI2 = 8, | ||
| 63 | EXTI3 = 9, | ||
| 64 | EXTI4 = 10, | ||
| 65 | EXTI9_5 = 23, | ||
| 66 | FLASH = 4, | ||
| 67 | FMC = 48, | ||
| 68 | FPU = 81, | ||
| 69 | I2C1_ER = 32, | ||
| 70 | I2C1_EV = 31, | ||
| 71 | I2C2_ER = 34, | ||
| 72 | I2C2_EV = 33, | ||
| 73 | I2C3_ER = 73, | ||
| 74 | I2C3_EV = 72, | ||
| 75 | I2C4_ER = 83, | ||
| 76 | I2C4_EV = 84, | ||
| 77 | LPTIM1 = 65, | ||
| 78 | LPTIM2 = 66, | ||
| 79 | LPUART1 = 70, | ||
| 80 | OCTOSPI1 = 71, | ||
| 81 | OCTOSPI2 = 76, | ||
| 82 | OTG_FS = 67, | ||
| 83 | PVD_PVM = 1, | ||
| 84 | RCC = 5, | ||
| 85 | RNG = 80, | ||
| 86 | RTC_Alarm = 41, | ||
| 87 | RTC_WKUP = 3, | ||
| 88 | SAI1 = 74, | ||
| 89 | SAI2 = 75, | ||
| 90 | SDMMC1 = 49, | ||
| 91 | SPI1 = 35, | ||
| 92 | SPI2 = 36, | ||
| 93 | SPI3 = 51, | ||
| 94 | TAMP_STAMP = 2, | ||
| 95 | TIM1_BRK_TIM15 = 24, | ||
| 96 | TIM1_CC = 27, | ||
| 97 | TIM1_TRG_COM_TIM17 = 26, | ||
| 98 | TIM1_UP_TIM16 = 25, | ||
| 99 | TIM2 = 28, | ||
| 100 | TIM3 = 29, | ||
| 101 | TIM4 = 30, | ||
| 102 | TIM5 = 50, | ||
| 103 | TIM6_DAC = 54, | ||
| 104 | TIM7 = 55, | ||
| 105 | TIM8_BRK = 43, | ||
| 106 | TIM8_CC = 46, | ||
| 107 | TIM8_TRG_COM = 45, | ||
| 108 | TIM8_UP = 44, | ||
| 109 | TSC = 77, | ||
| 110 | UART4 = 52, | ||
| 111 | UART5 = 53, | ||
| 112 | USART1 = 37, | ||
| 113 | USART2 = 38, | ||
| 114 | USART3 = 39, | ||
| 115 | WWDG = 0, | ||
| 116 | } | ||
| 117 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 118 | #[inline(always)] | ||
| 119 | fn number(self) -> u16 { | ||
| 120 | self as u16 | ||
| 121 | } | ||
| 122 | } | ||
| 123 | |||
| 124 | declare!(ADC1); | ||
| 125 | declare!(CAN1_RX0); | ||
| 126 | declare!(CAN1_RX1); | ||
| 127 | declare!(CAN1_SCE); | ||
| 128 | declare!(CAN1_TX); | ||
| 129 | declare!(COMP); | ||
| 130 | declare!(CRS); | ||
| 131 | declare!(DCMI); | ||
| 132 | declare!(DFSDM1_FLT0); | ||
| 133 | declare!(DFSDM1_FLT1); | ||
| 134 | declare!(DFSDM1_FLT2); | ||
| 135 | declare!(DFSDM1_FLT3); | ||
| 136 | declare!(DMA1_Channel1); | ||
| 137 | declare!(DMA1_Channel2); | ||
| 138 | declare!(DMA1_Channel3); | ||
| 139 | declare!(DMA1_Channel4); | ||
| 140 | declare!(DMA1_Channel5); | ||
| 141 | declare!(DMA1_Channel6); | ||
| 142 | declare!(DMA1_Channel7); | ||
| 143 | declare!(DMA2D); | ||
| 144 | declare!(DMA2_Channel1); | ||
| 145 | declare!(DMA2_Channel2); | ||
| 146 | declare!(DMA2_Channel3); | ||
| 147 | declare!(DMA2_Channel4); | ||
| 148 | declare!(DMA2_Channel5); | ||
| 149 | declare!(DMA2_Channel6); | ||
| 150 | declare!(DMA2_Channel7); | ||
| 151 | declare!(DMAMUX1_OVR); | ||
| 152 | declare!(EXTI0); | ||
| 153 | declare!(EXTI1); | ||
| 154 | declare!(EXTI15_10); | ||
| 155 | declare!(EXTI2); | ||
| 156 | declare!(EXTI3); | ||
| 157 | declare!(EXTI4); | ||
| 158 | declare!(EXTI9_5); | ||
| 159 | declare!(FLASH); | ||
| 160 | declare!(FMC); | ||
| 161 | declare!(FPU); | ||
| 162 | declare!(I2C1_ER); | ||
| 163 | declare!(I2C1_EV); | ||
| 164 | declare!(I2C2_ER); | ||
| 165 | declare!(I2C2_EV); | ||
| 166 | declare!(I2C3_ER); | ||
| 167 | declare!(I2C3_EV); | ||
| 168 | declare!(I2C4_ER); | ||
| 169 | declare!(I2C4_EV); | ||
| 170 | declare!(LPTIM1); | ||
| 171 | declare!(LPTIM2); | ||
| 172 | declare!(LPUART1); | ||
| 173 | declare!(OCTOSPI1); | ||
| 174 | declare!(OCTOSPI2); | ||
| 175 | declare!(OTG_FS); | ||
| 176 | declare!(PVD_PVM); | ||
| 177 | declare!(RCC); | ||
| 178 | declare!(RNG); | ||
| 179 | declare!(RTC_Alarm); | ||
| 180 | declare!(RTC_WKUP); | ||
| 181 | declare!(SAI1); | ||
| 182 | declare!(SAI2); | ||
| 183 | declare!(SDMMC1); | ||
| 184 | declare!(SPI1); | ||
| 185 | declare!(SPI2); | ||
| 186 | declare!(SPI3); | ||
| 187 | declare!(TAMP_STAMP); | ||
| 188 | declare!(TIM1_BRK_TIM15); | ||
| 189 | declare!(TIM1_CC); | ||
| 190 | declare!(TIM1_TRG_COM_TIM17); | ||
| 191 | declare!(TIM1_UP_TIM16); | ||
| 192 | declare!(TIM2); | ||
| 193 | declare!(TIM3); | ||
| 194 | declare!(TIM4); | ||
| 195 | declare!(TIM5); | ||
| 196 | declare!(TIM6_DAC); | ||
| 197 | declare!(TIM7); | ||
| 198 | declare!(TIM8_BRK); | ||
| 199 | declare!(TIM8_CC); | ||
| 200 | declare!(TIM8_TRG_COM); | ||
| 201 | declare!(TIM8_UP); | ||
| 202 | declare!(TSC); | ||
| 203 | declare!(UART4); | ||
| 204 | declare!(UART5); | ||
| 205 | declare!(USART1); | ||
| 206 | declare!(USART2); | ||
| 207 | declare!(USART3); | ||
| 208 | declare!(WWDG); | ||
| 209 | } | ||
| 210 | mod interrupt_vector { | ||
| 211 | extern "C" { | ||
| 212 | fn ADC1(); | ||
| 213 | fn CAN1_RX0(); | ||
| 214 | fn CAN1_RX1(); | ||
| 215 | fn CAN1_SCE(); | ||
| 216 | fn CAN1_TX(); | ||
| 217 | fn COMP(); | ||
| 218 | fn CRS(); | ||
| 219 | fn DCMI(); | ||
| 220 | fn DFSDM1_FLT0(); | ||
| 221 | fn DFSDM1_FLT1(); | ||
| 222 | fn DFSDM1_FLT2(); | ||
| 223 | fn DFSDM1_FLT3(); | ||
| 224 | fn DMA1_Channel1(); | ||
| 225 | fn DMA1_Channel2(); | ||
| 226 | fn DMA1_Channel3(); | ||
| 227 | fn DMA1_Channel4(); | ||
| 228 | fn DMA1_Channel5(); | ||
| 229 | fn DMA1_Channel6(); | ||
| 230 | fn DMA1_Channel7(); | ||
| 231 | fn DMA2D(); | ||
| 232 | fn DMA2_Channel1(); | ||
| 233 | fn DMA2_Channel2(); | ||
| 234 | fn DMA2_Channel3(); | ||
| 235 | fn DMA2_Channel4(); | ||
| 236 | fn DMA2_Channel5(); | ||
| 237 | fn DMA2_Channel6(); | ||
| 238 | fn DMA2_Channel7(); | ||
| 239 | fn DMAMUX1_OVR(); | ||
| 240 | fn EXTI0(); | ||
| 241 | fn EXTI1(); | ||
| 242 | fn EXTI15_10(); | ||
| 243 | fn EXTI2(); | ||
| 244 | fn EXTI3(); | ||
| 245 | fn EXTI4(); | ||
| 246 | fn EXTI9_5(); | ||
| 247 | fn FLASH(); | ||
| 248 | fn FMC(); | ||
| 249 | fn FPU(); | ||
| 250 | fn I2C1_ER(); | ||
| 251 | fn I2C1_EV(); | ||
| 252 | fn I2C2_ER(); | ||
| 253 | fn I2C2_EV(); | ||
| 254 | fn I2C3_ER(); | ||
| 255 | fn I2C3_EV(); | ||
| 256 | fn I2C4_ER(); | ||
| 257 | fn I2C4_EV(); | ||
| 258 | fn LPTIM1(); | ||
| 259 | fn LPTIM2(); | ||
| 260 | fn LPUART1(); | ||
| 261 | fn OCTOSPI1(); | ||
| 262 | fn OCTOSPI2(); | ||
| 263 | fn OTG_FS(); | ||
| 264 | fn PVD_PVM(); | ||
| 265 | fn RCC(); | ||
| 266 | fn RNG(); | ||
| 267 | fn RTC_Alarm(); | ||
| 268 | fn RTC_WKUP(); | ||
| 269 | fn SAI1(); | ||
| 270 | fn SAI2(); | ||
| 271 | fn SDMMC1(); | ||
| 272 | fn SPI1(); | ||
| 273 | fn SPI2(); | ||
| 274 | fn SPI3(); | ||
| 275 | fn TAMP_STAMP(); | ||
| 276 | fn TIM1_BRK_TIM15(); | ||
| 277 | fn TIM1_CC(); | ||
| 278 | fn TIM1_TRG_COM_TIM17(); | ||
| 279 | fn TIM1_UP_TIM16(); | ||
| 280 | fn TIM2(); | ||
| 281 | fn TIM3(); | ||
| 282 | fn TIM4(); | ||
| 283 | fn TIM5(); | ||
| 284 | fn TIM6_DAC(); | ||
| 285 | fn TIM7(); | ||
| 286 | fn TIM8_BRK(); | ||
| 287 | fn TIM8_CC(); | ||
| 288 | fn TIM8_TRG_COM(); | ||
| 289 | fn TIM8_UP(); | ||
| 290 | fn TSC(); | ||
| 291 | fn UART4(); | ||
| 292 | fn UART5(); | ||
| 293 | fn USART1(); | ||
| 294 | fn USART2(); | ||
| 295 | fn USART3(); | ||
| 296 | fn WWDG(); | ||
| 297 | } | ||
| 298 | pub union Vector { | ||
| 299 | _handler: unsafe extern "C" fn(), | ||
| 300 | _reserved: u32, | ||
| 301 | } | ||
| 302 | #[link_section = ".vector_table.interrupts"] | ||
| 303 | #[no_mangle] | ||
| 304 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 305 | Vector { _handler: WWDG }, | ||
| 306 | Vector { _handler: PVD_PVM }, | ||
| 307 | Vector { | ||
| 308 | _handler: TAMP_STAMP, | ||
| 309 | }, | ||
| 310 | Vector { _handler: RTC_WKUP }, | ||
| 311 | Vector { _handler: FLASH }, | ||
| 312 | Vector { _handler: RCC }, | ||
| 313 | Vector { _handler: EXTI0 }, | ||
| 314 | Vector { _handler: EXTI1 }, | ||
| 315 | Vector { _handler: EXTI2 }, | ||
| 316 | Vector { _handler: EXTI3 }, | ||
| 317 | Vector { _handler: EXTI4 }, | ||
| 318 | Vector { | ||
| 319 | _handler: DMA1_Channel1, | ||
| 320 | }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel2, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel3, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel4, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel5, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel6, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel7, | ||
| 338 | }, | ||
| 339 | Vector { _handler: ADC1 }, | ||
| 340 | Vector { _handler: CAN1_TX }, | ||
| 341 | Vector { _handler: CAN1_RX0 }, | ||
| 342 | Vector { _handler: CAN1_RX1 }, | ||
| 343 | Vector { _handler: CAN1_SCE }, | ||
| 344 | Vector { _handler: EXTI9_5 }, | ||
| 345 | Vector { | ||
| 346 | _handler: TIM1_BRK_TIM15, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_UP_TIM16, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_TRG_COM_TIM17, | ||
| 353 | }, | ||
| 354 | Vector { _handler: TIM1_CC }, | ||
| 355 | Vector { _handler: TIM2 }, | ||
| 356 | Vector { _handler: TIM3 }, | ||
| 357 | Vector { _handler: TIM4 }, | ||
| 358 | Vector { _handler: I2C1_EV }, | ||
| 359 | Vector { _handler: I2C1_ER }, | ||
| 360 | Vector { _handler: I2C2_EV }, | ||
| 361 | Vector { _handler: I2C2_ER }, | ||
| 362 | Vector { _handler: SPI1 }, | ||
| 363 | Vector { _handler: SPI2 }, | ||
| 364 | Vector { _handler: USART1 }, | ||
| 365 | Vector { _handler: USART2 }, | ||
| 366 | Vector { _handler: USART3 }, | ||
| 367 | Vector { | ||
| 368 | _handler: EXTI15_10, | ||
| 369 | }, | ||
| 370 | Vector { | ||
| 371 | _handler: RTC_Alarm, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: DFSDM1_FLT3, | ||
| 375 | }, | ||
| 376 | Vector { _handler: TIM8_BRK }, | ||
| 377 | Vector { _handler: TIM8_UP }, | ||
| 378 | Vector { | ||
| 379 | _handler: TIM8_TRG_COM, | ||
| 380 | }, | ||
| 381 | Vector { _handler: TIM8_CC }, | ||
| 382 | Vector { _reserved: 0 }, | ||
| 383 | Vector { _handler: FMC }, | ||
| 384 | Vector { _handler: SDMMC1 }, | ||
| 385 | Vector { _handler: TIM5 }, | ||
| 386 | Vector { _handler: SPI3 }, | ||
| 387 | Vector { _handler: UART4 }, | ||
| 388 | Vector { _handler: UART5 }, | ||
| 389 | Vector { _handler: TIM6_DAC }, | ||
| 390 | Vector { _handler: TIM7 }, | ||
| 391 | Vector { | ||
| 392 | _handler: DMA2_Channel1, | ||
| 393 | }, | ||
| 394 | Vector { | ||
| 395 | _handler: DMA2_Channel2, | ||
| 396 | }, | ||
| 397 | Vector { | ||
| 398 | _handler: DMA2_Channel3, | ||
| 399 | }, | ||
| 400 | Vector { | ||
| 401 | _handler: DMA2_Channel4, | ||
| 402 | }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel5, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DFSDM1_FLT0, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DFSDM1_FLT1, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DFSDM1_FLT2, | ||
| 414 | }, | ||
| 415 | Vector { _handler: COMP }, | ||
| 416 | Vector { _handler: LPTIM1 }, | ||
| 417 | Vector { _handler: LPTIM2 }, | ||
| 418 | Vector { _handler: OTG_FS }, | ||
| 419 | Vector { | ||
| 420 | _handler: DMA2_Channel6, | ||
| 421 | }, | ||
| 422 | Vector { | ||
| 423 | _handler: DMA2_Channel7, | ||
| 424 | }, | ||
| 425 | Vector { _handler: LPUART1 }, | ||
| 426 | Vector { _handler: OCTOSPI1 }, | ||
| 427 | Vector { _handler: I2C3_EV }, | ||
| 428 | Vector { _handler: I2C3_ER }, | ||
| 429 | Vector { _handler: SAI1 }, | ||
| 430 | Vector { _handler: SAI2 }, | ||
| 431 | Vector { _handler: OCTOSPI2 }, | ||
| 432 | Vector { _handler: TSC }, | ||
| 433 | Vector { _reserved: 0 }, | ||
| 434 | Vector { _reserved: 0 }, | ||
| 435 | Vector { _handler: RNG }, | ||
| 436 | Vector { _handler: FPU }, | ||
| 437 | Vector { _handler: CRS }, | ||
| 438 | Vector { _handler: I2C4_ER }, | ||
| 439 | Vector { _handler: I2C4_EV }, | ||
| 440 | Vector { _handler: DCMI }, | ||
| 441 | Vector { _reserved: 0 }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _handler: DMA2D }, | ||
| 446 | Vector { _reserved: 0 }, | ||
| 447 | Vector { _reserved: 0 }, | ||
| 448 | Vector { _reserved: 0 }, | ||
| 449 | Vector { | ||
| 450 | _handler: DMAMUX1_OVR, | ||
| 451 | }, | ||
| 452 | ]; | ||
| 453 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 454 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 455 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 456 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4r7ai.rs b/embassy-stm32/src/chip/stm32l4r7ai.rs index d0f3be660..d3d635c43 100644 --- a/embassy-stm32/src/chip/stm32l4r7ai.rs +++ b/embassy-stm32/src/chip/stm32l4r7ai.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -15,8 +15,451 @@ peripherals!( | |||
| 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, | 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, |
| 16 | USART2, USART3, USB_OTG_FS, WWDG | 16 | USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | CRS = 82, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | EXTI0 = 6, | ||
| 60 | EXTI1 = 7, | ||
| 61 | EXTI15_10 = 40, | ||
| 62 | EXTI2 = 8, | ||
| 63 | EXTI3 = 9, | ||
| 64 | EXTI4 = 10, | ||
| 65 | EXTI9_5 = 23, | ||
| 66 | FLASH = 4, | ||
| 67 | FMC = 48, | ||
| 68 | FPU = 81, | ||
| 69 | GFXMMU = 93, | ||
| 70 | I2C1_ER = 32, | ||
| 71 | I2C1_EV = 31, | ||
| 72 | I2C2_ER = 34, | ||
| 73 | I2C2_EV = 33, | ||
| 74 | I2C3_ER = 73, | ||
| 75 | I2C3_EV = 72, | ||
| 76 | I2C4_ER = 83, | ||
| 77 | I2C4_EV = 84, | ||
| 78 | LPTIM1 = 65, | ||
| 79 | LPTIM2 = 66, | ||
| 80 | LPUART1 = 70, | ||
| 81 | LTDC = 91, | ||
| 82 | LTDC_ER = 92, | ||
| 83 | OCTOSPI1 = 71, | ||
| 84 | OCTOSPI2 = 76, | ||
| 85 | OTG_FS = 67, | ||
| 86 | PVD_PVM = 1, | ||
| 87 | RCC = 5, | ||
| 88 | RNG = 80, | ||
| 89 | RTC_Alarm = 41, | ||
| 90 | RTC_WKUP = 3, | ||
| 91 | SAI1 = 74, | ||
| 92 | SAI2 = 75, | ||
| 93 | SDMMC1 = 49, | ||
| 94 | SPI1 = 35, | ||
| 95 | SPI2 = 36, | ||
| 96 | SPI3 = 51, | ||
| 97 | TAMP_STAMP = 2, | ||
| 98 | TIM1_BRK_TIM15 = 24, | ||
| 99 | TIM1_CC = 27, | ||
| 100 | TIM1_TRG_COM_TIM17 = 26, | ||
| 101 | TIM1_UP_TIM16 = 25, | ||
| 102 | TIM2 = 28, | ||
| 103 | TIM3 = 29, | ||
| 104 | TIM4 = 30, | ||
| 105 | TIM5 = 50, | ||
| 106 | TIM6_DAC = 54, | ||
| 107 | TIM7 = 55, | ||
| 108 | TIM8_BRK = 43, | ||
| 109 | TIM8_CC = 46, | ||
| 110 | TIM8_TRG_COM = 45, | ||
| 111 | TIM8_UP = 44, | ||
| 112 | TSC = 77, | ||
| 113 | UART4 = 52, | ||
| 114 | UART5 = 53, | ||
| 115 | USART1 = 37, | ||
| 116 | USART2 = 38, | ||
| 117 | USART3 = 39, | ||
| 118 | WWDG = 0, | ||
| 119 | } | ||
| 120 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 121 | #[inline(always)] | ||
| 122 | fn number(self) -> u16 { | ||
| 123 | self as u16 | ||
| 124 | } | ||
| 125 | } | ||
| 126 | |||
| 127 | declare!(ADC1); | ||
| 128 | declare!(CAN1_RX0); | ||
| 129 | declare!(CAN1_RX1); | ||
| 130 | declare!(CAN1_SCE); | ||
| 131 | declare!(CAN1_TX); | ||
| 132 | declare!(COMP); | ||
| 133 | declare!(CRS); | ||
| 134 | declare!(DCMI); | ||
| 135 | declare!(DFSDM1_FLT0); | ||
| 136 | declare!(DFSDM1_FLT1); | ||
| 137 | declare!(DFSDM1_FLT2); | ||
| 138 | declare!(DFSDM1_FLT3); | ||
| 139 | declare!(DMA1_Channel1); | ||
| 140 | declare!(DMA1_Channel2); | ||
| 141 | declare!(DMA1_Channel3); | ||
| 142 | declare!(DMA1_Channel4); | ||
| 143 | declare!(DMA1_Channel5); | ||
| 144 | declare!(DMA1_Channel6); | ||
| 145 | declare!(DMA1_Channel7); | ||
| 146 | declare!(DMA2D); | ||
| 147 | declare!(DMA2_Channel1); | ||
| 148 | declare!(DMA2_Channel2); | ||
| 149 | declare!(DMA2_Channel3); | ||
| 150 | declare!(DMA2_Channel4); | ||
| 151 | declare!(DMA2_Channel5); | ||
| 152 | declare!(DMA2_Channel6); | ||
| 153 | declare!(DMA2_Channel7); | ||
| 154 | declare!(DMAMUX1_OVR); | ||
| 155 | declare!(EXTI0); | ||
| 156 | declare!(EXTI1); | ||
| 157 | declare!(EXTI15_10); | ||
| 158 | declare!(EXTI2); | ||
| 159 | declare!(EXTI3); | ||
| 160 | declare!(EXTI4); | ||
| 161 | declare!(EXTI9_5); | ||
| 162 | declare!(FLASH); | ||
| 163 | declare!(FMC); | ||
| 164 | declare!(FPU); | ||
| 165 | declare!(GFXMMU); | ||
| 166 | declare!(I2C1_ER); | ||
| 167 | declare!(I2C1_EV); | ||
| 168 | declare!(I2C2_ER); | ||
| 169 | declare!(I2C2_EV); | ||
| 170 | declare!(I2C3_ER); | ||
| 171 | declare!(I2C3_EV); | ||
| 172 | declare!(I2C4_ER); | ||
| 173 | declare!(I2C4_EV); | ||
| 174 | declare!(LPTIM1); | ||
| 175 | declare!(LPTIM2); | ||
| 176 | declare!(LPUART1); | ||
| 177 | declare!(LTDC); | ||
| 178 | declare!(LTDC_ER); | ||
| 179 | declare!(OCTOSPI1); | ||
| 180 | declare!(OCTOSPI2); | ||
| 181 | declare!(OTG_FS); | ||
| 182 | declare!(PVD_PVM); | ||
| 183 | declare!(RCC); | ||
| 184 | declare!(RNG); | ||
| 185 | declare!(RTC_Alarm); | ||
| 186 | declare!(RTC_WKUP); | ||
| 187 | declare!(SAI1); | ||
| 188 | declare!(SAI2); | ||
| 189 | declare!(SDMMC1); | ||
| 190 | declare!(SPI1); | ||
| 191 | declare!(SPI2); | ||
| 192 | declare!(SPI3); | ||
| 193 | declare!(TAMP_STAMP); | ||
| 194 | declare!(TIM1_BRK_TIM15); | ||
| 195 | declare!(TIM1_CC); | ||
| 196 | declare!(TIM1_TRG_COM_TIM17); | ||
| 197 | declare!(TIM1_UP_TIM16); | ||
| 198 | declare!(TIM2); | ||
| 199 | declare!(TIM3); | ||
| 200 | declare!(TIM4); | ||
| 201 | declare!(TIM5); | ||
| 202 | declare!(TIM6_DAC); | ||
| 203 | declare!(TIM7); | ||
| 204 | declare!(TIM8_BRK); | ||
| 205 | declare!(TIM8_CC); | ||
| 206 | declare!(TIM8_TRG_COM); | ||
| 207 | declare!(TIM8_UP); | ||
| 208 | declare!(TSC); | ||
| 209 | declare!(UART4); | ||
| 210 | declare!(UART5); | ||
| 211 | declare!(USART1); | ||
| 212 | declare!(USART2); | ||
| 213 | declare!(USART3); | ||
| 214 | declare!(WWDG); | ||
| 215 | } | ||
| 216 | mod interrupt_vector { | ||
| 217 | extern "C" { | ||
| 218 | fn ADC1(); | ||
| 219 | fn CAN1_RX0(); | ||
| 220 | fn CAN1_RX1(); | ||
| 221 | fn CAN1_SCE(); | ||
| 222 | fn CAN1_TX(); | ||
| 223 | fn COMP(); | ||
| 224 | fn CRS(); | ||
| 225 | fn DCMI(); | ||
| 226 | fn DFSDM1_FLT0(); | ||
| 227 | fn DFSDM1_FLT1(); | ||
| 228 | fn DFSDM1_FLT2(); | ||
| 229 | fn DFSDM1_FLT3(); | ||
| 230 | fn DMA1_Channel1(); | ||
| 231 | fn DMA1_Channel2(); | ||
| 232 | fn DMA1_Channel3(); | ||
| 233 | fn DMA1_Channel4(); | ||
| 234 | fn DMA1_Channel5(); | ||
| 235 | fn DMA1_Channel6(); | ||
| 236 | fn DMA1_Channel7(); | ||
| 237 | fn DMA2D(); | ||
| 238 | fn DMA2_Channel1(); | ||
| 239 | fn DMA2_Channel2(); | ||
| 240 | fn DMA2_Channel3(); | ||
| 241 | fn DMA2_Channel4(); | ||
| 242 | fn DMA2_Channel5(); | ||
| 243 | fn DMA2_Channel6(); | ||
| 244 | fn DMA2_Channel7(); | ||
| 245 | fn DMAMUX1_OVR(); | ||
| 246 | fn EXTI0(); | ||
| 247 | fn EXTI1(); | ||
| 248 | fn EXTI15_10(); | ||
| 249 | fn EXTI2(); | ||
| 250 | fn EXTI3(); | ||
| 251 | fn EXTI4(); | ||
| 252 | fn EXTI9_5(); | ||
| 253 | fn FLASH(); | ||
| 254 | fn FMC(); | ||
| 255 | fn FPU(); | ||
| 256 | fn GFXMMU(); | ||
| 257 | fn I2C1_ER(); | ||
| 258 | fn I2C1_EV(); | ||
| 259 | fn I2C2_ER(); | ||
| 260 | fn I2C2_EV(); | ||
| 261 | fn I2C3_ER(); | ||
| 262 | fn I2C3_EV(); | ||
| 263 | fn I2C4_ER(); | ||
| 264 | fn I2C4_EV(); | ||
| 265 | fn LPTIM1(); | ||
| 266 | fn LPTIM2(); | ||
| 267 | fn LPUART1(); | ||
| 268 | fn LTDC(); | ||
| 269 | fn LTDC_ER(); | ||
| 270 | fn OCTOSPI1(); | ||
| 271 | fn OCTOSPI2(); | ||
| 272 | fn OTG_FS(); | ||
| 273 | fn PVD_PVM(); | ||
| 274 | fn RCC(); | ||
| 275 | fn RNG(); | ||
| 276 | fn RTC_Alarm(); | ||
| 277 | fn RTC_WKUP(); | ||
| 278 | fn SAI1(); | ||
| 279 | fn SAI2(); | ||
| 280 | fn SDMMC1(); | ||
| 281 | fn SPI1(); | ||
| 282 | fn SPI2(); | ||
| 283 | fn SPI3(); | ||
| 284 | fn TAMP_STAMP(); | ||
| 285 | fn TIM1_BRK_TIM15(); | ||
| 286 | fn TIM1_CC(); | ||
| 287 | fn TIM1_TRG_COM_TIM17(); | ||
| 288 | fn TIM1_UP_TIM16(); | ||
| 289 | fn TIM2(); | ||
| 290 | fn TIM3(); | ||
| 291 | fn TIM4(); | ||
| 292 | fn TIM5(); | ||
| 293 | fn TIM6_DAC(); | ||
| 294 | fn TIM7(); | ||
| 295 | fn TIM8_BRK(); | ||
| 296 | fn TIM8_CC(); | ||
| 297 | fn TIM8_TRG_COM(); | ||
| 298 | fn TIM8_UP(); | ||
| 299 | fn TSC(); | ||
| 300 | fn UART4(); | ||
| 301 | fn UART5(); | ||
| 302 | fn USART1(); | ||
| 303 | fn USART2(); | ||
| 304 | fn USART3(); | ||
| 305 | fn WWDG(); | ||
| 306 | } | ||
| 307 | pub union Vector { | ||
| 308 | _handler: unsafe extern "C" fn(), | ||
| 309 | _reserved: u32, | ||
| 310 | } | ||
| 311 | #[link_section = ".vector_table.interrupts"] | ||
| 312 | #[no_mangle] | ||
| 313 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 314 | Vector { _handler: WWDG }, | ||
| 315 | Vector { _handler: PVD_PVM }, | ||
| 316 | Vector { | ||
| 317 | _handler: TAMP_STAMP, | ||
| 318 | }, | ||
| 319 | Vector { _handler: RTC_WKUP }, | ||
| 320 | Vector { _handler: FLASH }, | ||
| 321 | Vector { _handler: RCC }, | ||
| 322 | Vector { _handler: EXTI0 }, | ||
| 323 | Vector { _handler: EXTI1 }, | ||
| 324 | Vector { _handler: EXTI2 }, | ||
| 325 | Vector { _handler: EXTI3 }, | ||
| 326 | Vector { _handler: EXTI4 }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel1, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel2, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel3, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel4, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel5, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel6, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel7, | ||
| 347 | }, | ||
| 348 | Vector { _handler: ADC1 }, | ||
| 349 | Vector { _handler: CAN1_TX }, | ||
| 350 | Vector { _handler: CAN1_RX0 }, | ||
| 351 | Vector { _handler: CAN1_RX1 }, | ||
| 352 | Vector { _handler: CAN1_SCE }, | ||
| 353 | Vector { _handler: EXTI9_5 }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_BRK_TIM15, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: TIM1_UP_TIM16, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_TRG_COM_TIM17, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM1_CC }, | ||
| 364 | Vector { _handler: TIM2 }, | ||
| 365 | Vector { _handler: TIM3 }, | ||
| 366 | Vector { _handler: TIM4 }, | ||
| 367 | Vector { _handler: I2C1_EV }, | ||
| 368 | Vector { _handler: I2C1_ER }, | ||
| 369 | Vector { _handler: I2C2_EV }, | ||
| 370 | Vector { _handler: I2C2_ER }, | ||
| 371 | Vector { _handler: SPI1 }, | ||
| 372 | Vector { _handler: SPI2 }, | ||
| 373 | Vector { _handler: USART1 }, | ||
| 374 | Vector { _handler: USART2 }, | ||
| 375 | Vector { _handler: USART3 }, | ||
| 376 | Vector { | ||
| 377 | _handler: EXTI15_10, | ||
| 378 | }, | ||
| 379 | Vector { | ||
| 380 | _handler: RTC_Alarm, | ||
| 381 | }, | ||
| 382 | Vector { | ||
| 383 | _handler: DFSDM1_FLT3, | ||
| 384 | }, | ||
| 385 | Vector { _handler: TIM8_BRK }, | ||
| 386 | Vector { _handler: TIM8_UP }, | ||
| 387 | Vector { | ||
| 388 | _handler: TIM8_TRG_COM, | ||
| 389 | }, | ||
| 390 | Vector { _handler: TIM8_CC }, | ||
| 391 | Vector { _reserved: 0 }, | ||
| 392 | Vector { _handler: FMC }, | ||
| 393 | Vector { _handler: SDMMC1 }, | ||
| 394 | Vector { _handler: TIM5 }, | ||
| 395 | Vector { _handler: SPI3 }, | ||
| 396 | Vector { _handler: UART4 }, | ||
| 397 | Vector { _handler: UART5 }, | ||
| 398 | Vector { _handler: TIM6_DAC }, | ||
| 399 | Vector { _handler: TIM7 }, | ||
| 400 | Vector { | ||
| 401 | _handler: DMA2_Channel1, | ||
| 402 | }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel2, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel3, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel4, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel5, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DFSDM1_FLT0, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DFSDM1_FLT1, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT2, | ||
| 423 | }, | ||
| 424 | Vector { _handler: COMP }, | ||
| 425 | Vector { _handler: LPTIM1 }, | ||
| 426 | Vector { _handler: LPTIM2 }, | ||
| 427 | Vector { _handler: OTG_FS }, | ||
| 428 | Vector { | ||
| 429 | _handler: DMA2_Channel6, | ||
| 430 | }, | ||
| 431 | Vector { | ||
| 432 | _handler: DMA2_Channel7, | ||
| 433 | }, | ||
| 434 | Vector { _handler: LPUART1 }, | ||
| 435 | Vector { _handler: OCTOSPI1 }, | ||
| 436 | Vector { _handler: I2C3_EV }, | ||
| 437 | Vector { _handler: I2C3_ER }, | ||
| 438 | Vector { _handler: SAI1 }, | ||
| 439 | Vector { _handler: SAI2 }, | ||
| 440 | Vector { _handler: OCTOSPI2 }, | ||
| 441 | Vector { _handler: TSC }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _handler: RNG }, | ||
| 445 | Vector { _handler: FPU }, | ||
| 446 | Vector { _handler: CRS }, | ||
| 447 | Vector { _handler: I2C4_ER }, | ||
| 448 | Vector { _handler: I2C4_EV }, | ||
| 449 | Vector { _handler: DCMI }, | ||
| 450 | Vector { _reserved: 0 }, | ||
| 451 | Vector { _reserved: 0 }, | ||
| 452 | Vector { _reserved: 0 }, | ||
| 453 | Vector { _reserved: 0 }, | ||
| 454 | Vector { _handler: DMA2D }, | ||
| 455 | Vector { _handler: LTDC }, | ||
| 456 | Vector { _handler: LTDC_ER }, | ||
| 457 | Vector { _handler: GFXMMU }, | ||
| 458 | Vector { | ||
| 459 | _handler: DMAMUX1_OVR, | ||
| 460 | }, | ||
| 461 | ]; | ||
| 462 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 463 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 464 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 465 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4r7vi.rs b/embassy-stm32/src/chip/stm32l4r7vi.rs index d0f3be660..d3d635c43 100644 --- a/embassy-stm32/src/chip/stm32l4r7vi.rs +++ b/embassy-stm32/src/chip/stm32l4r7vi.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -15,8 +15,451 @@ peripherals!( | |||
| 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, | 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, |
| 16 | USART2, USART3, USB_OTG_FS, WWDG | 16 | USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | CRS = 82, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | EXTI0 = 6, | ||
| 60 | EXTI1 = 7, | ||
| 61 | EXTI15_10 = 40, | ||
| 62 | EXTI2 = 8, | ||
| 63 | EXTI3 = 9, | ||
| 64 | EXTI4 = 10, | ||
| 65 | EXTI9_5 = 23, | ||
| 66 | FLASH = 4, | ||
| 67 | FMC = 48, | ||
| 68 | FPU = 81, | ||
| 69 | GFXMMU = 93, | ||
| 70 | I2C1_ER = 32, | ||
| 71 | I2C1_EV = 31, | ||
| 72 | I2C2_ER = 34, | ||
| 73 | I2C2_EV = 33, | ||
| 74 | I2C3_ER = 73, | ||
| 75 | I2C3_EV = 72, | ||
| 76 | I2C4_ER = 83, | ||
| 77 | I2C4_EV = 84, | ||
| 78 | LPTIM1 = 65, | ||
| 79 | LPTIM2 = 66, | ||
| 80 | LPUART1 = 70, | ||
| 81 | LTDC = 91, | ||
| 82 | LTDC_ER = 92, | ||
| 83 | OCTOSPI1 = 71, | ||
| 84 | OCTOSPI2 = 76, | ||
| 85 | OTG_FS = 67, | ||
| 86 | PVD_PVM = 1, | ||
| 87 | RCC = 5, | ||
| 88 | RNG = 80, | ||
| 89 | RTC_Alarm = 41, | ||
| 90 | RTC_WKUP = 3, | ||
| 91 | SAI1 = 74, | ||
| 92 | SAI2 = 75, | ||
| 93 | SDMMC1 = 49, | ||
| 94 | SPI1 = 35, | ||
| 95 | SPI2 = 36, | ||
| 96 | SPI3 = 51, | ||
| 97 | TAMP_STAMP = 2, | ||
| 98 | TIM1_BRK_TIM15 = 24, | ||
| 99 | TIM1_CC = 27, | ||
| 100 | TIM1_TRG_COM_TIM17 = 26, | ||
| 101 | TIM1_UP_TIM16 = 25, | ||
| 102 | TIM2 = 28, | ||
| 103 | TIM3 = 29, | ||
| 104 | TIM4 = 30, | ||
| 105 | TIM5 = 50, | ||
| 106 | TIM6_DAC = 54, | ||
| 107 | TIM7 = 55, | ||
| 108 | TIM8_BRK = 43, | ||
| 109 | TIM8_CC = 46, | ||
| 110 | TIM8_TRG_COM = 45, | ||
| 111 | TIM8_UP = 44, | ||
| 112 | TSC = 77, | ||
| 113 | UART4 = 52, | ||
| 114 | UART5 = 53, | ||
| 115 | USART1 = 37, | ||
| 116 | USART2 = 38, | ||
| 117 | USART3 = 39, | ||
| 118 | WWDG = 0, | ||
| 119 | } | ||
| 120 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 121 | #[inline(always)] | ||
| 122 | fn number(self) -> u16 { | ||
| 123 | self as u16 | ||
| 124 | } | ||
| 125 | } | ||
| 126 | |||
| 127 | declare!(ADC1); | ||
| 128 | declare!(CAN1_RX0); | ||
| 129 | declare!(CAN1_RX1); | ||
| 130 | declare!(CAN1_SCE); | ||
| 131 | declare!(CAN1_TX); | ||
| 132 | declare!(COMP); | ||
| 133 | declare!(CRS); | ||
| 134 | declare!(DCMI); | ||
| 135 | declare!(DFSDM1_FLT0); | ||
| 136 | declare!(DFSDM1_FLT1); | ||
| 137 | declare!(DFSDM1_FLT2); | ||
| 138 | declare!(DFSDM1_FLT3); | ||
| 139 | declare!(DMA1_Channel1); | ||
| 140 | declare!(DMA1_Channel2); | ||
| 141 | declare!(DMA1_Channel3); | ||
| 142 | declare!(DMA1_Channel4); | ||
| 143 | declare!(DMA1_Channel5); | ||
| 144 | declare!(DMA1_Channel6); | ||
| 145 | declare!(DMA1_Channel7); | ||
| 146 | declare!(DMA2D); | ||
| 147 | declare!(DMA2_Channel1); | ||
| 148 | declare!(DMA2_Channel2); | ||
| 149 | declare!(DMA2_Channel3); | ||
| 150 | declare!(DMA2_Channel4); | ||
| 151 | declare!(DMA2_Channel5); | ||
| 152 | declare!(DMA2_Channel6); | ||
| 153 | declare!(DMA2_Channel7); | ||
| 154 | declare!(DMAMUX1_OVR); | ||
| 155 | declare!(EXTI0); | ||
| 156 | declare!(EXTI1); | ||
| 157 | declare!(EXTI15_10); | ||
| 158 | declare!(EXTI2); | ||
| 159 | declare!(EXTI3); | ||
| 160 | declare!(EXTI4); | ||
| 161 | declare!(EXTI9_5); | ||
| 162 | declare!(FLASH); | ||
| 163 | declare!(FMC); | ||
| 164 | declare!(FPU); | ||
| 165 | declare!(GFXMMU); | ||
| 166 | declare!(I2C1_ER); | ||
| 167 | declare!(I2C1_EV); | ||
| 168 | declare!(I2C2_ER); | ||
| 169 | declare!(I2C2_EV); | ||
| 170 | declare!(I2C3_ER); | ||
| 171 | declare!(I2C3_EV); | ||
| 172 | declare!(I2C4_ER); | ||
| 173 | declare!(I2C4_EV); | ||
| 174 | declare!(LPTIM1); | ||
| 175 | declare!(LPTIM2); | ||
| 176 | declare!(LPUART1); | ||
| 177 | declare!(LTDC); | ||
| 178 | declare!(LTDC_ER); | ||
| 179 | declare!(OCTOSPI1); | ||
| 180 | declare!(OCTOSPI2); | ||
| 181 | declare!(OTG_FS); | ||
| 182 | declare!(PVD_PVM); | ||
| 183 | declare!(RCC); | ||
| 184 | declare!(RNG); | ||
| 185 | declare!(RTC_Alarm); | ||
| 186 | declare!(RTC_WKUP); | ||
| 187 | declare!(SAI1); | ||
| 188 | declare!(SAI2); | ||
| 189 | declare!(SDMMC1); | ||
| 190 | declare!(SPI1); | ||
| 191 | declare!(SPI2); | ||
| 192 | declare!(SPI3); | ||
| 193 | declare!(TAMP_STAMP); | ||
| 194 | declare!(TIM1_BRK_TIM15); | ||
| 195 | declare!(TIM1_CC); | ||
| 196 | declare!(TIM1_TRG_COM_TIM17); | ||
| 197 | declare!(TIM1_UP_TIM16); | ||
| 198 | declare!(TIM2); | ||
| 199 | declare!(TIM3); | ||
| 200 | declare!(TIM4); | ||
| 201 | declare!(TIM5); | ||
| 202 | declare!(TIM6_DAC); | ||
| 203 | declare!(TIM7); | ||
| 204 | declare!(TIM8_BRK); | ||
| 205 | declare!(TIM8_CC); | ||
| 206 | declare!(TIM8_TRG_COM); | ||
| 207 | declare!(TIM8_UP); | ||
| 208 | declare!(TSC); | ||
| 209 | declare!(UART4); | ||
| 210 | declare!(UART5); | ||
| 211 | declare!(USART1); | ||
| 212 | declare!(USART2); | ||
| 213 | declare!(USART3); | ||
| 214 | declare!(WWDG); | ||
| 215 | } | ||
| 216 | mod interrupt_vector { | ||
| 217 | extern "C" { | ||
| 218 | fn ADC1(); | ||
| 219 | fn CAN1_RX0(); | ||
| 220 | fn CAN1_RX1(); | ||
| 221 | fn CAN1_SCE(); | ||
| 222 | fn CAN1_TX(); | ||
| 223 | fn COMP(); | ||
| 224 | fn CRS(); | ||
| 225 | fn DCMI(); | ||
| 226 | fn DFSDM1_FLT0(); | ||
| 227 | fn DFSDM1_FLT1(); | ||
| 228 | fn DFSDM1_FLT2(); | ||
| 229 | fn DFSDM1_FLT3(); | ||
| 230 | fn DMA1_Channel1(); | ||
| 231 | fn DMA1_Channel2(); | ||
| 232 | fn DMA1_Channel3(); | ||
| 233 | fn DMA1_Channel4(); | ||
| 234 | fn DMA1_Channel5(); | ||
| 235 | fn DMA1_Channel6(); | ||
| 236 | fn DMA1_Channel7(); | ||
| 237 | fn DMA2D(); | ||
| 238 | fn DMA2_Channel1(); | ||
| 239 | fn DMA2_Channel2(); | ||
| 240 | fn DMA2_Channel3(); | ||
| 241 | fn DMA2_Channel4(); | ||
| 242 | fn DMA2_Channel5(); | ||
| 243 | fn DMA2_Channel6(); | ||
| 244 | fn DMA2_Channel7(); | ||
| 245 | fn DMAMUX1_OVR(); | ||
| 246 | fn EXTI0(); | ||
| 247 | fn EXTI1(); | ||
| 248 | fn EXTI15_10(); | ||
| 249 | fn EXTI2(); | ||
| 250 | fn EXTI3(); | ||
| 251 | fn EXTI4(); | ||
| 252 | fn EXTI9_5(); | ||
| 253 | fn FLASH(); | ||
| 254 | fn FMC(); | ||
| 255 | fn FPU(); | ||
| 256 | fn GFXMMU(); | ||
| 257 | fn I2C1_ER(); | ||
| 258 | fn I2C1_EV(); | ||
| 259 | fn I2C2_ER(); | ||
| 260 | fn I2C2_EV(); | ||
| 261 | fn I2C3_ER(); | ||
| 262 | fn I2C3_EV(); | ||
| 263 | fn I2C4_ER(); | ||
| 264 | fn I2C4_EV(); | ||
| 265 | fn LPTIM1(); | ||
| 266 | fn LPTIM2(); | ||
| 267 | fn LPUART1(); | ||
| 268 | fn LTDC(); | ||
| 269 | fn LTDC_ER(); | ||
| 270 | fn OCTOSPI1(); | ||
| 271 | fn OCTOSPI2(); | ||
| 272 | fn OTG_FS(); | ||
| 273 | fn PVD_PVM(); | ||
| 274 | fn RCC(); | ||
| 275 | fn RNG(); | ||
| 276 | fn RTC_Alarm(); | ||
| 277 | fn RTC_WKUP(); | ||
| 278 | fn SAI1(); | ||
| 279 | fn SAI2(); | ||
| 280 | fn SDMMC1(); | ||
| 281 | fn SPI1(); | ||
| 282 | fn SPI2(); | ||
| 283 | fn SPI3(); | ||
| 284 | fn TAMP_STAMP(); | ||
| 285 | fn TIM1_BRK_TIM15(); | ||
| 286 | fn TIM1_CC(); | ||
| 287 | fn TIM1_TRG_COM_TIM17(); | ||
| 288 | fn TIM1_UP_TIM16(); | ||
| 289 | fn TIM2(); | ||
| 290 | fn TIM3(); | ||
| 291 | fn TIM4(); | ||
| 292 | fn TIM5(); | ||
| 293 | fn TIM6_DAC(); | ||
| 294 | fn TIM7(); | ||
| 295 | fn TIM8_BRK(); | ||
| 296 | fn TIM8_CC(); | ||
| 297 | fn TIM8_TRG_COM(); | ||
| 298 | fn TIM8_UP(); | ||
| 299 | fn TSC(); | ||
| 300 | fn UART4(); | ||
| 301 | fn UART5(); | ||
| 302 | fn USART1(); | ||
| 303 | fn USART2(); | ||
| 304 | fn USART3(); | ||
| 305 | fn WWDG(); | ||
| 306 | } | ||
| 307 | pub union Vector { | ||
| 308 | _handler: unsafe extern "C" fn(), | ||
| 309 | _reserved: u32, | ||
| 310 | } | ||
| 311 | #[link_section = ".vector_table.interrupts"] | ||
| 312 | #[no_mangle] | ||
| 313 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 314 | Vector { _handler: WWDG }, | ||
| 315 | Vector { _handler: PVD_PVM }, | ||
| 316 | Vector { | ||
| 317 | _handler: TAMP_STAMP, | ||
| 318 | }, | ||
| 319 | Vector { _handler: RTC_WKUP }, | ||
| 320 | Vector { _handler: FLASH }, | ||
| 321 | Vector { _handler: RCC }, | ||
| 322 | Vector { _handler: EXTI0 }, | ||
| 323 | Vector { _handler: EXTI1 }, | ||
| 324 | Vector { _handler: EXTI2 }, | ||
| 325 | Vector { _handler: EXTI3 }, | ||
| 326 | Vector { _handler: EXTI4 }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel1, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel2, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel3, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel4, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel5, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel6, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel7, | ||
| 347 | }, | ||
| 348 | Vector { _handler: ADC1 }, | ||
| 349 | Vector { _handler: CAN1_TX }, | ||
| 350 | Vector { _handler: CAN1_RX0 }, | ||
| 351 | Vector { _handler: CAN1_RX1 }, | ||
| 352 | Vector { _handler: CAN1_SCE }, | ||
| 353 | Vector { _handler: EXTI9_5 }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_BRK_TIM15, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: TIM1_UP_TIM16, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_TRG_COM_TIM17, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM1_CC }, | ||
| 364 | Vector { _handler: TIM2 }, | ||
| 365 | Vector { _handler: TIM3 }, | ||
| 366 | Vector { _handler: TIM4 }, | ||
| 367 | Vector { _handler: I2C1_EV }, | ||
| 368 | Vector { _handler: I2C1_ER }, | ||
| 369 | Vector { _handler: I2C2_EV }, | ||
| 370 | Vector { _handler: I2C2_ER }, | ||
| 371 | Vector { _handler: SPI1 }, | ||
| 372 | Vector { _handler: SPI2 }, | ||
| 373 | Vector { _handler: USART1 }, | ||
| 374 | Vector { _handler: USART2 }, | ||
| 375 | Vector { _handler: USART3 }, | ||
| 376 | Vector { | ||
| 377 | _handler: EXTI15_10, | ||
| 378 | }, | ||
| 379 | Vector { | ||
| 380 | _handler: RTC_Alarm, | ||
| 381 | }, | ||
| 382 | Vector { | ||
| 383 | _handler: DFSDM1_FLT3, | ||
| 384 | }, | ||
| 385 | Vector { _handler: TIM8_BRK }, | ||
| 386 | Vector { _handler: TIM8_UP }, | ||
| 387 | Vector { | ||
| 388 | _handler: TIM8_TRG_COM, | ||
| 389 | }, | ||
| 390 | Vector { _handler: TIM8_CC }, | ||
| 391 | Vector { _reserved: 0 }, | ||
| 392 | Vector { _handler: FMC }, | ||
| 393 | Vector { _handler: SDMMC1 }, | ||
| 394 | Vector { _handler: TIM5 }, | ||
| 395 | Vector { _handler: SPI3 }, | ||
| 396 | Vector { _handler: UART4 }, | ||
| 397 | Vector { _handler: UART5 }, | ||
| 398 | Vector { _handler: TIM6_DAC }, | ||
| 399 | Vector { _handler: TIM7 }, | ||
| 400 | Vector { | ||
| 401 | _handler: DMA2_Channel1, | ||
| 402 | }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel2, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel3, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel4, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel5, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DFSDM1_FLT0, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DFSDM1_FLT1, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT2, | ||
| 423 | }, | ||
| 424 | Vector { _handler: COMP }, | ||
| 425 | Vector { _handler: LPTIM1 }, | ||
| 426 | Vector { _handler: LPTIM2 }, | ||
| 427 | Vector { _handler: OTG_FS }, | ||
| 428 | Vector { | ||
| 429 | _handler: DMA2_Channel6, | ||
| 430 | }, | ||
| 431 | Vector { | ||
| 432 | _handler: DMA2_Channel7, | ||
| 433 | }, | ||
| 434 | Vector { _handler: LPUART1 }, | ||
| 435 | Vector { _handler: OCTOSPI1 }, | ||
| 436 | Vector { _handler: I2C3_EV }, | ||
| 437 | Vector { _handler: I2C3_ER }, | ||
| 438 | Vector { _handler: SAI1 }, | ||
| 439 | Vector { _handler: SAI2 }, | ||
| 440 | Vector { _handler: OCTOSPI2 }, | ||
| 441 | Vector { _handler: TSC }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _handler: RNG }, | ||
| 445 | Vector { _handler: FPU }, | ||
| 446 | Vector { _handler: CRS }, | ||
| 447 | Vector { _handler: I2C4_ER }, | ||
| 448 | Vector { _handler: I2C4_EV }, | ||
| 449 | Vector { _handler: DCMI }, | ||
| 450 | Vector { _reserved: 0 }, | ||
| 451 | Vector { _reserved: 0 }, | ||
| 452 | Vector { _reserved: 0 }, | ||
| 453 | Vector { _reserved: 0 }, | ||
| 454 | Vector { _handler: DMA2D }, | ||
| 455 | Vector { _handler: LTDC }, | ||
| 456 | Vector { _handler: LTDC_ER }, | ||
| 457 | Vector { _handler: GFXMMU }, | ||
| 458 | Vector { | ||
| 459 | _handler: DMAMUX1_OVR, | ||
| 460 | }, | ||
| 461 | ]; | ||
| 462 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 463 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 464 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 465 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4r7zi.rs b/embassy-stm32/src/chip/stm32l4r7zi.rs index d0f3be660..d3d635c43 100644 --- a/embassy-stm32/src/chip/stm32l4r7zi.rs +++ b/embassy-stm32/src/chip/stm32l4r7zi.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -15,8 +15,451 @@ peripherals!( | |||
| 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, | 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, |
| 16 | USART2, USART3, USB_OTG_FS, WWDG | 16 | USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | CRS = 82, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | EXTI0 = 6, | ||
| 60 | EXTI1 = 7, | ||
| 61 | EXTI15_10 = 40, | ||
| 62 | EXTI2 = 8, | ||
| 63 | EXTI3 = 9, | ||
| 64 | EXTI4 = 10, | ||
| 65 | EXTI9_5 = 23, | ||
| 66 | FLASH = 4, | ||
| 67 | FMC = 48, | ||
| 68 | FPU = 81, | ||
| 69 | GFXMMU = 93, | ||
| 70 | I2C1_ER = 32, | ||
| 71 | I2C1_EV = 31, | ||
| 72 | I2C2_ER = 34, | ||
| 73 | I2C2_EV = 33, | ||
| 74 | I2C3_ER = 73, | ||
| 75 | I2C3_EV = 72, | ||
| 76 | I2C4_ER = 83, | ||
| 77 | I2C4_EV = 84, | ||
| 78 | LPTIM1 = 65, | ||
| 79 | LPTIM2 = 66, | ||
| 80 | LPUART1 = 70, | ||
| 81 | LTDC = 91, | ||
| 82 | LTDC_ER = 92, | ||
| 83 | OCTOSPI1 = 71, | ||
| 84 | OCTOSPI2 = 76, | ||
| 85 | OTG_FS = 67, | ||
| 86 | PVD_PVM = 1, | ||
| 87 | RCC = 5, | ||
| 88 | RNG = 80, | ||
| 89 | RTC_Alarm = 41, | ||
| 90 | RTC_WKUP = 3, | ||
| 91 | SAI1 = 74, | ||
| 92 | SAI2 = 75, | ||
| 93 | SDMMC1 = 49, | ||
| 94 | SPI1 = 35, | ||
| 95 | SPI2 = 36, | ||
| 96 | SPI3 = 51, | ||
| 97 | TAMP_STAMP = 2, | ||
| 98 | TIM1_BRK_TIM15 = 24, | ||
| 99 | TIM1_CC = 27, | ||
| 100 | TIM1_TRG_COM_TIM17 = 26, | ||
| 101 | TIM1_UP_TIM16 = 25, | ||
| 102 | TIM2 = 28, | ||
| 103 | TIM3 = 29, | ||
| 104 | TIM4 = 30, | ||
| 105 | TIM5 = 50, | ||
| 106 | TIM6_DAC = 54, | ||
| 107 | TIM7 = 55, | ||
| 108 | TIM8_BRK = 43, | ||
| 109 | TIM8_CC = 46, | ||
| 110 | TIM8_TRG_COM = 45, | ||
| 111 | TIM8_UP = 44, | ||
| 112 | TSC = 77, | ||
| 113 | UART4 = 52, | ||
| 114 | UART5 = 53, | ||
| 115 | USART1 = 37, | ||
| 116 | USART2 = 38, | ||
| 117 | USART3 = 39, | ||
| 118 | WWDG = 0, | ||
| 119 | } | ||
| 120 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 121 | #[inline(always)] | ||
| 122 | fn number(self) -> u16 { | ||
| 123 | self as u16 | ||
| 124 | } | ||
| 125 | } | ||
| 126 | |||
| 127 | declare!(ADC1); | ||
| 128 | declare!(CAN1_RX0); | ||
| 129 | declare!(CAN1_RX1); | ||
| 130 | declare!(CAN1_SCE); | ||
| 131 | declare!(CAN1_TX); | ||
| 132 | declare!(COMP); | ||
| 133 | declare!(CRS); | ||
| 134 | declare!(DCMI); | ||
| 135 | declare!(DFSDM1_FLT0); | ||
| 136 | declare!(DFSDM1_FLT1); | ||
| 137 | declare!(DFSDM1_FLT2); | ||
| 138 | declare!(DFSDM1_FLT3); | ||
| 139 | declare!(DMA1_Channel1); | ||
| 140 | declare!(DMA1_Channel2); | ||
| 141 | declare!(DMA1_Channel3); | ||
| 142 | declare!(DMA1_Channel4); | ||
| 143 | declare!(DMA1_Channel5); | ||
| 144 | declare!(DMA1_Channel6); | ||
| 145 | declare!(DMA1_Channel7); | ||
| 146 | declare!(DMA2D); | ||
| 147 | declare!(DMA2_Channel1); | ||
| 148 | declare!(DMA2_Channel2); | ||
| 149 | declare!(DMA2_Channel3); | ||
| 150 | declare!(DMA2_Channel4); | ||
| 151 | declare!(DMA2_Channel5); | ||
| 152 | declare!(DMA2_Channel6); | ||
| 153 | declare!(DMA2_Channel7); | ||
| 154 | declare!(DMAMUX1_OVR); | ||
| 155 | declare!(EXTI0); | ||
| 156 | declare!(EXTI1); | ||
| 157 | declare!(EXTI15_10); | ||
| 158 | declare!(EXTI2); | ||
| 159 | declare!(EXTI3); | ||
| 160 | declare!(EXTI4); | ||
| 161 | declare!(EXTI9_5); | ||
| 162 | declare!(FLASH); | ||
| 163 | declare!(FMC); | ||
| 164 | declare!(FPU); | ||
| 165 | declare!(GFXMMU); | ||
| 166 | declare!(I2C1_ER); | ||
| 167 | declare!(I2C1_EV); | ||
| 168 | declare!(I2C2_ER); | ||
| 169 | declare!(I2C2_EV); | ||
| 170 | declare!(I2C3_ER); | ||
| 171 | declare!(I2C3_EV); | ||
| 172 | declare!(I2C4_ER); | ||
| 173 | declare!(I2C4_EV); | ||
| 174 | declare!(LPTIM1); | ||
| 175 | declare!(LPTIM2); | ||
| 176 | declare!(LPUART1); | ||
| 177 | declare!(LTDC); | ||
| 178 | declare!(LTDC_ER); | ||
| 179 | declare!(OCTOSPI1); | ||
| 180 | declare!(OCTOSPI2); | ||
| 181 | declare!(OTG_FS); | ||
| 182 | declare!(PVD_PVM); | ||
| 183 | declare!(RCC); | ||
| 184 | declare!(RNG); | ||
| 185 | declare!(RTC_Alarm); | ||
| 186 | declare!(RTC_WKUP); | ||
| 187 | declare!(SAI1); | ||
| 188 | declare!(SAI2); | ||
| 189 | declare!(SDMMC1); | ||
| 190 | declare!(SPI1); | ||
| 191 | declare!(SPI2); | ||
| 192 | declare!(SPI3); | ||
| 193 | declare!(TAMP_STAMP); | ||
| 194 | declare!(TIM1_BRK_TIM15); | ||
| 195 | declare!(TIM1_CC); | ||
| 196 | declare!(TIM1_TRG_COM_TIM17); | ||
| 197 | declare!(TIM1_UP_TIM16); | ||
| 198 | declare!(TIM2); | ||
| 199 | declare!(TIM3); | ||
| 200 | declare!(TIM4); | ||
| 201 | declare!(TIM5); | ||
| 202 | declare!(TIM6_DAC); | ||
| 203 | declare!(TIM7); | ||
| 204 | declare!(TIM8_BRK); | ||
| 205 | declare!(TIM8_CC); | ||
| 206 | declare!(TIM8_TRG_COM); | ||
| 207 | declare!(TIM8_UP); | ||
| 208 | declare!(TSC); | ||
| 209 | declare!(UART4); | ||
| 210 | declare!(UART5); | ||
| 211 | declare!(USART1); | ||
| 212 | declare!(USART2); | ||
| 213 | declare!(USART3); | ||
| 214 | declare!(WWDG); | ||
| 215 | } | ||
| 216 | mod interrupt_vector { | ||
| 217 | extern "C" { | ||
| 218 | fn ADC1(); | ||
| 219 | fn CAN1_RX0(); | ||
| 220 | fn CAN1_RX1(); | ||
| 221 | fn CAN1_SCE(); | ||
| 222 | fn CAN1_TX(); | ||
| 223 | fn COMP(); | ||
| 224 | fn CRS(); | ||
| 225 | fn DCMI(); | ||
| 226 | fn DFSDM1_FLT0(); | ||
| 227 | fn DFSDM1_FLT1(); | ||
| 228 | fn DFSDM1_FLT2(); | ||
| 229 | fn DFSDM1_FLT3(); | ||
| 230 | fn DMA1_Channel1(); | ||
| 231 | fn DMA1_Channel2(); | ||
| 232 | fn DMA1_Channel3(); | ||
| 233 | fn DMA1_Channel4(); | ||
| 234 | fn DMA1_Channel5(); | ||
| 235 | fn DMA1_Channel6(); | ||
| 236 | fn DMA1_Channel7(); | ||
| 237 | fn DMA2D(); | ||
| 238 | fn DMA2_Channel1(); | ||
| 239 | fn DMA2_Channel2(); | ||
| 240 | fn DMA2_Channel3(); | ||
| 241 | fn DMA2_Channel4(); | ||
| 242 | fn DMA2_Channel5(); | ||
| 243 | fn DMA2_Channel6(); | ||
| 244 | fn DMA2_Channel7(); | ||
| 245 | fn DMAMUX1_OVR(); | ||
| 246 | fn EXTI0(); | ||
| 247 | fn EXTI1(); | ||
| 248 | fn EXTI15_10(); | ||
| 249 | fn EXTI2(); | ||
| 250 | fn EXTI3(); | ||
| 251 | fn EXTI4(); | ||
| 252 | fn EXTI9_5(); | ||
| 253 | fn FLASH(); | ||
| 254 | fn FMC(); | ||
| 255 | fn FPU(); | ||
| 256 | fn GFXMMU(); | ||
| 257 | fn I2C1_ER(); | ||
| 258 | fn I2C1_EV(); | ||
| 259 | fn I2C2_ER(); | ||
| 260 | fn I2C2_EV(); | ||
| 261 | fn I2C3_ER(); | ||
| 262 | fn I2C3_EV(); | ||
| 263 | fn I2C4_ER(); | ||
| 264 | fn I2C4_EV(); | ||
| 265 | fn LPTIM1(); | ||
| 266 | fn LPTIM2(); | ||
| 267 | fn LPUART1(); | ||
| 268 | fn LTDC(); | ||
| 269 | fn LTDC_ER(); | ||
| 270 | fn OCTOSPI1(); | ||
| 271 | fn OCTOSPI2(); | ||
| 272 | fn OTG_FS(); | ||
| 273 | fn PVD_PVM(); | ||
| 274 | fn RCC(); | ||
| 275 | fn RNG(); | ||
| 276 | fn RTC_Alarm(); | ||
| 277 | fn RTC_WKUP(); | ||
| 278 | fn SAI1(); | ||
| 279 | fn SAI2(); | ||
| 280 | fn SDMMC1(); | ||
| 281 | fn SPI1(); | ||
| 282 | fn SPI2(); | ||
| 283 | fn SPI3(); | ||
| 284 | fn TAMP_STAMP(); | ||
| 285 | fn TIM1_BRK_TIM15(); | ||
| 286 | fn TIM1_CC(); | ||
| 287 | fn TIM1_TRG_COM_TIM17(); | ||
| 288 | fn TIM1_UP_TIM16(); | ||
| 289 | fn TIM2(); | ||
| 290 | fn TIM3(); | ||
| 291 | fn TIM4(); | ||
| 292 | fn TIM5(); | ||
| 293 | fn TIM6_DAC(); | ||
| 294 | fn TIM7(); | ||
| 295 | fn TIM8_BRK(); | ||
| 296 | fn TIM8_CC(); | ||
| 297 | fn TIM8_TRG_COM(); | ||
| 298 | fn TIM8_UP(); | ||
| 299 | fn TSC(); | ||
| 300 | fn UART4(); | ||
| 301 | fn UART5(); | ||
| 302 | fn USART1(); | ||
| 303 | fn USART2(); | ||
| 304 | fn USART3(); | ||
| 305 | fn WWDG(); | ||
| 306 | } | ||
| 307 | pub union Vector { | ||
| 308 | _handler: unsafe extern "C" fn(), | ||
| 309 | _reserved: u32, | ||
| 310 | } | ||
| 311 | #[link_section = ".vector_table.interrupts"] | ||
| 312 | #[no_mangle] | ||
| 313 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 314 | Vector { _handler: WWDG }, | ||
| 315 | Vector { _handler: PVD_PVM }, | ||
| 316 | Vector { | ||
| 317 | _handler: TAMP_STAMP, | ||
| 318 | }, | ||
| 319 | Vector { _handler: RTC_WKUP }, | ||
| 320 | Vector { _handler: FLASH }, | ||
| 321 | Vector { _handler: RCC }, | ||
| 322 | Vector { _handler: EXTI0 }, | ||
| 323 | Vector { _handler: EXTI1 }, | ||
| 324 | Vector { _handler: EXTI2 }, | ||
| 325 | Vector { _handler: EXTI3 }, | ||
| 326 | Vector { _handler: EXTI4 }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel1, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel2, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel3, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel4, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel5, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel6, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel7, | ||
| 347 | }, | ||
| 348 | Vector { _handler: ADC1 }, | ||
| 349 | Vector { _handler: CAN1_TX }, | ||
| 350 | Vector { _handler: CAN1_RX0 }, | ||
| 351 | Vector { _handler: CAN1_RX1 }, | ||
| 352 | Vector { _handler: CAN1_SCE }, | ||
| 353 | Vector { _handler: EXTI9_5 }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_BRK_TIM15, | ||
| 356 | }, | ||
| 357 | Vector { | ||
| 358 | _handler: TIM1_UP_TIM16, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_TRG_COM_TIM17, | ||
| 362 | }, | ||
| 363 | Vector { _handler: TIM1_CC }, | ||
| 364 | Vector { _handler: TIM2 }, | ||
| 365 | Vector { _handler: TIM3 }, | ||
| 366 | Vector { _handler: TIM4 }, | ||
| 367 | Vector { _handler: I2C1_EV }, | ||
| 368 | Vector { _handler: I2C1_ER }, | ||
| 369 | Vector { _handler: I2C2_EV }, | ||
| 370 | Vector { _handler: I2C2_ER }, | ||
| 371 | Vector { _handler: SPI1 }, | ||
| 372 | Vector { _handler: SPI2 }, | ||
| 373 | Vector { _handler: USART1 }, | ||
| 374 | Vector { _handler: USART2 }, | ||
| 375 | Vector { _handler: USART3 }, | ||
| 376 | Vector { | ||
| 377 | _handler: EXTI15_10, | ||
| 378 | }, | ||
| 379 | Vector { | ||
| 380 | _handler: RTC_Alarm, | ||
| 381 | }, | ||
| 382 | Vector { | ||
| 383 | _handler: DFSDM1_FLT3, | ||
| 384 | }, | ||
| 385 | Vector { _handler: TIM8_BRK }, | ||
| 386 | Vector { _handler: TIM8_UP }, | ||
| 387 | Vector { | ||
| 388 | _handler: TIM8_TRG_COM, | ||
| 389 | }, | ||
| 390 | Vector { _handler: TIM8_CC }, | ||
| 391 | Vector { _reserved: 0 }, | ||
| 392 | Vector { _handler: FMC }, | ||
| 393 | Vector { _handler: SDMMC1 }, | ||
| 394 | Vector { _handler: TIM5 }, | ||
| 395 | Vector { _handler: SPI3 }, | ||
| 396 | Vector { _handler: UART4 }, | ||
| 397 | Vector { _handler: UART5 }, | ||
| 398 | Vector { _handler: TIM6_DAC }, | ||
| 399 | Vector { _handler: TIM7 }, | ||
| 400 | Vector { | ||
| 401 | _handler: DMA2_Channel1, | ||
| 402 | }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel2, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel3, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel4, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel5, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DFSDM1_FLT0, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DFSDM1_FLT1, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT2, | ||
| 423 | }, | ||
| 424 | Vector { _handler: COMP }, | ||
| 425 | Vector { _handler: LPTIM1 }, | ||
| 426 | Vector { _handler: LPTIM2 }, | ||
| 427 | Vector { _handler: OTG_FS }, | ||
| 428 | Vector { | ||
| 429 | _handler: DMA2_Channel6, | ||
| 430 | }, | ||
| 431 | Vector { | ||
| 432 | _handler: DMA2_Channel7, | ||
| 433 | }, | ||
| 434 | Vector { _handler: LPUART1 }, | ||
| 435 | Vector { _handler: OCTOSPI1 }, | ||
| 436 | Vector { _handler: I2C3_EV }, | ||
| 437 | Vector { _handler: I2C3_ER }, | ||
| 438 | Vector { _handler: SAI1 }, | ||
| 439 | Vector { _handler: SAI2 }, | ||
| 440 | Vector { _handler: OCTOSPI2 }, | ||
| 441 | Vector { _handler: TSC }, | ||
| 442 | Vector { _reserved: 0 }, | ||
| 443 | Vector { _reserved: 0 }, | ||
| 444 | Vector { _handler: RNG }, | ||
| 445 | Vector { _handler: FPU }, | ||
| 446 | Vector { _handler: CRS }, | ||
| 447 | Vector { _handler: I2C4_ER }, | ||
| 448 | Vector { _handler: I2C4_EV }, | ||
| 449 | Vector { _handler: DCMI }, | ||
| 450 | Vector { _reserved: 0 }, | ||
| 451 | Vector { _reserved: 0 }, | ||
| 452 | Vector { _reserved: 0 }, | ||
| 453 | Vector { _reserved: 0 }, | ||
| 454 | Vector { _handler: DMA2D }, | ||
| 455 | Vector { _handler: LTDC }, | ||
| 456 | Vector { _handler: LTDC_ER }, | ||
| 457 | Vector { _handler: GFXMMU }, | ||
| 458 | Vector { | ||
| 459 | _handler: DMAMUX1_OVR, | ||
| 460 | }, | ||
| 461 | ]; | ||
| 462 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 463 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 464 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 465 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4r9ag.rs b/embassy-stm32/src/chip/stm32l4r9ag.rs index d0f3be660..9d994d7a1 100644 --- a/embassy-stm32/src/chip/stm32l4r9ag.rs +++ b/embassy-stm32/src/chip/stm32l4r9ag.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -15,8 +15,454 @@ peripherals!( | |||
| 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, | 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, |
| 16 | USART2, USART3, USB_OTG_FS, WWDG | 16 | USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | CRS = 82, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | DSI = 78, | ||
| 60 | EXTI0 = 6, | ||
| 61 | EXTI1 = 7, | ||
| 62 | EXTI15_10 = 40, | ||
| 63 | EXTI2 = 8, | ||
| 64 | EXTI3 = 9, | ||
| 65 | EXTI4 = 10, | ||
| 66 | EXTI9_5 = 23, | ||
| 67 | FLASH = 4, | ||
| 68 | FMC = 48, | ||
| 69 | FPU = 81, | ||
| 70 | GFXMMU = 93, | ||
| 71 | I2C1_ER = 32, | ||
| 72 | I2C1_EV = 31, | ||
| 73 | I2C2_ER = 34, | ||
| 74 | I2C2_EV = 33, | ||
| 75 | I2C3_ER = 73, | ||
| 76 | I2C3_EV = 72, | ||
| 77 | I2C4_ER = 83, | ||
| 78 | I2C4_EV = 84, | ||
| 79 | LPTIM1 = 65, | ||
| 80 | LPTIM2 = 66, | ||
| 81 | LPUART1 = 70, | ||
| 82 | LTDC = 91, | ||
| 83 | LTDC_ER = 92, | ||
| 84 | OCTOSPI1 = 71, | ||
| 85 | OCTOSPI2 = 76, | ||
| 86 | OTG_FS = 67, | ||
| 87 | PVD_PVM = 1, | ||
| 88 | RCC = 5, | ||
| 89 | RNG = 80, | ||
| 90 | RTC_Alarm = 41, | ||
| 91 | RTC_WKUP = 3, | ||
| 92 | SAI1 = 74, | ||
| 93 | SAI2 = 75, | ||
| 94 | SDMMC1 = 49, | ||
| 95 | SPI1 = 35, | ||
| 96 | SPI2 = 36, | ||
| 97 | SPI3 = 51, | ||
| 98 | TAMP_STAMP = 2, | ||
| 99 | TIM1_BRK_TIM15 = 24, | ||
| 100 | TIM1_CC = 27, | ||
| 101 | TIM1_TRG_COM_TIM17 = 26, | ||
| 102 | TIM1_UP_TIM16 = 25, | ||
| 103 | TIM2 = 28, | ||
| 104 | TIM3 = 29, | ||
| 105 | TIM4 = 30, | ||
| 106 | TIM5 = 50, | ||
| 107 | TIM6_DAC = 54, | ||
| 108 | TIM7 = 55, | ||
| 109 | TIM8_BRK = 43, | ||
| 110 | TIM8_CC = 46, | ||
| 111 | TIM8_TRG_COM = 45, | ||
| 112 | TIM8_UP = 44, | ||
| 113 | TSC = 77, | ||
| 114 | UART4 = 52, | ||
| 115 | UART5 = 53, | ||
| 116 | USART1 = 37, | ||
| 117 | USART2 = 38, | ||
| 118 | USART3 = 39, | ||
| 119 | WWDG = 0, | ||
| 120 | } | ||
| 121 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 122 | #[inline(always)] | ||
| 123 | fn number(self) -> u16 { | ||
| 124 | self as u16 | ||
| 125 | } | ||
| 126 | } | ||
| 127 | |||
| 128 | declare!(ADC1); | ||
| 129 | declare!(CAN1_RX0); | ||
| 130 | declare!(CAN1_RX1); | ||
| 131 | declare!(CAN1_SCE); | ||
| 132 | declare!(CAN1_TX); | ||
| 133 | declare!(COMP); | ||
| 134 | declare!(CRS); | ||
| 135 | declare!(DCMI); | ||
| 136 | declare!(DFSDM1_FLT0); | ||
| 137 | declare!(DFSDM1_FLT1); | ||
| 138 | declare!(DFSDM1_FLT2); | ||
| 139 | declare!(DFSDM1_FLT3); | ||
| 140 | declare!(DMA1_Channel1); | ||
| 141 | declare!(DMA1_Channel2); | ||
| 142 | declare!(DMA1_Channel3); | ||
| 143 | declare!(DMA1_Channel4); | ||
| 144 | declare!(DMA1_Channel5); | ||
| 145 | declare!(DMA1_Channel6); | ||
| 146 | declare!(DMA1_Channel7); | ||
| 147 | declare!(DMA2D); | ||
| 148 | declare!(DMA2_Channel1); | ||
| 149 | declare!(DMA2_Channel2); | ||
| 150 | declare!(DMA2_Channel3); | ||
| 151 | declare!(DMA2_Channel4); | ||
| 152 | declare!(DMA2_Channel5); | ||
| 153 | declare!(DMA2_Channel6); | ||
| 154 | declare!(DMA2_Channel7); | ||
| 155 | declare!(DMAMUX1_OVR); | ||
| 156 | declare!(DSI); | ||
| 157 | declare!(EXTI0); | ||
| 158 | declare!(EXTI1); | ||
| 159 | declare!(EXTI15_10); | ||
| 160 | declare!(EXTI2); | ||
| 161 | declare!(EXTI3); | ||
| 162 | declare!(EXTI4); | ||
| 163 | declare!(EXTI9_5); | ||
| 164 | declare!(FLASH); | ||
| 165 | declare!(FMC); | ||
| 166 | declare!(FPU); | ||
| 167 | declare!(GFXMMU); | ||
| 168 | declare!(I2C1_ER); | ||
| 169 | declare!(I2C1_EV); | ||
| 170 | declare!(I2C2_ER); | ||
| 171 | declare!(I2C2_EV); | ||
| 172 | declare!(I2C3_ER); | ||
| 173 | declare!(I2C3_EV); | ||
| 174 | declare!(I2C4_ER); | ||
| 175 | declare!(I2C4_EV); | ||
| 176 | declare!(LPTIM1); | ||
| 177 | declare!(LPTIM2); | ||
| 178 | declare!(LPUART1); | ||
| 179 | declare!(LTDC); | ||
| 180 | declare!(LTDC_ER); | ||
| 181 | declare!(OCTOSPI1); | ||
| 182 | declare!(OCTOSPI2); | ||
| 183 | declare!(OTG_FS); | ||
| 184 | declare!(PVD_PVM); | ||
| 185 | declare!(RCC); | ||
| 186 | declare!(RNG); | ||
| 187 | declare!(RTC_Alarm); | ||
| 188 | declare!(RTC_WKUP); | ||
| 189 | declare!(SAI1); | ||
| 190 | declare!(SAI2); | ||
| 191 | declare!(SDMMC1); | ||
| 192 | declare!(SPI1); | ||
| 193 | declare!(SPI2); | ||
| 194 | declare!(SPI3); | ||
| 195 | declare!(TAMP_STAMP); | ||
| 196 | declare!(TIM1_BRK_TIM15); | ||
| 197 | declare!(TIM1_CC); | ||
| 198 | declare!(TIM1_TRG_COM_TIM17); | ||
| 199 | declare!(TIM1_UP_TIM16); | ||
| 200 | declare!(TIM2); | ||
| 201 | declare!(TIM3); | ||
| 202 | declare!(TIM4); | ||
| 203 | declare!(TIM5); | ||
| 204 | declare!(TIM6_DAC); | ||
| 205 | declare!(TIM7); | ||
| 206 | declare!(TIM8_BRK); | ||
| 207 | declare!(TIM8_CC); | ||
| 208 | declare!(TIM8_TRG_COM); | ||
| 209 | declare!(TIM8_UP); | ||
| 210 | declare!(TSC); | ||
| 211 | declare!(UART4); | ||
| 212 | declare!(UART5); | ||
| 213 | declare!(USART1); | ||
| 214 | declare!(USART2); | ||
| 215 | declare!(USART3); | ||
| 216 | declare!(WWDG); | ||
| 217 | } | ||
| 218 | mod interrupt_vector { | ||
| 219 | extern "C" { | ||
| 220 | fn ADC1(); | ||
| 221 | fn CAN1_RX0(); | ||
| 222 | fn CAN1_RX1(); | ||
| 223 | fn CAN1_SCE(); | ||
| 224 | fn CAN1_TX(); | ||
| 225 | fn COMP(); | ||
| 226 | fn CRS(); | ||
| 227 | fn DCMI(); | ||
| 228 | fn DFSDM1_FLT0(); | ||
| 229 | fn DFSDM1_FLT1(); | ||
| 230 | fn DFSDM1_FLT2(); | ||
| 231 | fn DFSDM1_FLT3(); | ||
| 232 | fn DMA1_Channel1(); | ||
| 233 | fn DMA1_Channel2(); | ||
| 234 | fn DMA1_Channel3(); | ||
| 235 | fn DMA1_Channel4(); | ||
| 236 | fn DMA1_Channel5(); | ||
| 237 | fn DMA1_Channel6(); | ||
| 238 | fn DMA1_Channel7(); | ||
| 239 | fn DMA2D(); | ||
| 240 | fn DMA2_Channel1(); | ||
| 241 | fn DMA2_Channel2(); | ||
| 242 | fn DMA2_Channel3(); | ||
| 243 | fn DMA2_Channel4(); | ||
| 244 | fn DMA2_Channel5(); | ||
| 245 | fn DMA2_Channel6(); | ||
| 246 | fn DMA2_Channel7(); | ||
| 247 | fn DMAMUX1_OVR(); | ||
| 248 | fn DSI(); | ||
| 249 | fn EXTI0(); | ||
| 250 | fn EXTI1(); | ||
| 251 | fn EXTI15_10(); | ||
| 252 | fn EXTI2(); | ||
| 253 | fn EXTI3(); | ||
| 254 | fn EXTI4(); | ||
| 255 | fn EXTI9_5(); | ||
| 256 | fn FLASH(); | ||
| 257 | fn FMC(); | ||
| 258 | fn FPU(); | ||
| 259 | fn GFXMMU(); | ||
| 260 | fn I2C1_ER(); | ||
| 261 | fn I2C1_EV(); | ||
| 262 | fn I2C2_ER(); | ||
| 263 | fn I2C2_EV(); | ||
| 264 | fn I2C3_ER(); | ||
| 265 | fn I2C3_EV(); | ||
| 266 | fn I2C4_ER(); | ||
| 267 | fn I2C4_EV(); | ||
| 268 | fn LPTIM1(); | ||
| 269 | fn LPTIM2(); | ||
| 270 | fn LPUART1(); | ||
| 271 | fn LTDC(); | ||
| 272 | fn LTDC_ER(); | ||
| 273 | fn OCTOSPI1(); | ||
| 274 | fn OCTOSPI2(); | ||
| 275 | fn OTG_FS(); | ||
| 276 | fn PVD_PVM(); | ||
| 277 | fn RCC(); | ||
| 278 | fn RNG(); | ||
| 279 | fn RTC_Alarm(); | ||
| 280 | fn RTC_WKUP(); | ||
| 281 | fn SAI1(); | ||
| 282 | fn SAI2(); | ||
| 283 | fn SDMMC1(); | ||
| 284 | fn SPI1(); | ||
| 285 | fn SPI2(); | ||
| 286 | fn SPI3(); | ||
| 287 | fn TAMP_STAMP(); | ||
| 288 | fn TIM1_BRK_TIM15(); | ||
| 289 | fn TIM1_CC(); | ||
| 290 | fn TIM1_TRG_COM_TIM17(); | ||
| 291 | fn TIM1_UP_TIM16(); | ||
| 292 | fn TIM2(); | ||
| 293 | fn TIM3(); | ||
| 294 | fn TIM4(); | ||
| 295 | fn TIM5(); | ||
| 296 | fn TIM6_DAC(); | ||
| 297 | fn TIM7(); | ||
| 298 | fn TIM8_BRK(); | ||
| 299 | fn TIM8_CC(); | ||
| 300 | fn TIM8_TRG_COM(); | ||
| 301 | fn TIM8_UP(); | ||
| 302 | fn TSC(); | ||
| 303 | fn UART4(); | ||
| 304 | fn UART5(); | ||
| 305 | fn USART1(); | ||
| 306 | fn USART2(); | ||
| 307 | fn USART3(); | ||
| 308 | fn WWDG(); | ||
| 309 | } | ||
| 310 | pub union Vector { | ||
| 311 | _handler: unsafe extern "C" fn(), | ||
| 312 | _reserved: u32, | ||
| 313 | } | ||
| 314 | #[link_section = ".vector_table.interrupts"] | ||
| 315 | #[no_mangle] | ||
| 316 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 317 | Vector { _handler: WWDG }, | ||
| 318 | Vector { _handler: PVD_PVM }, | ||
| 319 | Vector { | ||
| 320 | _handler: TAMP_STAMP, | ||
| 321 | }, | ||
| 322 | Vector { _handler: RTC_WKUP }, | ||
| 323 | Vector { _handler: FLASH }, | ||
| 324 | Vector { _handler: RCC }, | ||
| 325 | Vector { _handler: EXTI0 }, | ||
| 326 | Vector { _handler: EXTI1 }, | ||
| 327 | Vector { _handler: EXTI2 }, | ||
| 328 | Vector { _handler: EXTI3 }, | ||
| 329 | Vector { _handler: EXTI4 }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel1, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel2, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel3, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel4, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel5, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel6, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel7, | ||
| 350 | }, | ||
| 351 | Vector { _handler: ADC1 }, | ||
| 352 | Vector { _handler: CAN1_TX }, | ||
| 353 | Vector { _handler: CAN1_RX0 }, | ||
| 354 | Vector { _handler: CAN1_RX1 }, | ||
| 355 | Vector { _handler: CAN1_SCE }, | ||
| 356 | Vector { _handler: EXTI9_5 }, | ||
| 357 | Vector { | ||
| 358 | _handler: TIM1_BRK_TIM15, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_UP_TIM16, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_TRG_COM_TIM17, | ||
| 365 | }, | ||
| 366 | Vector { _handler: TIM1_CC }, | ||
| 367 | Vector { _handler: TIM2 }, | ||
| 368 | Vector { _handler: TIM3 }, | ||
| 369 | Vector { _handler: TIM4 }, | ||
| 370 | Vector { _handler: I2C1_EV }, | ||
| 371 | Vector { _handler: I2C1_ER }, | ||
| 372 | Vector { _handler: I2C2_EV }, | ||
| 373 | Vector { _handler: I2C2_ER }, | ||
| 374 | Vector { _handler: SPI1 }, | ||
| 375 | Vector { _handler: SPI2 }, | ||
| 376 | Vector { _handler: USART1 }, | ||
| 377 | Vector { _handler: USART2 }, | ||
| 378 | Vector { _handler: USART3 }, | ||
| 379 | Vector { | ||
| 380 | _handler: EXTI15_10, | ||
| 381 | }, | ||
| 382 | Vector { | ||
| 383 | _handler: RTC_Alarm, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: DFSDM1_FLT3, | ||
| 387 | }, | ||
| 388 | Vector { _handler: TIM8_BRK }, | ||
| 389 | Vector { _handler: TIM8_UP }, | ||
| 390 | Vector { | ||
| 391 | _handler: TIM8_TRG_COM, | ||
| 392 | }, | ||
| 393 | Vector { _handler: TIM8_CC }, | ||
| 394 | Vector { _reserved: 0 }, | ||
| 395 | Vector { _handler: FMC }, | ||
| 396 | Vector { _handler: SDMMC1 }, | ||
| 397 | Vector { _handler: TIM5 }, | ||
| 398 | Vector { _handler: SPI3 }, | ||
| 399 | Vector { _handler: UART4 }, | ||
| 400 | Vector { _handler: UART5 }, | ||
| 401 | Vector { _handler: TIM6_DAC }, | ||
| 402 | Vector { _handler: TIM7 }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel1, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel2, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel3, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel4, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel5, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DFSDM1_FLT0, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT1, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT2, | ||
| 426 | }, | ||
| 427 | Vector { _handler: COMP }, | ||
| 428 | Vector { _handler: LPTIM1 }, | ||
| 429 | Vector { _handler: LPTIM2 }, | ||
| 430 | Vector { _handler: OTG_FS }, | ||
| 431 | Vector { | ||
| 432 | _handler: DMA2_Channel6, | ||
| 433 | }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel7, | ||
| 436 | }, | ||
| 437 | Vector { _handler: LPUART1 }, | ||
| 438 | Vector { _handler: OCTOSPI1 }, | ||
| 439 | Vector { _handler: I2C3_EV }, | ||
| 440 | Vector { _handler: I2C3_ER }, | ||
| 441 | Vector { _handler: SAI1 }, | ||
| 442 | Vector { _handler: SAI2 }, | ||
| 443 | Vector { _handler: OCTOSPI2 }, | ||
| 444 | Vector { _handler: TSC }, | ||
| 445 | Vector { _handler: DSI }, | ||
| 446 | Vector { _reserved: 0 }, | ||
| 447 | Vector { _handler: RNG }, | ||
| 448 | Vector { _handler: FPU }, | ||
| 449 | Vector { _handler: CRS }, | ||
| 450 | Vector { _handler: I2C4_ER }, | ||
| 451 | Vector { _handler: I2C4_EV }, | ||
| 452 | Vector { _handler: DCMI }, | ||
| 453 | Vector { _reserved: 0 }, | ||
| 454 | Vector { _reserved: 0 }, | ||
| 455 | Vector { _reserved: 0 }, | ||
| 456 | Vector { _reserved: 0 }, | ||
| 457 | Vector { _handler: DMA2D }, | ||
| 458 | Vector { _handler: LTDC }, | ||
| 459 | Vector { _handler: LTDC_ER }, | ||
| 460 | Vector { _handler: GFXMMU }, | ||
| 461 | Vector { | ||
| 462 | _handler: DMAMUX1_OVR, | ||
| 463 | }, | ||
| 464 | ]; | ||
| 465 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 466 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 467 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 468 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4r9ai.rs b/embassy-stm32/src/chip/stm32l4r9ai.rs index d0f3be660..9d994d7a1 100644 --- a/embassy-stm32/src/chip/stm32l4r9ai.rs +++ b/embassy-stm32/src/chip/stm32l4r9ai.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -15,8 +15,454 @@ peripherals!( | |||
| 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, | 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, |
| 16 | USART2, USART3, USB_OTG_FS, WWDG | 16 | USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | CRS = 82, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | DSI = 78, | ||
| 60 | EXTI0 = 6, | ||
| 61 | EXTI1 = 7, | ||
| 62 | EXTI15_10 = 40, | ||
| 63 | EXTI2 = 8, | ||
| 64 | EXTI3 = 9, | ||
| 65 | EXTI4 = 10, | ||
| 66 | EXTI9_5 = 23, | ||
| 67 | FLASH = 4, | ||
| 68 | FMC = 48, | ||
| 69 | FPU = 81, | ||
| 70 | GFXMMU = 93, | ||
| 71 | I2C1_ER = 32, | ||
| 72 | I2C1_EV = 31, | ||
| 73 | I2C2_ER = 34, | ||
| 74 | I2C2_EV = 33, | ||
| 75 | I2C3_ER = 73, | ||
| 76 | I2C3_EV = 72, | ||
| 77 | I2C4_ER = 83, | ||
| 78 | I2C4_EV = 84, | ||
| 79 | LPTIM1 = 65, | ||
| 80 | LPTIM2 = 66, | ||
| 81 | LPUART1 = 70, | ||
| 82 | LTDC = 91, | ||
| 83 | LTDC_ER = 92, | ||
| 84 | OCTOSPI1 = 71, | ||
| 85 | OCTOSPI2 = 76, | ||
| 86 | OTG_FS = 67, | ||
| 87 | PVD_PVM = 1, | ||
| 88 | RCC = 5, | ||
| 89 | RNG = 80, | ||
| 90 | RTC_Alarm = 41, | ||
| 91 | RTC_WKUP = 3, | ||
| 92 | SAI1 = 74, | ||
| 93 | SAI2 = 75, | ||
| 94 | SDMMC1 = 49, | ||
| 95 | SPI1 = 35, | ||
| 96 | SPI2 = 36, | ||
| 97 | SPI3 = 51, | ||
| 98 | TAMP_STAMP = 2, | ||
| 99 | TIM1_BRK_TIM15 = 24, | ||
| 100 | TIM1_CC = 27, | ||
| 101 | TIM1_TRG_COM_TIM17 = 26, | ||
| 102 | TIM1_UP_TIM16 = 25, | ||
| 103 | TIM2 = 28, | ||
| 104 | TIM3 = 29, | ||
| 105 | TIM4 = 30, | ||
| 106 | TIM5 = 50, | ||
| 107 | TIM6_DAC = 54, | ||
| 108 | TIM7 = 55, | ||
| 109 | TIM8_BRK = 43, | ||
| 110 | TIM8_CC = 46, | ||
| 111 | TIM8_TRG_COM = 45, | ||
| 112 | TIM8_UP = 44, | ||
| 113 | TSC = 77, | ||
| 114 | UART4 = 52, | ||
| 115 | UART5 = 53, | ||
| 116 | USART1 = 37, | ||
| 117 | USART2 = 38, | ||
| 118 | USART3 = 39, | ||
| 119 | WWDG = 0, | ||
| 120 | } | ||
| 121 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 122 | #[inline(always)] | ||
| 123 | fn number(self) -> u16 { | ||
| 124 | self as u16 | ||
| 125 | } | ||
| 126 | } | ||
| 127 | |||
| 128 | declare!(ADC1); | ||
| 129 | declare!(CAN1_RX0); | ||
| 130 | declare!(CAN1_RX1); | ||
| 131 | declare!(CAN1_SCE); | ||
| 132 | declare!(CAN1_TX); | ||
| 133 | declare!(COMP); | ||
| 134 | declare!(CRS); | ||
| 135 | declare!(DCMI); | ||
| 136 | declare!(DFSDM1_FLT0); | ||
| 137 | declare!(DFSDM1_FLT1); | ||
| 138 | declare!(DFSDM1_FLT2); | ||
| 139 | declare!(DFSDM1_FLT3); | ||
| 140 | declare!(DMA1_Channel1); | ||
| 141 | declare!(DMA1_Channel2); | ||
| 142 | declare!(DMA1_Channel3); | ||
| 143 | declare!(DMA1_Channel4); | ||
| 144 | declare!(DMA1_Channel5); | ||
| 145 | declare!(DMA1_Channel6); | ||
| 146 | declare!(DMA1_Channel7); | ||
| 147 | declare!(DMA2D); | ||
| 148 | declare!(DMA2_Channel1); | ||
| 149 | declare!(DMA2_Channel2); | ||
| 150 | declare!(DMA2_Channel3); | ||
| 151 | declare!(DMA2_Channel4); | ||
| 152 | declare!(DMA2_Channel5); | ||
| 153 | declare!(DMA2_Channel6); | ||
| 154 | declare!(DMA2_Channel7); | ||
| 155 | declare!(DMAMUX1_OVR); | ||
| 156 | declare!(DSI); | ||
| 157 | declare!(EXTI0); | ||
| 158 | declare!(EXTI1); | ||
| 159 | declare!(EXTI15_10); | ||
| 160 | declare!(EXTI2); | ||
| 161 | declare!(EXTI3); | ||
| 162 | declare!(EXTI4); | ||
| 163 | declare!(EXTI9_5); | ||
| 164 | declare!(FLASH); | ||
| 165 | declare!(FMC); | ||
| 166 | declare!(FPU); | ||
| 167 | declare!(GFXMMU); | ||
| 168 | declare!(I2C1_ER); | ||
| 169 | declare!(I2C1_EV); | ||
| 170 | declare!(I2C2_ER); | ||
| 171 | declare!(I2C2_EV); | ||
| 172 | declare!(I2C3_ER); | ||
| 173 | declare!(I2C3_EV); | ||
| 174 | declare!(I2C4_ER); | ||
| 175 | declare!(I2C4_EV); | ||
| 176 | declare!(LPTIM1); | ||
| 177 | declare!(LPTIM2); | ||
| 178 | declare!(LPUART1); | ||
| 179 | declare!(LTDC); | ||
| 180 | declare!(LTDC_ER); | ||
| 181 | declare!(OCTOSPI1); | ||
| 182 | declare!(OCTOSPI2); | ||
| 183 | declare!(OTG_FS); | ||
| 184 | declare!(PVD_PVM); | ||
| 185 | declare!(RCC); | ||
| 186 | declare!(RNG); | ||
| 187 | declare!(RTC_Alarm); | ||
| 188 | declare!(RTC_WKUP); | ||
| 189 | declare!(SAI1); | ||
| 190 | declare!(SAI2); | ||
| 191 | declare!(SDMMC1); | ||
| 192 | declare!(SPI1); | ||
| 193 | declare!(SPI2); | ||
| 194 | declare!(SPI3); | ||
| 195 | declare!(TAMP_STAMP); | ||
| 196 | declare!(TIM1_BRK_TIM15); | ||
| 197 | declare!(TIM1_CC); | ||
| 198 | declare!(TIM1_TRG_COM_TIM17); | ||
| 199 | declare!(TIM1_UP_TIM16); | ||
| 200 | declare!(TIM2); | ||
| 201 | declare!(TIM3); | ||
| 202 | declare!(TIM4); | ||
| 203 | declare!(TIM5); | ||
| 204 | declare!(TIM6_DAC); | ||
| 205 | declare!(TIM7); | ||
| 206 | declare!(TIM8_BRK); | ||
| 207 | declare!(TIM8_CC); | ||
| 208 | declare!(TIM8_TRG_COM); | ||
| 209 | declare!(TIM8_UP); | ||
| 210 | declare!(TSC); | ||
| 211 | declare!(UART4); | ||
| 212 | declare!(UART5); | ||
| 213 | declare!(USART1); | ||
| 214 | declare!(USART2); | ||
| 215 | declare!(USART3); | ||
| 216 | declare!(WWDG); | ||
| 217 | } | ||
| 218 | mod interrupt_vector { | ||
| 219 | extern "C" { | ||
| 220 | fn ADC1(); | ||
| 221 | fn CAN1_RX0(); | ||
| 222 | fn CAN1_RX1(); | ||
| 223 | fn CAN1_SCE(); | ||
| 224 | fn CAN1_TX(); | ||
| 225 | fn COMP(); | ||
| 226 | fn CRS(); | ||
| 227 | fn DCMI(); | ||
| 228 | fn DFSDM1_FLT0(); | ||
| 229 | fn DFSDM1_FLT1(); | ||
| 230 | fn DFSDM1_FLT2(); | ||
| 231 | fn DFSDM1_FLT3(); | ||
| 232 | fn DMA1_Channel1(); | ||
| 233 | fn DMA1_Channel2(); | ||
| 234 | fn DMA1_Channel3(); | ||
| 235 | fn DMA1_Channel4(); | ||
| 236 | fn DMA1_Channel5(); | ||
| 237 | fn DMA1_Channel6(); | ||
| 238 | fn DMA1_Channel7(); | ||
| 239 | fn DMA2D(); | ||
| 240 | fn DMA2_Channel1(); | ||
| 241 | fn DMA2_Channel2(); | ||
| 242 | fn DMA2_Channel3(); | ||
| 243 | fn DMA2_Channel4(); | ||
| 244 | fn DMA2_Channel5(); | ||
| 245 | fn DMA2_Channel6(); | ||
| 246 | fn DMA2_Channel7(); | ||
| 247 | fn DMAMUX1_OVR(); | ||
| 248 | fn DSI(); | ||
| 249 | fn EXTI0(); | ||
| 250 | fn EXTI1(); | ||
| 251 | fn EXTI15_10(); | ||
| 252 | fn EXTI2(); | ||
| 253 | fn EXTI3(); | ||
| 254 | fn EXTI4(); | ||
| 255 | fn EXTI9_5(); | ||
| 256 | fn FLASH(); | ||
| 257 | fn FMC(); | ||
| 258 | fn FPU(); | ||
| 259 | fn GFXMMU(); | ||
| 260 | fn I2C1_ER(); | ||
| 261 | fn I2C1_EV(); | ||
| 262 | fn I2C2_ER(); | ||
| 263 | fn I2C2_EV(); | ||
| 264 | fn I2C3_ER(); | ||
| 265 | fn I2C3_EV(); | ||
| 266 | fn I2C4_ER(); | ||
| 267 | fn I2C4_EV(); | ||
| 268 | fn LPTIM1(); | ||
| 269 | fn LPTIM2(); | ||
| 270 | fn LPUART1(); | ||
| 271 | fn LTDC(); | ||
| 272 | fn LTDC_ER(); | ||
| 273 | fn OCTOSPI1(); | ||
| 274 | fn OCTOSPI2(); | ||
| 275 | fn OTG_FS(); | ||
| 276 | fn PVD_PVM(); | ||
| 277 | fn RCC(); | ||
| 278 | fn RNG(); | ||
| 279 | fn RTC_Alarm(); | ||
| 280 | fn RTC_WKUP(); | ||
| 281 | fn SAI1(); | ||
| 282 | fn SAI2(); | ||
| 283 | fn SDMMC1(); | ||
| 284 | fn SPI1(); | ||
| 285 | fn SPI2(); | ||
| 286 | fn SPI3(); | ||
| 287 | fn TAMP_STAMP(); | ||
| 288 | fn TIM1_BRK_TIM15(); | ||
| 289 | fn TIM1_CC(); | ||
| 290 | fn TIM1_TRG_COM_TIM17(); | ||
| 291 | fn TIM1_UP_TIM16(); | ||
| 292 | fn TIM2(); | ||
| 293 | fn TIM3(); | ||
| 294 | fn TIM4(); | ||
| 295 | fn TIM5(); | ||
| 296 | fn TIM6_DAC(); | ||
| 297 | fn TIM7(); | ||
| 298 | fn TIM8_BRK(); | ||
| 299 | fn TIM8_CC(); | ||
| 300 | fn TIM8_TRG_COM(); | ||
| 301 | fn TIM8_UP(); | ||
| 302 | fn TSC(); | ||
| 303 | fn UART4(); | ||
| 304 | fn UART5(); | ||
| 305 | fn USART1(); | ||
| 306 | fn USART2(); | ||
| 307 | fn USART3(); | ||
| 308 | fn WWDG(); | ||
| 309 | } | ||
| 310 | pub union Vector { | ||
| 311 | _handler: unsafe extern "C" fn(), | ||
| 312 | _reserved: u32, | ||
| 313 | } | ||
| 314 | #[link_section = ".vector_table.interrupts"] | ||
| 315 | #[no_mangle] | ||
| 316 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 317 | Vector { _handler: WWDG }, | ||
| 318 | Vector { _handler: PVD_PVM }, | ||
| 319 | Vector { | ||
| 320 | _handler: TAMP_STAMP, | ||
| 321 | }, | ||
| 322 | Vector { _handler: RTC_WKUP }, | ||
| 323 | Vector { _handler: FLASH }, | ||
| 324 | Vector { _handler: RCC }, | ||
| 325 | Vector { _handler: EXTI0 }, | ||
| 326 | Vector { _handler: EXTI1 }, | ||
| 327 | Vector { _handler: EXTI2 }, | ||
| 328 | Vector { _handler: EXTI3 }, | ||
| 329 | Vector { _handler: EXTI4 }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel1, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel2, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel3, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel4, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel5, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel6, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel7, | ||
| 350 | }, | ||
| 351 | Vector { _handler: ADC1 }, | ||
| 352 | Vector { _handler: CAN1_TX }, | ||
| 353 | Vector { _handler: CAN1_RX0 }, | ||
| 354 | Vector { _handler: CAN1_RX1 }, | ||
| 355 | Vector { _handler: CAN1_SCE }, | ||
| 356 | Vector { _handler: EXTI9_5 }, | ||
| 357 | Vector { | ||
| 358 | _handler: TIM1_BRK_TIM15, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_UP_TIM16, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_TRG_COM_TIM17, | ||
| 365 | }, | ||
| 366 | Vector { _handler: TIM1_CC }, | ||
| 367 | Vector { _handler: TIM2 }, | ||
| 368 | Vector { _handler: TIM3 }, | ||
| 369 | Vector { _handler: TIM4 }, | ||
| 370 | Vector { _handler: I2C1_EV }, | ||
| 371 | Vector { _handler: I2C1_ER }, | ||
| 372 | Vector { _handler: I2C2_EV }, | ||
| 373 | Vector { _handler: I2C2_ER }, | ||
| 374 | Vector { _handler: SPI1 }, | ||
| 375 | Vector { _handler: SPI2 }, | ||
| 376 | Vector { _handler: USART1 }, | ||
| 377 | Vector { _handler: USART2 }, | ||
| 378 | Vector { _handler: USART3 }, | ||
| 379 | Vector { | ||
| 380 | _handler: EXTI15_10, | ||
| 381 | }, | ||
| 382 | Vector { | ||
| 383 | _handler: RTC_Alarm, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: DFSDM1_FLT3, | ||
| 387 | }, | ||
| 388 | Vector { _handler: TIM8_BRK }, | ||
| 389 | Vector { _handler: TIM8_UP }, | ||
| 390 | Vector { | ||
| 391 | _handler: TIM8_TRG_COM, | ||
| 392 | }, | ||
| 393 | Vector { _handler: TIM8_CC }, | ||
| 394 | Vector { _reserved: 0 }, | ||
| 395 | Vector { _handler: FMC }, | ||
| 396 | Vector { _handler: SDMMC1 }, | ||
| 397 | Vector { _handler: TIM5 }, | ||
| 398 | Vector { _handler: SPI3 }, | ||
| 399 | Vector { _handler: UART4 }, | ||
| 400 | Vector { _handler: UART5 }, | ||
| 401 | Vector { _handler: TIM6_DAC }, | ||
| 402 | Vector { _handler: TIM7 }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel1, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel2, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel3, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel4, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel5, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DFSDM1_FLT0, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT1, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT2, | ||
| 426 | }, | ||
| 427 | Vector { _handler: COMP }, | ||
| 428 | Vector { _handler: LPTIM1 }, | ||
| 429 | Vector { _handler: LPTIM2 }, | ||
| 430 | Vector { _handler: OTG_FS }, | ||
| 431 | Vector { | ||
| 432 | _handler: DMA2_Channel6, | ||
| 433 | }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel7, | ||
| 436 | }, | ||
| 437 | Vector { _handler: LPUART1 }, | ||
| 438 | Vector { _handler: OCTOSPI1 }, | ||
| 439 | Vector { _handler: I2C3_EV }, | ||
| 440 | Vector { _handler: I2C3_ER }, | ||
| 441 | Vector { _handler: SAI1 }, | ||
| 442 | Vector { _handler: SAI2 }, | ||
| 443 | Vector { _handler: OCTOSPI2 }, | ||
| 444 | Vector { _handler: TSC }, | ||
| 445 | Vector { _handler: DSI }, | ||
| 446 | Vector { _reserved: 0 }, | ||
| 447 | Vector { _handler: RNG }, | ||
| 448 | Vector { _handler: FPU }, | ||
| 449 | Vector { _handler: CRS }, | ||
| 450 | Vector { _handler: I2C4_ER }, | ||
| 451 | Vector { _handler: I2C4_EV }, | ||
| 452 | Vector { _handler: DCMI }, | ||
| 453 | Vector { _reserved: 0 }, | ||
| 454 | Vector { _reserved: 0 }, | ||
| 455 | Vector { _reserved: 0 }, | ||
| 456 | Vector { _reserved: 0 }, | ||
| 457 | Vector { _handler: DMA2D }, | ||
| 458 | Vector { _handler: LTDC }, | ||
| 459 | Vector { _handler: LTDC_ER }, | ||
| 460 | Vector { _handler: GFXMMU }, | ||
| 461 | Vector { | ||
| 462 | _handler: DMAMUX1_OVR, | ||
| 463 | }, | ||
| 464 | ]; | ||
| 465 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 466 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 467 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 468 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4r9vg.rs b/embassy-stm32/src/chip/stm32l4r9vg.rs index d0f3be660..9d994d7a1 100644 --- a/embassy-stm32/src/chip/stm32l4r9vg.rs +++ b/embassy-stm32/src/chip/stm32l4r9vg.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -15,8 +15,454 @@ peripherals!( | |||
| 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, | 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, |
| 16 | USART2, USART3, USB_OTG_FS, WWDG | 16 | USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | CRS = 82, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | DSI = 78, | ||
| 60 | EXTI0 = 6, | ||
| 61 | EXTI1 = 7, | ||
| 62 | EXTI15_10 = 40, | ||
| 63 | EXTI2 = 8, | ||
| 64 | EXTI3 = 9, | ||
| 65 | EXTI4 = 10, | ||
| 66 | EXTI9_5 = 23, | ||
| 67 | FLASH = 4, | ||
| 68 | FMC = 48, | ||
| 69 | FPU = 81, | ||
| 70 | GFXMMU = 93, | ||
| 71 | I2C1_ER = 32, | ||
| 72 | I2C1_EV = 31, | ||
| 73 | I2C2_ER = 34, | ||
| 74 | I2C2_EV = 33, | ||
| 75 | I2C3_ER = 73, | ||
| 76 | I2C3_EV = 72, | ||
| 77 | I2C4_ER = 83, | ||
| 78 | I2C4_EV = 84, | ||
| 79 | LPTIM1 = 65, | ||
| 80 | LPTIM2 = 66, | ||
| 81 | LPUART1 = 70, | ||
| 82 | LTDC = 91, | ||
| 83 | LTDC_ER = 92, | ||
| 84 | OCTOSPI1 = 71, | ||
| 85 | OCTOSPI2 = 76, | ||
| 86 | OTG_FS = 67, | ||
| 87 | PVD_PVM = 1, | ||
| 88 | RCC = 5, | ||
| 89 | RNG = 80, | ||
| 90 | RTC_Alarm = 41, | ||
| 91 | RTC_WKUP = 3, | ||
| 92 | SAI1 = 74, | ||
| 93 | SAI2 = 75, | ||
| 94 | SDMMC1 = 49, | ||
| 95 | SPI1 = 35, | ||
| 96 | SPI2 = 36, | ||
| 97 | SPI3 = 51, | ||
| 98 | TAMP_STAMP = 2, | ||
| 99 | TIM1_BRK_TIM15 = 24, | ||
| 100 | TIM1_CC = 27, | ||
| 101 | TIM1_TRG_COM_TIM17 = 26, | ||
| 102 | TIM1_UP_TIM16 = 25, | ||
| 103 | TIM2 = 28, | ||
| 104 | TIM3 = 29, | ||
| 105 | TIM4 = 30, | ||
| 106 | TIM5 = 50, | ||
| 107 | TIM6_DAC = 54, | ||
| 108 | TIM7 = 55, | ||
| 109 | TIM8_BRK = 43, | ||
| 110 | TIM8_CC = 46, | ||
| 111 | TIM8_TRG_COM = 45, | ||
| 112 | TIM8_UP = 44, | ||
| 113 | TSC = 77, | ||
| 114 | UART4 = 52, | ||
| 115 | UART5 = 53, | ||
| 116 | USART1 = 37, | ||
| 117 | USART2 = 38, | ||
| 118 | USART3 = 39, | ||
| 119 | WWDG = 0, | ||
| 120 | } | ||
| 121 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 122 | #[inline(always)] | ||
| 123 | fn number(self) -> u16 { | ||
| 124 | self as u16 | ||
| 125 | } | ||
| 126 | } | ||
| 127 | |||
| 128 | declare!(ADC1); | ||
| 129 | declare!(CAN1_RX0); | ||
| 130 | declare!(CAN1_RX1); | ||
| 131 | declare!(CAN1_SCE); | ||
| 132 | declare!(CAN1_TX); | ||
| 133 | declare!(COMP); | ||
| 134 | declare!(CRS); | ||
| 135 | declare!(DCMI); | ||
| 136 | declare!(DFSDM1_FLT0); | ||
| 137 | declare!(DFSDM1_FLT1); | ||
| 138 | declare!(DFSDM1_FLT2); | ||
| 139 | declare!(DFSDM1_FLT3); | ||
| 140 | declare!(DMA1_Channel1); | ||
| 141 | declare!(DMA1_Channel2); | ||
| 142 | declare!(DMA1_Channel3); | ||
| 143 | declare!(DMA1_Channel4); | ||
| 144 | declare!(DMA1_Channel5); | ||
| 145 | declare!(DMA1_Channel6); | ||
| 146 | declare!(DMA1_Channel7); | ||
| 147 | declare!(DMA2D); | ||
| 148 | declare!(DMA2_Channel1); | ||
| 149 | declare!(DMA2_Channel2); | ||
| 150 | declare!(DMA2_Channel3); | ||
| 151 | declare!(DMA2_Channel4); | ||
| 152 | declare!(DMA2_Channel5); | ||
| 153 | declare!(DMA2_Channel6); | ||
| 154 | declare!(DMA2_Channel7); | ||
| 155 | declare!(DMAMUX1_OVR); | ||
| 156 | declare!(DSI); | ||
| 157 | declare!(EXTI0); | ||
| 158 | declare!(EXTI1); | ||
| 159 | declare!(EXTI15_10); | ||
| 160 | declare!(EXTI2); | ||
| 161 | declare!(EXTI3); | ||
| 162 | declare!(EXTI4); | ||
| 163 | declare!(EXTI9_5); | ||
| 164 | declare!(FLASH); | ||
| 165 | declare!(FMC); | ||
| 166 | declare!(FPU); | ||
| 167 | declare!(GFXMMU); | ||
| 168 | declare!(I2C1_ER); | ||
| 169 | declare!(I2C1_EV); | ||
| 170 | declare!(I2C2_ER); | ||
| 171 | declare!(I2C2_EV); | ||
| 172 | declare!(I2C3_ER); | ||
| 173 | declare!(I2C3_EV); | ||
| 174 | declare!(I2C4_ER); | ||
| 175 | declare!(I2C4_EV); | ||
| 176 | declare!(LPTIM1); | ||
| 177 | declare!(LPTIM2); | ||
| 178 | declare!(LPUART1); | ||
| 179 | declare!(LTDC); | ||
| 180 | declare!(LTDC_ER); | ||
| 181 | declare!(OCTOSPI1); | ||
| 182 | declare!(OCTOSPI2); | ||
| 183 | declare!(OTG_FS); | ||
| 184 | declare!(PVD_PVM); | ||
| 185 | declare!(RCC); | ||
| 186 | declare!(RNG); | ||
| 187 | declare!(RTC_Alarm); | ||
| 188 | declare!(RTC_WKUP); | ||
| 189 | declare!(SAI1); | ||
| 190 | declare!(SAI2); | ||
| 191 | declare!(SDMMC1); | ||
| 192 | declare!(SPI1); | ||
| 193 | declare!(SPI2); | ||
| 194 | declare!(SPI3); | ||
| 195 | declare!(TAMP_STAMP); | ||
| 196 | declare!(TIM1_BRK_TIM15); | ||
| 197 | declare!(TIM1_CC); | ||
| 198 | declare!(TIM1_TRG_COM_TIM17); | ||
| 199 | declare!(TIM1_UP_TIM16); | ||
| 200 | declare!(TIM2); | ||
| 201 | declare!(TIM3); | ||
| 202 | declare!(TIM4); | ||
| 203 | declare!(TIM5); | ||
| 204 | declare!(TIM6_DAC); | ||
| 205 | declare!(TIM7); | ||
| 206 | declare!(TIM8_BRK); | ||
| 207 | declare!(TIM8_CC); | ||
| 208 | declare!(TIM8_TRG_COM); | ||
| 209 | declare!(TIM8_UP); | ||
| 210 | declare!(TSC); | ||
| 211 | declare!(UART4); | ||
| 212 | declare!(UART5); | ||
| 213 | declare!(USART1); | ||
| 214 | declare!(USART2); | ||
| 215 | declare!(USART3); | ||
| 216 | declare!(WWDG); | ||
| 217 | } | ||
| 218 | mod interrupt_vector { | ||
| 219 | extern "C" { | ||
| 220 | fn ADC1(); | ||
| 221 | fn CAN1_RX0(); | ||
| 222 | fn CAN1_RX1(); | ||
| 223 | fn CAN1_SCE(); | ||
| 224 | fn CAN1_TX(); | ||
| 225 | fn COMP(); | ||
| 226 | fn CRS(); | ||
| 227 | fn DCMI(); | ||
| 228 | fn DFSDM1_FLT0(); | ||
| 229 | fn DFSDM1_FLT1(); | ||
| 230 | fn DFSDM1_FLT2(); | ||
| 231 | fn DFSDM1_FLT3(); | ||
| 232 | fn DMA1_Channel1(); | ||
| 233 | fn DMA1_Channel2(); | ||
| 234 | fn DMA1_Channel3(); | ||
| 235 | fn DMA1_Channel4(); | ||
| 236 | fn DMA1_Channel5(); | ||
| 237 | fn DMA1_Channel6(); | ||
| 238 | fn DMA1_Channel7(); | ||
| 239 | fn DMA2D(); | ||
| 240 | fn DMA2_Channel1(); | ||
| 241 | fn DMA2_Channel2(); | ||
| 242 | fn DMA2_Channel3(); | ||
| 243 | fn DMA2_Channel4(); | ||
| 244 | fn DMA2_Channel5(); | ||
| 245 | fn DMA2_Channel6(); | ||
| 246 | fn DMA2_Channel7(); | ||
| 247 | fn DMAMUX1_OVR(); | ||
| 248 | fn DSI(); | ||
| 249 | fn EXTI0(); | ||
| 250 | fn EXTI1(); | ||
| 251 | fn EXTI15_10(); | ||
| 252 | fn EXTI2(); | ||
| 253 | fn EXTI3(); | ||
| 254 | fn EXTI4(); | ||
| 255 | fn EXTI9_5(); | ||
| 256 | fn FLASH(); | ||
| 257 | fn FMC(); | ||
| 258 | fn FPU(); | ||
| 259 | fn GFXMMU(); | ||
| 260 | fn I2C1_ER(); | ||
| 261 | fn I2C1_EV(); | ||
| 262 | fn I2C2_ER(); | ||
| 263 | fn I2C2_EV(); | ||
| 264 | fn I2C3_ER(); | ||
| 265 | fn I2C3_EV(); | ||
| 266 | fn I2C4_ER(); | ||
| 267 | fn I2C4_EV(); | ||
| 268 | fn LPTIM1(); | ||
| 269 | fn LPTIM2(); | ||
| 270 | fn LPUART1(); | ||
| 271 | fn LTDC(); | ||
| 272 | fn LTDC_ER(); | ||
| 273 | fn OCTOSPI1(); | ||
| 274 | fn OCTOSPI2(); | ||
| 275 | fn OTG_FS(); | ||
| 276 | fn PVD_PVM(); | ||
| 277 | fn RCC(); | ||
| 278 | fn RNG(); | ||
| 279 | fn RTC_Alarm(); | ||
| 280 | fn RTC_WKUP(); | ||
| 281 | fn SAI1(); | ||
| 282 | fn SAI2(); | ||
| 283 | fn SDMMC1(); | ||
| 284 | fn SPI1(); | ||
| 285 | fn SPI2(); | ||
| 286 | fn SPI3(); | ||
| 287 | fn TAMP_STAMP(); | ||
| 288 | fn TIM1_BRK_TIM15(); | ||
| 289 | fn TIM1_CC(); | ||
| 290 | fn TIM1_TRG_COM_TIM17(); | ||
| 291 | fn TIM1_UP_TIM16(); | ||
| 292 | fn TIM2(); | ||
| 293 | fn TIM3(); | ||
| 294 | fn TIM4(); | ||
| 295 | fn TIM5(); | ||
| 296 | fn TIM6_DAC(); | ||
| 297 | fn TIM7(); | ||
| 298 | fn TIM8_BRK(); | ||
| 299 | fn TIM8_CC(); | ||
| 300 | fn TIM8_TRG_COM(); | ||
| 301 | fn TIM8_UP(); | ||
| 302 | fn TSC(); | ||
| 303 | fn UART4(); | ||
| 304 | fn UART5(); | ||
| 305 | fn USART1(); | ||
| 306 | fn USART2(); | ||
| 307 | fn USART3(); | ||
| 308 | fn WWDG(); | ||
| 309 | } | ||
| 310 | pub union Vector { | ||
| 311 | _handler: unsafe extern "C" fn(), | ||
| 312 | _reserved: u32, | ||
| 313 | } | ||
| 314 | #[link_section = ".vector_table.interrupts"] | ||
| 315 | #[no_mangle] | ||
| 316 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 317 | Vector { _handler: WWDG }, | ||
| 318 | Vector { _handler: PVD_PVM }, | ||
| 319 | Vector { | ||
| 320 | _handler: TAMP_STAMP, | ||
| 321 | }, | ||
| 322 | Vector { _handler: RTC_WKUP }, | ||
| 323 | Vector { _handler: FLASH }, | ||
| 324 | Vector { _handler: RCC }, | ||
| 325 | Vector { _handler: EXTI0 }, | ||
| 326 | Vector { _handler: EXTI1 }, | ||
| 327 | Vector { _handler: EXTI2 }, | ||
| 328 | Vector { _handler: EXTI3 }, | ||
| 329 | Vector { _handler: EXTI4 }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel1, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel2, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel3, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel4, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel5, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel6, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel7, | ||
| 350 | }, | ||
| 351 | Vector { _handler: ADC1 }, | ||
| 352 | Vector { _handler: CAN1_TX }, | ||
| 353 | Vector { _handler: CAN1_RX0 }, | ||
| 354 | Vector { _handler: CAN1_RX1 }, | ||
| 355 | Vector { _handler: CAN1_SCE }, | ||
| 356 | Vector { _handler: EXTI9_5 }, | ||
| 357 | Vector { | ||
| 358 | _handler: TIM1_BRK_TIM15, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_UP_TIM16, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_TRG_COM_TIM17, | ||
| 365 | }, | ||
| 366 | Vector { _handler: TIM1_CC }, | ||
| 367 | Vector { _handler: TIM2 }, | ||
| 368 | Vector { _handler: TIM3 }, | ||
| 369 | Vector { _handler: TIM4 }, | ||
| 370 | Vector { _handler: I2C1_EV }, | ||
| 371 | Vector { _handler: I2C1_ER }, | ||
| 372 | Vector { _handler: I2C2_EV }, | ||
| 373 | Vector { _handler: I2C2_ER }, | ||
| 374 | Vector { _handler: SPI1 }, | ||
| 375 | Vector { _handler: SPI2 }, | ||
| 376 | Vector { _handler: USART1 }, | ||
| 377 | Vector { _handler: USART2 }, | ||
| 378 | Vector { _handler: USART3 }, | ||
| 379 | Vector { | ||
| 380 | _handler: EXTI15_10, | ||
| 381 | }, | ||
| 382 | Vector { | ||
| 383 | _handler: RTC_Alarm, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: DFSDM1_FLT3, | ||
| 387 | }, | ||
| 388 | Vector { _handler: TIM8_BRK }, | ||
| 389 | Vector { _handler: TIM8_UP }, | ||
| 390 | Vector { | ||
| 391 | _handler: TIM8_TRG_COM, | ||
| 392 | }, | ||
| 393 | Vector { _handler: TIM8_CC }, | ||
| 394 | Vector { _reserved: 0 }, | ||
| 395 | Vector { _handler: FMC }, | ||
| 396 | Vector { _handler: SDMMC1 }, | ||
| 397 | Vector { _handler: TIM5 }, | ||
| 398 | Vector { _handler: SPI3 }, | ||
| 399 | Vector { _handler: UART4 }, | ||
| 400 | Vector { _handler: UART5 }, | ||
| 401 | Vector { _handler: TIM6_DAC }, | ||
| 402 | Vector { _handler: TIM7 }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel1, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel2, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel3, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel4, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel5, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DFSDM1_FLT0, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT1, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT2, | ||
| 426 | }, | ||
| 427 | Vector { _handler: COMP }, | ||
| 428 | Vector { _handler: LPTIM1 }, | ||
| 429 | Vector { _handler: LPTIM2 }, | ||
| 430 | Vector { _handler: OTG_FS }, | ||
| 431 | Vector { | ||
| 432 | _handler: DMA2_Channel6, | ||
| 433 | }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel7, | ||
| 436 | }, | ||
| 437 | Vector { _handler: LPUART1 }, | ||
| 438 | Vector { _handler: OCTOSPI1 }, | ||
| 439 | Vector { _handler: I2C3_EV }, | ||
| 440 | Vector { _handler: I2C3_ER }, | ||
| 441 | Vector { _handler: SAI1 }, | ||
| 442 | Vector { _handler: SAI2 }, | ||
| 443 | Vector { _handler: OCTOSPI2 }, | ||
| 444 | Vector { _handler: TSC }, | ||
| 445 | Vector { _handler: DSI }, | ||
| 446 | Vector { _reserved: 0 }, | ||
| 447 | Vector { _handler: RNG }, | ||
| 448 | Vector { _handler: FPU }, | ||
| 449 | Vector { _handler: CRS }, | ||
| 450 | Vector { _handler: I2C4_ER }, | ||
| 451 | Vector { _handler: I2C4_EV }, | ||
| 452 | Vector { _handler: DCMI }, | ||
| 453 | Vector { _reserved: 0 }, | ||
| 454 | Vector { _reserved: 0 }, | ||
| 455 | Vector { _reserved: 0 }, | ||
| 456 | Vector { _reserved: 0 }, | ||
| 457 | Vector { _handler: DMA2D }, | ||
| 458 | Vector { _handler: LTDC }, | ||
| 459 | Vector { _handler: LTDC_ER }, | ||
| 460 | Vector { _handler: GFXMMU }, | ||
| 461 | Vector { | ||
| 462 | _handler: DMAMUX1_OVR, | ||
| 463 | }, | ||
| 464 | ]; | ||
| 465 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 466 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 467 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 468 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4r9vi.rs b/embassy-stm32/src/chip/stm32l4r9vi.rs index d0f3be660..9d994d7a1 100644 --- a/embassy-stm32/src/chip/stm32l4r9vi.rs +++ b/embassy-stm32/src/chip/stm32l4r9vi.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -15,8 +15,454 @@ peripherals!( | |||
| 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, | 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, |
| 16 | USART2, USART3, USB_OTG_FS, WWDG | 16 | USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | CRS = 82, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | DSI = 78, | ||
| 60 | EXTI0 = 6, | ||
| 61 | EXTI1 = 7, | ||
| 62 | EXTI15_10 = 40, | ||
| 63 | EXTI2 = 8, | ||
| 64 | EXTI3 = 9, | ||
| 65 | EXTI4 = 10, | ||
| 66 | EXTI9_5 = 23, | ||
| 67 | FLASH = 4, | ||
| 68 | FMC = 48, | ||
| 69 | FPU = 81, | ||
| 70 | GFXMMU = 93, | ||
| 71 | I2C1_ER = 32, | ||
| 72 | I2C1_EV = 31, | ||
| 73 | I2C2_ER = 34, | ||
| 74 | I2C2_EV = 33, | ||
| 75 | I2C3_ER = 73, | ||
| 76 | I2C3_EV = 72, | ||
| 77 | I2C4_ER = 83, | ||
| 78 | I2C4_EV = 84, | ||
| 79 | LPTIM1 = 65, | ||
| 80 | LPTIM2 = 66, | ||
| 81 | LPUART1 = 70, | ||
| 82 | LTDC = 91, | ||
| 83 | LTDC_ER = 92, | ||
| 84 | OCTOSPI1 = 71, | ||
| 85 | OCTOSPI2 = 76, | ||
| 86 | OTG_FS = 67, | ||
| 87 | PVD_PVM = 1, | ||
| 88 | RCC = 5, | ||
| 89 | RNG = 80, | ||
| 90 | RTC_Alarm = 41, | ||
| 91 | RTC_WKUP = 3, | ||
| 92 | SAI1 = 74, | ||
| 93 | SAI2 = 75, | ||
| 94 | SDMMC1 = 49, | ||
| 95 | SPI1 = 35, | ||
| 96 | SPI2 = 36, | ||
| 97 | SPI3 = 51, | ||
| 98 | TAMP_STAMP = 2, | ||
| 99 | TIM1_BRK_TIM15 = 24, | ||
| 100 | TIM1_CC = 27, | ||
| 101 | TIM1_TRG_COM_TIM17 = 26, | ||
| 102 | TIM1_UP_TIM16 = 25, | ||
| 103 | TIM2 = 28, | ||
| 104 | TIM3 = 29, | ||
| 105 | TIM4 = 30, | ||
| 106 | TIM5 = 50, | ||
| 107 | TIM6_DAC = 54, | ||
| 108 | TIM7 = 55, | ||
| 109 | TIM8_BRK = 43, | ||
| 110 | TIM8_CC = 46, | ||
| 111 | TIM8_TRG_COM = 45, | ||
| 112 | TIM8_UP = 44, | ||
| 113 | TSC = 77, | ||
| 114 | UART4 = 52, | ||
| 115 | UART5 = 53, | ||
| 116 | USART1 = 37, | ||
| 117 | USART2 = 38, | ||
| 118 | USART3 = 39, | ||
| 119 | WWDG = 0, | ||
| 120 | } | ||
| 121 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 122 | #[inline(always)] | ||
| 123 | fn number(self) -> u16 { | ||
| 124 | self as u16 | ||
| 125 | } | ||
| 126 | } | ||
| 127 | |||
| 128 | declare!(ADC1); | ||
| 129 | declare!(CAN1_RX0); | ||
| 130 | declare!(CAN1_RX1); | ||
| 131 | declare!(CAN1_SCE); | ||
| 132 | declare!(CAN1_TX); | ||
| 133 | declare!(COMP); | ||
| 134 | declare!(CRS); | ||
| 135 | declare!(DCMI); | ||
| 136 | declare!(DFSDM1_FLT0); | ||
| 137 | declare!(DFSDM1_FLT1); | ||
| 138 | declare!(DFSDM1_FLT2); | ||
| 139 | declare!(DFSDM1_FLT3); | ||
| 140 | declare!(DMA1_Channel1); | ||
| 141 | declare!(DMA1_Channel2); | ||
| 142 | declare!(DMA1_Channel3); | ||
| 143 | declare!(DMA1_Channel4); | ||
| 144 | declare!(DMA1_Channel5); | ||
| 145 | declare!(DMA1_Channel6); | ||
| 146 | declare!(DMA1_Channel7); | ||
| 147 | declare!(DMA2D); | ||
| 148 | declare!(DMA2_Channel1); | ||
| 149 | declare!(DMA2_Channel2); | ||
| 150 | declare!(DMA2_Channel3); | ||
| 151 | declare!(DMA2_Channel4); | ||
| 152 | declare!(DMA2_Channel5); | ||
| 153 | declare!(DMA2_Channel6); | ||
| 154 | declare!(DMA2_Channel7); | ||
| 155 | declare!(DMAMUX1_OVR); | ||
| 156 | declare!(DSI); | ||
| 157 | declare!(EXTI0); | ||
| 158 | declare!(EXTI1); | ||
| 159 | declare!(EXTI15_10); | ||
| 160 | declare!(EXTI2); | ||
| 161 | declare!(EXTI3); | ||
| 162 | declare!(EXTI4); | ||
| 163 | declare!(EXTI9_5); | ||
| 164 | declare!(FLASH); | ||
| 165 | declare!(FMC); | ||
| 166 | declare!(FPU); | ||
| 167 | declare!(GFXMMU); | ||
| 168 | declare!(I2C1_ER); | ||
| 169 | declare!(I2C1_EV); | ||
| 170 | declare!(I2C2_ER); | ||
| 171 | declare!(I2C2_EV); | ||
| 172 | declare!(I2C3_ER); | ||
| 173 | declare!(I2C3_EV); | ||
| 174 | declare!(I2C4_ER); | ||
| 175 | declare!(I2C4_EV); | ||
| 176 | declare!(LPTIM1); | ||
| 177 | declare!(LPTIM2); | ||
| 178 | declare!(LPUART1); | ||
| 179 | declare!(LTDC); | ||
| 180 | declare!(LTDC_ER); | ||
| 181 | declare!(OCTOSPI1); | ||
| 182 | declare!(OCTOSPI2); | ||
| 183 | declare!(OTG_FS); | ||
| 184 | declare!(PVD_PVM); | ||
| 185 | declare!(RCC); | ||
| 186 | declare!(RNG); | ||
| 187 | declare!(RTC_Alarm); | ||
| 188 | declare!(RTC_WKUP); | ||
| 189 | declare!(SAI1); | ||
| 190 | declare!(SAI2); | ||
| 191 | declare!(SDMMC1); | ||
| 192 | declare!(SPI1); | ||
| 193 | declare!(SPI2); | ||
| 194 | declare!(SPI3); | ||
| 195 | declare!(TAMP_STAMP); | ||
| 196 | declare!(TIM1_BRK_TIM15); | ||
| 197 | declare!(TIM1_CC); | ||
| 198 | declare!(TIM1_TRG_COM_TIM17); | ||
| 199 | declare!(TIM1_UP_TIM16); | ||
| 200 | declare!(TIM2); | ||
| 201 | declare!(TIM3); | ||
| 202 | declare!(TIM4); | ||
| 203 | declare!(TIM5); | ||
| 204 | declare!(TIM6_DAC); | ||
| 205 | declare!(TIM7); | ||
| 206 | declare!(TIM8_BRK); | ||
| 207 | declare!(TIM8_CC); | ||
| 208 | declare!(TIM8_TRG_COM); | ||
| 209 | declare!(TIM8_UP); | ||
| 210 | declare!(TSC); | ||
| 211 | declare!(UART4); | ||
| 212 | declare!(UART5); | ||
| 213 | declare!(USART1); | ||
| 214 | declare!(USART2); | ||
| 215 | declare!(USART3); | ||
| 216 | declare!(WWDG); | ||
| 217 | } | ||
| 218 | mod interrupt_vector { | ||
| 219 | extern "C" { | ||
| 220 | fn ADC1(); | ||
| 221 | fn CAN1_RX0(); | ||
| 222 | fn CAN1_RX1(); | ||
| 223 | fn CAN1_SCE(); | ||
| 224 | fn CAN1_TX(); | ||
| 225 | fn COMP(); | ||
| 226 | fn CRS(); | ||
| 227 | fn DCMI(); | ||
| 228 | fn DFSDM1_FLT0(); | ||
| 229 | fn DFSDM1_FLT1(); | ||
| 230 | fn DFSDM1_FLT2(); | ||
| 231 | fn DFSDM1_FLT3(); | ||
| 232 | fn DMA1_Channel1(); | ||
| 233 | fn DMA1_Channel2(); | ||
| 234 | fn DMA1_Channel3(); | ||
| 235 | fn DMA1_Channel4(); | ||
| 236 | fn DMA1_Channel5(); | ||
| 237 | fn DMA1_Channel6(); | ||
| 238 | fn DMA1_Channel7(); | ||
| 239 | fn DMA2D(); | ||
| 240 | fn DMA2_Channel1(); | ||
| 241 | fn DMA2_Channel2(); | ||
| 242 | fn DMA2_Channel3(); | ||
| 243 | fn DMA2_Channel4(); | ||
| 244 | fn DMA2_Channel5(); | ||
| 245 | fn DMA2_Channel6(); | ||
| 246 | fn DMA2_Channel7(); | ||
| 247 | fn DMAMUX1_OVR(); | ||
| 248 | fn DSI(); | ||
| 249 | fn EXTI0(); | ||
| 250 | fn EXTI1(); | ||
| 251 | fn EXTI15_10(); | ||
| 252 | fn EXTI2(); | ||
| 253 | fn EXTI3(); | ||
| 254 | fn EXTI4(); | ||
| 255 | fn EXTI9_5(); | ||
| 256 | fn FLASH(); | ||
| 257 | fn FMC(); | ||
| 258 | fn FPU(); | ||
| 259 | fn GFXMMU(); | ||
| 260 | fn I2C1_ER(); | ||
| 261 | fn I2C1_EV(); | ||
| 262 | fn I2C2_ER(); | ||
| 263 | fn I2C2_EV(); | ||
| 264 | fn I2C3_ER(); | ||
| 265 | fn I2C3_EV(); | ||
| 266 | fn I2C4_ER(); | ||
| 267 | fn I2C4_EV(); | ||
| 268 | fn LPTIM1(); | ||
| 269 | fn LPTIM2(); | ||
| 270 | fn LPUART1(); | ||
| 271 | fn LTDC(); | ||
| 272 | fn LTDC_ER(); | ||
| 273 | fn OCTOSPI1(); | ||
| 274 | fn OCTOSPI2(); | ||
| 275 | fn OTG_FS(); | ||
| 276 | fn PVD_PVM(); | ||
| 277 | fn RCC(); | ||
| 278 | fn RNG(); | ||
| 279 | fn RTC_Alarm(); | ||
| 280 | fn RTC_WKUP(); | ||
| 281 | fn SAI1(); | ||
| 282 | fn SAI2(); | ||
| 283 | fn SDMMC1(); | ||
| 284 | fn SPI1(); | ||
| 285 | fn SPI2(); | ||
| 286 | fn SPI3(); | ||
| 287 | fn TAMP_STAMP(); | ||
| 288 | fn TIM1_BRK_TIM15(); | ||
| 289 | fn TIM1_CC(); | ||
| 290 | fn TIM1_TRG_COM_TIM17(); | ||
| 291 | fn TIM1_UP_TIM16(); | ||
| 292 | fn TIM2(); | ||
| 293 | fn TIM3(); | ||
| 294 | fn TIM4(); | ||
| 295 | fn TIM5(); | ||
| 296 | fn TIM6_DAC(); | ||
| 297 | fn TIM7(); | ||
| 298 | fn TIM8_BRK(); | ||
| 299 | fn TIM8_CC(); | ||
| 300 | fn TIM8_TRG_COM(); | ||
| 301 | fn TIM8_UP(); | ||
| 302 | fn TSC(); | ||
| 303 | fn UART4(); | ||
| 304 | fn UART5(); | ||
| 305 | fn USART1(); | ||
| 306 | fn USART2(); | ||
| 307 | fn USART3(); | ||
| 308 | fn WWDG(); | ||
| 309 | } | ||
| 310 | pub union Vector { | ||
| 311 | _handler: unsafe extern "C" fn(), | ||
| 312 | _reserved: u32, | ||
| 313 | } | ||
| 314 | #[link_section = ".vector_table.interrupts"] | ||
| 315 | #[no_mangle] | ||
| 316 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 317 | Vector { _handler: WWDG }, | ||
| 318 | Vector { _handler: PVD_PVM }, | ||
| 319 | Vector { | ||
| 320 | _handler: TAMP_STAMP, | ||
| 321 | }, | ||
| 322 | Vector { _handler: RTC_WKUP }, | ||
| 323 | Vector { _handler: FLASH }, | ||
| 324 | Vector { _handler: RCC }, | ||
| 325 | Vector { _handler: EXTI0 }, | ||
| 326 | Vector { _handler: EXTI1 }, | ||
| 327 | Vector { _handler: EXTI2 }, | ||
| 328 | Vector { _handler: EXTI3 }, | ||
| 329 | Vector { _handler: EXTI4 }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel1, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel2, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel3, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel4, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel5, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel6, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel7, | ||
| 350 | }, | ||
| 351 | Vector { _handler: ADC1 }, | ||
| 352 | Vector { _handler: CAN1_TX }, | ||
| 353 | Vector { _handler: CAN1_RX0 }, | ||
| 354 | Vector { _handler: CAN1_RX1 }, | ||
| 355 | Vector { _handler: CAN1_SCE }, | ||
| 356 | Vector { _handler: EXTI9_5 }, | ||
| 357 | Vector { | ||
| 358 | _handler: TIM1_BRK_TIM15, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_UP_TIM16, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_TRG_COM_TIM17, | ||
| 365 | }, | ||
| 366 | Vector { _handler: TIM1_CC }, | ||
| 367 | Vector { _handler: TIM2 }, | ||
| 368 | Vector { _handler: TIM3 }, | ||
| 369 | Vector { _handler: TIM4 }, | ||
| 370 | Vector { _handler: I2C1_EV }, | ||
| 371 | Vector { _handler: I2C1_ER }, | ||
| 372 | Vector { _handler: I2C2_EV }, | ||
| 373 | Vector { _handler: I2C2_ER }, | ||
| 374 | Vector { _handler: SPI1 }, | ||
| 375 | Vector { _handler: SPI2 }, | ||
| 376 | Vector { _handler: USART1 }, | ||
| 377 | Vector { _handler: USART2 }, | ||
| 378 | Vector { _handler: USART3 }, | ||
| 379 | Vector { | ||
| 380 | _handler: EXTI15_10, | ||
| 381 | }, | ||
| 382 | Vector { | ||
| 383 | _handler: RTC_Alarm, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: DFSDM1_FLT3, | ||
| 387 | }, | ||
| 388 | Vector { _handler: TIM8_BRK }, | ||
| 389 | Vector { _handler: TIM8_UP }, | ||
| 390 | Vector { | ||
| 391 | _handler: TIM8_TRG_COM, | ||
| 392 | }, | ||
| 393 | Vector { _handler: TIM8_CC }, | ||
| 394 | Vector { _reserved: 0 }, | ||
| 395 | Vector { _handler: FMC }, | ||
| 396 | Vector { _handler: SDMMC1 }, | ||
| 397 | Vector { _handler: TIM5 }, | ||
| 398 | Vector { _handler: SPI3 }, | ||
| 399 | Vector { _handler: UART4 }, | ||
| 400 | Vector { _handler: UART5 }, | ||
| 401 | Vector { _handler: TIM6_DAC }, | ||
| 402 | Vector { _handler: TIM7 }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel1, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel2, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel3, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel4, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel5, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DFSDM1_FLT0, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT1, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT2, | ||
| 426 | }, | ||
| 427 | Vector { _handler: COMP }, | ||
| 428 | Vector { _handler: LPTIM1 }, | ||
| 429 | Vector { _handler: LPTIM2 }, | ||
| 430 | Vector { _handler: OTG_FS }, | ||
| 431 | Vector { | ||
| 432 | _handler: DMA2_Channel6, | ||
| 433 | }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel7, | ||
| 436 | }, | ||
| 437 | Vector { _handler: LPUART1 }, | ||
| 438 | Vector { _handler: OCTOSPI1 }, | ||
| 439 | Vector { _handler: I2C3_EV }, | ||
| 440 | Vector { _handler: I2C3_ER }, | ||
| 441 | Vector { _handler: SAI1 }, | ||
| 442 | Vector { _handler: SAI2 }, | ||
| 443 | Vector { _handler: OCTOSPI2 }, | ||
| 444 | Vector { _handler: TSC }, | ||
| 445 | Vector { _handler: DSI }, | ||
| 446 | Vector { _reserved: 0 }, | ||
| 447 | Vector { _handler: RNG }, | ||
| 448 | Vector { _handler: FPU }, | ||
| 449 | Vector { _handler: CRS }, | ||
| 450 | Vector { _handler: I2C4_ER }, | ||
| 451 | Vector { _handler: I2C4_EV }, | ||
| 452 | Vector { _handler: DCMI }, | ||
| 453 | Vector { _reserved: 0 }, | ||
| 454 | Vector { _reserved: 0 }, | ||
| 455 | Vector { _reserved: 0 }, | ||
| 456 | Vector { _reserved: 0 }, | ||
| 457 | Vector { _handler: DMA2D }, | ||
| 458 | Vector { _handler: LTDC }, | ||
| 459 | Vector { _handler: LTDC_ER }, | ||
| 460 | Vector { _handler: GFXMMU }, | ||
| 461 | Vector { | ||
| 462 | _handler: DMAMUX1_OVR, | ||
| 463 | }, | ||
| 464 | ]; | ||
| 465 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 466 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 467 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 468 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4r9zg.rs b/embassy-stm32/src/chip/stm32l4r9zg.rs index d0f3be660..9d994d7a1 100644 --- a/embassy-stm32/src/chip/stm32l4r9zg.rs +++ b/embassy-stm32/src/chip/stm32l4r9zg.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -15,8 +15,454 @@ peripherals!( | |||
| 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, | 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, |
| 16 | USART2, USART3, USB_OTG_FS, WWDG | 16 | USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | CRS = 82, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | DSI = 78, | ||
| 60 | EXTI0 = 6, | ||
| 61 | EXTI1 = 7, | ||
| 62 | EXTI15_10 = 40, | ||
| 63 | EXTI2 = 8, | ||
| 64 | EXTI3 = 9, | ||
| 65 | EXTI4 = 10, | ||
| 66 | EXTI9_5 = 23, | ||
| 67 | FLASH = 4, | ||
| 68 | FMC = 48, | ||
| 69 | FPU = 81, | ||
| 70 | GFXMMU = 93, | ||
| 71 | I2C1_ER = 32, | ||
| 72 | I2C1_EV = 31, | ||
| 73 | I2C2_ER = 34, | ||
| 74 | I2C2_EV = 33, | ||
| 75 | I2C3_ER = 73, | ||
| 76 | I2C3_EV = 72, | ||
| 77 | I2C4_ER = 83, | ||
| 78 | I2C4_EV = 84, | ||
| 79 | LPTIM1 = 65, | ||
| 80 | LPTIM2 = 66, | ||
| 81 | LPUART1 = 70, | ||
| 82 | LTDC = 91, | ||
| 83 | LTDC_ER = 92, | ||
| 84 | OCTOSPI1 = 71, | ||
| 85 | OCTOSPI2 = 76, | ||
| 86 | OTG_FS = 67, | ||
| 87 | PVD_PVM = 1, | ||
| 88 | RCC = 5, | ||
| 89 | RNG = 80, | ||
| 90 | RTC_Alarm = 41, | ||
| 91 | RTC_WKUP = 3, | ||
| 92 | SAI1 = 74, | ||
| 93 | SAI2 = 75, | ||
| 94 | SDMMC1 = 49, | ||
| 95 | SPI1 = 35, | ||
| 96 | SPI2 = 36, | ||
| 97 | SPI3 = 51, | ||
| 98 | TAMP_STAMP = 2, | ||
| 99 | TIM1_BRK_TIM15 = 24, | ||
| 100 | TIM1_CC = 27, | ||
| 101 | TIM1_TRG_COM_TIM17 = 26, | ||
| 102 | TIM1_UP_TIM16 = 25, | ||
| 103 | TIM2 = 28, | ||
| 104 | TIM3 = 29, | ||
| 105 | TIM4 = 30, | ||
| 106 | TIM5 = 50, | ||
| 107 | TIM6_DAC = 54, | ||
| 108 | TIM7 = 55, | ||
| 109 | TIM8_BRK = 43, | ||
| 110 | TIM8_CC = 46, | ||
| 111 | TIM8_TRG_COM = 45, | ||
| 112 | TIM8_UP = 44, | ||
| 113 | TSC = 77, | ||
| 114 | UART4 = 52, | ||
| 115 | UART5 = 53, | ||
| 116 | USART1 = 37, | ||
| 117 | USART2 = 38, | ||
| 118 | USART3 = 39, | ||
| 119 | WWDG = 0, | ||
| 120 | } | ||
| 121 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 122 | #[inline(always)] | ||
| 123 | fn number(self) -> u16 { | ||
| 124 | self as u16 | ||
| 125 | } | ||
| 126 | } | ||
| 127 | |||
| 128 | declare!(ADC1); | ||
| 129 | declare!(CAN1_RX0); | ||
| 130 | declare!(CAN1_RX1); | ||
| 131 | declare!(CAN1_SCE); | ||
| 132 | declare!(CAN1_TX); | ||
| 133 | declare!(COMP); | ||
| 134 | declare!(CRS); | ||
| 135 | declare!(DCMI); | ||
| 136 | declare!(DFSDM1_FLT0); | ||
| 137 | declare!(DFSDM1_FLT1); | ||
| 138 | declare!(DFSDM1_FLT2); | ||
| 139 | declare!(DFSDM1_FLT3); | ||
| 140 | declare!(DMA1_Channel1); | ||
| 141 | declare!(DMA1_Channel2); | ||
| 142 | declare!(DMA1_Channel3); | ||
| 143 | declare!(DMA1_Channel4); | ||
| 144 | declare!(DMA1_Channel5); | ||
| 145 | declare!(DMA1_Channel6); | ||
| 146 | declare!(DMA1_Channel7); | ||
| 147 | declare!(DMA2D); | ||
| 148 | declare!(DMA2_Channel1); | ||
| 149 | declare!(DMA2_Channel2); | ||
| 150 | declare!(DMA2_Channel3); | ||
| 151 | declare!(DMA2_Channel4); | ||
| 152 | declare!(DMA2_Channel5); | ||
| 153 | declare!(DMA2_Channel6); | ||
| 154 | declare!(DMA2_Channel7); | ||
| 155 | declare!(DMAMUX1_OVR); | ||
| 156 | declare!(DSI); | ||
| 157 | declare!(EXTI0); | ||
| 158 | declare!(EXTI1); | ||
| 159 | declare!(EXTI15_10); | ||
| 160 | declare!(EXTI2); | ||
| 161 | declare!(EXTI3); | ||
| 162 | declare!(EXTI4); | ||
| 163 | declare!(EXTI9_5); | ||
| 164 | declare!(FLASH); | ||
| 165 | declare!(FMC); | ||
| 166 | declare!(FPU); | ||
| 167 | declare!(GFXMMU); | ||
| 168 | declare!(I2C1_ER); | ||
| 169 | declare!(I2C1_EV); | ||
| 170 | declare!(I2C2_ER); | ||
| 171 | declare!(I2C2_EV); | ||
| 172 | declare!(I2C3_ER); | ||
| 173 | declare!(I2C3_EV); | ||
| 174 | declare!(I2C4_ER); | ||
| 175 | declare!(I2C4_EV); | ||
| 176 | declare!(LPTIM1); | ||
| 177 | declare!(LPTIM2); | ||
| 178 | declare!(LPUART1); | ||
| 179 | declare!(LTDC); | ||
| 180 | declare!(LTDC_ER); | ||
| 181 | declare!(OCTOSPI1); | ||
| 182 | declare!(OCTOSPI2); | ||
| 183 | declare!(OTG_FS); | ||
| 184 | declare!(PVD_PVM); | ||
| 185 | declare!(RCC); | ||
| 186 | declare!(RNG); | ||
| 187 | declare!(RTC_Alarm); | ||
| 188 | declare!(RTC_WKUP); | ||
| 189 | declare!(SAI1); | ||
| 190 | declare!(SAI2); | ||
| 191 | declare!(SDMMC1); | ||
| 192 | declare!(SPI1); | ||
| 193 | declare!(SPI2); | ||
| 194 | declare!(SPI3); | ||
| 195 | declare!(TAMP_STAMP); | ||
| 196 | declare!(TIM1_BRK_TIM15); | ||
| 197 | declare!(TIM1_CC); | ||
| 198 | declare!(TIM1_TRG_COM_TIM17); | ||
| 199 | declare!(TIM1_UP_TIM16); | ||
| 200 | declare!(TIM2); | ||
| 201 | declare!(TIM3); | ||
| 202 | declare!(TIM4); | ||
| 203 | declare!(TIM5); | ||
| 204 | declare!(TIM6_DAC); | ||
| 205 | declare!(TIM7); | ||
| 206 | declare!(TIM8_BRK); | ||
| 207 | declare!(TIM8_CC); | ||
| 208 | declare!(TIM8_TRG_COM); | ||
| 209 | declare!(TIM8_UP); | ||
| 210 | declare!(TSC); | ||
| 211 | declare!(UART4); | ||
| 212 | declare!(UART5); | ||
| 213 | declare!(USART1); | ||
| 214 | declare!(USART2); | ||
| 215 | declare!(USART3); | ||
| 216 | declare!(WWDG); | ||
| 217 | } | ||
| 218 | mod interrupt_vector { | ||
| 219 | extern "C" { | ||
| 220 | fn ADC1(); | ||
| 221 | fn CAN1_RX0(); | ||
| 222 | fn CAN1_RX1(); | ||
| 223 | fn CAN1_SCE(); | ||
| 224 | fn CAN1_TX(); | ||
| 225 | fn COMP(); | ||
| 226 | fn CRS(); | ||
| 227 | fn DCMI(); | ||
| 228 | fn DFSDM1_FLT0(); | ||
| 229 | fn DFSDM1_FLT1(); | ||
| 230 | fn DFSDM1_FLT2(); | ||
| 231 | fn DFSDM1_FLT3(); | ||
| 232 | fn DMA1_Channel1(); | ||
| 233 | fn DMA1_Channel2(); | ||
| 234 | fn DMA1_Channel3(); | ||
| 235 | fn DMA1_Channel4(); | ||
| 236 | fn DMA1_Channel5(); | ||
| 237 | fn DMA1_Channel6(); | ||
| 238 | fn DMA1_Channel7(); | ||
| 239 | fn DMA2D(); | ||
| 240 | fn DMA2_Channel1(); | ||
| 241 | fn DMA2_Channel2(); | ||
| 242 | fn DMA2_Channel3(); | ||
| 243 | fn DMA2_Channel4(); | ||
| 244 | fn DMA2_Channel5(); | ||
| 245 | fn DMA2_Channel6(); | ||
| 246 | fn DMA2_Channel7(); | ||
| 247 | fn DMAMUX1_OVR(); | ||
| 248 | fn DSI(); | ||
| 249 | fn EXTI0(); | ||
| 250 | fn EXTI1(); | ||
| 251 | fn EXTI15_10(); | ||
| 252 | fn EXTI2(); | ||
| 253 | fn EXTI3(); | ||
| 254 | fn EXTI4(); | ||
| 255 | fn EXTI9_5(); | ||
| 256 | fn FLASH(); | ||
| 257 | fn FMC(); | ||
| 258 | fn FPU(); | ||
| 259 | fn GFXMMU(); | ||
| 260 | fn I2C1_ER(); | ||
| 261 | fn I2C1_EV(); | ||
| 262 | fn I2C2_ER(); | ||
| 263 | fn I2C2_EV(); | ||
| 264 | fn I2C3_ER(); | ||
| 265 | fn I2C3_EV(); | ||
| 266 | fn I2C4_ER(); | ||
| 267 | fn I2C4_EV(); | ||
| 268 | fn LPTIM1(); | ||
| 269 | fn LPTIM2(); | ||
| 270 | fn LPUART1(); | ||
| 271 | fn LTDC(); | ||
| 272 | fn LTDC_ER(); | ||
| 273 | fn OCTOSPI1(); | ||
| 274 | fn OCTOSPI2(); | ||
| 275 | fn OTG_FS(); | ||
| 276 | fn PVD_PVM(); | ||
| 277 | fn RCC(); | ||
| 278 | fn RNG(); | ||
| 279 | fn RTC_Alarm(); | ||
| 280 | fn RTC_WKUP(); | ||
| 281 | fn SAI1(); | ||
| 282 | fn SAI2(); | ||
| 283 | fn SDMMC1(); | ||
| 284 | fn SPI1(); | ||
| 285 | fn SPI2(); | ||
| 286 | fn SPI3(); | ||
| 287 | fn TAMP_STAMP(); | ||
| 288 | fn TIM1_BRK_TIM15(); | ||
| 289 | fn TIM1_CC(); | ||
| 290 | fn TIM1_TRG_COM_TIM17(); | ||
| 291 | fn TIM1_UP_TIM16(); | ||
| 292 | fn TIM2(); | ||
| 293 | fn TIM3(); | ||
| 294 | fn TIM4(); | ||
| 295 | fn TIM5(); | ||
| 296 | fn TIM6_DAC(); | ||
| 297 | fn TIM7(); | ||
| 298 | fn TIM8_BRK(); | ||
| 299 | fn TIM8_CC(); | ||
| 300 | fn TIM8_TRG_COM(); | ||
| 301 | fn TIM8_UP(); | ||
| 302 | fn TSC(); | ||
| 303 | fn UART4(); | ||
| 304 | fn UART5(); | ||
| 305 | fn USART1(); | ||
| 306 | fn USART2(); | ||
| 307 | fn USART3(); | ||
| 308 | fn WWDG(); | ||
| 309 | } | ||
| 310 | pub union Vector { | ||
| 311 | _handler: unsafe extern "C" fn(), | ||
| 312 | _reserved: u32, | ||
| 313 | } | ||
| 314 | #[link_section = ".vector_table.interrupts"] | ||
| 315 | #[no_mangle] | ||
| 316 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 317 | Vector { _handler: WWDG }, | ||
| 318 | Vector { _handler: PVD_PVM }, | ||
| 319 | Vector { | ||
| 320 | _handler: TAMP_STAMP, | ||
| 321 | }, | ||
| 322 | Vector { _handler: RTC_WKUP }, | ||
| 323 | Vector { _handler: FLASH }, | ||
| 324 | Vector { _handler: RCC }, | ||
| 325 | Vector { _handler: EXTI0 }, | ||
| 326 | Vector { _handler: EXTI1 }, | ||
| 327 | Vector { _handler: EXTI2 }, | ||
| 328 | Vector { _handler: EXTI3 }, | ||
| 329 | Vector { _handler: EXTI4 }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel1, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel2, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel3, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel4, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel5, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel6, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel7, | ||
| 350 | }, | ||
| 351 | Vector { _handler: ADC1 }, | ||
| 352 | Vector { _handler: CAN1_TX }, | ||
| 353 | Vector { _handler: CAN1_RX0 }, | ||
| 354 | Vector { _handler: CAN1_RX1 }, | ||
| 355 | Vector { _handler: CAN1_SCE }, | ||
| 356 | Vector { _handler: EXTI9_5 }, | ||
| 357 | Vector { | ||
| 358 | _handler: TIM1_BRK_TIM15, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_UP_TIM16, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_TRG_COM_TIM17, | ||
| 365 | }, | ||
| 366 | Vector { _handler: TIM1_CC }, | ||
| 367 | Vector { _handler: TIM2 }, | ||
| 368 | Vector { _handler: TIM3 }, | ||
| 369 | Vector { _handler: TIM4 }, | ||
| 370 | Vector { _handler: I2C1_EV }, | ||
| 371 | Vector { _handler: I2C1_ER }, | ||
| 372 | Vector { _handler: I2C2_EV }, | ||
| 373 | Vector { _handler: I2C2_ER }, | ||
| 374 | Vector { _handler: SPI1 }, | ||
| 375 | Vector { _handler: SPI2 }, | ||
| 376 | Vector { _handler: USART1 }, | ||
| 377 | Vector { _handler: USART2 }, | ||
| 378 | Vector { _handler: USART3 }, | ||
| 379 | Vector { | ||
| 380 | _handler: EXTI15_10, | ||
| 381 | }, | ||
| 382 | Vector { | ||
| 383 | _handler: RTC_Alarm, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: DFSDM1_FLT3, | ||
| 387 | }, | ||
| 388 | Vector { _handler: TIM8_BRK }, | ||
| 389 | Vector { _handler: TIM8_UP }, | ||
| 390 | Vector { | ||
| 391 | _handler: TIM8_TRG_COM, | ||
| 392 | }, | ||
| 393 | Vector { _handler: TIM8_CC }, | ||
| 394 | Vector { _reserved: 0 }, | ||
| 395 | Vector { _handler: FMC }, | ||
| 396 | Vector { _handler: SDMMC1 }, | ||
| 397 | Vector { _handler: TIM5 }, | ||
| 398 | Vector { _handler: SPI3 }, | ||
| 399 | Vector { _handler: UART4 }, | ||
| 400 | Vector { _handler: UART5 }, | ||
| 401 | Vector { _handler: TIM6_DAC }, | ||
| 402 | Vector { _handler: TIM7 }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel1, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel2, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel3, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel4, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel5, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DFSDM1_FLT0, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT1, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT2, | ||
| 426 | }, | ||
| 427 | Vector { _handler: COMP }, | ||
| 428 | Vector { _handler: LPTIM1 }, | ||
| 429 | Vector { _handler: LPTIM2 }, | ||
| 430 | Vector { _handler: OTG_FS }, | ||
| 431 | Vector { | ||
| 432 | _handler: DMA2_Channel6, | ||
| 433 | }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel7, | ||
| 436 | }, | ||
| 437 | Vector { _handler: LPUART1 }, | ||
| 438 | Vector { _handler: OCTOSPI1 }, | ||
| 439 | Vector { _handler: I2C3_EV }, | ||
| 440 | Vector { _handler: I2C3_ER }, | ||
| 441 | Vector { _handler: SAI1 }, | ||
| 442 | Vector { _handler: SAI2 }, | ||
| 443 | Vector { _handler: OCTOSPI2 }, | ||
| 444 | Vector { _handler: TSC }, | ||
| 445 | Vector { _handler: DSI }, | ||
| 446 | Vector { _reserved: 0 }, | ||
| 447 | Vector { _handler: RNG }, | ||
| 448 | Vector { _handler: FPU }, | ||
| 449 | Vector { _handler: CRS }, | ||
| 450 | Vector { _handler: I2C4_ER }, | ||
| 451 | Vector { _handler: I2C4_EV }, | ||
| 452 | Vector { _handler: DCMI }, | ||
| 453 | Vector { _reserved: 0 }, | ||
| 454 | Vector { _reserved: 0 }, | ||
| 455 | Vector { _reserved: 0 }, | ||
| 456 | Vector { _reserved: 0 }, | ||
| 457 | Vector { _handler: DMA2D }, | ||
| 458 | Vector { _handler: LTDC }, | ||
| 459 | Vector { _handler: LTDC_ER }, | ||
| 460 | Vector { _handler: GFXMMU }, | ||
| 461 | Vector { | ||
| 462 | _handler: DMAMUX1_OVR, | ||
| 463 | }, | ||
| 464 | ]; | ||
| 465 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 466 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 467 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 468 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4r9zi.rs b/embassy-stm32/src/chip/stm32l4r9zi.rs index d0f3be660..9d994d7a1 100644 --- a/embassy-stm32/src/chip/stm32l4r9zi.rs +++ b/embassy-stm32/src/chip/stm32l4r9zi.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, PA2, | 4 | EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1, |
| 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, | 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, |
| 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, | 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, |
| 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, | 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, |
| 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| @@ -15,8 +15,454 @@ peripherals!( | |||
| 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, | 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, |
| 16 | USART2, USART3, USB_OTG_FS, WWDG | 16 | USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | CAN1_RX0 = 20, | ||
| 33 | CAN1_RX1 = 21, | ||
| 34 | CAN1_SCE = 22, | ||
| 35 | CAN1_TX = 19, | ||
| 36 | COMP = 64, | ||
| 37 | CRS = 82, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | DSI = 78, | ||
| 60 | EXTI0 = 6, | ||
| 61 | EXTI1 = 7, | ||
| 62 | EXTI15_10 = 40, | ||
| 63 | EXTI2 = 8, | ||
| 64 | EXTI3 = 9, | ||
| 65 | EXTI4 = 10, | ||
| 66 | EXTI9_5 = 23, | ||
| 67 | FLASH = 4, | ||
| 68 | FMC = 48, | ||
| 69 | FPU = 81, | ||
| 70 | GFXMMU = 93, | ||
| 71 | I2C1_ER = 32, | ||
| 72 | I2C1_EV = 31, | ||
| 73 | I2C2_ER = 34, | ||
| 74 | I2C2_EV = 33, | ||
| 75 | I2C3_ER = 73, | ||
| 76 | I2C3_EV = 72, | ||
| 77 | I2C4_ER = 83, | ||
| 78 | I2C4_EV = 84, | ||
| 79 | LPTIM1 = 65, | ||
| 80 | LPTIM2 = 66, | ||
| 81 | LPUART1 = 70, | ||
| 82 | LTDC = 91, | ||
| 83 | LTDC_ER = 92, | ||
| 84 | OCTOSPI1 = 71, | ||
| 85 | OCTOSPI2 = 76, | ||
| 86 | OTG_FS = 67, | ||
| 87 | PVD_PVM = 1, | ||
| 88 | RCC = 5, | ||
| 89 | RNG = 80, | ||
| 90 | RTC_Alarm = 41, | ||
| 91 | RTC_WKUP = 3, | ||
| 92 | SAI1 = 74, | ||
| 93 | SAI2 = 75, | ||
| 94 | SDMMC1 = 49, | ||
| 95 | SPI1 = 35, | ||
| 96 | SPI2 = 36, | ||
| 97 | SPI3 = 51, | ||
| 98 | TAMP_STAMP = 2, | ||
| 99 | TIM1_BRK_TIM15 = 24, | ||
| 100 | TIM1_CC = 27, | ||
| 101 | TIM1_TRG_COM_TIM17 = 26, | ||
| 102 | TIM1_UP_TIM16 = 25, | ||
| 103 | TIM2 = 28, | ||
| 104 | TIM3 = 29, | ||
| 105 | TIM4 = 30, | ||
| 106 | TIM5 = 50, | ||
| 107 | TIM6_DAC = 54, | ||
| 108 | TIM7 = 55, | ||
| 109 | TIM8_BRK = 43, | ||
| 110 | TIM8_CC = 46, | ||
| 111 | TIM8_TRG_COM = 45, | ||
| 112 | TIM8_UP = 44, | ||
| 113 | TSC = 77, | ||
| 114 | UART4 = 52, | ||
| 115 | UART5 = 53, | ||
| 116 | USART1 = 37, | ||
| 117 | USART2 = 38, | ||
| 118 | USART3 = 39, | ||
| 119 | WWDG = 0, | ||
| 120 | } | ||
| 121 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 122 | #[inline(always)] | ||
| 123 | fn number(self) -> u16 { | ||
| 124 | self as u16 | ||
| 125 | } | ||
| 126 | } | ||
| 127 | |||
| 128 | declare!(ADC1); | ||
| 129 | declare!(CAN1_RX0); | ||
| 130 | declare!(CAN1_RX1); | ||
| 131 | declare!(CAN1_SCE); | ||
| 132 | declare!(CAN1_TX); | ||
| 133 | declare!(COMP); | ||
| 134 | declare!(CRS); | ||
| 135 | declare!(DCMI); | ||
| 136 | declare!(DFSDM1_FLT0); | ||
| 137 | declare!(DFSDM1_FLT1); | ||
| 138 | declare!(DFSDM1_FLT2); | ||
| 139 | declare!(DFSDM1_FLT3); | ||
| 140 | declare!(DMA1_Channel1); | ||
| 141 | declare!(DMA1_Channel2); | ||
| 142 | declare!(DMA1_Channel3); | ||
| 143 | declare!(DMA1_Channel4); | ||
| 144 | declare!(DMA1_Channel5); | ||
| 145 | declare!(DMA1_Channel6); | ||
| 146 | declare!(DMA1_Channel7); | ||
| 147 | declare!(DMA2D); | ||
| 148 | declare!(DMA2_Channel1); | ||
| 149 | declare!(DMA2_Channel2); | ||
| 150 | declare!(DMA2_Channel3); | ||
| 151 | declare!(DMA2_Channel4); | ||
| 152 | declare!(DMA2_Channel5); | ||
| 153 | declare!(DMA2_Channel6); | ||
| 154 | declare!(DMA2_Channel7); | ||
| 155 | declare!(DMAMUX1_OVR); | ||
| 156 | declare!(DSI); | ||
| 157 | declare!(EXTI0); | ||
| 158 | declare!(EXTI1); | ||
| 159 | declare!(EXTI15_10); | ||
| 160 | declare!(EXTI2); | ||
| 161 | declare!(EXTI3); | ||
| 162 | declare!(EXTI4); | ||
| 163 | declare!(EXTI9_5); | ||
| 164 | declare!(FLASH); | ||
| 165 | declare!(FMC); | ||
| 166 | declare!(FPU); | ||
| 167 | declare!(GFXMMU); | ||
| 168 | declare!(I2C1_ER); | ||
| 169 | declare!(I2C1_EV); | ||
| 170 | declare!(I2C2_ER); | ||
| 171 | declare!(I2C2_EV); | ||
| 172 | declare!(I2C3_ER); | ||
| 173 | declare!(I2C3_EV); | ||
| 174 | declare!(I2C4_ER); | ||
| 175 | declare!(I2C4_EV); | ||
| 176 | declare!(LPTIM1); | ||
| 177 | declare!(LPTIM2); | ||
| 178 | declare!(LPUART1); | ||
| 179 | declare!(LTDC); | ||
| 180 | declare!(LTDC_ER); | ||
| 181 | declare!(OCTOSPI1); | ||
| 182 | declare!(OCTOSPI2); | ||
| 183 | declare!(OTG_FS); | ||
| 184 | declare!(PVD_PVM); | ||
| 185 | declare!(RCC); | ||
| 186 | declare!(RNG); | ||
| 187 | declare!(RTC_Alarm); | ||
| 188 | declare!(RTC_WKUP); | ||
| 189 | declare!(SAI1); | ||
| 190 | declare!(SAI2); | ||
| 191 | declare!(SDMMC1); | ||
| 192 | declare!(SPI1); | ||
| 193 | declare!(SPI2); | ||
| 194 | declare!(SPI3); | ||
| 195 | declare!(TAMP_STAMP); | ||
| 196 | declare!(TIM1_BRK_TIM15); | ||
| 197 | declare!(TIM1_CC); | ||
| 198 | declare!(TIM1_TRG_COM_TIM17); | ||
| 199 | declare!(TIM1_UP_TIM16); | ||
| 200 | declare!(TIM2); | ||
| 201 | declare!(TIM3); | ||
| 202 | declare!(TIM4); | ||
| 203 | declare!(TIM5); | ||
| 204 | declare!(TIM6_DAC); | ||
| 205 | declare!(TIM7); | ||
| 206 | declare!(TIM8_BRK); | ||
| 207 | declare!(TIM8_CC); | ||
| 208 | declare!(TIM8_TRG_COM); | ||
| 209 | declare!(TIM8_UP); | ||
| 210 | declare!(TSC); | ||
| 211 | declare!(UART4); | ||
| 212 | declare!(UART5); | ||
| 213 | declare!(USART1); | ||
| 214 | declare!(USART2); | ||
| 215 | declare!(USART3); | ||
| 216 | declare!(WWDG); | ||
| 217 | } | ||
| 218 | mod interrupt_vector { | ||
| 219 | extern "C" { | ||
| 220 | fn ADC1(); | ||
| 221 | fn CAN1_RX0(); | ||
| 222 | fn CAN1_RX1(); | ||
| 223 | fn CAN1_SCE(); | ||
| 224 | fn CAN1_TX(); | ||
| 225 | fn COMP(); | ||
| 226 | fn CRS(); | ||
| 227 | fn DCMI(); | ||
| 228 | fn DFSDM1_FLT0(); | ||
| 229 | fn DFSDM1_FLT1(); | ||
| 230 | fn DFSDM1_FLT2(); | ||
| 231 | fn DFSDM1_FLT3(); | ||
| 232 | fn DMA1_Channel1(); | ||
| 233 | fn DMA1_Channel2(); | ||
| 234 | fn DMA1_Channel3(); | ||
| 235 | fn DMA1_Channel4(); | ||
| 236 | fn DMA1_Channel5(); | ||
| 237 | fn DMA1_Channel6(); | ||
| 238 | fn DMA1_Channel7(); | ||
| 239 | fn DMA2D(); | ||
| 240 | fn DMA2_Channel1(); | ||
| 241 | fn DMA2_Channel2(); | ||
| 242 | fn DMA2_Channel3(); | ||
| 243 | fn DMA2_Channel4(); | ||
| 244 | fn DMA2_Channel5(); | ||
| 245 | fn DMA2_Channel6(); | ||
| 246 | fn DMA2_Channel7(); | ||
| 247 | fn DMAMUX1_OVR(); | ||
| 248 | fn DSI(); | ||
| 249 | fn EXTI0(); | ||
| 250 | fn EXTI1(); | ||
| 251 | fn EXTI15_10(); | ||
| 252 | fn EXTI2(); | ||
| 253 | fn EXTI3(); | ||
| 254 | fn EXTI4(); | ||
| 255 | fn EXTI9_5(); | ||
| 256 | fn FLASH(); | ||
| 257 | fn FMC(); | ||
| 258 | fn FPU(); | ||
| 259 | fn GFXMMU(); | ||
| 260 | fn I2C1_ER(); | ||
| 261 | fn I2C1_EV(); | ||
| 262 | fn I2C2_ER(); | ||
| 263 | fn I2C2_EV(); | ||
| 264 | fn I2C3_ER(); | ||
| 265 | fn I2C3_EV(); | ||
| 266 | fn I2C4_ER(); | ||
| 267 | fn I2C4_EV(); | ||
| 268 | fn LPTIM1(); | ||
| 269 | fn LPTIM2(); | ||
| 270 | fn LPUART1(); | ||
| 271 | fn LTDC(); | ||
| 272 | fn LTDC_ER(); | ||
| 273 | fn OCTOSPI1(); | ||
| 274 | fn OCTOSPI2(); | ||
| 275 | fn OTG_FS(); | ||
| 276 | fn PVD_PVM(); | ||
| 277 | fn RCC(); | ||
| 278 | fn RNG(); | ||
| 279 | fn RTC_Alarm(); | ||
| 280 | fn RTC_WKUP(); | ||
| 281 | fn SAI1(); | ||
| 282 | fn SAI2(); | ||
| 283 | fn SDMMC1(); | ||
| 284 | fn SPI1(); | ||
| 285 | fn SPI2(); | ||
| 286 | fn SPI3(); | ||
| 287 | fn TAMP_STAMP(); | ||
| 288 | fn TIM1_BRK_TIM15(); | ||
| 289 | fn TIM1_CC(); | ||
| 290 | fn TIM1_TRG_COM_TIM17(); | ||
| 291 | fn TIM1_UP_TIM16(); | ||
| 292 | fn TIM2(); | ||
| 293 | fn TIM3(); | ||
| 294 | fn TIM4(); | ||
| 295 | fn TIM5(); | ||
| 296 | fn TIM6_DAC(); | ||
| 297 | fn TIM7(); | ||
| 298 | fn TIM8_BRK(); | ||
| 299 | fn TIM8_CC(); | ||
| 300 | fn TIM8_TRG_COM(); | ||
| 301 | fn TIM8_UP(); | ||
| 302 | fn TSC(); | ||
| 303 | fn UART4(); | ||
| 304 | fn UART5(); | ||
| 305 | fn USART1(); | ||
| 306 | fn USART2(); | ||
| 307 | fn USART3(); | ||
| 308 | fn WWDG(); | ||
| 309 | } | ||
| 310 | pub union Vector { | ||
| 311 | _handler: unsafe extern "C" fn(), | ||
| 312 | _reserved: u32, | ||
| 313 | } | ||
| 314 | #[link_section = ".vector_table.interrupts"] | ||
| 315 | #[no_mangle] | ||
| 316 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 317 | Vector { _handler: WWDG }, | ||
| 318 | Vector { _handler: PVD_PVM }, | ||
| 319 | Vector { | ||
| 320 | _handler: TAMP_STAMP, | ||
| 321 | }, | ||
| 322 | Vector { _handler: RTC_WKUP }, | ||
| 323 | Vector { _handler: FLASH }, | ||
| 324 | Vector { _handler: RCC }, | ||
| 325 | Vector { _handler: EXTI0 }, | ||
| 326 | Vector { _handler: EXTI1 }, | ||
| 327 | Vector { _handler: EXTI2 }, | ||
| 328 | Vector { _handler: EXTI3 }, | ||
| 329 | Vector { _handler: EXTI4 }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel1, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel2, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel3, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel4, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel5, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel6, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel7, | ||
| 350 | }, | ||
| 351 | Vector { _handler: ADC1 }, | ||
| 352 | Vector { _handler: CAN1_TX }, | ||
| 353 | Vector { _handler: CAN1_RX0 }, | ||
| 354 | Vector { _handler: CAN1_RX1 }, | ||
| 355 | Vector { _handler: CAN1_SCE }, | ||
| 356 | Vector { _handler: EXTI9_5 }, | ||
| 357 | Vector { | ||
| 358 | _handler: TIM1_BRK_TIM15, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_UP_TIM16, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_TRG_COM_TIM17, | ||
| 365 | }, | ||
| 366 | Vector { _handler: TIM1_CC }, | ||
| 367 | Vector { _handler: TIM2 }, | ||
| 368 | Vector { _handler: TIM3 }, | ||
| 369 | Vector { _handler: TIM4 }, | ||
| 370 | Vector { _handler: I2C1_EV }, | ||
| 371 | Vector { _handler: I2C1_ER }, | ||
| 372 | Vector { _handler: I2C2_EV }, | ||
| 373 | Vector { _handler: I2C2_ER }, | ||
| 374 | Vector { _handler: SPI1 }, | ||
| 375 | Vector { _handler: SPI2 }, | ||
| 376 | Vector { _handler: USART1 }, | ||
| 377 | Vector { _handler: USART2 }, | ||
| 378 | Vector { _handler: USART3 }, | ||
| 379 | Vector { | ||
| 380 | _handler: EXTI15_10, | ||
| 381 | }, | ||
| 382 | Vector { | ||
| 383 | _handler: RTC_Alarm, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: DFSDM1_FLT3, | ||
| 387 | }, | ||
| 388 | Vector { _handler: TIM8_BRK }, | ||
| 389 | Vector { _handler: TIM8_UP }, | ||
| 390 | Vector { | ||
| 391 | _handler: TIM8_TRG_COM, | ||
| 392 | }, | ||
| 393 | Vector { _handler: TIM8_CC }, | ||
| 394 | Vector { _reserved: 0 }, | ||
| 395 | Vector { _handler: FMC }, | ||
| 396 | Vector { _handler: SDMMC1 }, | ||
| 397 | Vector { _handler: TIM5 }, | ||
| 398 | Vector { _handler: SPI3 }, | ||
| 399 | Vector { _handler: UART4 }, | ||
| 400 | Vector { _handler: UART5 }, | ||
| 401 | Vector { _handler: TIM6_DAC }, | ||
| 402 | Vector { _handler: TIM7 }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel1, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel2, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel3, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel4, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel5, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DFSDM1_FLT0, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT1, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT2, | ||
| 426 | }, | ||
| 427 | Vector { _handler: COMP }, | ||
| 428 | Vector { _handler: LPTIM1 }, | ||
| 429 | Vector { _handler: LPTIM2 }, | ||
| 430 | Vector { _handler: OTG_FS }, | ||
| 431 | Vector { | ||
| 432 | _handler: DMA2_Channel6, | ||
| 433 | }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel7, | ||
| 436 | }, | ||
| 437 | Vector { _handler: LPUART1 }, | ||
| 438 | Vector { _handler: OCTOSPI1 }, | ||
| 439 | Vector { _handler: I2C3_EV }, | ||
| 440 | Vector { _handler: I2C3_ER }, | ||
| 441 | Vector { _handler: SAI1 }, | ||
| 442 | Vector { _handler: SAI2 }, | ||
| 443 | Vector { _handler: OCTOSPI2 }, | ||
| 444 | Vector { _handler: TSC }, | ||
| 445 | Vector { _handler: DSI }, | ||
| 446 | Vector { _reserved: 0 }, | ||
| 447 | Vector { _handler: RNG }, | ||
| 448 | Vector { _handler: FPU }, | ||
| 449 | Vector { _handler: CRS }, | ||
| 450 | Vector { _handler: I2C4_ER }, | ||
| 451 | Vector { _handler: I2C4_EV }, | ||
| 452 | Vector { _handler: DCMI }, | ||
| 453 | Vector { _reserved: 0 }, | ||
| 454 | Vector { _reserved: 0 }, | ||
| 455 | Vector { _reserved: 0 }, | ||
| 456 | Vector { _reserved: 0 }, | ||
| 457 | Vector { _handler: DMA2D }, | ||
| 458 | Vector { _handler: LTDC }, | ||
| 459 | Vector { _handler: LTDC_ER }, | ||
| 460 | Vector { _handler: GFXMMU }, | ||
| 461 | Vector { | ||
| 462 | _handler: DMAMUX1_OVR, | ||
| 463 | }, | ||
| 464 | ]; | ||
| 465 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 466 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 467 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 468 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4s5ai.rs b/embassy-stm32/src/chip/stm32l4s5ai.rs index 88d4b7bc6..cac7ba52a 100644 --- a/embassy-stm32/src/chip/stm32l4s5ai.rs +++ b/embassy-stm32/src/chip/stm32l4s5ai.rs | |||
| @@ -1,22 +1,459 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, | 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, |
| 14 | OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, | 14 | OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, |
| 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, | 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, |
| 16 | USART2, USART3, USB_OTG_FS, WWDG | 16 | USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | EXTI0 = 6, | ||
| 60 | EXTI1 = 7, | ||
| 61 | EXTI15_10 = 40, | ||
| 62 | EXTI2 = 8, | ||
| 63 | EXTI3 = 9, | ||
| 64 | EXTI4 = 10, | ||
| 65 | EXTI9_5 = 23, | ||
| 66 | FLASH = 4, | ||
| 67 | FMC = 48, | ||
| 68 | FPU = 81, | ||
| 69 | HASH_CRS = 82, | ||
| 70 | I2C1_ER = 32, | ||
| 71 | I2C1_EV = 31, | ||
| 72 | I2C2_ER = 34, | ||
| 73 | I2C2_EV = 33, | ||
| 74 | I2C3_ER = 73, | ||
| 75 | I2C3_EV = 72, | ||
| 76 | I2C4_ER = 83, | ||
| 77 | I2C4_EV = 84, | ||
| 78 | LPTIM1 = 65, | ||
| 79 | LPTIM2 = 66, | ||
| 80 | LPUART1 = 70, | ||
| 81 | OCTOSPI1 = 71, | ||
| 82 | OCTOSPI2 = 76, | ||
| 83 | OTG_FS = 67, | ||
| 84 | PVD_PVM = 1, | ||
| 85 | RCC = 5, | ||
| 86 | RNG = 80, | ||
| 87 | RTC_Alarm = 41, | ||
| 88 | RTC_WKUP = 3, | ||
| 89 | SAI1 = 74, | ||
| 90 | SAI2 = 75, | ||
| 91 | SDMMC1 = 49, | ||
| 92 | SPI1 = 35, | ||
| 93 | SPI2 = 36, | ||
| 94 | SPI3 = 51, | ||
| 95 | TAMP_STAMP = 2, | ||
| 96 | TIM1_BRK_TIM15 = 24, | ||
| 97 | TIM1_CC = 27, | ||
| 98 | TIM1_TRG_COM_TIM17 = 26, | ||
| 99 | TIM1_UP_TIM16 = 25, | ||
| 100 | TIM2 = 28, | ||
| 101 | TIM3 = 29, | ||
| 102 | TIM4 = 30, | ||
| 103 | TIM5 = 50, | ||
| 104 | TIM6_DAC = 54, | ||
| 105 | TIM7 = 55, | ||
| 106 | TIM8_BRK = 43, | ||
| 107 | TIM8_CC = 46, | ||
| 108 | TIM8_TRG_COM = 45, | ||
| 109 | TIM8_UP = 44, | ||
| 110 | TSC = 77, | ||
| 111 | UART4 = 52, | ||
| 112 | UART5 = 53, | ||
| 113 | USART1 = 37, | ||
| 114 | USART2 = 38, | ||
| 115 | USART3 = 39, | ||
| 116 | WWDG = 0, | ||
| 117 | } | ||
| 118 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 119 | #[inline(always)] | ||
| 120 | fn number(self) -> u16 { | ||
| 121 | self as u16 | ||
| 122 | } | ||
| 123 | } | ||
| 124 | |||
| 125 | declare!(ADC1); | ||
| 126 | declare!(AES); | ||
| 127 | declare!(CAN1_RX0); | ||
| 128 | declare!(CAN1_RX1); | ||
| 129 | declare!(CAN1_SCE); | ||
| 130 | declare!(CAN1_TX); | ||
| 131 | declare!(COMP); | ||
| 132 | declare!(DCMI); | ||
| 133 | declare!(DFSDM1_FLT0); | ||
| 134 | declare!(DFSDM1_FLT1); | ||
| 135 | declare!(DFSDM1_FLT2); | ||
| 136 | declare!(DFSDM1_FLT3); | ||
| 137 | declare!(DMA1_Channel1); | ||
| 138 | declare!(DMA1_Channel2); | ||
| 139 | declare!(DMA1_Channel3); | ||
| 140 | declare!(DMA1_Channel4); | ||
| 141 | declare!(DMA1_Channel5); | ||
| 142 | declare!(DMA1_Channel6); | ||
| 143 | declare!(DMA1_Channel7); | ||
| 144 | declare!(DMA2D); | ||
| 145 | declare!(DMA2_Channel1); | ||
| 146 | declare!(DMA2_Channel2); | ||
| 147 | declare!(DMA2_Channel3); | ||
| 148 | declare!(DMA2_Channel4); | ||
| 149 | declare!(DMA2_Channel5); | ||
| 150 | declare!(DMA2_Channel6); | ||
| 151 | declare!(DMA2_Channel7); | ||
| 152 | declare!(DMAMUX1_OVR); | ||
| 153 | declare!(EXTI0); | ||
| 154 | declare!(EXTI1); | ||
| 155 | declare!(EXTI15_10); | ||
| 156 | declare!(EXTI2); | ||
| 157 | declare!(EXTI3); | ||
| 158 | declare!(EXTI4); | ||
| 159 | declare!(EXTI9_5); | ||
| 160 | declare!(FLASH); | ||
| 161 | declare!(FMC); | ||
| 162 | declare!(FPU); | ||
| 163 | declare!(HASH_CRS); | ||
| 164 | declare!(I2C1_ER); | ||
| 165 | declare!(I2C1_EV); | ||
| 166 | declare!(I2C2_ER); | ||
| 167 | declare!(I2C2_EV); | ||
| 168 | declare!(I2C3_ER); | ||
| 169 | declare!(I2C3_EV); | ||
| 170 | declare!(I2C4_ER); | ||
| 171 | declare!(I2C4_EV); | ||
| 172 | declare!(LPTIM1); | ||
| 173 | declare!(LPTIM2); | ||
| 174 | declare!(LPUART1); | ||
| 175 | declare!(OCTOSPI1); | ||
| 176 | declare!(OCTOSPI2); | ||
| 177 | declare!(OTG_FS); | ||
| 178 | declare!(PVD_PVM); | ||
| 179 | declare!(RCC); | ||
| 180 | declare!(RNG); | ||
| 181 | declare!(RTC_Alarm); | ||
| 182 | declare!(RTC_WKUP); | ||
| 183 | declare!(SAI1); | ||
| 184 | declare!(SAI2); | ||
| 185 | declare!(SDMMC1); | ||
| 186 | declare!(SPI1); | ||
| 187 | declare!(SPI2); | ||
| 188 | declare!(SPI3); | ||
| 189 | declare!(TAMP_STAMP); | ||
| 190 | declare!(TIM1_BRK_TIM15); | ||
| 191 | declare!(TIM1_CC); | ||
| 192 | declare!(TIM1_TRG_COM_TIM17); | ||
| 193 | declare!(TIM1_UP_TIM16); | ||
| 194 | declare!(TIM2); | ||
| 195 | declare!(TIM3); | ||
| 196 | declare!(TIM4); | ||
| 197 | declare!(TIM5); | ||
| 198 | declare!(TIM6_DAC); | ||
| 199 | declare!(TIM7); | ||
| 200 | declare!(TIM8_BRK); | ||
| 201 | declare!(TIM8_CC); | ||
| 202 | declare!(TIM8_TRG_COM); | ||
| 203 | declare!(TIM8_UP); | ||
| 204 | declare!(TSC); | ||
| 205 | declare!(UART4); | ||
| 206 | declare!(UART5); | ||
| 207 | declare!(USART1); | ||
| 208 | declare!(USART2); | ||
| 209 | declare!(USART3); | ||
| 210 | declare!(WWDG); | ||
| 211 | } | ||
| 212 | mod interrupt_vector { | ||
| 213 | extern "C" { | ||
| 214 | fn ADC1(); | ||
| 215 | fn AES(); | ||
| 216 | fn CAN1_RX0(); | ||
| 217 | fn CAN1_RX1(); | ||
| 218 | fn CAN1_SCE(); | ||
| 219 | fn CAN1_TX(); | ||
| 220 | fn COMP(); | ||
| 221 | fn DCMI(); | ||
| 222 | fn DFSDM1_FLT0(); | ||
| 223 | fn DFSDM1_FLT1(); | ||
| 224 | fn DFSDM1_FLT2(); | ||
| 225 | fn DFSDM1_FLT3(); | ||
| 226 | fn DMA1_Channel1(); | ||
| 227 | fn DMA1_Channel2(); | ||
| 228 | fn DMA1_Channel3(); | ||
| 229 | fn DMA1_Channel4(); | ||
| 230 | fn DMA1_Channel5(); | ||
| 231 | fn DMA1_Channel6(); | ||
| 232 | fn DMA1_Channel7(); | ||
| 233 | fn DMA2D(); | ||
| 234 | fn DMA2_Channel1(); | ||
| 235 | fn DMA2_Channel2(); | ||
| 236 | fn DMA2_Channel3(); | ||
| 237 | fn DMA2_Channel4(); | ||
| 238 | fn DMA2_Channel5(); | ||
| 239 | fn DMA2_Channel6(); | ||
| 240 | fn DMA2_Channel7(); | ||
| 241 | fn DMAMUX1_OVR(); | ||
| 242 | fn EXTI0(); | ||
| 243 | fn EXTI1(); | ||
| 244 | fn EXTI15_10(); | ||
| 245 | fn EXTI2(); | ||
| 246 | fn EXTI3(); | ||
| 247 | fn EXTI4(); | ||
| 248 | fn EXTI9_5(); | ||
| 249 | fn FLASH(); | ||
| 250 | fn FMC(); | ||
| 251 | fn FPU(); | ||
| 252 | fn HASH_CRS(); | ||
| 253 | fn I2C1_ER(); | ||
| 254 | fn I2C1_EV(); | ||
| 255 | fn I2C2_ER(); | ||
| 256 | fn I2C2_EV(); | ||
| 257 | fn I2C3_ER(); | ||
| 258 | fn I2C3_EV(); | ||
| 259 | fn I2C4_ER(); | ||
| 260 | fn I2C4_EV(); | ||
| 261 | fn LPTIM1(); | ||
| 262 | fn LPTIM2(); | ||
| 263 | fn LPUART1(); | ||
| 264 | fn OCTOSPI1(); | ||
| 265 | fn OCTOSPI2(); | ||
| 266 | fn OTG_FS(); | ||
| 267 | fn PVD_PVM(); | ||
| 268 | fn RCC(); | ||
| 269 | fn RNG(); | ||
| 270 | fn RTC_Alarm(); | ||
| 271 | fn RTC_WKUP(); | ||
| 272 | fn SAI1(); | ||
| 273 | fn SAI2(); | ||
| 274 | fn SDMMC1(); | ||
| 275 | fn SPI1(); | ||
| 276 | fn SPI2(); | ||
| 277 | fn SPI3(); | ||
| 278 | fn TAMP_STAMP(); | ||
| 279 | fn TIM1_BRK_TIM15(); | ||
| 280 | fn TIM1_CC(); | ||
| 281 | fn TIM1_TRG_COM_TIM17(); | ||
| 282 | fn TIM1_UP_TIM16(); | ||
| 283 | fn TIM2(); | ||
| 284 | fn TIM3(); | ||
| 285 | fn TIM4(); | ||
| 286 | fn TIM5(); | ||
| 287 | fn TIM6_DAC(); | ||
| 288 | fn TIM7(); | ||
| 289 | fn TIM8_BRK(); | ||
| 290 | fn TIM8_CC(); | ||
| 291 | fn TIM8_TRG_COM(); | ||
| 292 | fn TIM8_UP(); | ||
| 293 | fn TSC(); | ||
| 294 | fn UART4(); | ||
| 295 | fn UART5(); | ||
| 296 | fn USART1(); | ||
| 297 | fn USART2(); | ||
| 298 | fn USART3(); | ||
| 299 | fn WWDG(); | ||
| 300 | } | ||
| 301 | pub union Vector { | ||
| 302 | _handler: unsafe extern "C" fn(), | ||
| 303 | _reserved: u32, | ||
| 304 | } | ||
| 305 | #[link_section = ".vector_table.interrupts"] | ||
| 306 | #[no_mangle] | ||
| 307 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 308 | Vector { _handler: WWDG }, | ||
| 309 | Vector { _handler: PVD_PVM }, | ||
| 310 | Vector { | ||
| 311 | _handler: TAMP_STAMP, | ||
| 312 | }, | ||
| 313 | Vector { _handler: RTC_WKUP }, | ||
| 314 | Vector { _handler: FLASH }, | ||
| 315 | Vector { _handler: RCC }, | ||
| 316 | Vector { _handler: EXTI0 }, | ||
| 317 | Vector { _handler: EXTI1 }, | ||
| 318 | Vector { _handler: EXTI2 }, | ||
| 319 | Vector { _handler: EXTI3 }, | ||
| 320 | Vector { _handler: EXTI4 }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel1, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel2, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel3, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel4, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel5, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel6, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel7, | ||
| 341 | }, | ||
| 342 | Vector { _handler: ADC1 }, | ||
| 343 | Vector { _handler: CAN1_TX }, | ||
| 344 | Vector { _handler: CAN1_RX0 }, | ||
| 345 | Vector { _handler: CAN1_RX1 }, | ||
| 346 | Vector { _handler: CAN1_SCE }, | ||
| 347 | Vector { _handler: EXTI9_5 }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_BRK_TIM15, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_UP_TIM16, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_TRG_COM_TIM17, | ||
| 356 | }, | ||
| 357 | Vector { _handler: TIM1_CC }, | ||
| 358 | Vector { _handler: TIM2 }, | ||
| 359 | Vector { _handler: TIM3 }, | ||
| 360 | Vector { _handler: TIM4 }, | ||
| 361 | Vector { _handler: I2C1_EV }, | ||
| 362 | Vector { _handler: I2C1_ER }, | ||
| 363 | Vector { _handler: I2C2_EV }, | ||
| 364 | Vector { _handler: I2C2_ER }, | ||
| 365 | Vector { _handler: SPI1 }, | ||
| 366 | Vector { _handler: SPI2 }, | ||
| 367 | Vector { _handler: USART1 }, | ||
| 368 | Vector { _handler: USART2 }, | ||
| 369 | Vector { _handler: USART3 }, | ||
| 370 | Vector { | ||
| 371 | _handler: EXTI15_10, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: RTC_Alarm, | ||
| 375 | }, | ||
| 376 | Vector { | ||
| 377 | _handler: DFSDM1_FLT3, | ||
| 378 | }, | ||
| 379 | Vector { _handler: TIM8_BRK }, | ||
| 380 | Vector { _handler: TIM8_UP }, | ||
| 381 | Vector { | ||
| 382 | _handler: TIM8_TRG_COM, | ||
| 383 | }, | ||
| 384 | Vector { _handler: TIM8_CC }, | ||
| 385 | Vector { _reserved: 0 }, | ||
| 386 | Vector { _handler: FMC }, | ||
| 387 | Vector { _handler: SDMMC1 }, | ||
| 388 | Vector { _handler: TIM5 }, | ||
| 389 | Vector { _handler: SPI3 }, | ||
| 390 | Vector { _handler: UART4 }, | ||
| 391 | Vector { _handler: UART5 }, | ||
| 392 | Vector { _handler: TIM6_DAC }, | ||
| 393 | Vector { _handler: TIM7 }, | ||
| 394 | Vector { | ||
| 395 | _handler: DMA2_Channel1, | ||
| 396 | }, | ||
| 397 | Vector { | ||
| 398 | _handler: DMA2_Channel2, | ||
| 399 | }, | ||
| 400 | Vector { | ||
| 401 | _handler: DMA2_Channel3, | ||
| 402 | }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel4, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel5, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DFSDM1_FLT0, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DFSDM1_FLT1, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DFSDM1_FLT2, | ||
| 417 | }, | ||
| 418 | Vector { _handler: COMP }, | ||
| 419 | Vector { _handler: LPTIM1 }, | ||
| 420 | Vector { _handler: LPTIM2 }, | ||
| 421 | Vector { _handler: OTG_FS }, | ||
| 422 | Vector { | ||
| 423 | _handler: DMA2_Channel6, | ||
| 424 | }, | ||
| 425 | Vector { | ||
| 426 | _handler: DMA2_Channel7, | ||
| 427 | }, | ||
| 428 | Vector { _handler: LPUART1 }, | ||
| 429 | Vector { _handler: OCTOSPI1 }, | ||
| 430 | Vector { _handler: I2C3_EV }, | ||
| 431 | Vector { _handler: I2C3_ER }, | ||
| 432 | Vector { _handler: SAI1 }, | ||
| 433 | Vector { _handler: SAI2 }, | ||
| 434 | Vector { _handler: OCTOSPI2 }, | ||
| 435 | Vector { _handler: TSC }, | ||
| 436 | Vector { _reserved: 0 }, | ||
| 437 | Vector { _handler: AES }, | ||
| 438 | Vector { _handler: RNG }, | ||
| 439 | Vector { _handler: FPU }, | ||
| 440 | Vector { _handler: HASH_CRS }, | ||
| 441 | Vector { _handler: I2C4_ER }, | ||
| 442 | Vector { _handler: I2C4_EV }, | ||
| 443 | Vector { _handler: DCMI }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _reserved: 0 }, | ||
| 446 | Vector { _reserved: 0 }, | ||
| 447 | Vector { _reserved: 0 }, | ||
| 448 | Vector { _handler: DMA2D }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { _reserved: 0 }, | ||
| 451 | Vector { _reserved: 0 }, | ||
| 452 | Vector { | ||
| 453 | _handler: DMAMUX1_OVR, | ||
| 454 | }, | ||
| 455 | ]; | ||
| 456 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 457 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 458 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 459 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4s5qi.rs b/embassy-stm32/src/chip/stm32l4s5qi.rs index 88d4b7bc6..cac7ba52a 100644 --- a/embassy-stm32/src/chip/stm32l4s5qi.rs +++ b/embassy-stm32/src/chip/stm32l4s5qi.rs | |||
| @@ -1,22 +1,459 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, | 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, |
| 14 | OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, | 14 | OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, |
| 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, | 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, |
| 16 | USART2, USART3, USB_OTG_FS, WWDG | 16 | USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | EXTI0 = 6, | ||
| 60 | EXTI1 = 7, | ||
| 61 | EXTI15_10 = 40, | ||
| 62 | EXTI2 = 8, | ||
| 63 | EXTI3 = 9, | ||
| 64 | EXTI4 = 10, | ||
| 65 | EXTI9_5 = 23, | ||
| 66 | FLASH = 4, | ||
| 67 | FMC = 48, | ||
| 68 | FPU = 81, | ||
| 69 | HASH_CRS = 82, | ||
| 70 | I2C1_ER = 32, | ||
| 71 | I2C1_EV = 31, | ||
| 72 | I2C2_ER = 34, | ||
| 73 | I2C2_EV = 33, | ||
| 74 | I2C3_ER = 73, | ||
| 75 | I2C3_EV = 72, | ||
| 76 | I2C4_ER = 83, | ||
| 77 | I2C4_EV = 84, | ||
| 78 | LPTIM1 = 65, | ||
| 79 | LPTIM2 = 66, | ||
| 80 | LPUART1 = 70, | ||
| 81 | OCTOSPI1 = 71, | ||
| 82 | OCTOSPI2 = 76, | ||
| 83 | OTG_FS = 67, | ||
| 84 | PVD_PVM = 1, | ||
| 85 | RCC = 5, | ||
| 86 | RNG = 80, | ||
| 87 | RTC_Alarm = 41, | ||
| 88 | RTC_WKUP = 3, | ||
| 89 | SAI1 = 74, | ||
| 90 | SAI2 = 75, | ||
| 91 | SDMMC1 = 49, | ||
| 92 | SPI1 = 35, | ||
| 93 | SPI2 = 36, | ||
| 94 | SPI3 = 51, | ||
| 95 | TAMP_STAMP = 2, | ||
| 96 | TIM1_BRK_TIM15 = 24, | ||
| 97 | TIM1_CC = 27, | ||
| 98 | TIM1_TRG_COM_TIM17 = 26, | ||
| 99 | TIM1_UP_TIM16 = 25, | ||
| 100 | TIM2 = 28, | ||
| 101 | TIM3 = 29, | ||
| 102 | TIM4 = 30, | ||
| 103 | TIM5 = 50, | ||
| 104 | TIM6_DAC = 54, | ||
| 105 | TIM7 = 55, | ||
| 106 | TIM8_BRK = 43, | ||
| 107 | TIM8_CC = 46, | ||
| 108 | TIM8_TRG_COM = 45, | ||
| 109 | TIM8_UP = 44, | ||
| 110 | TSC = 77, | ||
| 111 | UART4 = 52, | ||
| 112 | UART5 = 53, | ||
| 113 | USART1 = 37, | ||
| 114 | USART2 = 38, | ||
| 115 | USART3 = 39, | ||
| 116 | WWDG = 0, | ||
| 117 | } | ||
| 118 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 119 | #[inline(always)] | ||
| 120 | fn number(self) -> u16 { | ||
| 121 | self as u16 | ||
| 122 | } | ||
| 123 | } | ||
| 124 | |||
| 125 | declare!(ADC1); | ||
| 126 | declare!(AES); | ||
| 127 | declare!(CAN1_RX0); | ||
| 128 | declare!(CAN1_RX1); | ||
| 129 | declare!(CAN1_SCE); | ||
| 130 | declare!(CAN1_TX); | ||
| 131 | declare!(COMP); | ||
| 132 | declare!(DCMI); | ||
| 133 | declare!(DFSDM1_FLT0); | ||
| 134 | declare!(DFSDM1_FLT1); | ||
| 135 | declare!(DFSDM1_FLT2); | ||
| 136 | declare!(DFSDM1_FLT3); | ||
| 137 | declare!(DMA1_Channel1); | ||
| 138 | declare!(DMA1_Channel2); | ||
| 139 | declare!(DMA1_Channel3); | ||
| 140 | declare!(DMA1_Channel4); | ||
| 141 | declare!(DMA1_Channel5); | ||
| 142 | declare!(DMA1_Channel6); | ||
| 143 | declare!(DMA1_Channel7); | ||
| 144 | declare!(DMA2D); | ||
| 145 | declare!(DMA2_Channel1); | ||
| 146 | declare!(DMA2_Channel2); | ||
| 147 | declare!(DMA2_Channel3); | ||
| 148 | declare!(DMA2_Channel4); | ||
| 149 | declare!(DMA2_Channel5); | ||
| 150 | declare!(DMA2_Channel6); | ||
| 151 | declare!(DMA2_Channel7); | ||
| 152 | declare!(DMAMUX1_OVR); | ||
| 153 | declare!(EXTI0); | ||
| 154 | declare!(EXTI1); | ||
| 155 | declare!(EXTI15_10); | ||
| 156 | declare!(EXTI2); | ||
| 157 | declare!(EXTI3); | ||
| 158 | declare!(EXTI4); | ||
| 159 | declare!(EXTI9_5); | ||
| 160 | declare!(FLASH); | ||
| 161 | declare!(FMC); | ||
| 162 | declare!(FPU); | ||
| 163 | declare!(HASH_CRS); | ||
| 164 | declare!(I2C1_ER); | ||
| 165 | declare!(I2C1_EV); | ||
| 166 | declare!(I2C2_ER); | ||
| 167 | declare!(I2C2_EV); | ||
| 168 | declare!(I2C3_ER); | ||
| 169 | declare!(I2C3_EV); | ||
| 170 | declare!(I2C4_ER); | ||
| 171 | declare!(I2C4_EV); | ||
| 172 | declare!(LPTIM1); | ||
| 173 | declare!(LPTIM2); | ||
| 174 | declare!(LPUART1); | ||
| 175 | declare!(OCTOSPI1); | ||
| 176 | declare!(OCTOSPI2); | ||
| 177 | declare!(OTG_FS); | ||
| 178 | declare!(PVD_PVM); | ||
| 179 | declare!(RCC); | ||
| 180 | declare!(RNG); | ||
| 181 | declare!(RTC_Alarm); | ||
| 182 | declare!(RTC_WKUP); | ||
| 183 | declare!(SAI1); | ||
| 184 | declare!(SAI2); | ||
| 185 | declare!(SDMMC1); | ||
| 186 | declare!(SPI1); | ||
| 187 | declare!(SPI2); | ||
| 188 | declare!(SPI3); | ||
| 189 | declare!(TAMP_STAMP); | ||
| 190 | declare!(TIM1_BRK_TIM15); | ||
| 191 | declare!(TIM1_CC); | ||
| 192 | declare!(TIM1_TRG_COM_TIM17); | ||
| 193 | declare!(TIM1_UP_TIM16); | ||
| 194 | declare!(TIM2); | ||
| 195 | declare!(TIM3); | ||
| 196 | declare!(TIM4); | ||
| 197 | declare!(TIM5); | ||
| 198 | declare!(TIM6_DAC); | ||
| 199 | declare!(TIM7); | ||
| 200 | declare!(TIM8_BRK); | ||
| 201 | declare!(TIM8_CC); | ||
| 202 | declare!(TIM8_TRG_COM); | ||
| 203 | declare!(TIM8_UP); | ||
| 204 | declare!(TSC); | ||
| 205 | declare!(UART4); | ||
| 206 | declare!(UART5); | ||
| 207 | declare!(USART1); | ||
| 208 | declare!(USART2); | ||
| 209 | declare!(USART3); | ||
| 210 | declare!(WWDG); | ||
| 211 | } | ||
| 212 | mod interrupt_vector { | ||
| 213 | extern "C" { | ||
| 214 | fn ADC1(); | ||
| 215 | fn AES(); | ||
| 216 | fn CAN1_RX0(); | ||
| 217 | fn CAN1_RX1(); | ||
| 218 | fn CAN1_SCE(); | ||
| 219 | fn CAN1_TX(); | ||
| 220 | fn COMP(); | ||
| 221 | fn DCMI(); | ||
| 222 | fn DFSDM1_FLT0(); | ||
| 223 | fn DFSDM1_FLT1(); | ||
| 224 | fn DFSDM1_FLT2(); | ||
| 225 | fn DFSDM1_FLT3(); | ||
| 226 | fn DMA1_Channel1(); | ||
| 227 | fn DMA1_Channel2(); | ||
| 228 | fn DMA1_Channel3(); | ||
| 229 | fn DMA1_Channel4(); | ||
| 230 | fn DMA1_Channel5(); | ||
| 231 | fn DMA1_Channel6(); | ||
| 232 | fn DMA1_Channel7(); | ||
| 233 | fn DMA2D(); | ||
| 234 | fn DMA2_Channel1(); | ||
| 235 | fn DMA2_Channel2(); | ||
| 236 | fn DMA2_Channel3(); | ||
| 237 | fn DMA2_Channel4(); | ||
| 238 | fn DMA2_Channel5(); | ||
| 239 | fn DMA2_Channel6(); | ||
| 240 | fn DMA2_Channel7(); | ||
| 241 | fn DMAMUX1_OVR(); | ||
| 242 | fn EXTI0(); | ||
| 243 | fn EXTI1(); | ||
| 244 | fn EXTI15_10(); | ||
| 245 | fn EXTI2(); | ||
| 246 | fn EXTI3(); | ||
| 247 | fn EXTI4(); | ||
| 248 | fn EXTI9_5(); | ||
| 249 | fn FLASH(); | ||
| 250 | fn FMC(); | ||
| 251 | fn FPU(); | ||
| 252 | fn HASH_CRS(); | ||
| 253 | fn I2C1_ER(); | ||
| 254 | fn I2C1_EV(); | ||
| 255 | fn I2C2_ER(); | ||
| 256 | fn I2C2_EV(); | ||
| 257 | fn I2C3_ER(); | ||
| 258 | fn I2C3_EV(); | ||
| 259 | fn I2C4_ER(); | ||
| 260 | fn I2C4_EV(); | ||
| 261 | fn LPTIM1(); | ||
| 262 | fn LPTIM2(); | ||
| 263 | fn LPUART1(); | ||
| 264 | fn OCTOSPI1(); | ||
| 265 | fn OCTOSPI2(); | ||
| 266 | fn OTG_FS(); | ||
| 267 | fn PVD_PVM(); | ||
| 268 | fn RCC(); | ||
| 269 | fn RNG(); | ||
| 270 | fn RTC_Alarm(); | ||
| 271 | fn RTC_WKUP(); | ||
| 272 | fn SAI1(); | ||
| 273 | fn SAI2(); | ||
| 274 | fn SDMMC1(); | ||
| 275 | fn SPI1(); | ||
| 276 | fn SPI2(); | ||
| 277 | fn SPI3(); | ||
| 278 | fn TAMP_STAMP(); | ||
| 279 | fn TIM1_BRK_TIM15(); | ||
| 280 | fn TIM1_CC(); | ||
| 281 | fn TIM1_TRG_COM_TIM17(); | ||
| 282 | fn TIM1_UP_TIM16(); | ||
| 283 | fn TIM2(); | ||
| 284 | fn TIM3(); | ||
| 285 | fn TIM4(); | ||
| 286 | fn TIM5(); | ||
| 287 | fn TIM6_DAC(); | ||
| 288 | fn TIM7(); | ||
| 289 | fn TIM8_BRK(); | ||
| 290 | fn TIM8_CC(); | ||
| 291 | fn TIM8_TRG_COM(); | ||
| 292 | fn TIM8_UP(); | ||
| 293 | fn TSC(); | ||
| 294 | fn UART4(); | ||
| 295 | fn UART5(); | ||
| 296 | fn USART1(); | ||
| 297 | fn USART2(); | ||
| 298 | fn USART3(); | ||
| 299 | fn WWDG(); | ||
| 300 | } | ||
| 301 | pub union Vector { | ||
| 302 | _handler: unsafe extern "C" fn(), | ||
| 303 | _reserved: u32, | ||
| 304 | } | ||
| 305 | #[link_section = ".vector_table.interrupts"] | ||
| 306 | #[no_mangle] | ||
| 307 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 308 | Vector { _handler: WWDG }, | ||
| 309 | Vector { _handler: PVD_PVM }, | ||
| 310 | Vector { | ||
| 311 | _handler: TAMP_STAMP, | ||
| 312 | }, | ||
| 313 | Vector { _handler: RTC_WKUP }, | ||
| 314 | Vector { _handler: FLASH }, | ||
| 315 | Vector { _handler: RCC }, | ||
| 316 | Vector { _handler: EXTI0 }, | ||
| 317 | Vector { _handler: EXTI1 }, | ||
| 318 | Vector { _handler: EXTI2 }, | ||
| 319 | Vector { _handler: EXTI3 }, | ||
| 320 | Vector { _handler: EXTI4 }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel1, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel2, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel3, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel4, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel5, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel6, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel7, | ||
| 341 | }, | ||
| 342 | Vector { _handler: ADC1 }, | ||
| 343 | Vector { _handler: CAN1_TX }, | ||
| 344 | Vector { _handler: CAN1_RX0 }, | ||
| 345 | Vector { _handler: CAN1_RX1 }, | ||
| 346 | Vector { _handler: CAN1_SCE }, | ||
| 347 | Vector { _handler: EXTI9_5 }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_BRK_TIM15, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_UP_TIM16, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_TRG_COM_TIM17, | ||
| 356 | }, | ||
| 357 | Vector { _handler: TIM1_CC }, | ||
| 358 | Vector { _handler: TIM2 }, | ||
| 359 | Vector { _handler: TIM3 }, | ||
| 360 | Vector { _handler: TIM4 }, | ||
| 361 | Vector { _handler: I2C1_EV }, | ||
| 362 | Vector { _handler: I2C1_ER }, | ||
| 363 | Vector { _handler: I2C2_EV }, | ||
| 364 | Vector { _handler: I2C2_ER }, | ||
| 365 | Vector { _handler: SPI1 }, | ||
| 366 | Vector { _handler: SPI2 }, | ||
| 367 | Vector { _handler: USART1 }, | ||
| 368 | Vector { _handler: USART2 }, | ||
| 369 | Vector { _handler: USART3 }, | ||
| 370 | Vector { | ||
| 371 | _handler: EXTI15_10, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: RTC_Alarm, | ||
| 375 | }, | ||
| 376 | Vector { | ||
| 377 | _handler: DFSDM1_FLT3, | ||
| 378 | }, | ||
| 379 | Vector { _handler: TIM8_BRK }, | ||
| 380 | Vector { _handler: TIM8_UP }, | ||
| 381 | Vector { | ||
| 382 | _handler: TIM8_TRG_COM, | ||
| 383 | }, | ||
| 384 | Vector { _handler: TIM8_CC }, | ||
| 385 | Vector { _reserved: 0 }, | ||
| 386 | Vector { _handler: FMC }, | ||
| 387 | Vector { _handler: SDMMC1 }, | ||
| 388 | Vector { _handler: TIM5 }, | ||
| 389 | Vector { _handler: SPI3 }, | ||
| 390 | Vector { _handler: UART4 }, | ||
| 391 | Vector { _handler: UART5 }, | ||
| 392 | Vector { _handler: TIM6_DAC }, | ||
| 393 | Vector { _handler: TIM7 }, | ||
| 394 | Vector { | ||
| 395 | _handler: DMA2_Channel1, | ||
| 396 | }, | ||
| 397 | Vector { | ||
| 398 | _handler: DMA2_Channel2, | ||
| 399 | }, | ||
| 400 | Vector { | ||
| 401 | _handler: DMA2_Channel3, | ||
| 402 | }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel4, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel5, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DFSDM1_FLT0, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DFSDM1_FLT1, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DFSDM1_FLT2, | ||
| 417 | }, | ||
| 418 | Vector { _handler: COMP }, | ||
| 419 | Vector { _handler: LPTIM1 }, | ||
| 420 | Vector { _handler: LPTIM2 }, | ||
| 421 | Vector { _handler: OTG_FS }, | ||
| 422 | Vector { | ||
| 423 | _handler: DMA2_Channel6, | ||
| 424 | }, | ||
| 425 | Vector { | ||
| 426 | _handler: DMA2_Channel7, | ||
| 427 | }, | ||
| 428 | Vector { _handler: LPUART1 }, | ||
| 429 | Vector { _handler: OCTOSPI1 }, | ||
| 430 | Vector { _handler: I2C3_EV }, | ||
| 431 | Vector { _handler: I2C3_ER }, | ||
| 432 | Vector { _handler: SAI1 }, | ||
| 433 | Vector { _handler: SAI2 }, | ||
| 434 | Vector { _handler: OCTOSPI2 }, | ||
| 435 | Vector { _handler: TSC }, | ||
| 436 | Vector { _reserved: 0 }, | ||
| 437 | Vector { _handler: AES }, | ||
| 438 | Vector { _handler: RNG }, | ||
| 439 | Vector { _handler: FPU }, | ||
| 440 | Vector { _handler: HASH_CRS }, | ||
| 441 | Vector { _handler: I2C4_ER }, | ||
| 442 | Vector { _handler: I2C4_EV }, | ||
| 443 | Vector { _handler: DCMI }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _reserved: 0 }, | ||
| 446 | Vector { _reserved: 0 }, | ||
| 447 | Vector { _reserved: 0 }, | ||
| 448 | Vector { _handler: DMA2D }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { _reserved: 0 }, | ||
| 451 | Vector { _reserved: 0 }, | ||
| 452 | Vector { | ||
| 453 | _handler: DMAMUX1_OVR, | ||
| 454 | }, | ||
| 455 | ]; | ||
| 456 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 457 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 458 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 459 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4s5vi.rs b/embassy-stm32/src/chip/stm32l4s5vi.rs index 88d4b7bc6..cac7ba52a 100644 --- a/embassy-stm32/src/chip/stm32l4s5vi.rs +++ b/embassy-stm32/src/chip/stm32l4s5vi.rs | |||
| @@ -1,22 +1,459 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, | 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, |
| 14 | OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, | 14 | OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, |
| 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, | 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, |
| 16 | USART2, USART3, USB_OTG_FS, WWDG | 16 | USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | EXTI0 = 6, | ||
| 60 | EXTI1 = 7, | ||
| 61 | EXTI15_10 = 40, | ||
| 62 | EXTI2 = 8, | ||
| 63 | EXTI3 = 9, | ||
| 64 | EXTI4 = 10, | ||
| 65 | EXTI9_5 = 23, | ||
| 66 | FLASH = 4, | ||
| 67 | FMC = 48, | ||
| 68 | FPU = 81, | ||
| 69 | HASH_CRS = 82, | ||
| 70 | I2C1_ER = 32, | ||
| 71 | I2C1_EV = 31, | ||
| 72 | I2C2_ER = 34, | ||
| 73 | I2C2_EV = 33, | ||
| 74 | I2C3_ER = 73, | ||
| 75 | I2C3_EV = 72, | ||
| 76 | I2C4_ER = 83, | ||
| 77 | I2C4_EV = 84, | ||
| 78 | LPTIM1 = 65, | ||
| 79 | LPTIM2 = 66, | ||
| 80 | LPUART1 = 70, | ||
| 81 | OCTOSPI1 = 71, | ||
| 82 | OCTOSPI2 = 76, | ||
| 83 | OTG_FS = 67, | ||
| 84 | PVD_PVM = 1, | ||
| 85 | RCC = 5, | ||
| 86 | RNG = 80, | ||
| 87 | RTC_Alarm = 41, | ||
| 88 | RTC_WKUP = 3, | ||
| 89 | SAI1 = 74, | ||
| 90 | SAI2 = 75, | ||
| 91 | SDMMC1 = 49, | ||
| 92 | SPI1 = 35, | ||
| 93 | SPI2 = 36, | ||
| 94 | SPI3 = 51, | ||
| 95 | TAMP_STAMP = 2, | ||
| 96 | TIM1_BRK_TIM15 = 24, | ||
| 97 | TIM1_CC = 27, | ||
| 98 | TIM1_TRG_COM_TIM17 = 26, | ||
| 99 | TIM1_UP_TIM16 = 25, | ||
| 100 | TIM2 = 28, | ||
| 101 | TIM3 = 29, | ||
| 102 | TIM4 = 30, | ||
| 103 | TIM5 = 50, | ||
| 104 | TIM6_DAC = 54, | ||
| 105 | TIM7 = 55, | ||
| 106 | TIM8_BRK = 43, | ||
| 107 | TIM8_CC = 46, | ||
| 108 | TIM8_TRG_COM = 45, | ||
| 109 | TIM8_UP = 44, | ||
| 110 | TSC = 77, | ||
| 111 | UART4 = 52, | ||
| 112 | UART5 = 53, | ||
| 113 | USART1 = 37, | ||
| 114 | USART2 = 38, | ||
| 115 | USART3 = 39, | ||
| 116 | WWDG = 0, | ||
| 117 | } | ||
| 118 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 119 | #[inline(always)] | ||
| 120 | fn number(self) -> u16 { | ||
| 121 | self as u16 | ||
| 122 | } | ||
| 123 | } | ||
| 124 | |||
| 125 | declare!(ADC1); | ||
| 126 | declare!(AES); | ||
| 127 | declare!(CAN1_RX0); | ||
| 128 | declare!(CAN1_RX1); | ||
| 129 | declare!(CAN1_SCE); | ||
| 130 | declare!(CAN1_TX); | ||
| 131 | declare!(COMP); | ||
| 132 | declare!(DCMI); | ||
| 133 | declare!(DFSDM1_FLT0); | ||
| 134 | declare!(DFSDM1_FLT1); | ||
| 135 | declare!(DFSDM1_FLT2); | ||
| 136 | declare!(DFSDM1_FLT3); | ||
| 137 | declare!(DMA1_Channel1); | ||
| 138 | declare!(DMA1_Channel2); | ||
| 139 | declare!(DMA1_Channel3); | ||
| 140 | declare!(DMA1_Channel4); | ||
| 141 | declare!(DMA1_Channel5); | ||
| 142 | declare!(DMA1_Channel6); | ||
| 143 | declare!(DMA1_Channel7); | ||
| 144 | declare!(DMA2D); | ||
| 145 | declare!(DMA2_Channel1); | ||
| 146 | declare!(DMA2_Channel2); | ||
| 147 | declare!(DMA2_Channel3); | ||
| 148 | declare!(DMA2_Channel4); | ||
| 149 | declare!(DMA2_Channel5); | ||
| 150 | declare!(DMA2_Channel6); | ||
| 151 | declare!(DMA2_Channel7); | ||
| 152 | declare!(DMAMUX1_OVR); | ||
| 153 | declare!(EXTI0); | ||
| 154 | declare!(EXTI1); | ||
| 155 | declare!(EXTI15_10); | ||
| 156 | declare!(EXTI2); | ||
| 157 | declare!(EXTI3); | ||
| 158 | declare!(EXTI4); | ||
| 159 | declare!(EXTI9_5); | ||
| 160 | declare!(FLASH); | ||
| 161 | declare!(FMC); | ||
| 162 | declare!(FPU); | ||
| 163 | declare!(HASH_CRS); | ||
| 164 | declare!(I2C1_ER); | ||
| 165 | declare!(I2C1_EV); | ||
| 166 | declare!(I2C2_ER); | ||
| 167 | declare!(I2C2_EV); | ||
| 168 | declare!(I2C3_ER); | ||
| 169 | declare!(I2C3_EV); | ||
| 170 | declare!(I2C4_ER); | ||
| 171 | declare!(I2C4_EV); | ||
| 172 | declare!(LPTIM1); | ||
| 173 | declare!(LPTIM2); | ||
| 174 | declare!(LPUART1); | ||
| 175 | declare!(OCTOSPI1); | ||
| 176 | declare!(OCTOSPI2); | ||
| 177 | declare!(OTG_FS); | ||
| 178 | declare!(PVD_PVM); | ||
| 179 | declare!(RCC); | ||
| 180 | declare!(RNG); | ||
| 181 | declare!(RTC_Alarm); | ||
| 182 | declare!(RTC_WKUP); | ||
| 183 | declare!(SAI1); | ||
| 184 | declare!(SAI2); | ||
| 185 | declare!(SDMMC1); | ||
| 186 | declare!(SPI1); | ||
| 187 | declare!(SPI2); | ||
| 188 | declare!(SPI3); | ||
| 189 | declare!(TAMP_STAMP); | ||
| 190 | declare!(TIM1_BRK_TIM15); | ||
| 191 | declare!(TIM1_CC); | ||
| 192 | declare!(TIM1_TRG_COM_TIM17); | ||
| 193 | declare!(TIM1_UP_TIM16); | ||
| 194 | declare!(TIM2); | ||
| 195 | declare!(TIM3); | ||
| 196 | declare!(TIM4); | ||
| 197 | declare!(TIM5); | ||
| 198 | declare!(TIM6_DAC); | ||
| 199 | declare!(TIM7); | ||
| 200 | declare!(TIM8_BRK); | ||
| 201 | declare!(TIM8_CC); | ||
| 202 | declare!(TIM8_TRG_COM); | ||
| 203 | declare!(TIM8_UP); | ||
| 204 | declare!(TSC); | ||
| 205 | declare!(UART4); | ||
| 206 | declare!(UART5); | ||
| 207 | declare!(USART1); | ||
| 208 | declare!(USART2); | ||
| 209 | declare!(USART3); | ||
| 210 | declare!(WWDG); | ||
| 211 | } | ||
| 212 | mod interrupt_vector { | ||
| 213 | extern "C" { | ||
| 214 | fn ADC1(); | ||
| 215 | fn AES(); | ||
| 216 | fn CAN1_RX0(); | ||
| 217 | fn CAN1_RX1(); | ||
| 218 | fn CAN1_SCE(); | ||
| 219 | fn CAN1_TX(); | ||
| 220 | fn COMP(); | ||
| 221 | fn DCMI(); | ||
| 222 | fn DFSDM1_FLT0(); | ||
| 223 | fn DFSDM1_FLT1(); | ||
| 224 | fn DFSDM1_FLT2(); | ||
| 225 | fn DFSDM1_FLT3(); | ||
| 226 | fn DMA1_Channel1(); | ||
| 227 | fn DMA1_Channel2(); | ||
| 228 | fn DMA1_Channel3(); | ||
| 229 | fn DMA1_Channel4(); | ||
| 230 | fn DMA1_Channel5(); | ||
| 231 | fn DMA1_Channel6(); | ||
| 232 | fn DMA1_Channel7(); | ||
| 233 | fn DMA2D(); | ||
| 234 | fn DMA2_Channel1(); | ||
| 235 | fn DMA2_Channel2(); | ||
| 236 | fn DMA2_Channel3(); | ||
| 237 | fn DMA2_Channel4(); | ||
| 238 | fn DMA2_Channel5(); | ||
| 239 | fn DMA2_Channel6(); | ||
| 240 | fn DMA2_Channel7(); | ||
| 241 | fn DMAMUX1_OVR(); | ||
| 242 | fn EXTI0(); | ||
| 243 | fn EXTI1(); | ||
| 244 | fn EXTI15_10(); | ||
| 245 | fn EXTI2(); | ||
| 246 | fn EXTI3(); | ||
| 247 | fn EXTI4(); | ||
| 248 | fn EXTI9_5(); | ||
| 249 | fn FLASH(); | ||
| 250 | fn FMC(); | ||
| 251 | fn FPU(); | ||
| 252 | fn HASH_CRS(); | ||
| 253 | fn I2C1_ER(); | ||
| 254 | fn I2C1_EV(); | ||
| 255 | fn I2C2_ER(); | ||
| 256 | fn I2C2_EV(); | ||
| 257 | fn I2C3_ER(); | ||
| 258 | fn I2C3_EV(); | ||
| 259 | fn I2C4_ER(); | ||
| 260 | fn I2C4_EV(); | ||
| 261 | fn LPTIM1(); | ||
| 262 | fn LPTIM2(); | ||
| 263 | fn LPUART1(); | ||
| 264 | fn OCTOSPI1(); | ||
| 265 | fn OCTOSPI2(); | ||
| 266 | fn OTG_FS(); | ||
| 267 | fn PVD_PVM(); | ||
| 268 | fn RCC(); | ||
| 269 | fn RNG(); | ||
| 270 | fn RTC_Alarm(); | ||
| 271 | fn RTC_WKUP(); | ||
| 272 | fn SAI1(); | ||
| 273 | fn SAI2(); | ||
| 274 | fn SDMMC1(); | ||
| 275 | fn SPI1(); | ||
| 276 | fn SPI2(); | ||
| 277 | fn SPI3(); | ||
| 278 | fn TAMP_STAMP(); | ||
| 279 | fn TIM1_BRK_TIM15(); | ||
| 280 | fn TIM1_CC(); | ||
| 281 | fn TIM1_TRG_COM_TIM17(); | ||
| 282 | fn TIM1_UP_TIM16(); | ||
| 283 | fn TIM2(); | ||
| 284 | fn TIM3(); | ||
| 285 | fn TIM4(); | ||
| 286 | fn TIM5(); | ||
| 287 | fn TIM6_DAC(); | ||
| 288 | fn TIM7(); | ||
| 289 | fn TIM8_BRK(); | ||
| 290 | fn TIM8_CC(); | ||
| 291 | fn TIM8_TRG_COM(); | ||
| 292 | fn TIM8_UP(); | ||
| 293 | fn TSC(); | ||
| 294 | fn UART4(); | ||
| 295 | fn UART5(); | ||
| 296 | fn USART1(); | ||
| 297 | fn USART2(); | ||
| 298 | fn USART3(); | ||
| 299 | fn WWDG(); | ||
| 300 | } | ||
| 301 | pub union Vector { | ||
| 302 | _handler: unsafe extern "C" fn(), | ||
| 303 | _reserved: u32, | ||
| 304 | } | ||
| 305 | #[link_section = ".vector_table.interrupts"] | ||
| 306 | #[no_mangle] | ||
| 307 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 308 | Vector { _handler: WWDG }, | ||
| 309 | Vector { _handler: PVD_PVM }, | ||
| 310 | Vector { | ||
| 311 | _handler: TAMP_STAMP, | ||
| 312 | }, | ||
| 313 | Vector { _handler: RTC_WKUP }, | ||
| 314 | Vector { _handler: FLASH }, | ||
| 315 | Vector { _handler: RCC }, | ||
| 316 | Vector { _handler: EXTI0 }, | ||
| 317 | Vector { _handler: EXTI1 }, | ||
| 318 | Vector { _handler: EXTI2 }, | ||
| 319 | Vector { _handler: EXTI3 }, | ||
| 320 | Vector { _handler: EXTI4 }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel1, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel2, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel3, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel4, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel5, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel6, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel7, | ||
| 341 | }, | ||
| 342 | Vector { _handler: ADC1 }, | ||
| 343 | Vector { _handler: CAN1_TX }, | ||
| 344 | Vector { _handler: CAN1_RX0 }, | ||
| 345 | Vector { _handler: CAN1_RX1 }, | ||
| 346 | Vector { _handler: CAN1_SCE }, | ||
| 347 | Vector { _handler: EXTI9_5 }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_BRK_TIM15, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_UP_TIM16, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_TRG_COM_TIM17, | ||
| 356 | }, | ||
| 357 | Vector { _handler: TIM1_CC }, | ||
| 358 | Vector { _handler: TIM2 }, | ||
| 359 | Vector { _handler: TIM3 }, | ||
| 360 | Vector { _handler: TIM4 }, | ||
| 361 | Vector { _handler: I2C1_EV }, | ||
| 362 | Vector { _handler: I2C1_ER }, | ||
| 363 | Vector { _handler: I2C2_EV }, | ||
| 364 | Vector { _handler: I2C2_ER }, | ||
| 365 | Vector { _handler: SPI1 }, | ||
| 366 | Vector { _handler: SPI2 }, | ||
| 367 | Vector { _handler: USART1 }, | ||
| 368 | Vector { _handler: USART2 }, | ||
| 369 | Vector { _handler: USART3 }, | ||
| 370 | Vector { | ||
| 371 | _handler: EXTI15_10, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: RTC_Alarm, | ||
| 375 | }, | ||
| 376 | Vector { | ||
| 377 | _handler: DFSDM1_FLT3, | ||
| 378 | }, | ||
| 379 | Vector { _handler: TIM8_BRK }, | ||
| 380 | Vector { _handler: TIM8_UP }, | ||
| 381 | Vector { | ||
| 382 | _handler: TIM8_TRG_COM, | ||
| 383 | }, | ||
| 384 | Vector { _handler: TIM8_CC }, | ||
| 385 | Vector { _reserved: 0 }, | ||
| 386 | Vector { _handler: FMC }, | ||
| 387 | Vector { _handler: SDMMC1 }, | ||
| 388 | Vector { _handler: TIM5 }, | ||
| 389 | Vector { _handler: SPI3 }, | ||
| 390 | Vector { _handler: UART4 }, | ||
| 391 | Vector { _handler: UART5 }, | ||
| 392 | Vector { _handler: TIM6_DAC }, | ||
| 393 | Vector { _handler: TIM7 }, | ||
| 394 | Vector { | ||
| 395 | _handler: DMA2_Channel1, | ||
| 396 | }, | ||
| 397 | Vector { | ||
| 398 | _handler: DMA2_Channel2, | ||
| 399 | }, | ||
| 400 | Vector { | ||
| 401 | _handler: DMA2_Channel3, | ||
| 402 | }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel4, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel5, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DFSDM1_FLT0, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DFSDM1_FLT1, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DFSDM1_FLT2, | ||
| 417 | }, | ||
| 418 | Vector { _handler: COMP }, | ||
| 419 | Vector { _handler: LPTIM1 }, | ||
| 420 | Vector { _handler: LPTIM2 }, | ||
| 421 | Vector { _handler: OTG_FS }, | ||
| 422 | Vector { | ||
| 423 | _handler: DMA2_Channel6, | ||
| 424 | }, | ||
| 425 | Vector { | ||
| 426 | _handler: DMA2_Channel7, | ||
| 427 | }, | ||
| 428 | Vector { _handler: LPUART1 }, | ||
| 429 | Vector { _handler: OCTOSPI1 }, | ||
| 430 | Vector { _handler: I2C3_EV }, | ||
| 431 | Vector { _handler: I2C3_ER }, | ||
| 432 | Vector { _handler: SAI1 }, | ||
| 433 | Vector { _handler: SAI2 }, | ||
| 434 | Vector { _handler: OCTOSPI2 }, | ||
| 435 | Vector { _handler: TSC }, | ||
| 436 | Vector { _reserved: 0 }, | ||
| 437 | Vector { _handler: AES }, | ||
| 438 | Vector { _handler: RNG }, | ||
| 439 | Vector { _handler: FPU }, | ||
| 440 | Vector { _handler: HASH_CRS }, | ||
| 441 | Vector { _handler: I2C4_ER }, | ||
| 442 | Vector { _handler: I2C4_EV }, | ||
| 443 | Vector { _handler: DCMI }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _reserved: 0 }, | ||
| 446 | Vector { _reserved: 0 }, | ||
| 447 | Vector { _reserved: 0 }, | ||
| 448 | Vector { _handler: DMA2D }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { _reserved: 0 }, | ||
| 451 | Vector { _reserved: 0 }, | ||
| 452 | Vector { | ||
| 453 | _handler: DMAMUX1_OVR, | ||
| 454 | }, | ||
| 455 | ]; | ||
| 456 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 457 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 458 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 459 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4s5zi.rs b/embassy-stm32/src/chip/stm32l4s5zi.rs index 88d4b7bc6..cac7ba52a 100644 --- a/embassy-stm32/src/chip/stm32l4s5zi.rs +++ b/embassy-stm32/src/chip/stm32l4s5zi.rs | |||
| @@ -1,22 +1,459 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, | 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, |
| 5 | PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, | 5 | PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, |
| 6 | PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, | 6 | PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, |
| 7 | PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, | 7 | PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, |
| 8 | PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, | 8 | PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, |
| 9 | PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, | 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, |
| 10 | PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, | 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, |
| 11 | PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, | 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, |
| 12 | PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, | 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, |
| 13 | PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, | 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, |
| 14 | OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, | 14 | OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, |
| 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, | 15 | TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, |
| 16 | USART2, USART3, USB_OTG_FS, WWDG | 16 | USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | EXTI0 = 6, | ||
| 60 | EXTI1 = 7, | ||
| 61 | EXTI15_10 = 40, | ||
| 62 | EXTI2 = 8, | ||
| 63 | EXTI3 = 9, | ||
| 64 | EXTI4 = 10, | ||
| 65 | EXTI9_5 = 23, | ||
| 66 | FLASH = 4, | ||
| 67 | FMC = 48, | ||
| 68 | FPU = 81, | ||
| 69 | HASH_CRS = 82, | ||
| 70 | I2C1_ER = 32, | ||
| 71 | I2C1_EV = 31, | ||
| 72 | I2C2_ER = 34, | ||
| 73 | I2C2_EV = 33, | ||
| 74 | I2C3_ER = 73, | ||
| 75 | I2C3_EV = 72, | ||
| 76 | I2C4_ER = 83, | ||
| 77 | I2C4_EV = 84, | ||
| 78 | LPTIM1 = 65, | ||
| 79 | LPTIM2 = 66, | ||
| 80 | LPUART1 = 70, | ||
| 81 | OCTOSPI1 = 71, | ||
| 82 | OCTOSPI2 = 76, | ||
| 83 | OTG_FS = 67, | ||
| 84 | PVD_PVM = 1, | ||
| 85 | RCC = 5, | ||
| 86 | RNG = 80, | ||
| 87 | RTC_Alarm = 41, | ||
| 88 | RTC_WKUP = 3, | ||
| 89 | SAI1 = 74, | ||
| 90 | SAI2 = 75, | ||
| 91 | SDMMC1 = 49, | ||
| 92 | SPI1 = 35, | ||
| 93 | SPI2 = 36, | ||
| 94 | SPI3 = 51, | ||
| 95 | TAMP_STAMP = 2, | ||
| 96 | TIM1_BRK_TIM15 = 24, | ||
| 97 | TIM1_CC = 27, | ||
| 98 | TIM1_TRG_COM_TIM17 = 26, | ||
| 99 | TIM1_UP_TIM16 = 25, | ||
| 100 | TIM2 = 28, | ||
| 101 | TIM3 = 29, | ||
| 102 | TIM4 = 30, | ||
| 103 | TIM5 = 50, | ||
| 104 | TIM6_DAC = 54, | ||
| 105 | TIM7 = 55, | ||
| 106 | TIM8_BRK = 43, | ||
| 107 | TIM8_CC = 46, | ||
| 108 | TIM8_TRG_COM = 45, | ||
| 109 | TIM8_UP = 44, | ||
| 110 | TSC = 77, | ||
| 111 | UART4 = 52, | ||
| 112 | UART5 = 53, | ||
| 113 | USART1 = 37, | ||
| 114 | USART2 = 38, | ||
| 115 | USART3 = 39, | ||
| 116 | WWDG = 0, | ||
| 117 | } | ||
| 118 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 119 | #[inline(always)] | ||
| 120 | fn number(self) -> u16 { | ||
| 121 | self as u16 | ||
| 122 | } | ||
| 123 | } | ||
| 124 | |||
| 125 | declare!(ADC1); | ||
| 126 | declare!(AES); | ||
| 127 | declare!(CAN1_RX0); | ||
| 128 | declare!(CAN1_RX1); | ||
| 129 | declare!(CAN1_SCE); | ||
| 130 | declare!(CAN1_TX); | ||
| 131 | declare!(COMP); | ||
| 132 | declare!(DCMI); | ||
| 133 | declare!(DFSDM1_FLT0); | ||
| 134 | declare!(DFSDM1_FLT1); | ||
| 135 | declare!(DFSDM1_FLT2); | ||
| 136 | declare!(DFSDM1_FLT3); | ||
| 137 | declare!(DMA1_Channel1); | ||
| 138 | declare!(DMA1_Channel2); | ||
| 139 | declare!(DMA1_Channel3); | ||
| 140 | declare!(DMA1_Channel4); | ||
| 141 | declare!(DMA1_Channel5); | ||
| 142 | declare!(DMA1_Channel6); | ||
| 143 | declare!(DMA1_Channel7); | ||
| 144 | declare!(DMA2D); | ||
| 145 | declare!(DMA2_Channel1); | ||
| 146 | declare!(DMA2_Channel2); | ||
| 147 | declare!(DMA2_Channel3); | ||
| 148 | declare!(DMA2_Channel4); | ||
| 149 | declare!(DMA2_Channel5); | ||
| 150 | declare!(DMA2_Channel6); | ||
| 151 | declare!(DMA2_Channel7); | ||
| 152 | declare!(DMAMUX1_OVR); | ||
| 153 | declare!(EXTI0); | ||
| 154 | declare!(EXTI1); | ||
| 155 | declare!(EXTI15_10); | ||
| 156 | declare!(EXTI2); | ||
| 157 | declare!(EXTI3); | ||
| 158 | declare!(EXTI4); | ||
| 159 | declare!(EXTI9_5); | ||
| 160 | declare!(FLASH); | ||
| 161 | declare!(FMC); | ||
| 162 | declare!(FPU); | ||
| 163 | declare!(HASH_CRS); | ||
| 164 | declare!(I2C1_ER); | ||
| 165 | declare!(I2C1_EV); | ||
| 166 | declare!(I2C2_ER); | ||
| 167 | declare!(I2C2_EV); | ||
| 168 | declare!(I2C3_ER); | ||
| 169 | declare!(I2C3_EV); | ||
| 170 | declare!(I2C4_ER); | ||
| 171 | declare!(I2C4_EV); | ||
| 172 | declare!(LPTIM1); | ||
| 173 | declare!(LPTIM2); | ||
| 174 | declare!(LPUART1); | ||
| 175 | declare!(OCTOSPI1); | ||
| 176 | declare!(OCTOSPI2); | ||
| 177 | declare!(OTG_FS); | ||
| 178 | declare!(PVD_PVM); | ||
| 179 | declare!(RCC); | ||
| 180 | declare!(RNG); | ||
| 181 | declare!(RTC_Alarm); | ||
| 182 | declare!(RTC_WKUP); | ||
| 183 | declare!(SAI1); | ||
| 184 | declare!(SAI2); | ||
| 185 | declare!(SDMMC1); | ||
| 186 | declare!(SPI1); | ||
| 187 | declare!(SPI2); | ||
| 188 | declare!(SPI3); | ||
| 189 | declare!(TAMP_STAMP); | ||
| 190 | declare!(TIM1_BRK_TIM15); | ||
| 191 | declare!(TIM1_CC); | ||
| 192 | declare!(TIM1_TRG_COM_TIM17); | ||
| 193 | declare!(TIM1_UP_TIM16); | ||
| 194 | declare!(TIM2); | ||
| 195 | declare!(TIM3); | ||
| 196 | declare!(TIM4); | ||
| 197 | declare!(TIM5); | ||
| 198 | declare!(TIM6_DAC); | ||
| 199 | declare!(TIM7); | ||
| 200 | declare!(TIM8_BRK); | ||
| 201 | declare!(TIM8_CC); | ||
| 202 | declare!(TIM8_TRG_COM); | ||
| 203 | declare!(TIM8_UP); | ||
| 204 | declare!(TSC); | ||
| 205 | declare!(UART4); | ||
| 206 | declare!(UART5); | ||
| 207 | declare!(USART1); | ||
| 208 | declare!(USART2); | ||
| 209 | declare!(USART3); | ||
| 210 | declare!(WWDG); | ||
| 211 | } | ||
| 212 | mod interrupt_vector { | ||
| 213 | extern "C" { | ||
| 214 | fn ADC1(); | ||
| 215 | fn AES(); | ||
| 216 | fn CAN1_RX0(); | ||
| 217 | fn CAN1_RX1(); | ||
| 218 | fn CAN1_SCE(); | ||
| 219 | fn CAN1_TX(); | ||
| 220 | fn COMP(); | ||
| 221 | fn DCMI(); | ||
| 222 | fn DFSDM1_FLT0(); | ||
| 223 | fn DFSDM1_FLT1(); | ||
| 224 | fn DFSDM1_FLT2(); | ||
| 225 | fn DFSDM1_FLT3(); | ||
| 226 | fn DMA1_Channel1(); | ||
| 227 | fn DMA1_Channel2(); | ||
| 228 | fn DMA1_Channel3(); | ||
| 229 | fn DMA1_Channel4(); | ||
| 230 | fn DMA1_Channel5(); | ||
| 231 | fn DMA1_Channel6(); | ||
| 232 | fn DMA1_Channel7(); | ||
| 233 | fn DMA2D(); | ||
| 234 | fn DMA2_Channel1(); | ||
| 235 | fn DMA2_Channel2(); | ||
| 236 | fn DMA2_Channel3(); | ||
| 237 | fn DMA2_Channel4(); | ||
| 238 | fn DMA2_Channel5(); | ||
| 239 | fn DMA2_Channel6(); | ||
| 240 | fn DMA2_Channel7(); | ||
| 241 | fn DMAMUX1_OVR(); | ||
| 242 | fn EXTI0(); | ||
| 243 | fn EXTI1(); | ||
| 244 | fn EXTI15_10(); | ||
| 245 | fn EXTI2(); | ||
| 246 | fn EXTI3(); | ||
| 247 | fn EXTI4(); | ||
| 248 | fn EXTI9_5(); | ||
| 249 | fn FLASH(); | ||
| 250 | fn FMC(); | ||
| 251 | fn FPU(); | ||
| 252 | fn HASH_CRS(); | ||
| 253 | fn I2C1_ER(); | ||
| 254 | fn I2C1_EV(); | ||
| 255 | fn I2C2_ER(); | ||
| 256 | fn I2C2_EV(); | ||
| 257 | fn I2C3_ER(); | ||
| 258 | fn I2C3_EV(); | ||
| 259 | fn I2C4_ER(); | ||
| 260 | fn I2C4_EV(); | ||
| 261 | fn LPTIM1(); | ||
| 262 | fn LPTIM2(); | ||
| 263 | fn LPUART1(); | ||
| 264 | fn OCTOSPI1(); | ||
| 265 | fn OCTOSPI2(); | ||
| 266 | fn OTG_FS(); | ||
| 267 | fn PVD_PVM(); | ||
| 268 | fn RCC(); | ||
| 269 | fn RNG(); | ||
| 270 | fn RTC_Alarm(); | ||
| 271 | fn RTC_WKUP(); | ||
| 272 | fn SAI1(); | ||
| 273 | fn SAI2(); | ||
| 274 | fn SDMMC1(); | ||
| 275 | fn SPI1(); | ||
| 276 | fn SPI2(); | ||
| 277 | fn SPI3(); | ||
| 278 | fn TAMP_STAMP(); | ||
| 279 | fn TIM1_BRK_TIM15(); | ||
| 280 | fn TIM1_CC(); | ||
| 281 | fn TIM1_TRG_COM_TIM17(); | ||
| 282 | fn TIM1_UP_TIM16(); | ||
| 283 | fn TIM2(); | ||
| 284 | fn TIM3(); | ||
| 285 | fn TIM4(); | ||
| 286 | fn TIM5(); | ||
| 287 | fn TIM6_DAC(); | ||
| 288 | fn TIM7(); | ||
| 289 | fn TIM8_BRK(); | ||
| 290 | fn TIM8_CC(); | ||
| 291 | fn TIM8_TRG_COM(); | ||
| 292 | fn TIM8_UP(); | ||
| 293 | fn TSC(); | ||
| 294 | fn UART4(); | ||
| 295 | fn UART5(); | ||
| 296 | fn USART1(); | ||
| 297 | fn USART2(); | ||
| 298 | fn USART3(); | ||
| 299 | fn WWDG(); | ||
| 300 | } | ||
| 301 | pub union Vector { | ||
| 302 | _handler: unsafe extern "C" fn(), | ||
| 303 | _reserved: u32, | ||
| 304 | } | ||
| 305 | #[link_section = ".vector_table.interrupts"] | ||
| 306 | #[no_mangle] | ||
| 307 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 308 | Vector { _handler: WWDG }, | ||
| 309 | Vector { _handler: PVD_PVM }, | ||
| 310 | Vector { | ||
| 311 | _handler: TAMP_STAMP, | ||
| 312 | }, | ||
| 313 | Vector { _handler: RTC_WKUP }, | ||
| 314 | Vector { _handler: FLASH }, | ||
| 315 | Vector { _handler: RCC }, | ||
| 316 | Vector { _handler: EXTI0 }, | ||
| 317 | Vector { _handler: EXTI1 }, | ||
| 318 | Vector { _handler: EXTI2 }, | ||
| 319 | Vector { _handler: EXTI3 }, | ||
| 320 | Vector { _handler: EXTI4 }, | ||
| 321 | Vector { | ||
| 322 | _handler: DMA1_Channel1, | ||
| 323 | }, | ||
| 324 | Vector { | ||
| 325 | _handler: DMA1_Channel2, | ||
| 326 | }, | ||
| 327 | Vector { | ||
| 328 | _handler: DMA1_Channel3, | ||
| 329 | }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel4, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel5, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel6, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel7, | ||
| 341 | }, | ||
| 342 | Vector { _handler: ADC1 }, | ||
| 343 | Vector { _handler: CAN1_TX }, | ||
| 344 | Vector { _handler: CAN1_RX0 }, | ||
| 345 | Vector { _handler: CAN1_RX1 }, | ||
| 346 | Vector { _handler: CAN1_SCE }, | ||
| 347 | Vector { _handler: EXTI9_5 }, | ||
| 348 | Vector { | ||
| 349 | _handler: TIM1_BRK_TIM15, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: TIM1_UP_TIM16, | ||
| 353 | }, | ||
| 354 | Vector { | ||
| 355 | _handler: TIM1_TRG_COM_TIM17, | ||
| 356 | }, | ||
| 357 | Vector { _handler: TIM1_CC }, | ||
| 358 | Vector { _handler: TIM2 }, | ||
| 359 | Vector { _handler: TIM3 }, | ||
| 360 | Vector { _handler: TIM4 }, | ||
| 361 | Vector { _handler: I2C1_EV }, | ||
| 362 | Vector { _handler: I2C1_ER }, | ||
| 363 | Vector { _handler: I2C2_EV }, | ||
| 364 | Vector { _handler: I2C2_ER }, | ||
| 365 | Vector { _handler: SPI1 }, | ||
| 366 | Vector { _handler: SPI2 }, | ||
| 367 | Vector { _handler: USART1 }, | ||
| 368 | Vector { _handler: USART2 }, | ||
| 369 | Vector { _handler: USART3 }, | ||
| 370 | Vector { | ||
| 371 | _handler: EXTI15_10, | ||
| 372 | }, | ||
| 373 | Vector { | ||
| 374 | _handler: RTC_Alarm, | ||
| 375 | }, | ||
| 376 | Vector { | ||
| 377 | _handler: DFSDM1_FLT3, | ||
| 378 | }, | ||
| 379 | Vector { _handler: TIM8_BRK }, | ||
| 380 | Vector { _handler: TIM8_UP }, | ||
| 381 | Vector { | ||
| 382 | _handler: TIM8_TRG_COM, | ||
| 383 | }, | ||
| 384 | Vector { _handler: TIM8_CC }, | ||
| 385 | Vector { _reserved: 0 }, | ||
| 386 | Vector { _handler: FMC }, | ||
| 387 | Vector { _handler: SDMMC1 }, | ||
| 388 | Vector { _handler: TIM5 }, | ||
| 389 | Vector { _handler: SPI3 }, | ||
| 390 | Vector { _handler: UART4 }, | ||
| 391 | Vector { _handler: UART5 }, | ||
| 392 | Vector { _handler: TIM6_DAC }, | ||
| 393 | Vector { _handler: TIM7 }, | ||
| 394 | Vector { | ||
| 395 | _handler: DMA2_Channel1, | ||
| 396 | }, | ||
| 397 | Vector { | ||
| 398 | _handler: DMA2_Channel2, | ||
| 399 | }, | ||
| 400 | Vector { | ||
| 401 | _handler: DMA2_Channel3, | ||
| 402 | }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel4, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel5, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DFSDM1_FLT0, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DFSDM1_FLT1, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DFSDM1_FLT2, | ||
| 417 | }, | ||
| 418 | Vector { _handler: COMP }, | ||
| 419 | Vector { _handler: LPTIM1 }, | ||
| 420 | Vector { _handler: LPTIM2 }, | ||
| 421 | Vector { _handler: OTG_FS }, | ||
| 422 | Vector { | ||
| 423 | _handler: DMA2_Channel6, | ||
| 424 | }, | ||
| 425 | Vector { | ||
| 426 | _handler: DMA2_Channel7, | ||
| 427 | }, | ||
| 428 | Vector { _handler: LPUART1 }, | ||
| 429 | Vector { _handler: OCTOSPI1 }, | ||
| 430 | Vector { _handler: I2C3_EV }, | ||
| 431 | Vector { _handler: I2C3_ER }, | ||
| 432 | Vector { _handler: SAI1 }, | ||
| 433 | Vector { _handler: SAI2 }, | ||
| 434 | Vector { _handler: OCTOSPI2 }, | ||
| 435 | Vector { _handler: TSC }, | ||
| 436 | Vector { _reserved: 0 }, | ||
| 437 | Vector { _handler: AES }, | ||
| 438 | Vector { _handler: RNG }, | ||
| 439 | Vector { _handler: FPU }, | ||
| 440 | Vector { _handler: HASH_CRS }, | ||
| 441 | Vector { _handler: I2C4_ER }, | ||
| 442 | Vector { _handler: I2C4_EV }, | ||
| 443 | Vector { _handler: DCMI }, | ||
| 444 | Vector { _reserved: 0 }, | ||
| 445 | Vector { _reserved: 0 }, | ||
| 446 | Vector { _reserved: 0 }, | ||
| 447 | Vector { _reserved: 0 }, | ||
| 448 | Vector { _handler: DMA2D }, | ||
| 449 | Vector { _reserved: 0 }, | ||
| 450 | Vector { _reserved: 0 }, | ||
| 451 | Vector { _reserved: 0 }, | ||
| 452 | Vector { | ||
| 453 | _handler: DMAMUX1_OVR, | ||
| 454 | }, | ||
| 455 | ]; | ||
| 456 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 457 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 458 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 459 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4s7ai.rs b/embassy-stm32/src/chip/stm32l4s7ai.rs index bae375145..5cef4a852 100644 --- a/embassy-stm32/src/chip/stm32l4s7ai.rs +++ b/embassy-stm32/src/chip/stm32l4s7ai.rs | |||
| @@ -1,22 +1,468 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, | 13 | PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, |
| 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, | 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, |
| 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, | 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, |
| 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG | 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | EXTI0 = 6, | ||
| 60 | EXTI1 = 7, | ||
| 61 | EXTI15_10 = 40, | ||
| 62 | EXTI2 = 8, | ||
| 63 | EXTI3 = 9, | ||
| 64 | EXTI4 = 10, | ||
| 65 | EXTI9_5 = 23, | ||
| 66 | FLASH = 4, | ||
| 67 | FMC = 48, | ||
| 68 | FPU = 81, | ||
| 69 | GFXMMU = 93, | ||
| 70 | HASH_CRS = 82, | ||
| 71 | I2C1_ER = 32, | ||
| 72 | I2C1_EV = 31, | ||
| 73 | I2C2_ER = 34, | ||
| 74 | I2C2_EV = 33, | ||
| 75 | I2C3_ER = 73, | ||
| 76 | I2C3_EV = 72, | ||
| 77 | I2C4_ER = 83, | ||
| 78 | I2C4_EV = 84, | ||
| 79 | LPTIM1 = 65, | ||
| 80 | LPTIM2 = 66, | ||
| 81 | LPUART1 = 70, | ||
| 82 | LTDC = 91, | ||
| 83 | LTDC_ER = 92, | ||
| 84 | OCTOSPI1 = 71, | ||
| 85 | OCTOSPI2 = 76, | ||
| 86 | OTG_FS = 67, | ||
| 87 | PVD_PVM = 1, | ||
| 88 | RCC = 5, | ||
| 89 | RNG = 80, | ||
| 90 | RTC_Alarm = 41, | ||
| 91 | RTC_WKUP = 3, | ||
| 92 | SAI1 = 74, | ||
| 93 | SAI2 = 75, | ||
| 94 | SDMMC1 = 49, | ||
| 95 | SPI1 = 35, | ||
| 96 | SPI2 = 36, | ||
| 97 | SPI3 = 51, | ||
| 98 | TAMP_STAMP = 2, | ||
| 99 | TIM1_BRK_TIM15 = 24, | ||
| 100 | TIM1_CC = 27, | ||
| 101 | TIM1_TRG_COM_TIM17 = 26, | ||
| 102 | TIM1_UP_TIM16 = 25, | ||
| 103 | TIM2 = 28, | ||
| 104 | TIM3 = 29, | ||
| 105 | TIM4 = 30, | ||
| 106 | TIM5 = 50, | ||
| 107 | TIM6_DAC = 54, | ||
| 108 | TIM7 = 55, | ||
| 109 | TIM8_BRK = 43, | ||
| 110 | TIM8_CC = 46, | ||
| 111 | TIM8_TRG_COM = 45, | ||
| 112 | TIM8_UP = 44, | ||
| 113 | TSC = 77, | ||
| 114 | UART4 = 52, | ||
| 115 | UART5 = 53, | ||
| 116 | USART1 = 37, | ||
| 117 | USART2 = 38, | ||
| 118 | USART3 = 39, | ||
| 119 | WWDG = 0, | ||
| 120 | } | ||
| 121 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 122 | #[inline(always)] | ||
| 123 | fn number(self) -> u16 { | ||
| 124 | self as u16 | ||
| 125 | } | ||
| 126 | } | ||
| 127 | |||
| 128 | declare!(ADC1); | ||
| 129 | declare!(AES); | ||
| 130 | declare!(CAN1_RX0); | ||
| 131 | declare!(CAN1_RX1); | ||
| 132 | declare!(CAN1_SCE); | ||
| 133 | declare!(CAN1_TX); | ||
| 134 | declare!(COMP); | ||
| 135 | declare!(DCMI); | ||
| 136 | declare!(DFSDM1_FLT0); | ||
| 137 | declare!(DFSDM1_FLT1); | ||
| 138 | declare!(DFSDM1_FLT2); | ||
| 139 | declare!(DFSDM1_FLT3); | ||
| 140 | declare!(DMA1_Channel1); | ||
| 141 | declare!(DMA1_Channel2); | ||
| 142 | declare!(DMA1_Channel3); | ||
| 143 | declare!(DMA1_Channel4); | ||
| 144 | declare!(DMA1_Channel5); | ||
| 145 | declare!(DMA1_Channel6); | ||
| 146 | declare!(DMA1_Channel7); | ||
| 147 | declare!(DMA2D); | ||
| 148 | declare!(DMA2_Channel1); | ||
| 149 | declare!(DMA2_Channel2); | ||
| 150 | declare!(DMA2_Channel3); | ||
| 151 | declare!(DMA2_Channel4); | ||
| 152 | declare!(DMA2_Channel5); | ||
| 153 | declare!(DMA2_Channel6); | ||
| 154 | declare!(DMA2_Channel7); | ||
| 155 | declare!(DMAMUX1_OVR); | ||
| 156 | declare!(EXTI0); | ||
| 157 | declare!(EXTI1); | ||
| 158 | declare!(EXTI15_10); | ||
| 159 | declare!(EXTI2); | ||
| 160 | declare!(EXTI3); | ||
| 161 | declare!(EXTI4); | ||
| 162 | declare!(EXTI9_5); | ||
| 163 | declare!(FLASH); | ||
| 164 | declare!(FMC); | ||
| 165 | declare!(FPU); | ||
| 166 | declare!(GFXMMU); | ||
| 167 | declare!(HASH_CRS); | ||
| 168 | declare!(I2C1_ER); | ||
| 169 | declare!(I2C1_EV); | ||
| 170 | declare!(I2C2_ER); | ||
| 171 | declare!(I2C2_EV); | ||
| 172 | declare!(I2C3_ER); | ||
| 173 | declare!(I2C3_EV); | ||
| 174 | declare!(I2C4_ER); | ||
| 175 | declare!(I2C4_EV); | ||
| 176 | declare!(LPTIM1); | ||
| 177 | declare!(LPTIM2); | ||
| 178 | declare!(LPUART1); | ||
| 179 | declare!(LTDC); | ||
| 180 | declare!(LTDC_ER); | ||
| 181 | declare!(OCTOSPI1); | ||
| 182 | declare!(OCTOSPI2); | ||
| 183 | declare!(OTG_FS); | ||
| 184 | declare!(PVD_PVM); | ||
| 185 | declare!(RCC); | ||
| 186 | declare!(RNG); | ||
| 187 | declare!(RTC_Alarm); | ||
| 188 | declare!(RTC_WKUP); | ||
| 189 | declare!(SAI1); | ||
| 190 | declare!(SAI2); | ||
| 191 | declare!(SDMMC1); | ||
| 192 | declare!(SPI1); | ||
| 193 | declare!(SPI2); | ||
| 194 | declare!(SPI3); | ||
| 195 | declare!(TAMP_STAMP); | ||
| 196 | declare!(TIM1_BRK_TIM15); | ||
| 197 | declare!(TIM1_CC); | ||
| 198 | declare!(TIM1_TRG_COM_TIM17); | ||
| 199 | declare!(TIM1_UP_TIM16); | ||
| 200 | declare!(TIM2); | ||
| 201 | declare!(TIM3); | ||
| 202 | declare!(TIM4); | ||
| 203 | declare!(TIM5); | ||
| 204 | declare!(TIM6_DAC); | ||
| 205 | declare!(TIM7); | ||
| 206 | declare!(TIM8_BRK); | ||
| 207 | declare!(TIM8_CC); | ||
| 208 | declare!(TIM8_TRG_COM); | ||
| 209 | declare!(TIM8_UP); | ||
| 210 | declare!(TSC); | ||
| 211 | declare!(UART4); | ||
| 212 | declare!(UART5); | ||
| 213 | declare!(USART1); | ||
| 214 | declare!(USART2); | ||
| 215 | declare!(USART3); | ||
| 216 | declare!(WWDG); | ||
| 217 | } | ||
| 218 | mod interrupt_vector { | ||
| 219 | extern "C" { | ||
| 220 | fn ADC1(); | ||
| 221 | fn AES(); | ||
| 222 | fn CAN1_RX0(); | ||
| 223 | fn CAN1_RX1(); | ||
| 224 | fn CAN1_SCE(); | ||
| 225 | fn CAN1_TX(); | ||
| 226 | fn COMP(); | ||
| 227 | fn DCMI(); | ||
| 228 | fn DFSDM1_FLT0(); | ||
| 229 | fn DFSDM1_FLT1(); | ||
| 230 | fn DFSDM1_FLT2(); | ||
| 231 | fn DFSDM1_FLT3(); | ||
| 232 | fn DMA1_Channel1(); | ||
| 233 | fn DMA1_Channel2(); | ||
| 234 | fn DMA1_Channel3(); | ||
| 235 | fn DMA1_Channel4(); | ||
| 236 | fn DMA1_Channel5(); | ||
| 237 | fn DMA1_Channel6(); | ||
| 238 | fn DMA1_Channel7(); | ||
| 239 | fn DMA2D(); | ||
| 240 | fn DMA2_Channel1(); | ||
| 241 | fn DMA2_Channel2(); | ||
| 242 | fn DMA2_Channel3(); | ||
| 243 | fn DMA2_Channel4(); | ||
| 244 | fn DMA2_Channel5(); | ||
| 245 | fn DMA2_Channel6(); | ||
| 246 | fn DMA2_Channel7(); | ||
| 247 | fn DMAMUX1_OVR(); | ||
| 248 | fn EXTI0(); | ||
| 249 | fn EXTI1(); | ||
| 250 | fn EXTI15_10(); | ||
| 251 | fn EXTI2(); | ||
| 252 | fn EXTI3(); | ||
| 253 | fn EXTI4(); | ||
| 254 | fn EXTI9_5(); | ||
| 255 | fn FLASH(); | ||
| 256 | fn FMC(); | ||
| 257 | fn FPU(); | ||
| 258 | fn GFXMMU(); | ||
| 259 | fn HASH_CRS(); | ||
| 260 | fn I2C1_ER(); | ||
| 261 | fn I2C1_EV(); | ||
| 262 | fn I2C2_ER(); | ||
| 263 | fn I2C2_EV(); | ||
| 264 | fn I2C3_ER(); | ||
| 265 | fn I2C3_EV(); | ||
| 266 | fn I2C4_ER(); | ||
| 267 | fn I2C4_EV(); | ||
| 268 | fn LPTIM1(); | ||
| 269 | fn LPTIM2(); | ||
| 270 | fn LPUART1(); | ||
| 271 | fn LTDC(); | ||
| 272 | fn LTDC_ER(); | ||
| 273 | fn OCTOSPI1(); | ||
| 274 | fn OCTOSPI2(); | ||
| 275 | fn OTG_FS(); | ||
| 276 | fn PVD_PVM(); | ||
| 277 | fn RCC(); | ||
| 278 | fn RNG(); | ||
| 279 | fn RTC_Alarm(); | ||
| 280 | fn RTC_WKUP(); | ||
| 281 | fn SAI1(); | ||
| 282 | fn SAI2(); | ||
| 283 | fn SDMMC1(); | ||
| 284 | fn SPI1(); | ||
| 285 | fn SPI2(); | ||
| 286 | fn SPI3(); | ||
| 287 | fn TAMP_STAMP(); | ||
| 288 | fn TIM1_BRK_TIM15(); | ||
| 289 | fn TIM1_CC(); | ||
| 290 | fn TIM1_TRG_COM_TIM17(); | ||
| 291 | fn TIM1_UP_TIM16(); | ||
| 292 | fn TIM2(); | ||
| 293 | fn TIM3(); | ||
| 294 | fn TIM4(); | ||
| 295 | fn TIM5(); | ||
| 296 | fn TIM6_DAC(); | ||
| 297 | fn TIM7(); | ||
| 298 | fn TIM8_BRK(); | ||
| 299 | fn TIM8_CC(); | ||
| 300 | fn TIM8_TRG_COM(); | ||
| 301 | fn TIM8_UP(); | ||
| 302 | fn TSC(); | ||
| 303 | fn UART4(); | ||
| 304 | fn UART5(); | ||
| 305 | fn USART1(); | ||
| 306 | fn USART2(); | ||
| 307 | fn USART3(); | ||
| 308 | fn WWDG(); | ||
| 309 | } | ||
| 310 | pub union Vector { | ||
| 311 | _handler: unsafe extern "C" fn(), | ||
| 312 | _reserved: u32, | ||
| 313 | } | ||
| 314 | #[link_section = ".vector_table.interrupts"] | ||
| 315 | #[no_mangle] | ||
| 316 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 317 | Vector { _handler: WWDG }, | ||
| 318 | Vector { _handler: PVD_PVM }, | ||
| 319 | Vector { | ||
| 320 | _handler: TAMP_STAMP, | ||
| 321 | }, | ||
| 322 | Vector { _handler: RTC_WKUP }, | ||
| 323 | Vector { _handler: FLASH }, | ||
| 324 | Vector { _handler: RCC }, | ||
| 325 | Vector { _handler: EXTI0 }, | ||
| 326 | Vector { _handler: EXTI1 }, | ||
| 327 | Vector { _handler: EXTI2 }, | ||
| 328 | Vector { _handler: EXTI3 }, | ||
| 329 | Vector { _handler: EXTI4 }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel1, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel2, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel3, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel4, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel5, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel6, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel7, | ||
| 350 | }, | ||
| 351 | Vector { _handler: ADC1 }, | ||
| 352 | Vector { _handler: CAN1_TX }, | ||
| 353 | Vector { _handler: CAN1_RX0 }, | ||
| 354 | Vector { _handler: CAN1_RX1 }, | ||
| 355 | Vector { _handler: CAN1_SCE }, | ||
| 356 | Vector { _handler: EXTI9_5 }, | ||
| 357 | Vector { | ||
| 358 | _handler: TIM1_BRK_TIM15, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_UP_TIM16, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_TRG_COM_TIM17, | ||
| 365 | }, | ||
| 366 | Vector { _handler: TIM1_CC }, | ||
| 367 | Vector { _handler: TIM2 }, | ||
| 368 | Vector { _handler: TIM3 }, | ||
| 369 | Vector { _handler: TIM4 }, | ||
| 370 | Vector { _handler: I2C1_EV }, | ||
| 371 | Vector { _handler: I2C1_ER }, | ||
| 372 | Vector { _handler: I2C2_EV }, | ||
| 373 | Vector { _handler: I2C2_ER }, | ||
| 374 | Vector { _handler: SPI1 }, | ||
| 375 | Vector { _handler: SPI2 }, | ||
| 376 | Vector { _handler: USART1 }, | ||
| 377 | Vector { _handler: USART2 }, | ||
| 378 | Vector { _handler: USART3 }, | ||
| 379 | Vector { | ||
| 380 | _handler: EXTI15_10, | ||
| 381 | }, | ||
| 382 | Vector { | ||
| 383 | _handler: RTC_Alarm, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: DFSDM1_FLT3, | ||
| 387 | }, | ||
| 388 | Vector { _handler: TIM8_BRK }, | ||
| 389 | Vector { _handler: TIM8_UP }, | ||
| 390 | Vector { | ||
| 391 | _handler: TIM8_TRG_COM, | ||
| 392 | }, | ||
| 393 | Vector { _handler: TIM8_CC }, | ||
| 394 | Vector { _reserved: 0 }, | ||
| 395 | Vector { _handler: FMC }, | ||
| 396 | Vector { _handler: SDMMC1 }, | ||
| 397 | Vector { _handler: TIM5 }, | ||
| 398 | Vector { _handler: SPI3 }, | ||
| 399 | Vector { _handler: UART4 }, | ||
| 400 | Vector { _handler: UART5 }, | ||
| 401 | Vector { _handler: TIM6_DAC }, | ||
| 402 | Vector { _handler: TIM7 }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel1, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel2, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel3, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel4, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel5, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DFSDM1_FLT0, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT1, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT2, | ||
| 426 | }, | ||
| 427 | Vector { _handler: COMP }, | ||
| 428 | Vector { _handler: LPTIM1 }, | ||
| 429 | Vector { _handler: LPTIM2 }, | ||
| 430 | Vector { _handler: OTG_FS }, | ||
| 431 | Vector { | ||
| 432 | _handler: DMA2_Channel6, | ||
| 433 | }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel7, | ||
| 436 | }, | ||
| 437 | Vector { _handler: LPUART1 }, | ||
| 438 | Vector { _handler: OCTOSPI1 }, | ||
| 439 | Vector { _handler: I2C3_EV }, | ||
| 440 | Vector { _handler: I2C3_ER }, | ||
| 441 | Vector { _handler: SAI1 }, | ||
| 442 | Vector { _handler: SAI2 }, | ||
| 443 | Vector { _handler: OCTOSPI2 }, | ||
| 444 | Vector { _handler: TSC }, | ||
| 445 | Vector { _reserved: 0 }, | ||
| 446 | Vector { _handler: AES }, | ||
| 447 | Vector { _handler: RNG }, | ||
| 448 | Vector { _handler: FPU }, | ||
| 449 | Vector { _handler: HASH_CRS }, | ||
| 450 | Vector { _handler: I2C4_ER }, | ||
| 451 | Vector { _handler: I2C4_EV }, | ||
| 452 | Vector { _handler: DCMI }, | ||
| 453 | Vector { _reserved: 0 }, | ||
| 454 | Vector { _reserved: 0 }, | ||
| 455 | Vector { _reserved: 0 }, | ||
| 456 | Vector { _reserved: 0 }, | ||
| 457 | Vector { _handler: DMA2D }, | ||
| 458 | Vector { _handler: LTDC }, | ||
| 459 | Vector { _handler: LTDC_ER }, | ||
| 460 | Vector { _handler: GFXMMU }, | ||
| 461 | Vector { | ||
| 462 | _handler: DMAMUX1_OVR, | ||
| 463 | }, | ||
| 464 | ]; | ||
| 465 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 466 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 467 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 468 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4s7vi.rs b/embassy-stm32/src/chip/stm32l4s7vi.rs index bae375145..5cef4a852 100644 --- a/embassy-stm32/src/chip/stm32l4s7vi.rs +++ b/embassy-stm32/src/chip/stm32l4s7vi.rs | |||
| @@ -1,22 +1,468 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, | 13 | PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, |
| 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, | 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, |
| 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, | 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, |
| 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG | 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | EXTI0 = 6, | ||
| 60 | EXTI1 = 7, | ||
| 61 | EXTI15_10 = 40, | ||
| 62 | EXTI2 = 8, | ||
| 63 | EXTI3 = 9, | ||
| 64 | EXTI4 = 10, | ||
| 65 | EXTI9_5 = 23, | ||
| 66 | FLASH = 4, | ||
| 67 | FMC = 48, | ||
| 68 | FPU = 81, | ||
| 69 | GFXMMU = 93, | ||
| 70 | HASH_CRS = 82, | ||
| 71 | I2C1_ER = 32, | ||
| 72 | I2C1_EV = 31, | ||
| 73 | I2C2_ER = 34, | ||
| 74 | I2C2_EV = 33, | ||
| 75 | I2C3_ER = 73, | ||
| 76 | I2C3_EV = 72, | ||
| 77 | I2C4_ER = 83, | ||
| 78 | I2C4_EV = 84, | ||
| 79 | LPTIM1 = 65, | ||
| 80 | LPTIM2 = 66, | ||
| 81 | LPUART1 = 70, | ||
| 82 | LTDC = 91, | ||
| 83 | LTDC_ER = 92, | ||
| 84 | OCTOSPI1 = 71, | ||
| 85 | OCTOSPI2 = 76, | ||
| 86 | OTG_FS = 67, | ||
| 87 | PVD_PVM = 1, | ||
| 88 | RCC = 5, | ||
| 89 | RNG = 80, | ||
| 90 | RTC_Alarm = 41, | ||
| 91 | RTC_WKUP = 3, | ||
| 92 | SAI1 = 74, | ||
| 93 | SAI2 = 75, | ||
| 94 | SDMMC1 = 49, | ||
| 95 | SPI1 = 35, | ||
| 96 | SPI2 = 36, | ||
| 97 | SPI3 = 51, | ||
| 98 | TAMP_STAMP = 2, | ||
| 99 | TIM1_BRK_TIM15 = 24, | ||
| 100 | TIM1_CC = 27, | ||
| 101 | TIM1_TRG_COM_TIM17 = 26, | ||
| 102 | TIM1_UP_TIM16 = 25, | ||
| 103 | TIM2 = 28, | ||
| 104 | TIM3 = 29, | ||
| 105 | TIM4 = 30, | ||
| 106 | TIM5 = 50, | ||
| 107 | TIM6_DAC = 54, | ||
| 108 | TIM7 = 55, | ||
| 109 | TIM8_BRK = 43, | ||
| 110 | TIM8_CC = 46, | ||
| 111 | TIM8_TRG_COM = 45, | ||
| 112 | TIM8_UP = 44, | ||
| 113 | TSC = 77, | ||
| 114 | UART4 = 52, | ||
| 115 | UART5 = 53, | ||
| 116 | USART1 = 37, | ||
| 117 | USART2 = 38, | ||
| 118 | USART3 = 39, | ||
| 119 | WWDG = 0, | ||
| 120 | } | ||
| 121 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 122 | #[inline(always)] | ||
| 123 | fn number(self) -> u16 { | ||
| 124 | self as u16 | ||
| 125 | } | ||
| 126 | } | ||
| 127 | |||
| 128 | declare!(ADC1); | ||
| 129 | declare!(AES); | ||
| 130 | declare!(CAN1_RX0); | ||
| 131 | declare!(CAN1_RX1); | ||
| 132 | declare!(CAN1_SCE); | ||
| 133 | declare!(CAN1_TX); | ||
| 134 | declare!(COMP); | ||
| 135 | declare!(DCMI); | ||
| 136 | declare!(DFSDM1_FLT0); | ||
| 137 | declare!(DFSDM1_FLT1); | ||
| 138 | declare!(DFSDM1_FLT2); | ||
| 139 | declare!(DFSDM1_FLT3); | ||
| 140 | declare!(DMA1_Channel1); | ||
| 141 | declare!(DMA1_Channel2); | ||
| 142 | declare!(DMA1_Channel3); | ||
| 143 | declare!(DMA1_Channel4); | ||
| 144 | declare!(DMA1_Channel5); | ||
| 145 | declare!(DMA1_Channel6); | ||
| 146 | declare!(DMA1_Channel7); | ||
| 147 | declare!(DMA2D); | ||
| 148 | declare!(DMA2_Channel1); | ||
| 149 | declare!(DMA2_Channel2); | ||
| 150 | declare!(DMA2_Channel3); | ||
| 151 | declare!(DMA2_Channel4); | ||
| 152 | declare!(DMA2_Channel5); | ||
| 153 | declare!(DMA2_Channel6); | ||
| 154 | declare!(DMA2_Channel7); | ||
| 155 | declare!(DMAMUX1_OVR); | ||
| 156 | declare!(EXTI0); | ||
| 157 | declare!(EXTI1); | ||
| 158 | declare!(EXTI15_10); | ||
| 159 | declare!(EXTI2); | ||
| 160 | declare!(EXTI3); | ||
| 161 | declare!(EXTI4); | ||
| 162 | declare!(EXTI9_5); | ||
| 163 | declare!(FLASH); | ||
| 164 | declare!(FMC); | ||
| 165 | declare!(FPU); | ||
| 166 | declare!(GFXMMU); | ||
| 167 | declare!(HASH_CRS); | ||
| 168 | declare!(I2C1_ER); | ||
| 169 | declare!(I2C1_EV); | ||
| 170 | declare!(I2C2_ER); | ||
| 171 | declare!(I2C2_EV); | ||
| 172 | declare!(I2C3_ER); | ||
| 173 | declare!(I2C3_EV); | ||
| 174 | declare!(I2C4_ER); | ||
| 175 | declare!(I2C4_EV); | ||
| 176 | declare!(LPTIM1); | ||
| 177 | declare!(LPTIM2); | ||
| 178 | declare!(LPUART1); | ||
| 179 | declare!(LTDC); | ||
| 180 | declare!(LTDC_ER); | ||
| 181 | declare!(OCTOSPI1); | ||
| 182 | declare!(OCTOSPI2); | ||
| 183 | declare!(OTG_FS); | ||
| 184 | declare!(PVD_PVM); | ||
| 185 | declare!(RCC); | ||
| 186 | declare!(RNG); | ||
| 187 | declare!(RTC_Alarm); | ||
| 188 | declare!(RTC_WKUP); | ||
| 189 | declare!(SAI1); | ||
| 190 | declare!(SAI2); | ||
| 191 | declare!(SDMMC1); | ||
| 192 | declare!(SPI1); | ||
| 193 | declare!(SPI2); | ||
| 194 | declare!(SPI3); | ||
| 195 | declare!(TAMP_STAMP); | ||
| 196 | declare!(TIM1_BRK_TIM15); | ||
| 197 | declare!(TIM1_CC); | ||
| 198 | declare!(TIM1_TRG_COM_TIM17); | ||
| 199 | declare!(TIM1_UP_TIM16); | ||
| 200 | declare!(TIM2); | ||
| 201 | declare!(TIM3); | ||
| 202 | declare!(TIM4); | ||
| 203 | declare!(TIM5); | ||
| 204 | declare!(TIM6_DAC); | ||
| 205 | declare!(TIM7); | ||
| 206 | declare!(TIM8_BRK); | ||
| 207 | declare!(TIM8_CC); | ||
| 208 | declare!(TIM8_TRG_COM); | ||
| 209 | declare!(TIM8_UP); | ||
| 210 | declare!(TSC); | ||
| 211 | declare!(UART4); | ||
| 212 | declare!(UART5); | ||
| 213 | declare!(USART1); | ||
| 214 | declare!(USART2); | ||
| 215 | declare!(USART3); | ||
| 216 | declare!(WWDG); | ||
| 217 | } | ||
| 218 | mod interrupt_vector { | ||
| 219 | extern "C" { | ||
| 220 | fn ADC1(); | ||
| 221 | fn AES(); | ||
| 222 | fn CAN1_RX0(); | ||
| 223 | fn CAN1_RX1(); | ||
| 224 | fn CAN1_SCE(); | ||
| 225 | fn CAN1_TX(); | ||
| 226 | fn COMP(); | ||
| 227 | fn DCMI(); | ||
| 228 | fn DFSDM1_FLT0(); | ||
| 229 | fn DFSDM1_FLT1(); | ||
| 230 | fn DFSDM1_FLT2(); | ||
| 231 | fn DFSDM1_FLT3(); | ||
| 232 | fn DMA1_Channel1(); | ||
| 233 | fn DMA1_Channel2(); | ||
| 234 | fn DMA1_Channel3(); | ||
| 235 | fn DMA1_Channel4(); | ||
| 236 | fn DMA1_Channel5(); | ||
| 237 | fn DMA1_Channel6(); | ||
| 238 | fn DMA1_Channel7(); | ||
| 239 | fn DMA2D(); | ||
| 240 | fn DMA2_Channel1(); | ||
| 241 | fn DMA2_Channel2(); | ||
| 242 | fn DMA2_Channel3(); | ||
| 243 | fn DMA2_Channel4(); | ||
| 244 | fn DMA2_Channel5(); | ||
| 245 | fn DMA2_Channel6(); | ||
| 246 | fn DMA2_Channel7(); | ||
| 247 | fn DMAMUX1_OVR(); | ||
| 248 | fn EXTI0(); | ||
| 249 | fn EXTI1(); | ||
| 250 | fn EXTI15_10(); | ||
| 251 | fn EXTI2(); | ||
| 252 | fn EXTI3(); | ||
| 253 | fn EXTI4(); | ||
| 254 | fn EXTI9_5(); | ||
| 255 | fn FLASH(); | ||
| 256 | fn FMC(); | ||
| 257 | fn FPU(); | ||
| 258 | fn GFXMMU(); | ||
| 259 | fn HASH_CRS(); | ||
| 260 | fn I2C1_ER(); | ||
| 261 | fn I2C1_EV(); | ||
| 262 | fn I2C2_ER(); | ||
| 263 | fn I2C2_EV(); | ||
| 264 | fn I2C3_ER(); | ||
| 265 | fn I2C3_EV(); | ||
| 266 | fn I2C4_ER(); | ||
| 267 | fn I2C4_EV(); | ||
| 268 | fn LPTIM1(); | ||
| 269 | fn LPTIM2(); | ||
| 270 | fn LPUART1(); | ||
| 271 | fn LTDC(); | ||
| 272 | fn LTDC_ER(); | ||
| 273 | fn OCTOSPI1(); | ||
| 274 | fn OCTOSPI2(); | ||
| 275 | fn OTG_FS(); | ||
| 276 | fn PVD_PVM(); | ||
| 277 | fn RCC(); | ||
| 278 | fn RNG(); | ||
| 279 | fn RTC_Alarm(); | ||
| 280 | fn RTC_WKUP(); | ||
| 281 | fn SAI1(); | ||
| 282 | fn SAI2(); | ||
| 283 | fn SDMMC1(); | ||
| 284 | fn SPI1(); | ||
| 285 | fn SPI2(); | ||
| 286 | fn SPI3(); | ||
| 287 | fn TAMP_STAMP(); | ||
| 288 | fn TIM1_BRK_TIM15(); | ||
| 289 | fn TIM1_CC(); | ||
| 290 | fn TIM1_TRG_COM_TIM17(); | ||
| 291 | fn TIM1_UP_TIM16(); | ||
| 292 | fn TIM2(); | ||
| 293 | fn TIM3(); | ||
| 294 | fn TIM4(); | ||
| 295 | fn TIM5(); | ||
| 296 | fn TIM6_DAC(); | ||
| 297 | fn TIM7(); | ||
| 298 | fn TIM8_BRK(); | ||
| 299 | fn TIM8_CC(); | ||
| 300 | fn TIM8_TRG_COM(); | ||
| 301 | fn TIM8_UP(); | ||
| 302 | fn TSC(); | ||
| 303 | fn UART4(); | ||
| 304 | fn UART5(); | ||
| 305 | fn USART1(); | ||
| 306 | fn USART2(); | ||
| 307 | fn USART3(); | ||
| 308 | fn WWDG(); | ||
| 309 | } | ||
| 310 | pub union Vector { | ||
| 311 | _handler: unsafe extern "C" fn(), | ||
| 312 | _reserved: u32, | ||
| 313 | } | ||
| 314 | #[link_section = ".vector_table.interrupts"] | ||
| 315 | #[no_mangle] | ||
| 316 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 317 | Vector { _handler: WWDG }, | ||
| 318 | Vector { _handler: PVD_PVM }, | ||
| 319 | Vector { | ||
| 320 | _handler: TAMP_STAMP, | ||
| 321 | }, | ||
| 322 | Vector { _handler: RTC_WKUP }, | ||
| 323 | Vector { _handler: FLASH }, | ||
| 324 | Vector { _handler: RCC }, | ||
| 325 | Vector { _handler: EXTI0 }, | ||
| 326 | Vector { _handler: EXTI1 }, | ||
| 327 | Vector { _handler: EXTI2 }, | ||
| 328 | Vector { _handler: EXTI3 }, | ||
| 329 | Vector { _handler: EXTI4 }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel1, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel2, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel3, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel4, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel5, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel6, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel7, | ||
| 350 | }, | ||
| 351 | Vector { _handler: ADC1 }, | ||
| 352 | Vector { _handler: CAN1_TX }, | ||
| 353 | Vector { _handler: CAN1_RX0 }, | ||
| 354 | Vector { _handler: CAN1_RX1 }, | ||
| 355 | Vector { _handler: CAN1_SCE }, | ||
| 356 | Vector { _handler: EXTI9_5 }, | ||
| 357 | Vector { | ||
| 358 | _handler: TIM1_BRK_TIM15, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_UP_TIM16, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_TRG_COM_TIM17, | ||
| 365 | }, | ||
| 366 | Vector { _handler: TIM1_CC }, | ||
| 367 | Vector { _handler: TIM2 }, | ||
| 368 | Vector { _handler: TIM3 }, | ||
| 369 | Vector { _handler: TIM4 }, | ||
| 370 | Vector { _handler: I2C1_EV }, | ||
| 371 | Vector { _handler: I2C1_ER }, | ||
| 372 | Vector { _handler: I2C2_EV }, | ||
| 373 | Vector { _handler: I2C2_ER }, | ||
| 374 | Vector { _handler: SPI1 }, | ||
| 375 | Vector { _handler: SPI2 }, | ||
| 376 | Vector { _handler: USART1 }, | ||
| 377 | Vector { _handler: USART2 }, | ||
| 378 | Vector { _handler: USART3 }, | ||
| 379 | Vector { | ||
| 380 | _handler: EXTI15_10, | ||
| 381 | }, | ||
| 382 | Vector { | ||
| 383 | _handler: RTC_Alarm, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: DFSDM1_FLT3, | ||
| 387 | }, | ||
| 388 | Vector { _handler: TIM8_BRK }, | ||
| 389 | Vector { _handler: TIM8_UP }, | ||
| 390 | Vector { | ||
| 391 | _handler: TIM8_TRG_COM, | ||
| 392 | }, | ||
| 393 | Vector { _handler: TIM8_CC }, | ||
| 394 | Vector { _reserved: 0 }, | ||
| 395 | Vector { _handler: FMC }, | ||
| 396 | Vector { _handler: SDMMC1 }, | ||
| 397 | Vector { _handler: TIM5 }, | ||
| 398 | Vector { _handler: SPI3 }, | ||
| 399 | Vector { _handler: UART4 }, | ||
| 400 | Vector { _handler: UART5 }, | ||
| 401 | Vector { _handler: TIM6_DAC }, | ||
| 402 | Vector { _handler: TIM7 }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel1, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel2, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel3, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel4, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel5, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DFSDM1_FLT0, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT1, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT2, | ||
| 426 | }, | ||
| 427 | Vector { _handler: COMP }, | ||
| 428 | Vector { _handler: LPTIM1 }, | ||
| 429 | Vector { _handler: LPTIM2 }, | ||
| 430 | Vector { _handler: OTG_FS }, | ||
| 431 | Vector { | ||
| 432 | _handler: DMA2_Channel6, | ||
| 433 | }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel7, | ||
| 436 | }, | ||
| 437 | Vector { _handler: LPUART1 }, | ||
| 438 | Vector { _handler: OCTOSPI1 }, | ||
| 439 | Vector { _handler: I2C3_EV }, | ||
| 440 | Vector { _handler: I2C3_ER }, | ||
| 441 | Vector { _handler: SAI1 }, | ||
| 442 | Vector { _handler: SAI2 }, | ||
| 443 | Vector { _handler: OCTOSPI2 }, | ||
| 444 | Vector { _handler: TSC }, | ||
| 445 | Vector { _reserved: 0 }, | ||
| 446 | Vector { _handler: AES }, | ||
| 447 | Vector { _handler: RNG }, | ||
| 448 | Vector { _handler: FPU }, | ||
| 449 | Vector { _handler: HASH_CRS }, | ||
| 450 | Vector { _handler: I2C4_ER }, | ||
| 451 | Vector { _handler: I2C4_EV }, | ||
| 452 | Vector { _handler: DCMI }, | ||
| 453 | Vector { _reserved: 0 }, | ||
| 454 | Vector { _reserved: 0 }, | ||
| 455 | Vector { _reserved: 0 }, | ||
| 456 | Vector { _reserved: 0 }, | ||
| 457 | Vector { _handler: DMA2D }, | ||
| 458 | Vector { _handler: LTDC }, | ||
| 459 | Vector { _handler: LTDC_ER }, | ||
| 460 | Vector { _handler: GFXMMU }, | ||
| 461 | Vector { | ||
| 462 | _handler: DMAMUX1_OVR, | ||
| 463 | }, | ||
| 464 | ]; | ||
| 465 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 466 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 467 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 468 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4s7zi.rs b/embassy-stm32/src/chip/stm32l4s7zi.rs index bae375145..5cef4a852 100644 --- a/embassy-stm32/src/chip/stm32l4s7zi.rs +++ b/embassy-stm32/src/chip/stm32l4s7zi.rs | |||
| @@ -1,22 +1,468 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, | 13 | PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, |
| 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, | 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, |
| 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, | 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, |
| 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG | 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | EXTI0 = 6, | ||
| 60 | EXTI1 = 7, | ||
| 61 | EXTI15_10 = 40, | ||
| 62 | EXTI2 = 8, | ||
| 63 | EXTI3 = 9, | ||
| 64 | EXTI4 = 10, | ||
| 65 | EXTI9_5 = 23, | ||
| 66 | FLASH = 4, | ||
| 67 | FMC = 48, | ||
| 68 | FPU = 81, | ||
| 69 | GFXMMU = 93, | ||
| 70 | HASH_CRS = 82, | ||
| 71 | I2C1_ER = 32, | ||
| 72 | I2C1_EV = 31, | ||
| 73 | I2C2_ER = 34, | ||
| 74 | I2C2_EV = 33, | ||
| 75 | I2C3_ER = 73, | ||
| 76 | I2C3_EV = 72, | ||
| 77 | I2C4_ER = 83, | ||
| 78 | I2C4_EV = 84, | ||
| 79 | LPTIM1 = 65, | ||
| 80 | LPTIM2 = 66, | ||
| 81 | LPUART1 = 70, | ||
| 82 | LTDC = 91, | ||
| 83 | LTDC_ER = 92, | ||
| 84 | OCTOSPI1 = 71, | ||
| 85 | OCTOSPI2 = 76, | ||
| 86 | OTG_FS = 67, | ||
| 87 | PVD_PVM = 1, | ||
| 88 | RCC = 5, | ||
| 89 | RNG = 80, | ||
| 90 | RTC_Alarm = 41, | ||
| 91 | RTC_WKUP = 3, | ||
| 92 | SAI1 = 74, | ||
| 93 | SAI2 = 75, | ||
| 94 | SDMMC1 = 49, | ||
| 95 | SPI1 = 35, | ||
| 96 | SPI2 = 36, | ||
| 97 | SPI3 = 51, | ||
| 98 | TAMP_STAMP = 2, | ||
| 99 | TIM1_BRK_TIM15 = 24, | ||
| 100 | TIM1_CC = 27, | ||
| 101 | TIM1_TRG_COM_TIM17 = 26, | ||
| 102 | TIM1_UP_TIM16 = 25, | ||
| 103 | TIM2 = 28, | ||
| 104 | TIM3 = 29, | ||
| 105 | TIM4 = 30, | ||
| 106 | TIM5 = 50, | ||
| 107 | TIM6_DAC = 54, | ||
| 108 | TIM7 = 55, | ||
| 109 | TIM8_BRK = 43, | ||
| 110 | TIM8_CC = 46, | ||
| 111 | TIM8_TRG_COM = 45, | ||
| 112 | TIM8_UP = 44, | ||
| 113 | TSC = 77, | ||
| 114 | UART4 = 52, | ||
| 115 | UART5 = 53, | ||
| 116 | USART1 = 37, | ||
| 117 | USART2 = 38, | ||
| 118 | USART3 = 39, | ||
| 119 | WWDG = 0, | ||
| 120 | } | ||
| 121 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 122 | #[inline(always)] | ||
| 123 | fn number(self) -> u16 { | ||
| 124 | self as u16 | ||
| 125 | } | ||
| 126 | } | ||
| 127 | |||
| 128 | declare!(ADC1); | ||
| 129 | declare!(AES); | ||
| 130 | declare!(CAN1_RX0); | ||
| 131 | declare!(CAN1_RX1); | ||
| 132 | declare!(CAN1_SCE); | ||
| 133 | declare!(CAN1_TX); | ||
| 134 | declare!(COMP); | ||
| 135 | declare!(DCMI); | ||
| 136 | declare!(DFSDM1_FLT0); | ||
| 137 | declare!(DFSDM1_FLT1); | ||
| 138 | declare!(DFSDM1_FLT2); | ||
| 139 | declare!(DFSDM1_FLT3); | ||
| 140 | declare!(DMA1_Channel1); | ||
| 141 | declare!(DMA1_Channel2); | ||
| 142 | declare!(DMA1_Channel3); | ||
| 143 | declare!(DMA1_Channel4); | ||
| 144 | declare!(DMA1_Channel5); | ||
| 145 | declare!(DMA1_Channel6); | ||
| 146 | declare!(DMA1_Channel7); | ||
| 147 | declare!(DMA2D); | ||
| 148 | declare!(DMA2_Channel1); | ||
| 149 | declare!(DMA2_Channel2); | ||
| 150 | declare!(DMA2_Channel3); | ||
| 151 | declare!(DMA2_Channel4); | ||
| 152 | declare!(DMA2_Channel5); | ||
| 153 | declare!(DMA2_Channel6); | ||
| 154 | declare!(DMA2_Channel7); | ||
| 155 | declare!(DMAMUX1_OVR); | ||
| 156 | declare!(EXTI0); | ||
| 157 | declare!(EXTI1); | ||
| 158 | declare!(EXTI15_10); | ||
| 159 | declare!(EXTI2); | ||
| 160 | declare!(EXTI3); | ||
| 161 | declare!(EXTI4); | ||
| 162 | declare!(EXTI9_5); | ||
| 163 | declare!(FLASH); | ||
| 164 | declare!(FMC); | ||
| 165 | declare!(FPU); | ||
| 166 | declare!(GFXMMU); | ||
| 167 | declare!(HASH_CRS); | ||
| 168 | declare!(I2C1_ER); | ||
| 169 | declare!(I2C1_EV); | ||
| 170 | declare!(I2C2_ER); | ||
| 171 | declare!(I2C2_EV); | ||
| 172 | declare!(I2C3_ER); | ||
| 173 | declare!(I2C3_EV); | ||
| 174 | declare!(I2C4_ER); | ||
| 175 | declare!(I2C4_EV); | ||
| 176 | declare!(LPTIM1); | ||
| 177 | declare!(LPTIM2); | ||
| 178 | declare!(LPUART1); | ||
| 179 | declare!(LTDC); | ||
| 180 | declare!(LTDC_ER); | ||
| 181 | declare!(OCTOSPI1); | ||
| 182 | declare!(OCTOSPI2); | ||
| 183 | declare!(OTG_FS); | ||
| 184 | declare!(PVD_PVM); | ||
| 185 | declare!(RCC); | ||
| 186 | declare!(RNG); | ||
| 187 | declare!(RTC_Alarm); | ||
| 188 | declare!(RTC_WKUP); | ||
| 189 | declare!(SAI1); | ||
| 190 | declare!(SAI2); | ||
| 191 | declare!(SDMMC1); | ||
| 192 | declare!(SPI1); | ||
| 193 | declare!(SPI2); | ||
| 194 | declare!(SPI3); | ||
| 195 | declare!(TAMP_STAMP); | ||
| 196 | declare!(TIM1_BRK_TIM15); | ||
| 197 | declare!(TIM1_CC); | ||
| 198 | declare!(TIM1_TRG_COM_TIM17); | ||
| 199 | declare!(TIM1_UP_TIM16); | ||
| 200 | declare!(TIM2); | ||
| 201 | declare!(TIM3); | ||
| 202 | declare!(TIM4); | ||
| 203 | declare!(TIM5); | ||
| 204 | declare!(TIM6_DAC); | ||
| 205 | declare!(TIM7); | ||
| 206 | declare!(TIM8_BRK); | ||
| 207 | declare!(TIM8_CC); | ||
| 208 | declare!(TIM8_TRG_COM); | ||
| 209 | declare!(TIM8_UP); | ||
| 210 | declare!(TSC); | ||
| 211 | declare!(UART4); | ||
| 212 | declare!(UART5); | ||
| 213 | declare!(USART1); | ||
| 214 | declare!(USART2); | ||
| 215 | declare!(USART3); | ||
| 216 | declare!(WWDG); | ||
| 217 | } | ||
| 218 | mod interrupt_vector { | ||
| 219 | extern "C" { | ||
| 220 | fn ADC1(); | ||
| 221 | fn AES(); | ||
| 222 | fn CAN1_RX0(); | ||
| 223 | fn CAN1_RX1(); | ||
| 224 | fn CAN1_SCE(); | ||
| 225 | fn CAN1_TX(); | ||
| 226 | fn COMP(); | ||
| 227 | fn DCMI(); | ||
| 228 | fn DFSDM1_FLT0(); | ||
| 229 | fn DFSDM1_FLT1(); | ||
| 230 | fn DFSDM1_FLT2(); | ||
| 231 | fn DFSDM1_FLT3(); | ||
| 232 | fn DMA1_Channel1(); | ||
| 233 | fn DMA1_Channel2(); | ||
| 234 | fn DMA1_Channel3(); | ||
| 235 | fn DMA1_Channel4(); | ||
| 236 | fn DMA1_Channel5(); | ||
| 237 | fn DMA1_Channel6(); | ||
| 238 | fn DMA1_Channel7(); | ||
| 239 | fn DMA2D(); | ||
| 240 | fn DMA2_Channel1(); | ||
| 241 | fn DMA2_Channel2(); | ||
| 242 | fn DMA2_Channel3(); | ||
| 243 | fn DMA2_Channel4(); | ||
| 244 | fn DMA2_Channel5(); | ||
| 245 | fn DMA2_Channel6(); | ||
| 246 | fn DMA2_Channel7(); | ||
| 247 | fn DMAMUX1_OVR(); | ||
| 248 | fn EXTI0(); | ||
| 249 | fn EXTI1(); | ||
| 250 | fn EXTI15_10(); | ||
| 251 | fn EXTI2(); | ||
| 252 | fn EXTI3(); | ||
| 253 | fn EXTI4(); | ||
| 254 | fn EXTI9_5(); | ||
| 255 | fn FLASH(); | ||
| 256 | fn FMC(); | ||
| 257 | fn FPU(); | ||
| 258 | fn GFXMMU(); | ||
| 259 | fn HASH_CRS(); | ||
| 260 | fn I2C1_ER(); | ||
| 261 | fn I2C1_EV(); | ||
| 262 | fn I2C2_ER(); | ||
| 263 | fn I2C2_EV(); | ||
| 264 | fn I2C3_ER(); | ||
| 265 | fn I2C3_EV(); | ||
| 266 | fn I2C4_ER(); | ||
| 267 | fn I2C4_EV(); | ||
| 268 | fn LPTIM1(); | ||
| 269 | fn LPTIM2(); | ||
| 270 | fn LPUART1(); | ||
| 271 | fn LTDC(); | ||
| 272 | fn LTDC_ER(); | ||
| 273 | fn OCTOSPI1(); | ||
| 274 | fn OCTOSPI2(); | ||
| 275 | fn OTG_FS(); | ||
| 276 | fn PVD_PVM(); | ||
| 277 | fn RCC(); | ||
| 278 | fn RNG(); | ||
| 279 | fn RTC_Alarm(); | ||
| 280 | fn RTC_WKUP(); | ||
| 281 | fn SAI1(); | ||
| 282 | fn SAI2(); | ||
| 283 | fn SDMMC1(); | ||
| 284 | fn SPI1(); | ||
| 285 | fn SPI2(); | ||
| 286 | fn SPI3(); | ||
| 287 | fn TAMP_STAMP(); | ||
| 288 | fn TIM1_BRK_TIM15(); | ||
| 289 | fn TIM1_CC(); | ||
| 290 | fn TIM1_TRG_COM_TIM17(); | ||
| 291 | fn TIM1_UP_TIM16(); | ||
| 292 | fn TIM2(); | ||
| 293 | fn TIM3(); | ||
| 294 | fn TIM4(); | ||
| 295 | fn TIM5(); | ||
| 296 | fn TIM6_DAC(); | ||
| 297 | fn TIM7(); | ||
| 298 | fn TIM8_BRK(); | ||
| 299 | fn TIM8_CC(); | ||
| 300 | fn TIM8_TRG_COM(); | ||
| 301 | fn TIM8_UP(); | ||
| 302 | fn TSC(); | ||
| 303 | fn UART4(); | ||
| 304 | fn UART5(); | ||
| 305 | fn USART1(); | ||
| 306 | fn USART2(); | ||
| 307 | fn USART3(); | ||
| 308 | fn WWDG(); | ||
| 309 | } | ||
| 310 | pub union Vector { | ||
| 311 | _handler: unsafe extern "C" fn(), | ||
| 312 | _reserved: u32, | ||
| 313 | } | ||
| 314 | #[link_section = ".vector_table.interrupts"] | ||
| 315 | #[no_mangle] | ||
| 316 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 317 | Vector { _handler: WWDG }, | ||
| 318 | Vector { _handler: PVD_PVM }, | ||
| 319 | Vector { | ||
| 320 | _handler: TAMP_STAMP, | ||
| 321 | }, | ||
| 322 | Vector { _handler: RTC_WKUP }, | ||
| 323 | Vector { _handler: FLASH }, | ||
| 324 | Vector { _handler: RCC }, | ||
| 325 | Vector { _handler: EXTI0 }, | ||
| 326 | Vector { _handler: EXTI1 }, | ||
| 327 | Vector { _handler: EXTI2 }, | ||
| 328 | Vector { _handler: EXTI3 }, | ||
| 329 | Vector { _handler: EXTI4 }, | ||
| 330 | Vector { | ||
| 331 | _handler: DMA1_Channel1, | ||
| 332 | }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel2, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel3, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel4, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel5, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel6, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel7, | ||
| 350 | }, | ||
| 351 | Vector { _handler: ADC1 }, | ||
| 352 | Vector { _handler: CAN1_TX }, | ||
| 353 | Vector { _handler: CAN1_RX0 }, | ||
| 354 | Vector { _handler: CAN1_RX1 }, | ||
| 355 | Vector { _handler: CAN1_SCE }, | ||
| 356 | Vector { _handler: EXTI9_5 }, | ||
| 357 | Vector { | ||
| 358 | _handler: TIM1_BRK_TIM15, | ||
| 359 | }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_UP_TIM16, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_TRG_COM_TIM17, | ||
| 365 | }, | ||
| 366 | Vector { _handler: TIM1_CC }, | ||
| 367 | Vector { _handler: TIM2 }, | ||
| 368 | Vector { _handler: TIM3 }, | ||
| 369 | Vector { _handler: TIM4 }, | ||
| 370 | Vector { _handler: I2C1_EV }, | ||
| 371 | Vector { _handler: I2C1_ER }, | ||
| 372 | Vector { _handler: I2C2_EV }, | ||
| 373 | Vector { _handler: I2C2_ER }, | ||
| 374 | Vector { _handler: SPI1 }, | ||
| 375 | Vector { _handler: SPI2 }, | ||
| 376 | Vector { _handler: USART1 }, | ||
| 377 | Vector { _handler: USART2 }, | ||
| 378 | Vector { _handler: USART3 }, | ||
| 379 | Vector { | ||
| 380 | _handler: EXTI15_10, | ||
| 381 | }, | ||
| 382 | Vector { | ||
| 383 | _handler: RTC_Alarm, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: DFSDM1_FLT3, | ||
| 387 | }, | ||
| 388 | Vector { _handler: TIM8_BRK }, | ||
| 389 | Vector { _handler: TIM8_UP }, | ||
| 390 | Vector { | ||
| 391 | _handler: TIM8_TRG_COM, | ||
| 392 | }, | ||
| 393 | Vector { _handler: TIM8_CC }, | ||
| 394 | Vector { _reserved: 0 }, | ||
| 395 | Vector { _handler: FMC }, | ||
| 396 | Vector { _handler: SDMMC1 }, | ||
| 397 | Vector { _handler: TIM5 }, | ||
| 398 | Vector { _handler: SPI3 }, | ||
| 399 | Vector { _handler: UART4 }, | ||
| 400 | Vector { _handler: UART5 }, | ||
| 401 | Vector { _handler: TIM6_DAC }, | ||
| 402 | Vector { _handler: TIM7 }, | ||
| 403 | Vector { | ||
| 404 | _handler: DMA2_Channel1, | ||
| 405 | }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel2, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel3, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel4, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel5, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DFSDM1_FLT0, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT1, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT2, | ||
| 426 | }, | ||
| 427 | Vector { _handler: COMP }, | ||
| 428 | Vector { _handler: LPTIM1 }, | ||
| 429 | Vector { _handler: LPTIM2 }, | ||
| 430 | Vector { _handler: OTG_FS }, | ||
| 431 | Vector { | ||
| 432 | _handler: DMA2_Channel6, | ||
| 433 | }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel7, | ||
| 436 | }, | ||
| 437 | Vector { _handler: LPUART1 }, | ||
| 438 | Vector { _handler: OCTOSPI1 }, | ||
| 439 | Vector { _handler: I2C3_EV }, | ||
| 440 | Vector { _handler: I2C3_ER }, | ||
| 441 | Vector { _handler: SAI1 }, | ||
| 442 | Vector { _handler: SAI2 }, | ||
| 443 | Vector { _handler: OCTOSPI2 }, | ||
| 444 | Vector { _handler: TSC }, | ||
| 445 | Vector { _reserved: 0 }, | ||
| 446 | Vector { _handler: AES }, | ||
| 447 | Vector { _handler: RNG }, | ||
| 448 | Vector { _handler: FPU }, | ||
| 449 | Vector { _handler: HASH_CRS }, | ||
| 450 | Vector { _handler: I2C4_ER }, | ||
| 451 | Vector { _handler: I2C4_EV }, | ||
| 452 | Vector { _handler: DCMI }, | ||
| 453 | Vector { _reserved: 0 }, | ||
| 454 | Vector { _reserved: 0 }, | ||
| 455 | Vector { _reserved: 0 }, | ||
| 456 | Vector { _reserved: 0 }, | ||
| 457 | Vector { _handler: DMA2D }, | ||
| 458 | Vector { _handler: LTDC }, | ||
| 459 | Vector { _handler: LTDC_ER }, | ||
| 460 | Vector { _handler: GFXMMU }, | ||
| 461 | Vector { | ||
| 462 | _handler: DMAMUX1_OVR, | ||
| 463 | }, | ||
| 464 | ]; | ||
| 465 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 466 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 467 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 468 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4s9ai.rs b/embassy-stm32/src/chip/stm32l4s9ai.rs index bae375145..a79938e3e 100644 --- a/embassy-stm32/src/chip/stm32l4s9ai.rs +++ b/embassy-stm32/src/chip/stm32l4s9ai.rs | |||
| @@ -1,22 +1,471 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, | 13 | PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, |
| 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, | 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, |
| 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, | 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, |
| 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG | 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | DSI = 78, | ||
| 60 | EXTI0 = 6, | ||
| 61 | EXTI1 = 7, | ||
| 62 | EXTI15_10 = 40, | ||
| 63 | EXTI2 = 8, | ||
| 64 | EXTI3 = 9, | ||
| 65 | EXTI4 = 10, | ||
| 66 | EXTI9_5 = 23, | ||
| 67 | FLASH = 4, | ||
| 68 | FMC = 48, | ||
| 69 | FPU = 81, | ||
| 70 | GFXMMU = 93, | ||
| 71 | HASH_CRS = 82, | ||
| 72 | I2C1_ER = 32, | ||
| 73 | I2C1_EV = 31, | ||
| 74 | I2C2_ER = 34, | ||
| 75 | I2C2_EV = 33, | ||
| 76 | I2C3_ER = 73, | ||
| 77 | I2C3_EV = 72, | ||
| 78 | I2C4_ER = 83, | ||
| 79 | I2C4_EV = 84, | ||
| 80 | LPTIM1 = 65, | ||
| 81 | LPTIM2 = 66, | ||
| 82 | LPUART1 = 70, | ||
| 83 | LTDC = 91, | ||
| 84 | LTDC_ER = 92, | ||
| 85 | OCTOSPI1 = 71, | ||
| 86 | OCTOSPI2 = 76, | ||
| 87 | OTG_FS = 67, | ||
| 88 | PVD_PVM = 1, | ||
| 89 | RCC = 5, | ||
| 90 | RNG = 80, | ||
| 91 | RTC_Alarm = 41, | ||
| 92 | RTC_WKUP = 3, | ||
| 93 | SAI1 = 74, | ||
| 94 | SAI2 = 75, | ||
| 95 | SDMMC1 = 49, | ||
| 96 | SPI1 = 35, | ||
| 97 | SPI2 = 36, | ||
| 98 | SPI3 = 51, | ||
| 99 | TAMP_STAMP = 2, | ||
| 100 | TIM1_BRK_TIM15 = 24, | ||
| 101 | TIM1_CC = 27, | ||
| 102 | TIM1_TRG_COM_TIM17 = 26, | ||
| 103 | TIM1_UP_TIM16 = 25, | ||
| 104 | TIM2 = 28, | ||
| 105 | TIM3 = 29, | ||
| 106 | TIM4 = 30, | ||
| 107 | TIM5 = 50, | ||
| 108 | TIM6_DAC = 54, | ||
| 109 | TIM7 = 55, | ||
| 110 | TIM8_BRK = 43, | ||
| 111 | TIM8_CC = 46, | ||
| 112 | TIM8_TRG_COM = 45, | ||
| 113 | TIM8_UP = 44, | ||
| 114 | TSC = 77, | ||
| 115 | UART4 = 52, | ||
| 116 | UART5 = 53, | ||
| 117 | USART1 = 37, | ||
| 118 | USART2 = 38, | ||
| 119 | USART3 = 39, | ||
| 120 | WWDG = 0, | ||
| 121 | } | ||
| 122 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 123 | #[inline(always)] | ||
| 124 | fn number(self) -> u16 { | ||
| 125 | self as u16 | ||
| 126 | } | ||
| 127 | } | ||
| 128 | |||
| 129 | declare!(ADC1); | ||
| 130 | declare!(AES); | ||
| 131 | declare!(CAN1_RX0); | ||
| 132 | declare!(CAN1_RX1); | ||
| 133 | declare!(CAN1_SCE); | ||
| 134 | declare!(CAN1_TX); | ||
| 135 | declare!(COMP); | ||
| 136 | declare!(DCMI); | ||
| 137 | declare!(DFSDM1_FLT0); | ||
| 138 | declare!(DFSDM1_FLT1); | ||
| 139 | declare!(DFSDM1_FLT2); | ||
| 140 | declare!(DFSDM1_FLT3); | ||
| 141 | declare!(DMA1_Channel1); | ||
| 142 | declare!(DMA1_Channel2); | ||
| 143 | declare!(DMA1_Channel3); | ||
| 144 | declare!(DMA1_Channel4); | ||
| 145 | declare!(DMA1_Channel5); | ||
| 146 | declare!(DMA1_Channel6); | ||
| 147 | declare!(DMA1_Channel7); | ||
| 148 | declare!(DMA2D); | ||
| 149 | declare!(DMA2_Channel1); | ||
| 150 | declare!(DMA2_Channel2); | ||
| 151 | declare!(DMA2_Channel3); | ||
| 152 | declare!(DMA2_Channel4); | ||
| 153 | declare!(DMA2_Channel5); | ||
| 154 | declare!(DMA2_Channel6); | ||
| 155 | declare!(DMA2_Channel7); | ||
| 156 | declare!(DMAMUX1_OVR); | ||
| 157 | declare!(DSI); | ||
| 158 | declare!(EXTI0); | ||
| 159 | declare!(EXTI1); | ||
| 160 | declare!(EXTI15_10); | ||
| 161 | declare!(EXTI2); | ||
| 162 | declare!(EXTI3); | ||
| 163 | declare!(EXTI4); | ||
| 164 | declare!(EXTI9_5); | ||
| 165 | declare!(FLASH); | ||
| 166 | declare!(FMC); | ||
| 167 | declare!(FPU); | ||
| 168 | declare!(GFXMMU); | ||
| 169 | declare!(HASH_CRS); | ||
| 170 | declare!(I2C1_ER); | ||
| 171 | declare!(I2C1_EV); | ||
| 172 | declare!(I2C2_ER); | ||
| 173 | declare!(I2C2_EV); | ||
| 174 | declare!(I2C3_ER); | ||
| 175 | declare!(I2C3_EV); | ||
| 176 | declare!(I2C4_ER); | ||
| 177 | declare!(I2C4_EV); | ||
| 178 | declare!(LPTIM1); | ||
| 179 | declare!(LPTIM2); | ||
| 180 | declare!(LPUART1); | ||
| 181 | declare!(LTDC); | ||
| 182 | declare!(LTDC_ER); | ||
| 183 | declare!(OCTOSPI1); | ||
| 184 | declare!(OCTOSPI2); | ||
| 185 | declare!(OTG_FS); | ||
| 186 | declare!(PVD_PVM); | ||
| 187 | declare!(RCC); | ||
| 188 | declare!(RNG); | ||
| 189 | declare!(RTC_Alarm); | ||
| 190 | declare!(RTC_WKUP); | ||
| 191 | declare!(SAI1); | ||
| 192 | declare!(SAI2); | ||
| 193 | declare!(SDMMC1); | ||
| 194 | declare!(SPI1); | ||
| 195 | declare!(SPI2); | ||
| 196 | declare!(SPI3); | ||
| 197 | declare!(TAMP_STAMP); | ||
| 198 | declare!(TIM1_BRK_TIM15); | ||
| 199 | declare!(TIM1_CC); | ||
| 200 | declare!(TIM1_TRG_COM_TIM17); | ||
| 201 | declare!(TIM1_UP_TIM16); | ||
| 202 | declare!(TIM2); | ||
| 203 | declare!(TIM3); | ||
| 204 | declare!(TIM4); | ||
| 205 | declare!(TIM5); | ||
| 206 | declare!(TIM6_DAC); | ||
| 207 | declare!(TIM7); | ||
| 208 | declare!(TIM8_BRK); | ||
| 209 | declare!(TIM8_CC); | ||
| 210 | declare!(TIM8_TRG_COM); | ||
| 211 | declare!(TIM8_UP); | ||
| 212 | declare!(TSC); | ||
| 213 | declare!(UART4); | ||
| 214 | declare!(UART5); | ||
| 215 | declare!(USART1); | ||
| 216 | declare!(USART2); | ||
| 217 | declare!(USART3); | ||
| 218 | declare!(WWDG); | ||
| 219 | } | ||
| 220 | mod interrupt_vector { | ||
| 221 | extern "C" { | ||
| 222 | fn ADC1(); | ||
| 223 | fn AES(); | ||
| 224 | fn CAN1_RX0(); | ||
| 225 | fn CAN1_RX1(); | ||
| 226 | fn CAN1_SCE(); | ||
| 227 | fn CAN1_TX(); | ||
| 228 | fn COMP(); | ||
| 229 | fn DCMI(); | ||
| 230 | fn DFSDM1_FLT0(); | ||
| 231 | fn DFSDM1_FLT1(); | ||
| 232 | fn DFSDM1_FLT2(); | ||
| 233 | fn DFSDM1_FLT3(); | ||
| 234 | fn DMA1_Channel1(); | ||
| 235 | fn DMA1_Channel2(); | ||
| 236 | fn DMA1_Channel3(); | ||
| 237 | fn DMA1_Channel4(); | ||
| 238 | fn DMA1_Channel5(); | ||
| 239 | fn DMA1_Channel6(); | ||
| 240 | fn DMA1_Channel7(); | ||
| 241 | fn DMA2D(); | ||
| 242 | fn DMA2_Channel1(); | ||
| 243 | fn DMA2_Channel2(); | ||
| 244 | fn DMA2_Channel3(); | ||
| 245 | fn DMA2_Channel4(); | ||
| 246 | fn DMA2_Channel5(); | ||
| 247 | fn DMA2_Channel6(); | ||
| 248 | fn DMA2_Channel7(); | ||
| 249 | fn DMAMUX1_OVR(); | ||
| 250 | fn DSI(); | ||
| 251 | fn EXTI0(); | ||
| 252 | fn EXTI1(); | ||
| 253 | fn EXTI15_10(); | ||
| 254 | fn EXTI2(); | ||
| 255 | fn EXTI3(); | ||
| 256 | fn EXTI4(); | ||
| 257 | fn EXTI9_5(); | ||
| 258 | fn FLASH(); | ||
| 259 | fn FMC(); | ||
| 260 | fn FPU(); | ||
| 261 | fn GFXMMU(); | ||
| 262 | fn HASH_CRS(); | ||
| 263 | fn I2C1_ER(); | ||
| 264 | fn I2C1_EV(); | ||
| 265 | fn I2C2_ER(); | ||
| 266 | fn I2C2_EV(); | ||
| 267 | fn I2C3_ER(); | ||
| 268 | fn I2C3_EV(); | ||
| 269 | fn I2C4_ER(); | ||
| 270 | fn I2C4_EV(); | ||
| 271 | fn LPTIM1(); | ||
| 272 | fn LPTIM2(); | ||
| 273 | fn LPUART1(); | ||
| 274 | fn LTDC(); | ||
| 275 | fn LTDC_ER(); | ||
| 276 | fn OCTOSPI1(); | ||
| 277 | fn OCTOSPI2(); | ||
| 278 | fn OTG_FS(); | ||
| 279 | fn PVD_PVM(); | ||
| 280 | fn RCC(); | ||
| 281 | fn RNG(); | ||
| 282 | fn RTC_Alarm(); | ||
| 283 | fn RTC_WKUP(); | ||
| 284 | fn SAI1(); | ||
| 285 | fn SAI2(); | ||
| 286 | fn SDMMC1(); | ||
| 287 | fn SPI1(); | ||
| 288 | fn SPI2(); | ||
| 289 | fn SPI3(); | ||
| 290 | fn TAMP_STAMP(); | ||
| 291 | fn TIM1_BRK_TIM15(); | ||
| 292 | fn TIM1_CC(); | ||
| 293 | fn TIM1_TRG_COM_TIM17(); | ||
| 294 | fn TIM1_UP_TIM16(); | ||
| 295 | fn TIM2(); | ||
| 296 | fn TIM3(); | ||
| 297 | fn TIM4(); | ||
| 298 | fn TIM5(); | ||
| 299 | fn TIM6_DAC(); | ||
| 300 | fn TIM7(); | ||
| 301 | fn TIM8_BRK(); | ||
| 302 | fn TIM8_CC(); | ||
| 303 | fn TIM8_TRG_COM(); | ||
| 304 | fn TIM8_UP(); | ||
| 305 | fn TSC(); | ||
| 306 | fn UART4(); | ||
| 307 | fn UART5(); | ||
| 308 | fn USART1(); | ||
| 309 | fn USART2(); | ||
| 310 | fn USART3(); | ||
| 311 | fn WWDG(); | ||
| 312 | } | ||
| 313 | pub union Vector { | ||
| 314 | _handler: unsafe extern "C" fn(), | ||
| 315 | _reserved: u32, | ||
| 316 | } | ||
| 317 | #[link_section = ".vector_table.interrupts"] | ||
| 318 | #[no_mangle] | ||
| 319 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 320 | Vector { _handler: WWDG }, | ||
| 321 | Vector { _handler: PVD_PVM }, | ||
| 322 | Vector { | ||
| 323 | _handler: TAMP_STAMP, | ||
| 324 | }, | ||
| 325 | Vector { _handler: RTC_WKUP }, | ||
| 326 | Vector { _handler: FLASH }, | ||
| 327 | Vector { _handler: RCC }, | ||
| 328 | Vector { _handler: EXTI0 }, | ||
| 329 | Vector { _handler: EXTI1 }, | ||
| 330 | Vector { _handler: EXTI2 }, | ||
| 331 | Vector { _handler: EXTI3 }, | ||
| 332 | Vector { _handler: EXTI4 }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel1, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel2, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel3, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel4, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel5, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel6, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA1_Channel7, | ||
| 353 | }, | ||
| 354 | Vector { _handler: ADC1 }, | ||
| 355 | Vector { _handler: CAN1_TX }, | ||
| 356 | Vector { _handler: CAN1_RX0 }, | ||
| 357 | Vector { _handler: CAN1_RX1 }, | ||
| 358 | Vector { _handler: CAN1_SCE }, | ||
| 359 | Vector { _handler: EXTI9_5 }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_BRK_TIM15, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_UP_TIM16, | ||
| 365 | }, | ||
| 366 | Vector { | ||
| 367 | _handler: TIM1_TRG_COM_TIM17, | ||
| 368 | }, | ||
| 369 | Vector { _handler: TIM1_CC }, | ||
| 370 | Vector { _handler: TIM2 }, | ||
| 371 | Vector { _handler: TIM3 }, | ||
| 372 | Vector { _handler: TIM4 }, | ||
| 373 | Vector { _handler: I2C1_EV }, | ||
| 374 | Vector { _handler: I2C1_ER }, | ||
| 375 | Vector { _handler: I2C2_EV }, | ||
| 376 | Vector { _handler: I2C2_ER }, | ||
| 377 | Vector { _handler: SPI1 }, | ||
| 378 | Vector { _handler: SPI2 }, | ||
| 379 | Vector { _handler: USART1 }, | ||
| 380 | Vector { _handler: USART2 }, | ||
| 381 | Vector { _handler: USART3 }, | ||
| 382 | Vector { | ||
| 383 | _handler: EXTI15_10, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: RTC_Alarm, | ||
| 387 | }, | ||
| 388 | Vector { | ||
| 389 | _handler: DFSDM1_FLT3, | ||
| 390 | }, | ||
| 391 | Vector { _handler: TIM8_BRK }, | ||
| 392 | Vector { _handler: TIM8_UP }, | ||
| 393 | Vector { | ||
| 394 | _handler: TIM8_TRG_COM, | ||
| 395 | }, | ||
| 396 | Vector { _handler: TIM8_CC }, | ||
| 397 | Vector { _reserved: 0 }, | ||
| 398 | Vector { _handler: FMC }, | ||
| 399 | Vector { _handler: SDMMC1 }, | ||
| 400 | Vector { _handler: TIM5 }, | ||
| 401 | Vector { _handler: SPI3 }, | ||
| 402 | Vector { _handler: UART4 }, | ||
| 403 | Vector { _handler: UART5 }, | ||
| 404 | Vector { _handler: TIM6_DAC }, | ||
| 405 | Vector { _handler: TIM7 }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel1, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel2, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel3, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel4, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel5, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT0, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT1, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DFSDM1_FLT2, | ||
| 429 | }, | ||
| 430 | Vector { _handler: COMP }, | ||
| 431 | Vector { _handler: LPTIM1 }, | ||
| 432 | Vector { _handler: LPTIM2 }, | ||
| 433 | Vector { _handler: OTG_FS }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel6, | ||
| 436 | }, | ||
| 437 | Vector { | ||
| 438 | _handler: DMA2_Channel7, | ||
| 439 | }, | ||
| 440 | Vector { _handler: LPUART1 }, | ||
| 441 | Vector { _handler: OCTOSPI1 }, | ||
| 442 | Vector { _handler: I2C3_EV }, | ||
| 443 | Vector { _handler: I2C3_ER }, | ||
| 444 | Vector { _handler: SAI1 }, | ||
| 445 | Vector { _handler: SAI2 }, | ||
| 446 | Vector { _handler: OCTOSPI2 }, | ||
| 447 | Vector { _handler: TSC }, | ||
| 448 | Vector { _handler: DSI }, | ||
| 449 | Vector { _handler: AES }, | ||
| 450 | Vector { _handler: RNG }, | ||
| 451 | Vector { _handler: FPU }, | ||
| 452 | Vector { _handler: HASH_CRS }, | ||
| 453 | Vector { _handler: I2C4_ER }, | ||
| 454 | Vector { _handler: I2C4_EV }, | ||
| 455 | Vector { _handler: DCMI }, | ||
| 456 | Vector { _reserved: 0 }, | ||
| 457 | Vector { _reserved: 0 }, | ||
| 458 | Vector { _reserved: 0 }, | ||
| 459 | Vector { _reserved: 0 }, | ||
| 460 | Vector { _handler: DMA2D }, | ||
| 461 | Vector { _handler: LTDC }, | ||
| 462 | Vector { _handler: LTDC_ER }, | ||
| 463 | Vector { _handler: GFXMMU }, | ||
| 464 | Vector { | ||
| 465 | _handler: DMAMUX1_OVR, | ||
| 466 | }, | ||
| 467 | ]; | ||
| 468 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 469 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 470 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 471 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4s9vi.rs b/embassy-stm32/src/chip/stm32l4s9vi.rs index bae375145..a79938e3e 100644 --- a/embassy-stm32/src/chip/stm32l4s9vi.rs +++ b/embassy-stm32/src/chip/stm32l4s9vi.rs | |||
| @@ -1,22 +1,471 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, | 13 | PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, |
| 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, | 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, |
| 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, | 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, |
| 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG | 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | DSI = 78, | ||
| 60 | EXTI0 = 6, | ||
| 61 | EXTI1 = 7, | ||
| 62 | EXTI15_10 = 40, | ||
| 63 | EXTI2 = 8, | ||
| 64 | EXTI3 = 9, | ||
| 65 | EXTI4 = 10, | ||
| 66 | EXTI9_5 = 23, | ||
| 67 | FLASH = 4, | ||
| 68 | FMC = 48, | ||
| 69 | FPU = 81, | ||
| 70 | GFXMMU = 93, | ||
| 71 | HASH_CRS = 82, | ||
| 72 | I2C1_ER = 32, | ||
| 73 | I2C1_EV = 31, | ||
| 74 | I2C2_ER = 34, | ||
| 75 | I2C2_EV = 33, | ||
| 76 | I2C3_ER = 73, | ||
| 77 | I2C3_EV = 72, | ||
| 78 | I2C4_ER = 83, | ||
| 79 | I2C4_EV = 84, | ||
| 80 | LPTIM1 = 65, | ||
| 81 | LPTIM2 = 66, | ||
| 82 | LPUART1 = 70, | ||
| 83 | LTDC = 91, | ||
| 84 | LTDC_ER = 92, | ||
| 85 | OCTOSPI1 = 71, | ||
| 86 | OCTOSPI2 = 76, | ||
| 87 | OTG_FS = 67, | ||
| 88 | PVD_PVM = 1, | ||
| 89 | RCC = 5, | ||
| 90 | RNG = 80, | ||
| 91 | RTC_Alarm = 41, | ||
| 92 | RTC_WKUP = 3, | ||
| 93 | SAI1 = 74, | ||
| 94 | SAI2 = 75, | ||
| 95 | SDMMC1 = 49, | ||
| 96 | SPI1 = 35, | ||
| 97 | SPI2 = 36, | ||
| 98 | SPI3 = 51, | ||
| 99 | TAMP_STAMP = 2, | ||
| 100 | TIM1_BRK_TIM15 = 24, | ||
| 101 | TIM1_CC = 27, | ||
| 102 | TIM1_TRG_COM_TIM17 = 26, | ||
| 103 | TIM1_UP_TIM16 = 25, | ||
| 104 | TIM2 = 28, | ||
| 105 | TIM3 = 29, | ||
| 106 | TIM4 = 30, | ||
| 107 | TIM5 = 50, | ||
| 108 | TIM6_DAC = 54, | ||
| 109 | TIM7 = 55, | ||
| 110 | TIM8_BRK = 43, | ||
| 111 | TIM8_CC = 46, | ||
| 112 | TIM8_TRG_COM = 45, | ||
| 113 | TIM8_UP = 44, | ||
| 114 | TSC = 77, | ||
| 115 | UART4 = 52, | ||
| 116 | UART5 = 53, | ||
| 117 | USART1 = 37, | ||
| 118 | USART2 = 38, | ||
| 119 | USART3 = 39, | ||
| 120 | WWDG = 0, | ||
| 121 | } | ||
| 122 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 123 | #[inline(always)] | ||
| 124 | fn number(self) -> u16 { | ||
| 125 | self as u16 | ||
| 126 | } | ||
| 127 | } | ||
| 128 | |||
| 129 | declare!(ADC1); | ||
| 130 | declare!(AES); | ||
| 131 | declare!(CAN1_RX0); | ||
| 132 | declare!(CAN1_RX1); | ||
| 133 | declare!(CAN1_SCE); | ||
| 134 | declare!(CAN1_TX); | ||
| 135 | declare!(COMP); | ||
| 136 | declare!(DCMI); | ||
| 137 | declare!(DFSDM1_FLT0); | ||
| 138 | declare!(DFSDM1_FLT1); | ||
| 139 | declare!(DFSDM1_FLT2); | ||
| 140 | declare!(DFSDM1_FLT3); | ||
| 141 | declare!(DMA1_Channel1); | ||
| 142 | declare!(DMA1_Channel2); | ||
| 143 | declare!(DMA1_Channel3); | ||
| 144 | declare!(DMA1_Channel4); | ||
| 145 | declare!(DMA1_Channel5); | ||
| 146 | declare!(DMA1_Channel6); | ||
| 147 | declare!(DMA1_Channel7); | ||
| 148 | declare!(DMA2D); | ||
| 149 | declare!(DMA2_Channel1); | ||
| 150 | declare!(DMA2_Channel2); | ||
| 151 | declare!(DMA2_Channel3); | ||
| 152 | declare!(DMA2_Channel4); | ||
| 153 | declare!(DMA2_Channel5); | ||
| 154 | declare!(DMA2_Channel6); | ||
| 155 | declare!(DMA2_Channel7); | ||
| 156 | declare!(DMAMUX1_OVR); | ||
| 157 | declare!(DSI); | ||
| 158 | declare!(EXTI0); | ||
| 159 | declare!(EXTI1); | ||
| 160 | declare!(EXTI15_10); | ||
| 161 | declare!(EXTI2); | ||
| 162 | declare!(EXTI3); | ||
| 163 | declare!(EXTI4); | ||
| 164 | declare!(EXTI9_5); | ||
| 165 | declare!(FLASH); | ||
| 166 | declare!(FMC); | ||
| 167 | declare!(FPU); | ||
| 168 | declare!(GFXMMU); | ||
| 169 | declare!(HASH_CRS); | ||
| 170 | declare!(I2C1_ER); | ||
| 171 | declare!(I2C1_EV); | ||
| 172 | declare!(I2C2_ER); | ||
| 173 | declare!(I2C2_EV); | ||
| 174 | declare!(I2C3_ER); | ||
| 175 | declare!(I2C3_EV); | ||
| 176 | declare!(I2C4_ER); | ||
| 177 | declare!(I2C4_EV); | ||
| 178 | declare!(LPTIM1); | ||
| 179 | declare!(LPTIM2); | ||
| 180 | declare!(LPUART1); | ||
| 181 | declare!(LTDC); | ||
| 182 | declare!(LTDC_ER); | ||
| 183 | declare!(OCTOSPI1); | ||
| 184 | declare!(OCTOSPI2); | ||
| 185 | declare!(OTG_FS); | ||
| 186 | declare!(PVD_PVM); | ||
| 187 | declare!(RCC); | ||
| 188 | declare!(RNG); | ||
| 189 | declare!(RTC_Alarm); | ||
| 190 | declare!(RTC_WKUP); | ||
| 191 | declare!(SAI1); | ||
| 192 | declare!(SAI2); | ||
| 193 | declare!(SDMMC1); | ||
| 194 | declare!(SPI1); | ||
| 195 | declare!(SPI2); | ||
| 196 | declare!(SPI3); | ||
| 197 | declare!(TAMP_STAMP); | ||
| 198 | declare!(TIM1_BRK_TIM15); | ||
| 199 | declare!(TIM1_CC); | ||
| 200 | declare!(TIM1_TRG_COM_TIM17); | ||
| 201 | declare!(TIM1_UP_TIM16); | ||
| 202 | declare!(TIM2); | ||
| 203 | declare!(TIM3); | ||
| 204 | declare!(TIM4); | ||
| 205 | declare!(TIM5); | ||
| 206 | declare!(TIM6_DAC); | ||
| 207 | declare!(TIM7); | ||
| 208 | declare!(TIM8_BRK); | ||
| 209 | declare!(TIM8_CC); | ||
| 210 | declare!(TIM8_TRG_COM); | ||
| 211 | declare!(TIM8_UP); | ||
| 212 | declare!(TSC); | ||
| 213 | declare!(UART4); | ||
| 214 | declare!(UART5); | ||
| 215 | declare!(USART1); | ||
| 216 | declare!(USART2); | ||
| 217 | declare!(USART3); | ||
| 218 | declare!(WWDG); | ||
| 219 | } | ||
| 220 | mod interrupt_vector { | ||
| 221 | extern "C" { | ||
| 222 | fn ADC1(); | ||
| 223 | fn AES(); | ||
| 224 | fn CAN1_RX0(); | ||
| 225 | fn CAN1_RX1(); | ||
| 226 | fn CAN1_SCE(); | ||
| 227 | fn CAN1_TX(); | ||
| 228 | fn COMP(); | ||
| 229 | fn DCMI(); | ||
| 230 | fn DFSDM1_FLT0(); | ||
| 231 | fn DFSDM1_FLT1(); | ||
| 232 | fn DFSDM1_FLT2(); | ||
| 233 | fn DFSDM1_FLT3(); | ||
| 234 | fn DMA1_Channel1(); | ||
| 235 | fn DMA1_Channel2(); | ||
| 236 | fn DMA1_Channel3(); | ||
| 237 | fn DMA1_Channel4(); | ||
| 238 | fn DMA1_Channel5(); | ||
| 239 | fn DMA1_Channel6(); | ||
| 240 | fn DMA1_Channel7(); | ||
| 241 | fn DMA2D(); | ||
| 242 | fn DMA2_Channel1(); | ||
| 243 | fn DMA2_Channel2(); | ||
| 244 | fn DMA2_Channel3(); | ||
| 245 | fn DMA2_Channel4(); | ||
| 246 | fn DMA2_Channel5(); | ||
| 247 | fn DMA2_Channel6(); | ||
| 248 | fn DMA2_Channel7(); | ||
| 249 | fn DMAMUX1_OVR(); | ||
| 250 | fn DSI(); | ||
| 251 | fn EXTI0(); | ||
| 252 | fn EXTI1(); | ||
| 253 | fn EXTI15_10(); | ||
| 254 | fn EXTI2(); | ||
| 255 | fn EXTI3(); | ||
| 256 | fn EXTI4(); | ||
| 257 | fn EXTI9_5(); | ||
| 258 | fn FLASH(); | ||
| 259 | fn FMC(); | ||
| 260 | fn FPU(); | ||
| 261 | fn GFXMMU(); | ||
| 262 | fn HASH_CRS(); | ||
| 263 | fn I2C1_ER(); | ||
| 264 | fn I2C1_EV(); | ||
| 265 | fn I2C2_ER(); | ||
| 266 | fn I2C2_EV(); | ||
| 267 | fn I2C3_ER(); | ||
| 268 | fn I2C3_EV(); | ||
| 269 | fn I2C4_ER(); | ||
| 270 | fn I2C4_EV(); | ||
| 271 | fn LPTIM1(); | ||
| 272 | fn LPTIM2(); | ||
| 273 | fn LPUART1(); | ||
| 274 | fn LTDC(); | ||
| 275 | fn LTDC_ER(); | ||
| 276 | fn OCTOSPI1(); | ||
| 277 | fn OCTOSPI2(); | ||
| 278 | fn OTG_FS(); | ||
| 279 | fn PVD_PVM(); | ||
| 280 | fn RCC(); | ||
| 281 | fn RNG(); | ||
| 282 | fn RTC_Alarm(); | ||
| 283 | fn RTC_WKUP(); | ||
| 284 | fn SAI1(); | ||
| 285 | fn SAI2(); | ||
| 286 | fn SDMMC1(); | ||
| 287 | fn SPI1(); | ||
| 288 | fn SPI2(); | ||
| 289 | fn SPI3(); | ||
| 290 | fn TAMP_STAMP(); | ||
| 291 | fn TIM1_BRK_TIM15(); | ||
| 292 | fn TIM1_CC(); | ||
| 293 | fn TIM1_TRG_COM_TIM17(); | ||
| 294 | fn TIM1_UP_TIM16(); | ||
| 295 | fn TIM2(); | ||
| 296 | fn TIM3(); | ||
| 297 | fn TIM4(); | ||
| 298 | fn TIM5(); | ||
| 299 | fn TIM6_DAC(); | ||
| 300 | fn TIM7(); | ||
| 301 | fn TIM8_BRK(); | ||
| 302 | fn TIM8_CC(); | ||
| 303 | fn TIM8_TRG_COM(); | ||
| 304 | fn TIM8_UP(); | ||
| 305 | fn TSC(); | ||
| 306 | fn UART4(); | ||
| 307 | fn UART5(); | ||
| 308 | fn USART1(); | ||
| 309 | fn USART2(); | ||
| 310 | fn USART3(); | ||
| 311 | fn WWDG(); | ||
| 312 | } | ||
| 313 | pub union Vector { | ||
| 314 | _handler: unsafe extern "C" fn(), | ||
| 315 | _reserved: u32, | ||
| 316 | } | ||
| 317 | #[link_section = ".vector_table.interrupts"] | ||
| 318 | #[no_mangle] | ||
| 319 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 320 | Vector { _handler: WWDG }, | ||
| 321 | Vector { _handler: PVD_PVM }, | ||
| 322 | Vector { | ||
| 323 | _handler: TAMP_STAMP, | ||
| 324 | }, | ||
| 325 | Vector { _handler: RTC_WKUP }, | ||
| 326 | Vector { _handler: FLASH }, | ||
| 327 | Vector { _handler: RCC }, | ||
| 328 | Vector { _handler: EXTI0 }, | ||
| 329 | Vector { _handler: EXTI1 }, | ||
| 330 | Vector { _handler: EXTI2 }, | ||
| 331 | Vector { _handler: EXTI3 }, | ||
| 332 | Vector { _handler: EXTI4 }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel1, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel2, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel3, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel4, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel5, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel6, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA1_Channel7, | ||
| 353 | }, | ||
| 354 | Vector { _handler: ADC1 }, | ||
| 355 | Vector { _handler: CAN1_TX }, | ||
| 356 | Vector { _handler: CAN1_RX0 }, | ||
| 357 | Vector { _handler: CAN1_RX1 }, | ||
| 358 | Vector { _handler: CAN1_SCE }, | ||
| 359 | Vector { _handler: EXTI9_5 }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_BRK_TIM15, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_UP_TIM16, | ||
| 365 | }, | ||
| 366 | Vector { | ||
| 367 | _handler: TIM1_TRG_COM_TIM17, | ||
| 368 | }, | ||
| 369 | Vector { _handler: TIM1_CC }, | ||
| 370 | Vector { _handler: TIM2 }, | ||
| 371 | Vector { _handler: TIM3 }, | ||
| 372 | Vector { _handler: TIM4 }, | ||
| 373 | Vector { _handler: I2C1_EV }, | ||
| 374 | Vector { _handler: I2C1_ER }, | ||
| 375 | Vector { _handler: I2C2_EV }, | ||
| 376 | Vector { _handler: I2C2_ER }, | ||
| 377 | Vector { _handler: SPI1 }, | ||
| 378 | Vector { _handler: SPI2 }, | ||
| 379 | Vector { _handler: USART1 }, | ||
| 380 | Vector { _handler: USART2 }, | ||
| 381 | Vector { _handler: USART3 }, | ||
| 382 | Vector { | ||
| 383 | _handler: EXTI15_10, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: RTC_Alarm, | ||
| 387 | }, | ||
| 388 | Vector { | ||
| 389 | _handler: DFSDM1_FLT3, | ||
| 390 | }, | ||
| 391 | Vector { _handler: TIM8_BRK }, | ||
| 392 | Vector { _handler: TIM8_UP }, | ||
| 393 | Vector { | ||
| 394 | _handler: TIM8_TRG_COM, | ||
| 395 | }, | ||
| 396 | Vector { _handler: TIM8_CC }, | ||
| 397 | Vector { _reserved: 0 }, | ||
| 398 | Vector { _handler: FMC }, | ||
| 399 | Vector { _handler: SDMMC1 }, | ||
| 400 | Vector { _handler: TIM5 }, | ||
| 401 | Vector { _handler: SPI3 }, | ||
| 402 | Vector { _handler: UART4 }, | ||
| 403 | Vector { _handler: UART5 }, | ||
| 404 | Vector { _handler: TIM6_DAC }, | ||
| 405 | Vector { _handler: TIM7 }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel1, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel2, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel3, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel4, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel5, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT0, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT1, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DFSDM1_FLT2, | ||
| 429 | }, | ||
| 430 | Vector { _handler: COMP }, | ||
| 431 | Vector { _handler: LPTIM1 }, | ||
| 432 | Vector { _handler: LPTIM2 }, | ||
| 433 | Vector { _handler: OTG_FS }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel6, | ||
| 436 | }, | ||
| 437 | Vector { | ||
| 438 | _handler: DMA2_Channel7, | ||
| 439 | }, | ||
| 440 | Vector { _handler: LPUART1 }, | ||
| 441 | Vector { _handler: OCTOSPI1 }, | ||
| 442 | Vector { _handler: I2C3_EV }, | ||
| 443 | Vector { _handler: I2C3_ER }, | ||
| 444 | Vector { _handler: SAI1 }, | ||
| 445 | Vector { _handler: SAI2 }, | ||
| 446 | Vector { _handler: OCTOSPI2 }, | ||
| 447 | Vector { _handler: TSC }, | ||
| 448 | Vector { _handler: DSI }, | ||
| 449 | Vector { _handler: AES }, | ||
| 450 | Vector { _handler: RNG }, | ||
| 451 | Vector { _handler: FPU }, | ||
| 452 | Vector { _handler: HASH_CRS }, | ||
| 453 | Vector { _handler: I2C4_ER }, | ||
| 454 | Vector { _handler: I2C4_EV }, | ||
| 455 | Vector { _handler: DCMI }, | ||
| 456 | Vector { _reserved: 0 }, | ||
| 457 | Vector { _reserved: 0 }, | ||
| 458 | Vector { _reserved: 0 }, | ||
| 459 | Vector { _reserved: 0 }, | ||
| 460 | Vector { _handler: DMA2D }, | ||
| 461 | Vector { _handler: LTDC }, | ||
| 462 | Vector { _handler: LTDC_ER }, | ||
| 463 | Vector { _handler: GFXMMU }, | ||
| 464 | Vector { | ||
| 465 | _handler: DMAMUX1_OVR, | ||
| 466 | }, | ||
| 467 | ]; | ||
| 468 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 469 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 470 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 471 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
diff --git a/embassy-stm32/src/chip/stm32l4s9zi.rs b/embassy-stm32/src/chip/stm32l4s9zi.rs index bae375145..a79938e3e 100644 --- a/embassy-stm32/src/chip/stm32l4s9zi.rs +++ b/embassy-stm32/src/chip/stm32l4s9zi.rs | |||
| @@ -1,22 +1,471 @@ | |||
| 1 | use embassy_extras::peripherals; | 1 | use embassy_extras::peripherals; |
| 2 | peripherals!( | 2 | peripherals!( |
| 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, | 3 | EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, |
| 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, | 4 | EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, |
| 5 | PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, | 5 | PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, |
| 6 | PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, | 6 | PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, |
| 7 | PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, | 7 | PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, |
| 8 | PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, | 8 | PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, |
| 9 | PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, | 9 | PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, |
| 10 | PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, | 10 | PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, |
| 11 | PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, | 11 | PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, |
| 12 | PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, | 12 | PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, |
| 13 | PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, | 13 | PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, |
| 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, | 14 | OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, |
| 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, | 15 | SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, |
| 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG | 16 | USART1, USART2, USART3, USB_OTG_FS, WWDG |
| 17 | ); | 17 | ); |
| 18 | pub const SYSCFG_BASE: usize = 0x40010000; | ||
| 19 | pub const EXTI_BASE: usize = 0x40010400; | ||
| 18 | pub const GPIO_BASE: usize = 0x48000000; | 20 | pub const GPIO_BASE: usize = 0x48000000; |
| 19 | pub const GPIO_STRIDE: usize = 0x400; | 21 | pub const GPIO_STRIDE: usize = 0x400; |
| 22 | |||
| 23 | pub mod interrupt { | ||
| 24 | pub use cortex_m::interrupt::{CriticalSection, Mutex}; | ||
| 25 | pub use embassy::interrupt::{declare, take, Interrupt}; | ||
| 26 | pub use embassy_extras::interrupt::Priority4 as Priority; | ||
| 27 | |||
| 28 | #[derive(Copy, Clone, Debug, PartialEq, Eq)] | ||
| 29 | #[allow(non_camel_case_types)] | ||
| 30 | enum InterruptEnum { | ||
| 31 | ADC1 = 18, | ||
| 32 | AES = 79, | ||
| 33 | CAN1_RX0 = 20, | ||
| 34 | CAN1_RX1 = 21, | ||
| 35 | CAN1_SCE = 22, | ||
| 36 | CAN1_TX = 19, | ||
| 37 | COMP = 64, | ||
| 38 | DCMI = 85, | ||
| 39 | DFSDM1_FLT0 = 61, | ||
| 40 | DFSDM1_FLT1 = 62, | ||
| 41 | DFSDM1_FLT2 = 63, | ||
| 42 | DFSDM1_FLT3 = 42, | ||
| 43 | DMA1_Channel1 = 11, | ||
| 44 | DMA1_Channel2 = 12, | ||
| 45 | DMA1_Channel3 = 13, | ||
| 46 | DMA1_Channel4 = 14, | ||
| 47 | DMA1_Channel5 = 15, | ||
| 48 | DMA1_Channel6 = 16, | ||
| 49 | DMA1_Channel7 = 17, | ||
| 50 | DMA2D = 90, | ||
| 51 | DMA2_Channel1 = 56, | ||
| 52 | DMA2_Channel2 = 57, | ||
| 53 | DMA2_Channel3 = 58, | ||
| 54 | DMA2_Channel4 = 59, | ||
| 55 | DMA2_Channel5 = 60, | ||
| 56 | DMA2_Channel6 = 68, | ||
| 57 | DMA2_Channel7 = 69, | ||
| 58 | DMAMUX1_OVR = 94, | ||
| 59 | DSI = 78, | ||
| 60 | EXTI0 = 6, | ||
| 61 | EXTI1 = 7, | ||
| 62 | EXTI15_10 = 40, | ||
| 63 | EXTI2 = 8, | ||
| 64 | EXTI3 = 9, | ||
| 65 | EXTI4 = 10, | ||
| 66 | EXTI9_5 = 23, | ||
| 67 | FLASH = 4, | ||
| 68 | FMC = 48, | ||
| 69 | FPU = 81, | ||
| 70 | GFXMMU = 93, | ||
| 71 | HASH_CRS = 82, | ||
| 72 | I2C1_ER = 32, | ||
| 73 | I2C1_EV = 31, | ||
| 74 | I2C2_ER = 34, | ||
| 75 | I2C2_EV = 33, | ||
| 76 | I2C3_ER = 73, | ||
| 77 | I2C3_EV = 72, | ||
| 78 | I2C4_ER = 83, | ||
| 79 | I2C4_EV = 84, | ||
| 80 | LPTIM1 = 65, | ||
| 81 | LPTIM2 = 66, | ||
| 82 | LPUART1 = 70, | ||
| 83 | LTDC = 91, | ||
| 84 | LTDC_ER = 92, | ||
| 85 | OCTOSPI1 = 71, | ||
| 86 | OCTOSPI2 = 76, | ||
| 87 | OTG_FS = 67, | ||
| 88 | PVD_PVM = 1, | ||
| 89 | RCC = 5, | ||
| 90 | RNG = 80, | ||
| 91 | RTC_Alarm = 41, | ||
| 92 | RTC_WKUP = 3, | ||
| 93 | SAI1 = 74, | ||
| 94 | SAI2 = 75, | ||
| 95 | SDMMC1 = 49, | ||
| 96 | SPI1 = 35, | ||
| 97 | SPI2 = 36, | ||
| 98 | SPI3 = 51, | ||
| 99 | TAMP_STAMP = 2, | ||
| 100 | TIM1_BRK_TIM15 = 24, | ||
| 101 | TIM1_CC = 27, | ||
| 102 | TIM1_TRG_COM_TIM17 = 26, | ||
| 103 | TIM1_UP_TIM16 = 25, | ||
| 104 | TIM2 = 28, | ||
| 105 | TIM3 = 29, | ||
| 106 | TIM4 = 30, | ||
| 107 | TIM5 = 50, | ||
| 108 | TIM6_DAC = 54, | ||
| 109 | TIM7 = 55, | ||
| 110 | TIM8_BRK = 43, | ||
| 111 | TIM8_CC = 46, | ||
| 112 | TIM8_TRG_COM = 45, | ||
| 113 | TIM8_UP = 44, | ||
| 114 | TSC = 77, | ||
| 115 | UART4 = 52, | ||
| 116 | UART5 = 53, | ||
| 117 | USART1 = 37, | ||
| 118 | USART2 = 38, | ||
| 119 | USART3 = 39, | ||
| 120 | WWDG = 0, | ||
| 121 | } | ||
| 122 | unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum { | ||
| 123 | #[inline(always)] | ||
| 124 | fn number(self) -> u16 { | ||
| 125 | self as u16 | ||
| 126 | } | ||
| 127 | } | ||
| 128 | |||
| 129 | declare!(ADC1); | ||
| 130 | declare!(AES); | ||
| 131 | declare!(CAN1_RX0); | ||
| 132 | declare!(CAN1_RX1); | ||
| 133 | declare!(CAN1_SCE); | ||
| 134 | declare!(CAN1_TX); | ||
| 135 | declare!(COMP); | ||
| 136 | declare!(DCMI); | ||
| 137 | declare!(DFSDM1_FLT0); | ||
| 138 | declare!(DFSDM1_FLT1); | ||
| 139 | declare!(DFSDM1_FLT2); | ||
| 140 | declare!(DFSDM1_FLT3); | ||
| 141 | declare!(DMA1_Channel1); | ||
| 142 | declare!(DMA1_Channel2); | ||
| 143 | declare!(DMA1_Channel3); | ||
| 144 | declare!(DMA1_Channel4); | ||
| 145 | declare!(DMA1_Channel5); | ||
| 146 | declare!(DMA1_Channel6); | ||
| 147 | declare!(DMA1_Channel7); | ||
| 148 | declare!(DMA2D); | ||
| 149 | declare!(DMA2_Channel1); | ||
| 150 | declare!(DMA2_Channel2); | ||
| 151 | declare!(DMA2_Channel3); | ||
| 152 | declare!(DMA2_Channel4); | ||
| 153 | declare!(DMA2_Channel5); | ||
| 154 | declare!(DMA2_Channel6); | ||
| 155 | declare!(DMA2_Channel7); | ||
| 156 | declare!(DMAMUX1_OVR); | ||
| 157 | declare!(DSI); | ||
| 158 | declare!(EXTI0); | ||
| 159 | declare!(EXTI1); | ||
| 160 | declare!(EXTI15_10); | ||
| 161 | declare!(EXTI2); | ||
| 162 | declare!(EXTI3); | ||
| 163 | declare!(EXTI4); | ||
| 164 | declare!(EXTI9_5); | ||
| 165 | declare!(FLASH); | ||
| 166 | declare!(FMC); | ||
| 167 | declare!(FPU); | ||
| 168 | declare!(GFXMMU); | ||
| 169 | declare!(HASH_CRS); | ||
| 170 | declare!(I2C1_ER); | ||
| 171 | declare!(I2C1_EV); | ||
| 172 | declare!(I2C2_ER); | ||
| 173 | declare!(I2C2_EV); | ||
| 174 | declare!(I2C3_ER); | ||
| 175 | declare!(I2C3_EV); | ||
| 176 | declare!(I2C4_ER); | ||
| 177 | declare!(I2C4_EV); | ||
| 178 | declare!(LPTIM1); | ||
| 179 | declare!(LPTIM2); | ||
| 180 | declare!(LPUART1); | ||
| 181 | declare!(LTDC); | ||
| 182 | declare!(LTDC_ER); | ||
| 183 | declare!(OCTOSPI1); | ||
| 184 | declare!(OCTOSPI2); | ||
| 185 | declare!(OTG_FS); | ||
| 186 | declare!(PVD_PVM); | ||
| 187 | declare!(RCC); | ||
| 188 | declare!(RNG); | ||
| 189 | declare!(RTC_Alarm); | ||
| 190 | declare!(RTC_WKUP); | ||
| 191 | declare!(SAI1); | ||
| 192 | declare!(SAI2); | ||
| 193 | declare!(SDMMC1); | ||
| 194 | declare!(SPI1); | ||
| 195 | declare!(SPI2); | ||
| 196 | declare!(SPI3); | ||
| 197 | declare!(TAMP_STAMP); | ||
| 198 | declare!(TIM1_BRK_TIM15); | ||
| 199 | declare!(TIM1_CC); | ||
| 200 | declare!(TIM1_TRG_COM_TIM17); | ||
| 201 | declare!(TIM1_UP_TIM16); | ||
| 202 | declare!(TIM2); | ||
| 203 | declare!(TIM3); | ||
| 204 | declare!(TIM4); | ||
| 205 | declare!(TIM5); | ||
| 206 | declare!(TIM6_DAC); | ||
| 207 | declare!(TIM7); | ||
| 208 | declare!(TIM8_BRK); | ||
| 209 | declare!(TIM8_CC); | ||
| 210 | declare!(TIM8_TRG_COM); | ||
| 211 | declare!(TIM8_UP); | ||
| 212 | declare!(TSC); | ||
| 213 | declare!(UART4); | ||
| 214 | declare!(UART5); | ||
| 215 | declare!(USART1); | ||
| 216 | declare!(USART2); | ||
| 217 | declare!(USART3); | ||
| 218 | declare!(WWDG); | ||
| 219 | } | ||
| 220 | mod interrupt_vector { | ||
| 221 | extern "C" { | ||
| 222 | fn ADC1(); | ||
| 223 | fn AES(); | ||
| 224 | fn CAN1_RX0(); | ||
| 225 | fn CAN1_RX1(); | ||
| 226 | fn CAN1_SCE(); | ||
| 227 | fn CAN1_TX(); | ||
| 228 | fn COMP(); | ||
| 229 | fn DCMI(); | ||
| 230 | fn DFSDM1_FLT0(); | ||
| 231 | fn DFSDM1_FLT1(); | ||
| 232 | fn DFSDM1_FLT2(); | ||
| 233 | fn DFSDM1_FLT3(); | ||
| 234 | fn DMA1_Channel1(); | ||
| 235 | fn DMA1_Channel2(); | ||
| 236 | fn DMA1_Channel3(); | ||
| 237 | fn DMA1_Channel4(); | ||
| 238 | fn DMA1_Channel5(); | ||
| 239 | fn DMA1_Channel6(); | ||
| 240 | fn DMA1_Channel7(); | ||
| 241 | fn DMA2D(); | ||
| 242 | fn DMA2_Channel1(); | ||
| 243 | fn DMA2_Channel2(); | ||
| 244 | fn DMA2_Channel3(); | ||
| 245 | fn DMA2_Channel4(); | ||
| 246 | fn DMA2_Channel5(); | ||
| 247 | fn DMA2_Channel6(); | ||
| 248 | fn DMA2_Channel7(); | ||
| 249 | fn DMAMUX1_OVR(); | ||
| 250 | fn DSI(); | ||
| 251 | fn EXTI0(); | ||
| 252 | fn EXTI1(); | ||
| 253 | fn EXTI15_10(); | ||
| 254 | fn EXTI2(); | ||
| 255 | fn EXTI3(); | ||
| 256 | fn EXTI4(); | ||
| 257 | fn EXTI9_5(); | ||
| 258 | fn FLASH(); | ||
| 259 | fn FMC(); | ||
| 260 | fn FPU(); | ||
| 261 | fn GFXMMU(); | ||
| 262 | fn HASH_CRS(); | ||
| 263 | fn I2C1_ER(); | ||
| 264 | fn I2C1_EV(); | ||
| 265 | fn I2C2_ER(); | ||
| 266 | fn I2C2_EV(); | ||
| 267 | fn I2C3_ER(); | ||
| 268 | fn I2C3_EV(); | ||
| 269 | fn I2C4_ER(); | ||
| 270 | fn I2C4_EV(); | ||
| 271 | fn LPTIM1(); | ||
| 272 | fn LPTIM2(); | ||
| 273 | fn LPUART1(); | ||
| 274 | fn LTDC(); | ||
| 275 | fn LTDC_ER(); | ||
| 276 | fn OCTOSPI1(); | ||
| 277 | fn OCTOSPI2(); | ||
| 278 | fn OTG_FS(); | ||
| 279 | fn PVD_PVM(); | ||
| 280 | fn RCC(); | ||
| 281 | fn RNG(); | ||
| 282 | fn RTC_Alarm(); | ||
| 283 | fn RTC_WKUP(); | ||
| 284 | fn SAI1(); | ||
| 285 | fn SAI2(); | ||
| 286 | fn SDMMC1(); | ||
| 287 | fn SPI1(); | ||
| 288 | fn SPI2(); | ||
| 289 | fn SPI3(); | ||
| 290 | fn TAMP_STAMP(); | ||
| 291 | fn TIM1_BRK_TIM15(); | ||
| 292 | fn TIM1_CC(); | ||
| 293 | fn TIM1_TRG_COM_TIM17(); | ||
| 294 | fn TIM1_UP_TIM16(); | ||
| 295 | fn TIM2(); | ||
| 296 | fn TIM3(); | ||
| 297 | fn TIM4(); | ||
| 298 | fn TIM5(); | ||
| 299 | fn TIM6_DAC(); | ||
| 300 | fn TIM7(); | ||
| 301 | fn TIM8_BRK(); | ||
| 302 | fn TIM8_CC(); | ||
| 303 | fn TIM8_TRG_COM(); | ||
| 304 | fn TIM8_UP(); | ||
| 305 | fn TSC(); | ||
| 306 | fn UART4(); | ||
| 307 | fn UART5(); | ||
| 308 | fn USART1(); | ||
| 309 | fn USART2(); | ||
| 310 | fn USART3(); | ||
| 311 | fn WWDG(); | ||
| 312 | } | ||
| 313 | pub union Vector { | ||
| 314 | _handler: unsafe extern "C" fn(), | ||
| 315 | _reserved: u32, | ||
| 316 | } | ||
| 317 | #[link_section = ".vector_table.interrupts"] | ||
| 318 | #[no_mangle] | ||
| 319 | pub static __INTERRUPTS: [Vector; 95] = [ | ||
| 320 | Vector { _handler: WWDG }, | ||
| 321 | Vector { _handler: PVD_PVM }, | ||
| 322 | Vector { | ||
| 323 | _handler: TAMP_STAMP, | ||
| 324 | }, | ||
| 325 | Vector { _handler: RTC_WKUP }, | ||
| 326 | Vector { _handler: FLASH }, | ||
| 327 | Vector { _handler: RCC }, | ||
| 328 | Vector { _handler: EXTI0 }, | ||
| 329 | Vector { _handler: EXTI1 }, | ||
| 330 | Vector { _handler: EXTI2 }, | ||
| 331 | Vector { _handler: EXTI3 }, | ||
| 332 | Vector { _handler: EXTI4 }, | ||
| 333 | Vector { | ||
| 334 | _handler: DMA1_Channel1, | ||
| 335 | }, | ||
| 336 | Vector { | ||
| 337 | _handler: DMA1_Channel2, | ||
| 338 | }, | ||
| 339 | Vector { | ||
| 340 | _handler: DMA1_Channel3, | ||
| 341 | }, | ||
| 342 | Vector { | ||
| 343 | _handler: DMA1_Channel4, | ||
| 344 | }, | ||
| 345 | Vector { | ||
| 346 | _handler: DMA1_Channel5, | ||
| 347 | }, | ||
| 348 | Vector { | ||
| 349 | _handler: DMA1_Channel6, | ||
| 350 | }, | ||
| 351 | Vector { | ||
| 352 | _handler: DMA1_Channel7, | ||
| 353 | }, | ||
| 354 | Vector { _handler: ADC1 }, | ||
| 355 | Vector { _handler: CAN1_TX }, | ||
| 356 | Vector { _handler: CAN1_RX0 }, | ||
| 357 | Vector { _handler: CAN1_RX1 }, | ||
| 358 | Vector { _handler: CAN1_SCE }, | ||
| 359 | Vector { _handler: EXTI9_5 }, | ||
| 360 | Vector { | ||
| 361 | _handler: TIM1_BRK_TIM15, | ||
| 362 | }, | ||
| 363 | Vector { | ||
| 364 | _handler: TIM1_UP_TIM16, | ||
| 365 | }, | ||
| 366 | Vector { | ||
| 367 | _handler: TIM1_TRG_COM_TIM17, | ||
| 368 | }, | ||
| 369 | Vector { _handler: TIM1_CC }, | ||
| 370 | Vector { _handler: TIM2 }, | ||
| 371 | Vector { _handler: TIM3 }, | ||
| 372 | Vector { _handler: TIM4 }, | ||
| 373 | Vector { _handler: I2C1_EV }, | ||
| 374 | Vector { _handler: I2C1_ER }, | ||
| 375 | Vector { _handler: I2C2_EV }, | ||
| 376 | Vector { _handler: I2C2_ER }, | ||
| 377 | Vector { _handler: SPI1 }, | ||
| 378 | Vector { _handler: SPI2 }, | ||
| 379 | Vector { _handler: USART1 }, | ||
| 380 | Vector { _handler: USART2 }, | ||
| 381 | Vector { _handler: USART3 }, | ||
| 382 | Vector { | ||
| 383 | _handler: EXTI15_10, | ||
| 384 | }, | ||
| 385 | Vector { | ||
| 386 | _handler: RTC_Alarm, | ||
| 387 | }, | ||
| 388 | Vector { | ||
| 389 | _handler: DFSDM1_FLT3, | ||
| 390 | }, | ||
| 391 | Vector { _handler: TIM8_BRK }, | ||
| 392 | Vector { _handler: TIM8_UP }, | ||
| 393 | Vector { | ||
| 394 | _handler: TIM8_TRG_COM, | ||
| 395 | }, | ||
| 396 | Vector { _handler: TIM8_CC }, | ||
| 397 | Vector { _reserved: 0 }, | ||
| 398 | Vector { _handler: FMC }, | ||
| 399 | Vector { _handler: SDMMC1 }, | ||
| 400 | Vector { _handler: TIM5 }, | ||
| 401 | Vector { _handler: SPI3 }, | ||
| 402 | Vector { _handler: UART4 }, | ||
| 403 | Vector { _handler: UART5 }, | ||
| 404 | Vector { _handler: TIM6_DAC }, | ||
| 405 | Vector { _handler: TIM7 }, | ||
| 406 | Vector { | ||
| 407 | _handler: DMA2_Channel1, | ||
| 408 | }, | ||
| 409 | Vector { | ||
| 410 | _handler: DMA2_Channel2, | ||
| 411 | }, | ||
| 412 | Vector { | ||
| 413 | _handler: DMA2_Channel3, | ||
| 414 | }, | ||
| 415 | Vector { | ||
| 416 | _handler: DMA2_Channel4, | ||
| 417 | }, | ||
| 418 | Vector { | ||
| 419 | _handler: DMA2_Channel5, | ||
| 420 | }, | ||
| 421 | Vector { | ||
| 422 | _handler: DFSDM1_FLT0, | ||
| 423 | }, | ||
| 424 | Vector { | ||
| 425 | _handler: DFSDM1_FLT1, | ||
| 426 | }, | ||
| 427 | Vector { | ||
| 428 | _handler: DFSDM1_FLT2, | ||
| 429 | }, | ||
| 430 | Vector { _handler: COMP }, | ||
| 431 | Vector { _handler: LPTIM1 }, | ||
| 432 | Vector { _handler: LPTIM2 }, | ||
| 433 | Vector { _handler: OTG_FS }, | ||
| 434 | Vector { | ||
| 435 | _handler: DMA2_Channel6, | ||
| 436 | }, | ||
| 437 | Vector { | ||
| 438 | _handler: DMA2_Channel7, | ||
| 439 | }, | ||
| 440 | Vector { _handler: LPUART1 }, | ||
| 441 | Vector { _handler: OCTOSPI1 }, | ||
| 442 | Vector { _handler: I2C3_EV }, | ||
| 443 | Vector { _handler: I2C3_ER }, | ||
| 444 | Vector { _handler: SAI1 }, | ||
| 445 | Vector { _handler: SAI2 }, | ||
| 446 | Vector { _handler: OCTOSPI2 }, | ||
| 447 | Vector { _handler: TSC }, | ||
| 448 | Vector { _handler: DSI }, | ||
| 449 | Vector { _handler: AES }, | ||
| 450 | Vector { _handler: RNG }, | ||
| 451 | Vector { _handler: FPU }, | ||
| 452 | Vector { _handler: HASH_CRS }, | ||
| 453 | Vector { _handler: I2C4_ER }, | ||
| 454 | Vector { _handler: I2C4_EV }, | ||
| 455 | Vector { _handler: DCMI }, | ||
| 456 | Vector { _reserved: 0 }, | ||
| 457 | Vector { _reserved: 0 }, | ||
| 458 | Vector { _reserved: 0 }, | ||
| 459 | Vector { _reserved: 0 }, | ||
| 460 | Vector { _handler: DMA2D }, | ||
| 461 | Vector { _handler: LTDC }, | ||
| 462 | Vector { _handler: LTDC_ER }, | ||
| 463 | Vector { _handler: GFXMMU }, | ||
| 464 | Vector { | ||
| 465 | _handler: DMAMUX1_OVR, | ||
| 466 | }, | ||
| 467 | ]; | ||
| 468 | } | ||
| 20 | impl_gpio_pin!(PA0, 0, 0, EXTI0); | 469 | impl_gpio_pin!(PA0, 0, 0, EXTI0); |
| 21 | impl_gpio_pin!(PA1, 0, 1, EXTI1); | 470 | impl_gpio_pin!(PA1, 0, 1, EXTI1); |
| 22 | impl_gpio_pin!(PA2, 0, 2, EXTI2); | 471 | impl_gpio_pin!(PA2, 0, 2, EXTI2); |
