Simplified USART units use collision detection in STM32 HAL, now it is done like for TIM units for consistency.

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@13810 27425a3e-05d8-49a3-a47f-9c15f0e5edd8
This commit is contained in:
Giovanni Di Sirio 2020-08-22 09:19:59 +00:00
parent a4e9fc5170
commit 5fec2a17fc
14 changed files with 176 additions and 201 deletions

View File

@ -421,6 +421,79 @@
#error "Invalid IRQ priority assigned to LPUART1"
#endif
/* Checks on allocation of USARTx units.*/
#if STM32_SERIAL_USE_USART1
#if defined(STM32_USART1_IS_USED)
#error "SD1 requires USART1 but it is already used"
#else
#define STM32_USART1_IS_USED
#endif
#endif
#if STM32_SERIAL_USE_USART2
#if defined(STM32_USART2_IS_USED)
#error "SD2 requires USART2 but it is already used"
#else
#define STM32_USART2_IS_USED
#endif
#endif
#if STM32_SERIAL_USE_USART3
#if defined(STM32_USART3_IS_USED)
#error "SD3 requires USART3 but it is already used"
#else
#define STM32_USART3_IS_USED
#endif
#endif
#if STM32_SERIAL_USE_UART4
#if defined(STM32_UART4_IS_USED)
#error "SD4 requires UART4 but it is already used"
#else
#define STM32_UART4_IS_USED
#endif
#endif
#if STM32_SERIAL_USE_UART5
#if defined(STM32_UART5_IS_USED)
#error "SD5 requires UART5 but it is already used"
#else
#define STM32_UART5_IS_USED
#endif
#endif
#if STM32_SERIAL_USE_USART6
#if defined(STM32_USART6_IS_USED)
#error "SD6 requires USART6 but it is already used"
#else
#define STM32_USART6_IS_USED
#endif
#endif
#if STM32_SERIAL_USE_UART7
#if defined(STM32_UART7_IS_USED)
#error "SD7 requires UART7 but it is already used"
#else
#define STM32_UART7_IS_USED
#endif
#endif
#if STM32_SERIAL_USE_UART8
#if defined(STM32_UART8_IS_USED)
#error "SD8 requires UART8 but it is already used"
#else
#define STM32_UART8_IS_USED
#endif
#endif
#if STM32_SERIAL_USE_LPUART1
#if defined(STM32_LPUART1_IS_USED)
#error "LPSD1 requires LPUART1 but it is already used"
#else
#define STM32_LPUART1_IS_USED
#endif
#endif
/*===========================================================================*/
/* Driver data structures and types. */
/*===========================================================================*/

View File

@ -613,6 +613,71 @@
#define STM32_DMA_REQUIRED
#endif
/* Checks on allocation of USARTx units.*/
#if STM32_UART_USE_USART1
#if defined(STM32_USART1_IS_USED)
#error "SD1 requires USART1 but it is already used"
#else
#define STM32_USART1_IS_USED
#endif
#endif
#if STM32_UART_USE_USART2
#if defined(STM32_USART2_IS_USED)
#error "SD2 requires USART2 but it is already used"
#else
#define STM32_USART2_IS_USED
#endif
#endif
#if STM32_UART_USE_USART3
#if defined(STM32_USART3_IS_USED)
#error "SD3 requires USART3 but it is already used"
#else
#define STM32_USART3_IS_USED
#endif
#endif
#if STM32_UART_USE_UART4
#if defined(STM32_UART4_IS_USED)
#error "SD4 requires UART4 but it is already used"
#else
#define STM32_UART4_IS_USED
#endif
#endif
#if STM32_UART_USE_UART5
#if defined(STM32_UART5_IS_USED)
#error "SD5 requires UART5 but it is already used"
#else
#define STM32_UART5_IS_USED
#endif
#endif
#if STM32_UART_USE_USART6
#if defined(STM32_USART6_IS_USED)
#error "SD6 requires USART6 but it is already used"
#else
#define STM32_USART6_IS_USED
#endif
#endif
#if STM32_UART_USE_UART7
#if defined(STM32_UART7_IS_USED)
#error "SD7 requires UART7 but it is already used"
#else
#define STM32_UART7_IS_USED
#endif
#endif
#if STM32_UART_USE_UART8
#if defined(STM32_UART8_IS_USED)
#error "SD8 requires UART8 but it is already used"
#else
#define STM32_UART8_IS_USED
#endif
#endif
/*===========================================================================*/
/* Driver data structures and types. */
/*===========================================================================*/

