diff --git a/demos/STM32/RT-STM32L476-DISCOVERY-SB_HOST/debug/RT-STM32L476-DISCOVERY-SB_HOST (OpenOCD, Flash and Run).launch b/demos/STM32/RT-STM32L476-DISCOVERY-SB_HOST/debug/RT-STM32L476-DISCOVERY-SB_HOST (OpenOCD, Flash and Run).launch index 4c94ad2ac..b7276b55a 100644 --- a/demos/STM32/RT-STM32L476-DISCOVERY-SB_HOST/debug/RT-STM32L476-DISCOVERY-SB_HOST (OpenOCD, Flash and Run).launch +++ b/demos/STM32/RT-STM32L476-DISCOVERY-SB_HOST/debug/RT-STM32L476-DISCOVERY-SB_HOST (OpenOCD, Flash and Run).launch @@ -1,52 +1,52 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/os/hal/ports/STM32/LLD/EXTIv1/stm32_exti10_15.inc b/os/hal/ports/STM32/LLD/EXTIv1/stm32_exti10_15.inc index 1a034df43..b0f6d0fbd 100644 --- a/os/hal/ports/STM32/LLD/EXTIv1/stm32_exti10_15.inc +++ b/os/hal/ports/STM32/LLD/EXTIv1/stm32_exti10_15.inc @@ -80,10 +80,16 @@ OSAL_IRQ_HANDLER(STM32_EXTI10_15_HANDLER) { OSAL_IRQ_PROLOGUE(); pr = EXTI->PR1; - pr &= EXTI->IMR1 & (1U << 0); + pr &= EXTI->IMR1 & ((1U << 10) | (1U << 11) | (1U << 12) | (1U << 13) | + (1U << 14) | (1U << 15)); EXTI->PR1 = pr; - exti_serve_irq(pr, 0); + exti_serve_irq(pr, 10); + exti_serve_irq(pr, 11); + exti_serve_irq(pr, 12); + exti_serve_irq(pr, 13); + exti_serve_irq(pr, 14); + exti_serve_irq(pr, 15); OSAL_IRQ_EPILOGUE(); } diff --git a/os/hal/ports/STM32/LLD/EXTIv1/stm32_exti2.inc b/os/hal/ports/STM32/LLD/EXTIv1/stm32_exti2.inc index 3e3733c9f..7fd803641 100644 --- a/os/hal/ports/STM32/LLD/EXTIv1/stm32_exti2.inc +++ b/os/hal/ports/STM32/LLD/EXTIv1/stm32_exti2.inc @@ -80,7 +80,7 @@ OSAL_IRQ_HANDLER(STM32_EXTI2_HANDLER) { OSAL_IRQ_PROLOGUE(); pr = EXTI->PR1; - pr &= EXTI->IMR1 & (1U << 0); + pr &= EXTI->IMR1 & (1U << 2); EXTI->PR1 = pr; exti_serve_irq(pr, 0); diff --git a/os/hal/ports/STM32/LLD/EXTIv1/stm32_exti3.inc b/os/hal/ports/STM32/LLD/EXTIv1/stm32_exti3.inc index 168377312..48cecee60 100644 --- a/os/hal/ports/STM32/LLD/EXTIv1/stm32_exti3.inc +++ b/os/hal/ports/STM32/LLD/EXTIv1/stm32_exti3.inc @@ -80,7 +80,7 @@ OSAL_IRQ_HANDLER(STM32_EXTI3_HANDLER) { OSAL_IRQ_PROLOGUE(); pr = EXTI->PR1; - pr &= EXTI->IMR1 & (1U << 0); + pr &= EXTI->IMR1 & (1U << 3); EXTI->PR1 = pr; exti_serve_irq(pr, 0); diff --git a/os/hal/ports/STM32/LLD/EXTIv1/stm32_exti4.inc b/os/hal/ports/STM32/LLD/EXTIv1/stm32_exti4.inc index 24b5e87ed..0749a1fb5 100644 --- a/os/hal/ports/STM32/LLD/EXTIv1/stm32_exti4.inc +++ b/os/hal/ports/STM32/LLD/EXTIv1/stm32_exti4.inc @@ -80,7 +80,7 @@ OSAL_IRQ_HANDLER(STM32_EXTI4_HANDLER) { OSAL_IRQ_PROLOGUE(); pr = EXTI->PR1; - pr &= EXTI->IMR1 & (1U << 0); + pr &= EXTI->IMR1 & (1U << 4); EXTI->PR1 = pr; exti_serve_irq(pr, 0); diff --git a/os/hal/ports/STM32/LLD/EXTIv1/stm32_exti5_9.inc b/os/hal/ports/STM32/LLD/EXTIv1/stm32_exti5_9.inc index 54d65e629..9de8ed600 100644 --- a/os/hal/ports/STM32/LLD/EXTIv1/stm32_exti5_9.inc +++ b/os/hal/ports/STM32/LLD/EXTIv1/stm32_exti5_9.inc @@ -80,10 +80,15 @@ OSAL_IRQ_HANDLER(STM32_EXTI5_9_HANDLER) { OSAL_IRQ_PROLOGUE(); pr = EXTI->PR1; - pr &= EXTI->IMR1 & (1U << 0); + pr &= EXTI->IMR1 & ((1U << 5) | (1U << 6) | (1U << 7) | (1U << 8) | + (1U << 9)); EXTI->PR1 = pr; - exti_serve_irq(pr, 0); + exti_serve_irq(pr, 5); + exti_serve_irq(pr, 6); + exti_serve_irq(pr, 7); + exti_serve_irq(pr, 8); + exti_serve_irq(pr, 9); OSAL_IRQ_EPILOGUE(); } diff --git a/os/hal/ports/STM32/LLD/USARTv2/stm32_lpuart1.inc b/os/hal/ports/STM32/LLD/USARTv2/stm32_lpuart1.inc index 4a67f8bd4..0efffc6d2 100644 --- a/os/hal/ports/STM32/LLD/USARTv2/stm32_lpuart1.inc +++ b/os/hal/ports/STM32/LLD/USARTv2/stm32_lpuart1.inc @@ -48,6 +48,19 @@ #error "Invalid IRQ priority assigned to STM32_IRQ_LPUART1_PRIORITY" #endif +/* Other checks.*/ +#if (HAL_USE_SERIAL && STM32_SERIAL_USE_LPUART1) && \ + (HAL_USE_UART && STM32_UART_USE_LPUART1) +#error "LPUART1 used by multiple drivers" +#endif + +#if (HAL_USE_SERIAL && STM32_SERIAL_USE_LPUART1) || \ + (HAL_USE_UART && STM32_UART_USE_LPUART1) +#define STM32_LPUART1_IS_USED TRUE +#else +#define STM32_LPUART1_IS_USED FALSE +#endif + /*===========================================================================*/ /* Driver exported variables. */ /*===========================================================================*/ @@ -61,13 +74,13 @@ /*===========================================================================*/ static inline void lpuart1_irq_init(void) { -#if defined(STM32_LPUART1_IS_USED) +#if STM32_LPUART1_IS_USED nvicEnableVector(STM32_LPUART1_NUMBER, STM32_IRQ_LPUART1_PRIORITY); #endif } static inline void lpuart1_irq_deinit(void) { -#if defined(STM32_LPUART1_IS_USED) +#if STM32_LPUART1_IS_USED nvicDisableVector(STM32_LPUART1_NUMBER); #endif } @@ -76,8 +89,7 @@ static inline void lpuart1_irq_deinit(void) { /* Driver interrupt handlers. */ /*===========================================================================*/ -#if (HAL_USE_SERIAL && STM32_SERIAL_USE_LPUART1) || \ - defined(__DOXYGEN__) +#if STM32_LPUART1_IS_USED || defined(__DOXYGEN__) /** * @brief LPUART1 interrupt handler. * diff --git a/os/hal/ports/STM32/LLD/USARTv2/stm32_uart4.inc b/os/hal/ports/STM32/LLD/USARTv2/stm32_uart4.inc index 4487c0186..b602eea68 100644 --- a/os/hal/ports/STM32/LLD/USARTv2/stm32_uart4.inc +++ b/os/hal/ports/STM32/LLD/USARTv2/stm32_uart4.inc @@ -48,6 +48,19 @@ #error "Invalid IRQ priority assigned to STM32_IRQ_UART4_PRIORITY" #endif +/* Other checks.*/ +#if (HAL_USE_SERIAL && STM32_SERIAL_USE_UART4) && \ + (HAL_USE_UART && STM32_UART_USE_UART4) +#error "UART4 used by multiple drivers" +#endif + +#if (HAL_USE_SERIAL && STM32_SERIAL_USE_UART4) || \ + (HAL_USE_UART && STM32_UART_USE_UART4) +#define STM32_UART4_IS_USED TRUE +#else +#define STM32_UART4_IS_USED FALSE +#endif + /*===========================================================================*/ /* Driver exported variables. */ /*===========================================================================*/ @@ -61,13 +74,13 @@ /*===========================================================================*/ static inline void uart4_irq_init(void) { -#if defined(STM32_UART4_IS_USED) +#if STM32_UART4_IS_USED nvicEnableVector(STM32_UART4_NUMBER, STM32_IRQ_UART4_PRIORITY); #endif } static inline void uart4_irq_deinit(void) { -#if defined(STM32_UART4_IS_USED) +#if STM32_UART4_IS_USED nvicDisableVector(STM32_UART4_NUMBER); #endif } @@ -76,9 +89,7 @@ static inline void uart4_irq_deinit(void) { /* Driver interrupt handlers. */ /*===========================================================================*/ -#if (HAL_USE_SERIAL && STM32_SERIAL_USE_UART4) || \ - (HAL_USE_UART && STM32_UART_USE_UART4) || \ - defined(__DOXYGEN__) +#if STM32_UART4_IS_USED || defined(__DOXYGEN__) /** * @brief UART4 interrupt handler. * diff --git a/os/hal/ports/STM32/LLD/USARTv2/stm32_uart5.inc b/os/hal/ports/STM32/LLD/USARTv2/stm32_uart5.inc index dbbb14a51..a109d1d91 100644 --- a/os/hal/ports/STM32/LLD/USARTv2/stm32_uart5.inc +++ b/os/hal/ports/STM32/LLD/USARTv2/stm32_uart5.inc @@ -48,6 +48,19 @@ #error "Invalid IRQ priority assigned to STM32_IRQ_UART5_PRIORITY" #endif +/* Other checks.*/ +#if (HAL_USE_SERIAL && STM32_SERIAL_USE_UART5) && \ + (HAL_USE_UART && STM32_UART_USE_UART5) +#error "UART5 used by multiple drivers" +#endif + +#if (HAL_USE_SERIAL && STM32_SERIAL_USE_UART5) || \ + (HAL_USE_UART && STM32_UART_USE_UART5) +#define STM32_UART5_IS_USED TRUE +#else +#define STM32_UART5_IS_USED FALSE +#endif + /*===========================================================================*/ /* Driver exported variables. */ /*===========================================================================*/ @@ -61,13 +74,13 @@ /*===========================================================================*/ static inline void uart5_irq_init(void) { -#if defined(STM32_UART5_IS_USED) +#if STM32_UART5_IS_USED nvicEnableVector(STM32_UART5_NUMBER, STM32_IRQ_UART5_PRIORITY); #endif } static inline void uart5_irq_deinit(void) { -#if defined(STM32_UART5_IS_USED) +#if STM32_UART5_IS_USED nvicDisableVector(STM32_UART5_NUMBER); #endif } @@ -76,9 +89,7 @@ static inline void uart5_irq_deinit(void) { /* Driver interrupt handlers. */ /*===========================================================================*/ -#if (HAL_USE_SERIAL && STM32_SERIAL_USE_UART5) || \ - (HAL_USE_UART && STM32_UART_USE_UART5) || \ - defined(__DOXYGEN__) +#if STM32_UART5_IS_USED || defined(__DOXYGEN__) /** * @brief UART5 interrupt handler. * diff --git a/os/hal/ports/STM32/LLD/USARTv2/stm32_usart1.inc b/os/hal/ports/STM32/LLD/USARTv2/stm32_usart1.inc index 7bed6ce41..affe5917a 100644 --- a/os/hal/ports/STM32/LLD/USARTv2/stm32_usart1.inc +++ b/os/hal/ports/STM32/LLD/USARTv2/stm32_usart1.inc @@ -48,6 +48,19 @@ #error "Invalid IRQ priority assigned to STM32_IRQ_USART1_PRIORITY" #endif +/* Other checks.*/ +#if (HAL_USE_SERIAL && STM32_SERIAL_USE_USART1) && \ + (HAL_USE_UART && STM32_UART_USE_USART1) +#error "USART1 used by multiple drivers" +#endif + +#if (HAL_USE_SERIAL && STM32_SERIAL_USE_USART1) || \ + (HAL_USE_UART && STM32_UART_USE_USART1) +#define STM32_USART1_IS_USED TRUE +#else +#define STM32_USART1_IS_USED FALSE +#endif + /*===========================================================================*/ /* Driver exported variables. */ /*===========================================================================*/ @@ -61,13 +74,13 @@ /*===========================================================================*/ static inline void usart1_irq_init(void) { -#if defined(STM32_USART1_IS_USED) +#if STM32_USART1_IS_USED nvicEnableVector(STM32_USART1_NUMBER, STM32_IRQ_USART1_PRIORITY); #endif } static inline void usart1_irq_deinit(void) { -#if defined(STM32_USART1_IS_USED) +#if STM32_USART1_IS_USED nvicDisableVector(STM32_USART1_NUMBER); #endif } @@ -76,9 +89,7 @@ static inline void usart1_irq_deinit(void) { /* Driver interrupt handlers. */ /*===========================================================================*/ -#if (HAL_USE_SERIAL && STM32_SERIAL_USE_USART1) || \ - (HAL_USE_UART && STM32_UART_USE_USART1) || \ - defined(__DOXYGEN__) +#if STM32_USART1_IS_USED|| defined(__DOXYGEN__) /** * @brief USART1 interrupt handler. * diff --git a/os/hal/ports/STM32/LLD/USARTv2/stm32_usart2.inc b/os/hal/ports/STM32/LLD/USARTv2/stm32_usart2.inc index 02982791e..17dacef50 100644 --- a/os/hal/ports/STM32/LLD/USARTv2/stm32_usart2.inc +++ b/os/hal/ports/STM32/LLD/USARTv2/stm32_usart2.inc @@ -48,6 +48,19 @@ #error "Invalid IRQ priority assigned to STM32_IRQ_USART2_PRIORITY" #endif +/* Other checks.*/ +#if (HAL_USE_SERIAL && STM32_SERIAL_USE_USART2) && \ + (HAL_USE_UART && STM32_UART_USE_USART2) +#error "USART2 used by multiple drivers" +#endif + +#if (HAL_USE_SERIAL && STM32_SERIAL_USE_USART2) || \ + (HAL_USE_UART && STM32_UART_USE_USART2) +#define STM32_USART2_IS_USED TRUE +#else +#define STM32_USART2_IS_USED FALSE +#endif + /*===========================================================================*/ /* Driver exported variables. */ /*===========================================================================*/ @@ -61,13 +74,13 @@ /*===========================================================================*/ static inline void usart2_irq_init(void) { -#if defined(STM32_USART2_IS_USED) +#if STM32_USART2_IS_USED nvicEnableVector(STM32_USART2_NUMBER, STM32_IRQ_USART2_PRIORITY); #endif } static inline void usart2_irq_deinit(void) { -#if defined(STM32_USART2_IS_USED) +#if STM32_USART2_IS_USED nvicDisableVector(STM32_USART2_NUMBER); #endif } @@ -76,9 +89,7 @@ static inline void usart2_irq_deinit(void) { /* Driver interrupt handlers. */ /*===========================================================================*/ -#if (HAL_USE_SERIAL && STM32_SERIAL_USE_USART2) || \ - (HAL_USE_UART && STM32_UART_USE_USART2) || \ - defined(__DOXYGEN__) +#if STM32_USART2_IS_USED || defined(__DOXYGEN__) /** * @brief USART2 interrupt handler. * diff --git a/os/hal/ports/STM32/LLD/USARTv2/stm32_usart3.inc b/os/hal/ports/STM32/LLD/USARTv2/stm32_usart3.inc index 1ab7607ff..71d6423b9 100644 --- a/os/hal/ports/STM32/LLD/USARTv2/stm32_usart3.inc +++ b/os/hal/ports/STM32/LLD/USARTv2/stm32_usart3.inc @@ -48,6 +48,19 @@ #error "Invalid IRQ priority assigned to STM32_IRQ_USART3_PRIORITY" #endif +/* Other checks.*/ +#if (HAL_USE_SERIAL && STM32_SERIAL_USE_USART3) && \ + (HAL_USE_UART && STM32_UART_USE_USART3) +#error "USART3 used by multiple drivers" +#endif + +#if (HAL_USE_SERIAL && STM32_SERIAL_USE_USART3) || \ + (HAL_USE_UART && STM32_UART_USE_USART3) +#define STM32_USART3_IS_USED TRUE +#else +#define STM32_USART3_IS_USED FALSE +#endif + /*===========================================================================*/ /* Driver exported variables. */ /*===========================================================================*/ @@ -61,13 +74,13 @@ /*===========================================================================*/ static inline void usart3_irq_init(void) { -#if defined(STM32_USART3_IS_USED) +#if STM32_USART3_IS_USED nvicEnableVector(STM32_USART3_NUMBER, STM32_IRQ_USART3_PRIORITY); #endif } static inline void usart3_irq_deinit(void) { -#if defined(STM32_USART3_IS_USED) +#if STM32_USART3_IS_USED nvicDisableVector(STM32_USART3_NUMBER); #endif } @@ -76,9 +89,7 @@ static inline void usart3_irq_deinit(void) { /* Driver interrupt handlers. */ /*===========================================================================*/ -#if (HAL_USE_SERIAL && STM32_SERIAL_USE_USART3) || \ - (HAL_USE_UART && STM32_UART_USE_USART3) || \ - defined(__DOXYGEN__) +#if STM32_USART3_IS_USED || defined(__DOXYGEN__) /** * @brief USART3 interrupt handler. *