aboutsummaryrefslogtreecommitdiffstats
path: root/os/hal/platforms/STM32/serial_lld.c
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2010-08-08 07:57:28 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2010-08-08 07:57:28 +0000
commita2cfd2054ad5da4dbf8b583a7eaf164d9dac6006 (patch)
treefcc2f570a92b65a714b7ca3b38ab700918aeb816 /os/hal/platforms/STM32/serial_lld.c
parentbb27a7d32a5b35a41f6e736540a689fd30d0854c (diff)
downloadChibiOS-a2cfd2054ad5da4dbf8b583a7eaf164d9dac6006.tar.gz
ChibiOS-a2cfd2054ad5da4dbf8b583a7eaf164d9dac6006.tar.bz2
ChibiOS-a2cfd2054ad5da4dbf8b583a7eaf164d9dac6006.zip
Fixed bug 3041414. Various improvements to the STM32 HAL.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@2119 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/hal/platforms/STM32/serial_lld.c')
-rw-r--r--os/hal/platforms/STM32/serial_lld.c88
1 files changed, 38 insertions, 50 deletions
diff --git a/os/hal/platforms/STM32/serial_lld.c b/os/hal/platforms/STM32/serial_lld.c
index d46d660e2..f6df553e6 100644
--- a/os/hal/platforms/STM32/serial_lld.c
+++ b/os/hal/platforms/STM32/serial_lld.c
@@ -35,31 +35,29 @@
/*===========================================================================*/
/** @brief USART1 serial driver identifier.*/
-#if USE_STM32_USART1 || defined(__DOXYGEN__)
+#if STM32_SERIAL_USE_USART1 || defined(__DOXYGEN__)
SerialDriver SD1;
#endif
/** @brief USART2 serial driver identifier.*/
-#if USE_STM32_USART2 || defined(__DOXYGEN__)
+#if STM32_SERIAL_USE_USART2 || defined(__DOXYGEN__)
SerialDriver SD2;
#endif
/** @brief USART3 serial driver identifier.*/
-#if USE_STM32_USART3 || defined(__DOXYGEN__)
+#if STM32_SERIAL_USE_USART3 || defined(__DOXYGEN__)
SerialDriver SD3;
#endif
-#if defined(STM32F10X_HD) || defined(STM32F10X_CL) || defined(__DOXYGEN__)
/** @brief UART4 serial driver identifier.*/
-#if USE_STM32_UART4 || defined(__DOXYGEN__)
+#if STM32_SERIAL_USE_UART4 || defined(__DOXYGEN__)
SerialDriver SD4;
#endif
/** @brief UART5 serial driver identifier.*/
-#if USE_STM32_UART5 || defined(__DOXYGEN__)
+#if STM32_SERIAL_USE_UART5 || defined(__DOXYGEN__)
SerialDriver SD5;
#endif
-#endif
/*===========================================================================*/
/* Driver local variables. */
@@ -121,9 +119,9 @@ static void usart_deinit(USART_TypeDef *u) {
u->CR3 = 0;
}
-#if USE_STM32_USART1 || USE_STM32_USART2 || USE_STM32_USART3 || \
- ((USE_STM32_USART4 || USE_STM32_USART5) && \
- (defined(STM32F10X_HD) || defined(STM32F10X_CL)))
+#if STM32_SERIAL_USE_USART1 || STM32_SERIAL_USE_USART2 || \
+ STM32_SERIAL_USE_USART3 || STM32_SERIAL_USE_UART4 || \
+ USE_STM32_USART5
/**
* @brief Error handling routine.
*
@@ -184,48 +182,46 @@ static void serve_interrupt(SerialDriver *sdp) {
}
#endif
-#if USE_STM32_USART1 || defined(__DOXYGEN__)
+#if STM32_SERIAL_USE_USART1 || defined(__DOXYGEN__)
static void notify1(void) {
USART1->CR1 |= USART_CR1_TXEIE;
}
#endif
-#if USE_STM32_USART2 || defined(__DOXYGEN__)
+#if STM32_SERIAL_USE_USART2 || defined(__DOXYGEN__)
static void notify2(void) {
USART2->CR1 |= USART_CR1_TXEIE;
}
#endif
-#if USE_STM32_USART3 || defined(__DOXYGEN__)
+#if STM32_SERIAL_USE_USART3 || defined(__DOXYGEN__)
static void notify3(void) {
USART3->CR1 |= USART_CR1_TXEIE;
}
#endif
-#if defined(STM32F10X_HD) || defined(STM32F10X_CL) || defined(__DOXYGEN__)
-#if USE_STM32_UART4 || defined(__DOXYGEN__)
+#if STM32_SERIAL_USE_UART4 || defined(__DOXYGEN__)
static void notify4(void) {
UART4->CR1 |= USART_CR1_TXEIE;
}
#endif
-#if USE_STM32_UART5 || defined(__DOXYGEN__)
+#if STM32_SERIAL_USE_UART5 || defined(__DOXYGEN__)
static void notify5(void) {
UART5->CR1 |= USART_CR1_TXEIE;
}
#endif
-#endif
/*===========================================================================*/
/* Driver interrupt handlers. */
/*===========================================================================*/
-#if USE_STM32_USART1 || defined(__DOXYGEN__)
+#if STM32_SERIAL_USE_USART1 || defined(__DOXYGEN__)
CH_IRQ_HANDLER(USART1_IRQHandler) {
CH_IRQ_PROLOGUE();
@@ -236,7 +232,7 @@ CH_IRQ_HANDLER(USART1_IRQHandler) {
}
#endif
-#if USE_STM32_USART2 || defined(__DOXYGEN__)
+#if STM32_SERIAL_USE_USART2 || defined(__DOXYGEN__)
CH_IRQ_HANDLER(USART2_IRQHandler) {
CH_IRQ_PROLOGUE();
@@ -247,7 +243,7 @@ CH_IRQ_HANDLER(USART2_IRQHandler) {
}
#endif
-#if USE_STM32_USART3 || defined(__DOXYGEN__)
+#if STM32_SERIAL_USE_USART3 || defined(__DOXYGEN__)
CH_IRQ_HANDLER(USART3_IRQHandler) {
CH_IRQ_PROLOGUE();
@@ -258,8 +254,7 @@ CH_IRQ_HANDLER(USART3_IRQHandler) {
}
#endif
-#if defined(STM32F10X_HD) || defined(STM32F10X_CL) || defined(__DOXYGEN__)
-#if USE_STM32_UART4 || defined(__DOXYGEN__)
+#if STM32_SERIAL_USE_UART4 || defined(__DOXYGEN__)
CH_IRQ_HANDLER(UART4_IRQHandler) {
CH_IRQ_PROLOGUE();
@@ -270,7 +265,7 @@ CH_IRQ_HANDLER(UART4_IRQHandler) {
}
#endif
-#if USE_STM32_UART5 || defined(__DOXYGEN__)
+#if STM32_SERIAL_USE_UART5 || defined(__DOXYGEN__)
CH_IRQ_HANDLER(UART5_IRQHandler) {
CH_IRQ_PROLOGUE();
@@ -280,7 +275,6 @@ CH_IRQ_HANDLER(UART5_IRQHandler) {
CH_IRQ_EPILOGUE();
}
#endif
-#endif
/*===========================================================================*/
/* Driver exported functions. */
@@ -291,32 +285,30 @@ CH_IRQ_HANDLER(UART5_IRQHandler) {
*/
void sd_lld_init(void) {
-#if USE_STM32_USART1
+#if STM32_SERIAL_USE_USART1
sdObjectInit(&SD1, NULL, notify1);
SD1.usart = USART1;
#endif
-#if USE_STM32_USART2
+#if STM32_SERIAL_USE_USART2
sdObjectInit(&SD2, NULL, notify2);
SD2.usart = USART2;
#endif
-#if USE_STM32_USART3
+#if STM32_SERIAL_USE_USART3
sdObjectInit(&SD3, NULL, notify3);
SD3.usart = USART3;
#endif
-#if defined(STM32F10X_HD) || defined(STM32F10X_CL)
-#if USE_STM32_UART4
+#if STM32_SERIAL_USE_UART4
sdObjectInit(&SD4, NULL, notify4);
SD4.usart = UART4;
#endif
-#if USE_STM32_UART5
+#if STM32_SERIAL_USE_UART5
sdObjectInit(&SD5, NULL, notify5);
SD5.usart = UART5;
#endif
-#endif
}
/**
@@ -333,43 +325,41 @@ void sd_lld_start(SerialDriver *sdp, const SerialConfig *config) {
config = &default_config;
if (sdp->state == SD_STOP) {
-#if USE_STM32_USART1
+#if STM32_SERIAL_USE_USART1
if (&SD1 == sdp) {
RCC->APB2ENR |= RCC_APB2ENR_USART1EN;
NVICEnableVector(USART1_IRQn,
- CORTEX_PRIORITY_MASK(STM32_USART1_PRIORITY));
+ CORTEX_PRIORITY_MASK(STM32_SERIAL_USART1_PRIORITY));
}
#endif
-#if USE_STM32_USART2
+#if STM32_SERIAL_USE_USART2
if (&SD2 == sdp) {
RCC->APB1ENR |= RCC_APB1ENR_USART2EN;
NVICEnableVector(USART2_IRQn,
- CORTEX_PRIORITY_MASK(STM32_USART2_PRIORITY));
+ CORTEX_PRIORITY_MASK(STM32_SERIAL_USART2_PRIORITY));
}
#endif
-#if USE_STM32_USART3
+#if STM32_SERIAL_USE_USART3
if (&SD3 == sdp) {
RCC->APB1ENR |= RCC_APB1ENR_USART3EN;
NVICEnableVector(USART3_IRQn,
- CORTEX_PRIORITY_MASK(STM32_USART3_PRIORITY));
+ CORTEX_PRIORITY_MASK(STM32_SERIAL_USART3_PRIORITY));
}
#endif
-#if defined(STM32F10X_HD) || defined(STM32F10X_CL)
-#if USE_STM32_UART4
+#if STM32_SERIAL_USE_UART4
if (&SD4 == sdp) {
RCC->APB1ENR |= RCC_APB1ENR_UART4EN;
NVICEnableVector(UART4_IRQn,
- CORTEX_PRIORITY_MASK(STM32_UART4_PRIORITY));
+ CORTEX_PRIORITY_MASK(STM32_SERIAL_UART4_PRIORITY));
}
#endif
-#if USE_STM32_UART5
+#if STM32_SERIAL_USE_UART5
if (&SD5 == sdp) {
RCC->APB1ENR |= RCC_APB1ENR_UART5EN;
NVICEnableVector(UART5_IRQn,
- CORTEX_PRIORITY_MASK(STM32_UART5_PRIORITY));
+ CORTEX_PRIORITY_MASK(STM32_SERIAL_UART5_PRIORITY));
}
#endif
-#endif
}
usart_init(sdp, config);
}
@@ -385,43 +375,41 @@ void sd_lld_stop(SerialDriver *sdp) {
if (sdp->state == SD_READY) {
usart_deinit(sdp->usart);
-#if USE_STM32_USART1
+#if STM32_SERIAL_USE_USART1
if (&SD1 == sdp) {
RCC->APB2ENR &= ~RCC_APB2ENR_USART1EN;
NVICDisableVector(USART1_IRQn);
return;
}
#endif
-#if USE_STM32_USART2
+#if STM32_SERIAL_USE_USART2
if (&SD2 == sdp) {
RCC->APB1ENR &= ~RCC_APB1ENR_USART2EN;
NVICDisableVector(USART2_IRQn);
return;
}
#endif
-#if USE_STM32_USART3
+#if STM32_SERIAL_USE_USART3
if (&SD3 == sdp) {
RCC->APB1ENR &= ~RCC_APB1ENR_USART3EN;
NVICDisableVector(USART3_IRQn);
return;
}
#endif
-#if defined(STM32F10X_HD) || defined(STM32F10X_CL)
-#if USE_STM32_UART4
+#if STM32_SERIAL_USE_UART4
if (&SD4 == sdp) {
RCC->APB1ENR &= ~RCC_APB1ENR_UART4EN;
NVICDisableVector(UART4_IRQn);
return;
}
#endif
-#if USE_STM32_UART5
+#if STM32_SERIAL_USE_UART5
if (&SD5 == sdp) {
RCC->APB1ENR &= ~RCC_APB1ENR_UART5EN;
NVICDisableVector(UART5_IRQn);
return;
}
#endif
-#endif
}
}