View File

@ -48,13 +48,6 @@
#endif /* STM32_HAS_LPUART1 */
/* Other checks.*/
#if (HAL_USE_SERIAL && STM32_SERIAL_USE_LPUART1)
#define STM32_LPUART1_IS_USED TRUE
#else
#define STM32_LPUART1_IS_USED FALSE
#endif
/*===========================================================================*/
/* Driver exported variables. */
/*===========================================================================*/
@ -68,13 +61,13 @@
/*===========================================================================*/
static inline void lpuart1_irq_init(void) {
#if STM32_LPUART1_IS_USED
#if defined(STM32_LPUART1_IS_USED)
nvicEnableVector(STM32_LPUART1_NUMBER, STM32_IRQ_LPUART1_PRIORITY);
#endif
}
static inline void lpuart1_irq_deinit(void) {
#if STM32_LPUART1_IS_USED
#if defined(STM32_LPUART1_IS_USED)
nvicDisableVector(STM32_LPUART1_NUMBER);
#endif
}
@ -83,7 +76,7 @@ static inline void lpuart1_irq_deinit(void) {
/* Driver interrupt handlers. */
/*===========================================================================*/
#if STM32_LPUART1_IS_USED || defined(__DOXYGEN__)
#if defined(STM32_LPUART1_IS_USED) || defined(__DOXYGEN__)
/**
* @brief LPUART1 interrupt handler.
*

View File

@ -48,19 +48,6 @@
#endif /* STM32_HAS_UART4 */
/* 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. */
/*===========================================================================*/
@ -74,13 +61,13 @@
/*===========================================================================*/
static inline void uart4_irq_init(void) {
#if STM32_UART4_IS_USED
#if defined(STM32_UART4_IS_USED)
nvicEnableVector(STM32_UART4_NUMBER, STM32_IRQ_UART4_PRIORITY);
#endif
}
static inline void uart4_irq_deinit(void) {
#if STM32_UART4_IS_USED
#if defined(STM32_UART4_IS_USED)
nvicDisableVector(STM32_UART4_NUMBER);
#endif
}
@ -89,7 +76,7 @@ static inline void uart4_irq_deinit(void) {
/* Driver interrupt handlers. */
/*===========================================================================*/
#if STM32_UART4_IS_USED || defined(__DOXYGEN__)
#if defined(STM32_UART4_IS_USED) || defined(__DOXYGEN__)
/**
* @brief UART4 interrupt handler.
*

View File

@ -48,19 +48,6 @@
#endif /* STM32_HAS_UART5 */
/* 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. */
/*===========================================================================*/
@ -74,13 +61,13 @@
/*===========================================================================*/
static inline void uart5_irq_init(void) {
#if STM32_UART5_IS_USED
#if defined(STM32_UART5_IS_USED)
nvicEnableVector(STM32_UART5_NUMBER, STM32_IRQ_UART5_PRIORITY);
#endif
}
static inline void uart5_irq_deinit(void) {
#if STM32_UART5_IS_USED
#if defined(STM32_UART5_IS_USED)
nvicDisableVector(STM32_UART5_NUMBER);
#endif
}
@ -89,7 +76,7 @@ static inline void uart5_irq_deinit(void) {
/* Driver interrupt handlers. */
/*===========================================================================*/
#if STM32_UART5_IS_USED || defined(__DOXYGEN__)
#if defined(STM32_UART5_IS_USED) || defined(__DOXYGEN__)
/**
* @brief UART5 interrupt handler.
*

View File

@ -48,19 +48,6 @@
#endif /* STM32_HAS_UART7 */
/* Other checks.*/
#if (HAL_USE_SERIAL && STM32_SERIAL_USE_UART7) && \
(HAL_USE_UART && STM32_UART_USE_UART7)
#error "UART7 used by multiple drivers"
#endif
#if (HAL_USE_SERIAL && STM32_SERIAL_USE_UART7) || \
(HAL_USE_UART && STM32_UART_USE_UART7)
#define STM32_UART7_IS_USED TRUE
#else
#define STM32_UART7_IS_USED FALSE
#endif
/*===========================================================================*/
/* Driver exported variables. */
/*===========================================================================*/
@ -74,13 +61,13 @@
/*===========================================================================*/
static inline void uart7_irq_init(void) {
#if STM32_UART7_IS_USED
#if defined(STM32_UART7_IS_USED)
nvicEnableVector(STM32_UART7_NUMBER, STM32_IRQ_UART7_PRIORITY);
#endif
}
static inline void uart7_irq_deinit(void) {
#if STM32_UART7_IS_USED
#if defined(STM32_UART7_IS_USED)
nvicDisableVector(STM32_UART7_NUMBER);
#endif
}
@ -89,7 +76,7 @@ static inline void uart7_irq_deinit(void) {
/* Driver interrupt handlers. */
/*===========================================================================*/
#if STM32_UART7_IS_USED || defined(__DOXYGEN__)
#if defined(STM32_UART7_IS_USED) || defined(__DOXYGEN__)
/**
* @brief UART7 interrupt handler.
*

View File

@ -48,19 +48,6 @@
#endif /* STM32_HAS_UART8 */
/* Other checks.*/
#if (HAL_USE_SERIAL && STM32_SERIAL_USE_UART8) && \
(HAL_USE_UART && STM32_UART_USE_UART8)
#error "UART8 used by multiple drivers"
#endif
#if (HAL_USE_SERIAL && STM32_SERIAL_USE_UART8) || \
(HAL_USE_UART && STM32_UART_USE_UART8)
#define STM32_UART8_IS_USED TRUE
#else
#define STM32_UART8_IS_USED FALSE
#endif
/*===========================================================================*/
/* Driver exported variables. */
/*===========================================================================*/
@ -74,13 +61,13 @@
/*===========================================================================*/
static inline void uart8_irq_init(void) {
#if STM32_UART8_IS_USED
#if defined(STM32_UART8_IS_USED)
nvicEnableVector(STM32_UART8_NUMBER, STM32_IRQ_UART8_PRIORITY);
#endif
}
static inline void uart8_irq_deinit(void) {
#if STM32_UART8_IS_USED
#if defined(STM32_UART8_IS_USED)
nvicDisableVector(STM32_UART8_NUMBER);
#endif
}
@ -89,7 +76,7 @@ static inline void uart8_irq_deinit(void) {
/* Driver interrupt handlers. */
/*===========================================================================*/
#if STM32_UART8_IS_USED || defined(__DOXYGEN__)
#if defined(STM32_UART8_IS_USED) || defined(__DOXYGEN__)
/**
* @brief UART8 interrupt handler.
*

View File

@ -48,19 +48,6 @@
#endif /* STM32_HAS_USART1 */
/* 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. */
/*===========================================================================*/
@ -74,13 +61,13 @@
/*===========================================================================*/
static inline void usart1_irq_init(void) {
#if STM32_USART1_IS_USED
#if defined(STM32_USART1_IS_USED)
nvicEnableVector(STM32_USART1_NUMBER, STM32_IRQ_USART1_PRIORITY);
#endif
}
static inline void usart1_irq_deinit(void) {
#if STM32_USART1_IS_USED
#if defined(STM32_USART1_IS_USED)
nvicDisableVector(STM32_USART1_NUMBER);
#endif
}
@ -89,7 +76,7 @@ static inline void usart1_irq_deinit(void) {
/* Driver interrupt handlers. */
/*===========================================================================*/
#if STM32_USART1_IS_USED|| defined(__DOXYGEN__)
#if defined(STM32_USART1_IS_USED) || defined(__DOXYGEN__)
/**
* @brief USART1 interrupt handler.
*

View File

@ -48,19 +48,6 @@
#endif /* STM32_HAS_USART2 */
/* 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. */
/*===========================================================================*/
@ -74,13 +61,13 @@
/*===========================================================================*/
static inline void usart2_irq_init(void) {
#if STM32_USART2_IS_USED
#if defined(STM32_USART2_IS_USED)
nvicEnableVector(STM32_USART2_NUMBER, STM32_IRQ_USART2_PRIORITY);
#endif
}
static inline void usart2_irq_deinit(void) {
#if STM32_USART2_IS_USED
#if defined(STM32_USART2_IS_USED)
nvicDisableVector(STM32_USART2_NUMBER);
#endif
}
@ -89,7 +76,7 @@ static inline void usart2_irq_deinit(void) {
/* Driver interrupt handlers. */
/*===========================================================================*/
#if STM32_USART2_IS_USED || defined(__DOXYGEN__)
#if defined(STM32_USART2_IS_USED) || defined(__DOXYGEN__)
/**
* @brief USART2 interrupt handler.
*

View File

@ -48,19 +48,6 @@
#endif /* STM32_HAS_USART3 */
/* 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. */
/*===========================================================================*/
@ -74,13 +61,13 @@
/*===========================================================================*/
static inline void usart3_irq_init(void) {
#if STM32_USART3_IS_USED
#if defined(STM32_USART3_IS_USED)
nvicEnableVector(STM32_USART3_NUMBER, STM32_IRQ_USART3_PRIORITY);
#endif
}
static inline void usart3_irq_deinit(void) {
#if STM32_USART3_IS_USED
#if defined(STM32_USART3_IS_USED)
nvicDisableVector(STM32_USART3_NUMBER);
#endif
}
@ -89,7 +76,7 @@ static inline void usart3_irq_deinit(void) {
/* Driver interrupt handlers. */
/*===========================================================================*/
#if STM32_USART3_IS_USED || defined(__DOXYGEN__)
#if defined(STM32_USART3_IS_USED) || defined(__DOXYGEN__)
/**
* @brief USART3 interrupt handler.
*

View File

@ -56,37 +56,6 @@
#endif /* STM32_HAS_USART3 || STM32_HAS_UART4 || STM32_HAS_LPUART1 */
/* 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_UART4) && \
(HAL_USE_UART && STM32_UART_USE_UART4)
#error "USART4 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
#if (HAL_USE_SERIAL && STM32_SERIAL_USE_UART4) || \
(HAL_USE_UART && STM32_UART_USE_UART4)
#define STM32_USART4_IS_USED TRUE
#else
#define STM32_USART4_IS_USED FALSE
#endif
#if (HAL_USE_SERIAL && STM32_SERIAL_USE_LPUART1)
#define STM32_LPUART1_IS_USED TRUE
#else
#define STM32_LPUART1_IS_USED FALSE
#endif
/*===========================================================================*/
/* Driver exported variables. */
/*===========================================================================*/
@ -100,13 +69,15 @@
/*===========================================================================*/
static inline void usart3_usart4_lpuart1_irq_init(void) {
#if STM32_USART3_IS_USED || STM32_USART4_IS_USED || STM32_LPUART1_IS_USED
#if defined(STM32_USART3_IS_USED) || defined(STM32_UART4_IS_USED) || \
defined(STM32_LPUART1_IS_USED)
nvicEnableVector(STM32_USART3_4_LP1_NUMBER, STM32_IRQ_USART3_4_LP1_PRIORITY);
#endif
}
static inline void usart3_usart4_lpuart1_irq_deinit(void) {
#if STM32_USART3_IS_USED || STM32_USART4_IS_USED || STM32_LPUART1_IS_USED
#if defined(STM32_USART3_IS_USED) || defined(STM32_UART4_IS_USED) || \
defined(STM32_LPUART1_IS_USED)
nvicDisableVector(STM32_USART3_4_LP1_NUMBER);
#endif
}
@ -115,8 +86,8 @@ static inline void usart3_usart4_lpuart1_irq_deinit(void) {
/* Driver interrupt handlers. */
/*===========================================================================*/
#if STM32_USART3_IS_USED || STM32_USART4_IS_USED || \
STM32_LPUART1_IS_USED || defined(__DOXYGEN__)
#if defined(STM32_USART3_IS_USED) || defined(STM32_UART4_IS_USED) || \
defined(STM32_LPUART1_IS_USED) || defined(__DOXYGEN__)
/**
* @brief USART4, USART5, LPUART1 interrupt handler.
*

View File

@ -52,31 +52,6 @@
#endif /* STM32_HAS_UART4 || STM32_HAS_UART5 */
/* Other checks.*/
#if (HAL_USE_SERIAL && STM32_SERIAL_USE_UART4) && \
(HAL_USE_UART && STM32_UART_USE_UART4)
#error "USART4 used by multiple drivers"
#endif
#if (HAL_USE_SERIAL && STM32_SERIAL_USE_UART5) && \
(HAL_USE_UART && STM32_UART_USE_UART5)
#error "USART5 used by multiple drivers"
#endif
#if (HAL_USE_SERIAL && STM32_SERIAL_USE_UART4) || \
(HAL_USE_UART && STM32_UART_USE_UART4)
#define STM32_USART4_IS_USED TRUE
#else
#define STM32_USART4_IS_USED FALSE
#endif
#if (HAL_USE_SERIAL && STM32_SERIAL_USE_UART5) || \
(HAL_USE_UART && STM32_UART_USE_UART45)
#define STM32_USART5_IS_USED TRUE
#else
#define STM32_USART5_IS_USED FALSE
#endif
/*===========================================================================*/
/* Driver exported variables. */
/*===========================================================================*/
@ -90,13 +65,13 @@
/*===========================================================================*/
static inline void usart4_usart5_irq_init(void) {
#if STM32_USART4_IS_USED || STM32_USART5_IS_USED
#if defined(STM32_UART4_IS_USED) || defined(STM32_UART5_IS_USED)
nvicEnableVector(STM32_USART4_5_NUMBER, STM32_IRQ_USART4_5_PRIORITY);
#endif
}
static inline void usart4_usart5_irq_deinit(void) {
#if STM32_USART4_IS_USED || STM32_USART5_IS_USED
#if defined(STM32_UART4_IS_USED) || defined(STM32_UART5_IS_USED)
nvicDisableVector(STM32_USART4_5_NUMBER);
#endif
}
@ -105,7 +80,7 @@ static inline void usart4_usart5_irq_deinit(void) {
/* Driver interrupt handlers. */
/*===========================================================================*/
#if STM32_USART4_IS_USED || STM32_USART5_IS_USED || \
#if defined(STM32_UART4_IS_USED) || defined(STM32_UART5_IS_USED) || \
defined(__DOXYGEN__)
/**
* @brief USART4, USART5, LPUART1 interrupt handler.

View File

@ -48,19 +48,6 @@
#endif /* STM32_HAS_USART6 */
/* Other checks.*/
#if (HAL_USE_SERIAL && STM32_SERIAL_USE_USART6) && \
(HAL_USE_UART && STM32_UART_USE_USART6)
#error "USART6 used by multiple drivers"
#endif
#if (HAL_USE_SERIAL && STM32_SERIAL_USE_USART6) || \
(HAL_USE_UART && STM32_UART_USE_USART6)
#define STM32_USART6_IS_USED TRUE
#else
#define STM32_USART6_IS_USED FALSE
#endif
/*===========================================================================*/
/* Driver exported variables. */
/*===========================================================================*/
@ -74,13 +61,13 @@
/*===========================================================================*/
static inline void usart6_irq_init(void) {
#if STM32_USART6_IS_USED
#if defined(STM32_USART6_IS_USED)
nvicEnableVector(STM32_USART6_NUMBER, STM32_IRQ_USART6_PRIORITY);
#endif
}
static inline void usart6_irq_deinit(void) {
#if STM32_USART6_IS_USED
#if defined(STM32_USART6_IS_USED)
nvicDisableVector(STM32_USART6_NUMBER);
#endif
}
@ -89,7 +76,7 @@ static inline void usart6_irq_deinit(void) {
/* Driver interrupt handlers. */
/*===========================================================================*/
#if STM32_USART6_IS_USED || defined(__DOXYGEN__)
#if defined(STM32_USART6_IS_USED) || defined(__DOXYGEN__)
/**
* @brief USART6 interrupt handler.
*

View File

@ -74,6 +74,8 @@
*****************************************************************************
*** Next ***
- NEW: Simplified USART units use collision detection in STM32 HAL, now it is
done like for TIM units for consistency.
- NEW: Identification macros such as__CHIBIOS_RT__ are now prefixed by
two underscores.
- NEW: Support for 3 analog watchdogs in ADCv3 (STM32F3, L4, L4+, G4).